"Не вижу ничего плохого 😈" "Это временное решение, потом поправим!" "Зальём деньгами 💸" "Докупим железо помощнее 💻" "Все равно этим никто пользоваться не будет🤡" "Запишем в техдолг 😂" "Я эту фичу сам на Питоне\Паскале\Brainfuck\Whitespace\LOLCODE\Piet за пару дней напишу и без всякого анализа 👍" "Главное что работает👍"
Давай сразу на чистоту. Никому не нужен красивый код и\или архитектура. Всем нужны фичи и сервисы. Вчера и побольше. Потому что именно так работает бизнес, который платит программистам. Никто не видит что там у нас под капотом написано или нарисовано, сколько железа стоит в датацентре или насколько широкий канал. Если это работает и стоит как можно дешевле — это же прекрасно! И в целом, это ок.
Ровно до того момента как система становится неуправляемым монстром который умеет и бухгалтерию посчитать и пиццу заказать и такси вызвать. А потом начинает сыпаться как карточный домик. Перестроить нельзя, а то бизнес встанет, поэтому начинается движуха как подпереть костылями карточный домик. А процесс поставки новых фич замедляется, потому что никто не знает уже куда их встраивать и что может сломаться.
Что со всем этим делать? К черту костыли и плохие решения. Придумай лучшее на данный момент, переиспользуй проверенные, возьми готовое, но пускай оно будет лучшее.
А если другого варианта нет? Подпирай грамотно, покрывая тестами, интерфейсами и слабой связью между компонентами и сервисами. Это поможет быстро подменить реализацию.
А если легаси? Разобрать внутри по кусочкам, покрыть документацией и тестами и разнести кусочки на сервисы.
Дорого! Простой бизнеса всегда дороже, и чем позже мы начинаем отказываться от плохих решений, тем больше вероятность похоронить их вместе с проектом.
Как говорил Мартин Фаулер: "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." Пусть ваш код будет не просто работающим, но и управляемым и понятным.
Еще больше статей для тимлидов и тех, кто хочет им стать https://t.me/madteamleadchannel
#LegacyCode #TechnicalDebt #SoftwareDevelopment #BestPractices #CodeQuality