На позапрошлом месте работы я просидел 6 лет. Написал кучу говнокода. В последний год что-то в голове перещелкнуло и я половину успешно отрефакторил внедрив хоть какую-то архитектуру. Параллельно борясь с попытками коллег противостоять этому. Начал грезить о микросервисах, так как система была уже достаточно большой. Мы выстрадали и начали писать требования на проект, чтобы понимать как он должен работать.
Потом я полгода трудился в другой фирме. В этом момент я уже знал буквы solid, проникся концепцией разделения приложения на слои, хотя ещё и не до конца понял как с этим эффективно жить. Поработав с имеющимся кодом, я прочувствовал на себе чем грозит нарушение концепции типа DI. Частично мне удалось это решить, частично команда уже занималась решением этого. Мне показали микросервисы и я увидел что это действительно может работать. Идея о необходимости требований к продукту уже витала в воздухе, но пока некому было этим заняться. Мы начали возвращать непроработанные тикеты авторам. У нас было принято дежурить по своим сервисам. Ну точнее дежурному могли позвонить и попросить починить. Как правило все ошибки были связан с неудачными релизами и по ночам не звонили.
На текущем месте работы я не знаю как работать с текущим кодом. Я уже понимаю, что как бы них хотелось иметь модульную архитектуру, есть удобные популярные фреймворки нарушающие многие принципы. Но блин свой кривой фреймворк без документации, нарушающий в слове SOLID каждую букву! Вместо микросервисов у нас приложения пишущие в одну базу напрямую. Или читающие дампы(!) её из трёх разных мест. А как насчёт сервисов, которые делают одну и ту же задачу и частично (части непредсказуемы) передающих данные в в любом направлении? А как насчёт отсутствия спецификаций на всё? А тикеты, по которым не понять ничего, пока не проведешь несколько встреч со сменными командами, после которых в тикет все равно ничего не занесут? А как насчёт мониторингов, которые звонят по ночам (да почти каждую ночь) и ты знаешь, что не можешь ничего не починить, но они все равно звонят. А как насчёт собственных уникальных технологий, которые решают или непонятные никому или уже решённые другими проблемы. Интересные продукты, но имеющие свои уникальные особенности, которые не гуглятся.