Сделал пост с этой же картинкой, т.к. не знал что ТС есть и на Пикабу.
@imctobitch, прошу прощения больше не повториться.
К картинке я добавил текст "И не только Гриша, И не только фронтэнд... И даже не только программисты..." потому что выдалось 5 минут на одну очень важную тему.
Причины, почему в 99,9 % случаев всё происходит через жопу.
Для почти всех разработчиков будет открытием, что помимо классической классификации софта есть ещё и производственно-эксплуатационная. Есть 4 крайне важные градации:
Постоянная работа
Работа периодами (например, в рабочее время)
Разовая задача
Так вот - все "как надо" в ИТ сфере обычно подразумевают крупную команду, крупный проект, нормальную нагрузку и постоянную работу.
При этих вводных все эти "чистые коды" работают и иногда даже хорошо...
!!! НО ТОЛЬКО В ЭТИХ УСЛОВИЯХ !!! Во всех остальных условиях следование этим принципам является идиотизмом. Правда этот идиотизм настолько врос в профессию, что многими он воспринимается как должное и естественное.
Пятница, писать лень, так что 3 примера:
Разовая задача. Эта задача которая по тем или иным причинам либо не возникнет снова, или ТЗ будет изменено настолько, что проще написать снова. Тут нужно говнокодить по страшному.
Пример - бывает, что госорганы для своих каких-то целей запрашивают данные. Эти данные могут быть довольно сложно структурированы в БД т.е. руками и простым запросом не решить. Такие запросы НИКОГДА не повторяются. Написали код, выполнили и забыли. Все проектирования классов, тесты и прочая шняга - это время потраченное абсолютно впустую.
Крупный хайлоад. Вы должны писать код так, чтобы он работал быстро. В коде 100 if подряд? если это конкретно здесь работает быстрее - делайте именно так. Потому что от качества работы приложения напрямую зависит количество серверов на котором это всё будет работать. Серверов стоимость которых зачастую примерно равна квартире в каком-нибудь региональном центре.
Менеджеры "от бизнеса" эти нюансы очень остро чувствуют. И 90 % неприязни к ИТ как раз и заключается в том, что у них есть понимание, что эта задача должна стоить Х и делаться за У времени, а по факту бюджеты и сроки перекрываются в разы. И в качестве ответа на вопрос "какого хера?" им рассказывают про SOLID, Agile и далее по списку.
Я не раз наблюдал, когда гендир спокойно подписывает увольнение сеньору, (да ещё и предварительно его спровоцировав на это самое увольнение), но умоляет остаться джуна.
Просто потому что конкретно этот джун понимает что не все задачи нужно делать "по канону".
Разработчики часто не видят ситуацию "в целом". У бизнеса совершенно другие ценности. Бизнесу нужно прежде всего решать свои задачи. И решать их экономически целесообразно.
И в 99 из 100 проектов "каноны" и "мастхэв" ИТ-индустрии для бизнеса это - полный пиздец, которым пользуются исключительно потому, что нет более подходящего предложения.
Могу проиллюстрировать простым примером. Есть "джуновская" булка хлеба, которая "здесь и сейчас" стоит 20 рублей. Купил-съел. Есть "мидловская" хлебопечка, которая делает хлеб получше, но дороже и 4 часа. А есть хлебзавод "сеньора", который хер знает когда построят, стоит дохера и может давать продукт только тоннами.
Так вот, если компания планирует продавать хлеб тоннами, то хлебзавод рулит.
Если компания хочет разок выебнуться, то хлебопечка рулит.
Если нужно просто пожрать, то просто покупается булка хлеба.
А когда "канон должен быть везде", то получается, что в 90 % случаев вы голодный приходите за хлебом, а с вами начинают согласовывать проект хлебзавода...
И менеджер понимает, что ему продают булку хлеба по цене хлебзавода. И самая главная проблема для него в том, что ВСЕ ДОСТУПНЫЕ КАНДИДАТЫ продают именно это. За специалистов, которые могут сопоставлять задачи и способы их решения грамотные HR войны ведут. Потому что найти 50 сеньоров проще, чем 1 такого.
И самое главное - это не уникальная для ИТ ситуация. В других отраслях всё абсолютно то же самое.