Паттерны, SOLID, Архитектура, Тесты или Хуяк-Хуяк и в продакшен ?Статья с хабра повествует о Серёже. Серёжа - программист. Но коллеги Серёжи так не считают. Ох, я бы даже сказал - они его ненавидят! Он пишет плохой код, в то время как его коллеги - хороший.
Но ... Серёжа нравится клиентам! Делает быстро. Фиксы как-то накатываются. Серёже не нужно рефакторить и писать тесты. Зачем? "Подфуфлил" и готово!
"Понапридумывали всякой высокоуровневой чуши, сами с ней и возитесь" - думает Серёжа.
Серёжа плохой?
Правильный ответ : it depends
Безусловно аж глаз дёргается, когда читаешь о подходе Серёжи. Я таких персонажей встречал и переделывать за ними - это боль. Обычно, если таким людям доверяют делать большой пласт работы - это безусловная ошибка менеджмента/тех лида - того, кто отдал Серёже таску. Так бывает.
В статье еще закончилось не так всё грустно, т.к. команда пришла к выводу "ну работает Серёжа и работает, раз мы не можем переубедить заказчика. Главное чтобы нам потом туда не нырять в гидрокостюме".
На самом деле, это палка о двух концах.
С одной стороны : Все мы понимаем (надеюсь), что качество конечного продукта зависит от множество факторов. Сделать качественно = сделать ... как? Возьмём как конечный продукт, скажем - автомобиль. Да это слоёный рекурсивный пирог, где СТОЛЬКО аспектов продукта, что можно взвыть только лишь перечисляя их.
А на другом конце Серёжа, который склеил автомобиль из картона, приделал смешную крякалку-дудку вместо клаксона, посадил на две оси и даже приклеил на клей зелёные брызговики Sparco! Таких даже у настоящих автомобилей нет.
Так почему "Зависит"-то? Вроде всё очевидно. На мерседесе все хотят ездить, а вот на машине Серёжи - только сам Серёжа.
А давайте теперь представим, что по ТЗ у этой машины на самом деле было ... "слепить автомобиль для ... детского утренника!". Да дети счастливы будут! Можно залезть внутрь, представить себя водителем и даже "подудеть клаксоном". А то, что она уже к вечеру развалится, брызговики отклеятся, а дудка выйдет из строя - уже и не так важно, дети уже дома будут - рассказывать родителям на каком крутом бугатти они катались. Заказчик доволен. Серёжа тоже. А вот вторая команда - нет, ведь дедлайн уже вышел, а они только-только прикинули стратегию постройки цеха для покраски ручки водительской двери.
Надеюсь, аналогия ясна :) Всё зависит от ... ТЗ и ... кучи факторов.
Во-первых, зачастую бизнесу нужно сегодня. Ибо завтра уже конкурент сожрёт или ниша закроется. А как только на ноги встанет - можно уже и команду нанять и
У меня в городе есть прекрасный пример - у лучшей шашлычной в городе сайт лет пять был ... JPEG картинкой. С ассортиментом, ценами и адресом. Всё. Ребята развились и ... заказали уже нормальный сайт. Уот так уот.
Во-вторых, вот даже по себе сужу - сколько код ни вылизывай, всё равно есть куда делать лучше. А надо ли? Это ведь та самая обратная сторона палки. Да поживёт эта админка на jquery, зачем там react? И что, что монолитом и падает раз в два дня? Ей пользуются два человека раз в месяц. Хоть функции у нее и критические для бизнеса - перезапустить сервер да жмякнуть пару раз кнопку (по таймауту просто валится по фазе луны) - пойдёт! Оно работает? Работает. Бизнесу хорошо. Админке, к сожалению не очень, но кто её спрашивает.