Когда ты перестаешь быть Junior'ом?
Тогда, когда мысли про переписывание проекта с нуля на новом стеке блокируются мыслями про потребности бизнеса. Первое время еще после стажировки у меня были мысли по поводу того, что проект старый, его нужно переписать. В разговорах с лидом и другими разработчиками я часто про это говорил, но не находил какого-то отклика в их глазах. Со временем, когда появился опыт и некая экспертиза в области продукта, я понял, что если система работает, и нет каких-то доводов за ее модернизацию (просадки производительности, куча багов, долгая разработка), то и не нужно ничего менять. Да, это легаси, да, волнующие части кода нужно куда-то выписывать и иметь ввиду при последующем рефакторинге (если он есть), но не нужно пытаться все переделать - это просто невыгодно (не всегда, исключения все же есть). Бизнес платит за только за бизнес-задачи, технические таски таковыми не являются.
И вот, осознав это, через какое-то время я увидел свои старые мысли в словах нового младшего разработчика, и я узнал его желание все переписать с нуля. И в моих глазах было такое же недопонимание, какое было у лида и более опытных разработчиков во времена моих предложений о переписывании проекта.
Поработав над некоторыми крупными проектами с какой-то долгой историей я понял, что нет совершенной системы, все устаревает и везде есть легаси. Максимум, что мы можем сделать - сохранить расширяемость системы и куда-то записать ход мыслей при проектировании сложных частей приложения (чтобы потом точно знать, почему мы выбрали именно имеющийся подход, а не что-то другое).