HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>17 авг 2021</li>
2 <ul><li>17 авг 2021</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><h2>"Мне пофигу - главное, чтобы работало", или Лучший совет программисту</h2>
4 </ul><h2>"Мне пофигу - главное, чтобы работало", или Лучший совет программисту</h2>
5 <p>Не затягивайте выпуск продукта в угоду академическому подходу и случайным голосам из интернета, которые указывают вам, что и как делать.</p>
5 <p>Не затягивайте выпуск продукта в угоду академическому подходу и случайным голосам из интернета, которые указывают вам, что и как делать.</p>
6 <p>Абрикос Абрикосовый для Skillbox Media</p>
6 <p>Абрикос Абрикосовый для Skillbox Media</p>
7 <p>Переводчик, специалист по авиационной безопасности, начинающий веб-разработчик. Убеждён, что любой человек может сочетать абсолютно разные интересы и сферы профессиональной деятельности, ведь наши возможности безграничны.</p>
7 <p>Переводчик, специалист по авиационной безопасности, начинающий веб-разработчик. Убеждён, что любой человек может сочетать абсолютно разные интересы и сферы профессиональной деятельности, ведь наши возможности безграничны.</p>
8 <p>Когда-то я работал под началом очень правильного техлида (tech lead). Помню, как день за днём он переписывал программный код - даже промежуточные решения, которые должны были прослужить лишь пару недель или того меньше. Он пытался сделать код более совершенным и организовать файлы по уму, а в перерывах читал в сети о шаблонах проектирования и о том, как всё<strong>должно</strong>быть устроено в нашей кодовой базе.</p>
8 <p>Когда-то я работал под началом очень правильного техлида (tech lead). Помню, как день за днём он переписывал программный код - даже промежуточные решения, которые должны были прослужить лишь пару недель или того меньше. Он пытался сделать код более совершенным и организовать файлы по уму, а в перерывах читал в сети о шаблонах проектирования и о том, как всё<strong>должно</strong>быть устроено в нашей кодовой базе.</p>
9 <p>Мы просрочили выпуск приложения уже на три месяца, а у нас не была готова даже первая версия. Пока другие члены команды реализовывали функциональность, техлид всё экспериментировал с кодом и структурой файлов - переписывал раз за разом, пытался всё сделать<strong>идеально</strong>. Так шла неделя за неделей, а работающего приложения всё не было. В конце концов об этом узнал наш технический директор (CTO).</p>
9 <p>Мы просрочили выпуск приложения уже на три месяца, а у нас не была готова даже первая версия. Пока другие члены команды реализовывали функциональность, техлид всё экспериментировал с кодом и структурой файлов - переписывал раз за разом, пытался всё сделать<strong>идеально</strong>. Так шла неделя за неделей, а работающего приложения всё не было. В конце концов об этом узнал наш технический директор (CTO).</p>
10 <p>После выпуска приложения наш техлид покинул компанию, а меня повысили и я занял его кресло. И тут я заметил кое-что странное - почувствовал, что<strong>должен</strong>продолжить его традиции. Я вовсе не переписывал код раз за разом, но в меня будто вселился тот же дух перфекционизма.</p>
10 <p>После выпуска приложения наш техлид покинул компанию, а меня повысили и я занял его кресло. И тут я заметил кое-что странное - почувствовал, что<strong>должен</strong>продолжить его традиции. Я вовсе не переписывал код раз за разом, но в меня будто вселился тот же дух перфекционизма.</p>
11 <p>Как-то раз, уже после повышения, я делал сквозную авторизацию для наших корпоративных клиентов. Мне нужно было написать одну функцию - совсем небольшую (пять строчек кода, не больше).</p>
11 <p>Как-то раз, уже после повышения, я делал сквозную авторизацию для наших корпоративных клиентов. Мне нужно было написать одну функцию - совсем небольшую (пять строчек кода, не больше).</p>
12 <p>И тут меня накрыло вопросами и сомнениями:</p>
12 <p>И тут меня накрыло вопросами и сомнениями:</p>
13 <ul><li>Как лучше её написать? И куда её потом впихнуть?</li>
13 <ul><li>Как лучше её написать? И куда её потом впихнуть?</li>
14 <li>Размещать её в отдельном файле? Или, может, вместе с другим кодом сквозной авторизации?</li>
14 <li>Размещать её в отдельном файле? Или, может, вместе с другим кодом сквозной авторизации?</li>
15 <li>Должен ли это быть класс с одной открытой функцией?</li>
15 <li>Должен ли это быть класс с одной открытой функцией?</li>
16 <li>Раз уж она такая маленькая, то приткнуть бы её куда-то и забыть. Но вот только будет ли это правильно?</li>
16 <li>Раз уж она такая маленькая, то приткнуть бы её куда-то и забыть. Но вот только будет ли это правильно?</li>
17 </ul><p>В меня будто вселилась тень перфекциониста. Я перенял его образ мышления. Залип над решением, которое, в сущности, ни на что не влияло - и даже не было важно для заказчиков, которые платили нашей компании.</p>
17 </ul><p>В меня будто вселилась тень перфекциониста. Я перенял его образ мышления. Залип над решением, которое, в сущности, ни на что не влияло - и даже не было важно для заказчиков, которые платили нашей компании.</p>
18 <p>Принять решение самостоятельно я так и не смог. Тогда я отправился к нашему вице-президенту по проектированию (VP of Engineering) и спросил его, как лучше поступить с этой маленькой функцией. Я уже внутренне был готов к долгой дискуссии - вроде тех, какие бывали с моим бывшим техлидом.</p>
18 <p>Принять решение самостоятельно я так и не смог. Тогда я отправился к нашему вице-президенту по проектированию (VP of Engineering) и спросил его, как лучше поступить с этой маленькой функцией. Я уже внутренне был готов к долгой дискуссии - вроде тех, какие бывали с моим бывшим техлидом.</p>
19 <p>Но разговор был коротким. Прозвучавший ответ навсегда изменил мой подход к программированию и работе вообще:</p>
19 <p>Но разговор был коротким. Прозвучавший ответ навсегда изменил мой подход к программированию и работе вообще:</p>
20 <p>"Мне по барабану. Главное, чтобы работало".</p>
20 <p>"Мне по барабану. Главное, чтобы работало".</p>
21 Фото:<a>Jason Hogan</a>/<a>Unsplash</a><p>И я вдруг почувствовал себя свободным.</p>
21 Фото:<a>Jason Hogan</a>/<a>Unsplash</a><p>И я вдруг почувствовал себя свободным.</p>
22 <p>В конце концов, я же техлид! И это моя команда!</p>
22 <p>В конце концов, я же техлид! И это моя команда!</p>
23 <p>Наша задача была простой - поскорее выкатить готовый продукт. И всем нам не нравился предыдущий подход, основанный на академичности, перфекционизме и статьях из интернета. Так почему я должен беспокоиться о том, понравится ли наш код кому-то постороннему, соответствует ли он чьим-то представлениям о правильности?</p>
23 <p>Наша задача была простой - поскорее выкатить готовый продукт. И всем нам не нравился предыдущий подход, основанный на академичности, перфекционизме и статьях из интернета. Так почему я должен беспокоиться о том, понравится ли наш код кому-то постороннему, соответствует ли он чьим-то представлениям о правильности?</p>
24 <p>Подходы и лучшие практики со временем меняются. Поверьте, я редактор<a>Better Programming</a>и знаю, о чём говорю 😊. Пост в блоге может быть правильным в теории, но совершенно бесполезным на практике.</p>
24 <p>Подходы и лучшие практики со временем меняются. Поверьте, я редактор<a>Better Programming</a>и знаю, о чём говорю 😊. Пост в блоге может быть правильным в теории, но совершенно бесполезным на практике.</p>
25 <p>В общем, тот разговор с VP навсегда изменил мой подход к управлению командой.</p>
25 <p>В общем, тот разговор с VP навсегда изменил мой подход к управлению командой.</p>
26 <p>Я понял, что моё промедление было замаскированным страхом.</p>
26 <p>Я понял, что моё промедление было замаскированным страхом.</p>
27 <p>Теперь я частенько произносил эти слова. И все в команде помнили, что должны сделать прежде всего. Мы создавали фичу, тестировали её, исправляли баги, помечали задачу выполненной и переходили к следующей. А список того, к чему нужно вернуться, лежал где-то в сторонке.</p>
27 <p>Теперь я частенько произносил эти слова. И все в команде помнили, что должны сделать прежде всего. Мы создавали фичу, тестировали её, исправляли баги, помечали задачу выполненной и переходили к следующей. А список того, к чему нужно вернуться, лежал где-то в сторонке.</p>
28 <p>Мы выпускали релиз за релизом, а катастрофы всё не было - несмотря на то, что код наш был далеко не совершенен.</p>
28 <p>Мы выпускали релиз за релизом, а катастрофы всё не было - несмотря на то, что код наш был далеко не совершенен.</p>
29 <p>Это абсолютно нормально, если у вас есть стандарты для кодовой базы и вы выбрали лучшие практики для своей команды и компании. Но если ваша команда работает медленнее из-за того, что каждому нужно подгонять код под определённый стиль или чьи-то твёрдые инженерные убеждения, то вам понадобится гораздо больше времени, чтобы получить результат.</p>
29 <p>Это абсолютно нормально, если у вас есть стандарты для кодовой базы и вы выбрали лучшие практики для своей команды и компании. Но если ваша команда работает медленнее из-за того, что каждому нужно подгонять код под определённый стиль или чьи-то твёрдые инженерные убеждения, то вам понадобится гораздо больше времени, чтобы получить результат.</p>
30 <p>Так что неважно, учитесь ли вы кодить или уже давно строите карьеру программиста. Больше времени уделяйте тому, чтобы заставить код работать. И меньше - чтобы подогнать его под чьи-то ожидания.</p>
30 <p>Так что неважно, учитесь ли вы кодить или уже давно строите карьеру программиста. Больше времени уделяйте тому, чтобы заставить код работать. И меньше - чтобы подогнать его под чьи-то ожидания.</p>
31 <p>Ваш код должен быть безопасным, надёжным и относительно эффективным. Но помните, что всегда будет задел по времени, когда недостатки кода<a>не грозят компании убытками</a> - просто потому, что пока ещё ваш код работает "не в тех масштабах". Поэтому не заморачивайтесь! Главное, чтобы он работал.</p>
31 <p>Ваш код должен быть безопасным, надёжным и относительно эффективным. Но помните, что всегда будет задел по времени, когда недостатки кода<a>не грозят компании убытками</a> - просто потому, что пока ещё ваш код работает "не в тех масштабах". Поэтому не заморачивайтесь! Главное, чтобы он работал.</p>
32 <p>По мере развития проекта вы всё равно будете переписывать и улучшать код. Так что возвращайтесь к накопившимся вопросам после релиза - во время разработки следующей версии продукта.</p>
32 <p>По мере развития проекта вы всё равно будете переписывать и улучшать код. Так что возвращайтесь к накопившимся вопросам после релиза - во время разработки следующей версии продукта.</p>
33 <p>Ведь если работающего приложения не будет в нужный срок, это обойдётся компании значительно дороже.</p>
33 <p>Ведь если работающего приложения не будет в нужный срок, это обойдётся компании значительно дороже.</p>
34 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
34 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>