[Перевод] Где-то в дороге мы забыли о мастерстве программирования
«Поставляй!»
«Мы теперь Agile, детка. Двигайся быстро и ломай вещи!»
«Мы оцениваем наших инженеров по тому влиянию, которое они оказывают!»
Где-то по пути, в разгар agilification программного обеспечения или золотой лихорадки зарплат инженеров-программистов, мы забыли о мастерстве.
Я работал в крупных технологических компаниях, стартапах, консалтинговых фирмах и даже в правительстве. Все это разные среды с одним ключевым сходством: качество кода низкое, особенно в последнее время.
Не поймите меня неправильно, есть участки хорошего кода. Отдельные примеры настоящей заботы и мастерства. Но, по большому счету, то, что я вижу сейчас, — это люди, пытающиеся как можно быстрее выпустить продукт, не обращая внимания на бремя сопровождения через 1, 2, 5, 10 лет.
Так что же происходит? Я не знаю точно, но вот мои основные теории.
Извращенные стимулы, связанные с «влиянием»
В больших технологиях принято учитывать «влияние» при оценке работы инженера и принятии решений о продвижении. К сожалению, «влияние» почти всегда измеряется тем, какие функции вы поставили, а не тем, как ваш код повлиял на долгосрочную работоспособность кодовой базы.
Если вы стремитесь продвинуться по карьерной лестнице и хотите, чтобы вам платили больше денег (в этом нет ничего плохого), то вполне логично, что вы будете поставлять больше функций — даже если код, который вы поставляете, менее качественный.
Давление бэклога
Я не обвиняю гибкую методологию. Но я отчасти виню Agile™. Сейчас, вы, вероятнее чем когда либо, находитесь в среде Agile™, где вас перегружают задачами. Стоит ли вам сосредоточиться на улучшении качества функции, над которой вы работаете? Или вам следует заняться другими 17 задачами, которые у вас есть в этом спринте?
Более высокопоставленные инженеры могут отмахнуться и сказать: «Мне нужно потратить больше времени, чтобы сделать это правильно». Но джуниор и мидл разработчики? Они должны идти в ногу со временем, чтобы их не считали «медлительными».
Более низкие ставки
Многие из нас сейчас поставляют свои продукты через Интернет. В некоторых случаях они полностью основаны на веб-технологиях, а в других мы можем поставлять патчи через интернет. В любом случае, мы почти никогда не поставляем физические компакт-диски, где мы должны быть чертовски уверены, что программное обеспечение работает. Мы можем позволить себе «двигаться быстро и ломать вещи».
Но это также означает, что мы охотнее допускаем в наших кодовых базах «короткие пути» и непроверенный код. Это постепенно разрушает качество кодовой базы и в один прекрасный день мы просыпаемся и понимаем, что все в полном хаосе.
Никто больше не фокусируется на мастерстве
Последнее, что я хочу сказать, — это то, что мне кажется, что я уже целую вечность не говорил о мастерстве на работе. Возможно, я просто раз за разом оказывался не в тех местах.
А может быть, — и это то, чего я действительно боюсь, — люди, которые действительно сосредоточены на ремесле разработки программного обеспечения, уходят на пенсию или просто сбегают.Где-то в пути мы забыли о мастерстве программирования