Почему говнокод — это норма в IT: мнения опытных разработчиков
Рекрутер пожаловалась в линкедине, что кандидата, на которого она сделала ставку, — отвергли, потому что он «большую часть времени работал в стартапах». Для нанимающего менеджера это — red flag, так как в стартапах всё собирают дешёво и быстро «из г… и палок». В комментариях — дискуссия: кто-то согласен, а кто-то, наоборот, говорит, что в крупных компаниях говнокода больше.
@devby спросил у комьюнити: грязный код — это ок?
Виктор, начал работать программистом ещё в 1995 году, сейчас — консультант в ИТ:
— Говнокод не просто «бывает», это в индустрии — норма. А вот красивый код — скорее, исключение из правил. И так и должно быть.
Объясню, почему. Но прежде сделаю оговорку: говнокод — это не про «руки не из того места» и не про квалификацию. Работающий говнокод пишут все — и стаффы принципалы и джуны. Потому что говнокод ограничен прежде всего временем. Если вам надо «завтра или никогда», то вы будете писать, как быстрее, а не красивые абстракции и вычисления типов.
В сущности, единственная область, где красивый код в приоритете — это open source.
Да, мы помним: говнокод — это издержки на модификацию и развитие, и весьма часто его приходится выбрасывать целиком и заменять таким же, но другим… говнокодом. И вот это и даёт нам ключ к пониманию.
Если вы не планируете менять что-то вот в этом конкретном месте — то именно здесь говнокод разумен, эффективен и полезнее красивого кода (потому что дешевле). А если планируете — то наоборот.
Мы все стараемся писать красивый и поддерживаемый код, и все практики построены на том, чтобы код не был говнокодом. Но всё в мире стоит денег.
- И ваш лид, который полдня ревьюил код, ровно те же полдня не писал код сам — это издержки.
- Ваше полное покрытие юнит тестами — это время, не потраченное на написание полезного бизнес-кода, это большие издержки.
Поэтому истинное искусство программирования и состоит в тонком балансе между простотой, понятностью и красотой кода, между издержками «сегодня» и издержками «завтра». Между корпоративными процессами и «херак-херак — и в продакшен».
Выбор делает тот, кто распоряжается деньгами, даже если он не делает этот выбор и идет на поводу у команды.
Алесь, фулстек-разработчик на JS\TS и Python (в профессии с 2021 года):
— Как и в любом творчестве, всё начинается с наброска — и после нескольких итераций код может превратиться в шедевр. Но для кого-то и черновой набросок — отличное работающее решение. Иногда нет времени делать красиво, нужно «вчера». А разработчик с плохой базой не знает, что можно бы сделать лучше и по-другому.
Хорошо протестированный и отлаженный говнокод будет работать годами, и вряд ли кто-то заметит, что что-то не так. Да, код мог выполнить операцию не за 1 секунду, а за треть. Но если у приложения нет такого объёма данных или такой нагрузки, где это становится критичным, — то зачем заказчику тратить на это время и деньги?
Текст целиком