8. Дилемма качества и результата

В подавляющем числе случаев программист пишет код не для себя, а для работодателя. Работодатель, в свою очередь, создаёт продукт для конечного пользователя. В итоге программист пишет код для конечного пользователя, который ничего не знает о самом коде. Пользователя волнует лишь сам продукт.

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

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

В этот момент у некоторых программистов развивается профессиональная болезнь: раздолбайство. Он начинает всеми мыслимыми и немыслимыми способами срезать углы и идти на ненужные компромиссы с самим с собой. Результат такого подхода будет работать, но имеет шансы опозорить и программиста и работодателя, а также расстроить конечного пользователя и сделать будущие изменения кода максимально сложными.

Решение этой дилеммы кроется в балансе. Хороший профессионал помнит, ради кого он пишет код. Но он также имеет внутренние стандарты и принципы, которые даже в самых стеснённых временных условиях не позволят создать позорного монстра.

Мнения менторов

Ты должен научиться понимать бизнес, ведь это он приносит деньги и платит тебе зарплату. При этом, ты не должен слепо делать то, что он говорит.

Представь, что ты врач, а пациент — это бизнес. Пациент требует прекратить бессмысленное мытье рук при подготовке к операции, так как это занимает слишком много времени. Но врач не должен подчиняться его требованиям. Он профессионал, он лучше знает риски опасности заражения, чем пациент. Было бы непрофессионально подчиняться воле пациента.

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

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

Такие стандарты могут спасти от двух крайностей, не дадут уйти в раздолбайство и ограничат перфекционизм. Все, что подходит под эти правила, можно принимать и не дорабатывать.

Ещё почитать на эту тему