Помню, раньше загорался от каждого нового проекта. Проект с нуля! Чистый лист! Можно взять свеженькую библиотеку, настроить идеальную архитектуру, выбрать все самые современные инструменты. Все новое, модное, никакого старого багажа. Красота же!
А потом начинается реальность. Ты сидишь и думаешь: как правильно спроектировать эту фичу, которую еще никто не использовал? Какая структура БД будет оптимальной для кейсов, которые мы еще даже не знаем? А вдруг через полгода всё придется переписывать, потому что не учли какой-то важный сценарий?
Слишком много неизвестных. Слишком много решений, принятых наугад, в вакууме. И самое паршивое – ты не узнаешь, что ошибся, пока не пройдут месяцы.
А вот легаси... Вот где магия.
Да, открываешь такой проект – и там хаос. Функция на 500 строк с тремя уровнями вложенных циклов. Бизнес-логика размазана между контроллером, сервисом и каким-то вспомогательным модулем. Запрос к базе, который считает что-то через жопу и работает по 3 секунды. Переменная с названием
temp2_new_final_REALLY_USE_THIS.Но знаете что? Это всё работает. Прямо сейчас. В проде. Приносит деньги. Обслуживает реальных пользователей с их реальными сценариями.
И вот тут начинается кайф. Ты видишь узкое место – переписываешь кусок кода. Сразу можешь прогнать тесты (которые уже есть!), посмотреть на мониторинг, получить обратную связь. Нашел странную логику – разбираешься, почему так сделали, и часто оказывается, что это решает какой-то граничный случай, о котором ты бы в новом проекте даже не подумал.
Легаси – это живая документация всех косяков, багов и неочевидных требований, которые накопились за годы. Это уже готовая песочница для экспериментов. Можешь улучшать по чуть-чуть, видеть результат, итерироваться.
Конечно, речь про живой легаси, который развивается. Не про мертвый монолит, который никто не трогает 10 лет. А про тот, где бизнес растет, фичи добавляются, и тебе есть что улучшать.
Так что да, я теперь тот странный разраб, который радуется легаси-проектам 🙂