Чем круты крутые про­грам­ми­сты

Опубликовано 1 февраля 2021 г.

Карьера Программирование

Давайте представим, что на свете есть крутые программисты — намного продуктивнее, точнее в принятии решений и богаче нас с вами. Не Керниган, Торвальдс или Кармак, а обычные ребята, сидящие за соседним столом. На самом деле, у меня даже есть друзья — такие крутаны. Я всегда смотрел на них и удивлялся: как им удаётся так (много шипить|правильно принимать решения|мало спать)? Мне вот если и удаётся, то редко, особенно в контексте работы.

Давайте разберёмся, что в них особенного.

🔥 Крутаны сначала делают, чтобы их код работал. Недописанная программа — худший вариант её существования: она не решает никаких проблем, а только создаёт; она уродлива по своей структуре; хуже всего — она оставляет кучу вопросов "а если...", ответов на которые уже никогда не получить.

На этом этапе код может быть кривым и глючным, тормозить и не проходить ревью коллег — но он уже существует и работает.

Как и любой творец, программист не понимает всех свойств своей программы, пока не побалуется с ней вдоволь, не попробует порефакторить так и эдак, не заметит проблем в первом, наивном исполнении. Поэтому даже грубый работающий прототип чрезвычайно полезен — и, главное, разносит в пух и прах прокрастинацию и запускает думалку на полную катушку.

🎯 Потом крутаны убеждаются, что программа решает задачи, стоящие перед ней — помочь пользователям добиться своих целей, впечатлить инвесторов, порадовать проджект-менеджера или улучшить архитектуру системы. Инсайты, полученные на этапе прототипирования, дополняются обратной связью от пользователей и стейкхолдеров — и становится понятно, что именно нужно делать на самом деле.

Контекст может быть разный — корпоративный, стартаперский или любой другой. Важно, что уже можно правильно спланировать разработку и разделить обязанности в команде, собрать полезный и не страшный MVP, получить первые результаты от введения системы в эксплуатацию.

🏅 И только в самом конце крутаны тратят силы на увеличение эффективности кода и уменьшение издержек его существования: подбирают эффективные алгоритмы, лаконичные структуры данных и оптимальную конфигурацию системы, делают код понятным и поддерживаемым, пишут интеграционные тесты, чтобы не ломать систему с каждым следующим обновлением.

Больше 15 лет назад, только начиная заниматься программированием, я сразу понял эти прописные истины. И следующие лет 10 всё делал наоборот.

Мой код не работал, а я не заканчивал проекты и не получал никаких результатов. Мне было интереснее всего написать код "правильно" и сделать его быстрым (недаром я впирался в Си, Ассемблер и прочую низкоуровневую шнягу), подобрать "наилучшую" архитектуру, пропустить все полезные промежуточные шаги и сразу сделать приложение, решающее все задачи. Разумеется, доступные моему прозорливому взгляду ещё до начала работы.

Проблема в том, что так не бывает — по крайней мере, у меня. Не получается перескочить десятки итераций написания кода и создания продукта. Мозг отказывается работать и сползает в прокрастинацию, пусть даже и с учебником по очередной технологии. Разумеется, большая часть моих программ так и лежит в ящике для недописанных шедевров.

Не повторяйте глупых ошибок, будьте крутанами! Пишите код, который работает, показывайте результаты как можно раньше, переписывайте и дорабатывайте его так часто, как необходимо, и оптимизируйте в последнюю очередь 🤘

А пока будете обдумывать следующий рефакторинг, поделитесь этим постом с друзьями и коллегами 😜

Читать дальше