Легаси: rewrite или дотягивать — ROI
На совещании: «давайте перепишем с нуля». Через полгода — два контура, двойной ввод и сорванный релиз.
Легаси — не «старый язык». Это система, которая мешает росту: новый канал не влезает без костылей, обмен с 1С — CSV по пятницам, реклама = 503 на кабинете, половина спринта — обходы.
Проблема не в «плохой команде». Проблема в решении без счёта: без среза, без cutover и без пилота.
Три стратегии: → дотягивать — один экран или баг, бизнес не стоит; → слой (strangler) — кабинет / API / интеграция рядом со старым, пилот → cutover; → rewrite — ядро мёртвое, «латание на год» ≈ бюджет нового контура, есть владелец scope.
Как считать ROI за 12–24 месяца — не цену разработки, а TCO: → разработка / подряд; → операционка: CSV, сверки, обходы (часто 0,5–2 FTE); → простой кабинета или учёта (для МСБ часто десятки–сотни тыс. ₽ в час); → риск срыва: «большой взрыв» без пилота сдвигает выручку канала на квартал–два.
Rewrite выигрывает, если латание не снимает корень — данные, интеграции, производительность — и через год снова то же совещание. Иначе вынос кабинета или API дешевле и быстрее даёт деньги.
Когда rewrite почти ошибка: нет критерия «готово», нет инвентаря интеграций, cutover в пик, бюджет только на код, 1С «на потом». Классика: два года «нового» кабинета, заказы всё ещё в старом.
Когда слой — правильный ход: есть срез на 4–12 недель с метрикой (конверсия, время обмена, доля ручных правок). Точка денег → API и роли → пилот на одной роли/филиале → cutover и откат → следующий слой.
Чеклист CEO/CTO: → назван срез, который тормозит выручку; → TCO 12–24 мес записан; → интеграции и владельцы данных — на одной странице; → cutover и откат — до старта кода; → пилот до полного переключения; → один ответственный до сдачи; → если «латание на год» ≈ бюджет среза — выносить слой, не растягивать боль.
На этой неделе: час с CTO, владельцем продукта и тем, кто живёт в 1С/CRM. Три боли в деньгах + один кандидат на первый слой. Пустой список — нужна приоритизация, не rewrite.