Рефакторинг: улучшение кода без новых функций и зачем за это платят

Улучшение качества кода и подготовка к долгосрочной поддержке и масштабированию. Как объяснить бизнесу работу, после которой продукт внешне не изменился.

Рефакторинг: улучшение кода без новых функций и зачем за это платят
INGELLO / BUSINESS2913

Рефакторинг: единственное направление, результат которого нельзя показать на демонстрации. Внешне после него ничего не меняется. Меняется стоимость всего, что будет сделано дальше: новая функция снова стоит столько, сколько должна, а правка в одном месте перестаёт ломать другое.

Это направление из блока корпоративного развития. Оно подключается, когда продукт уже работает и переходит от MVP к MMP и MLP, и код, написанный ради быстрой проверки гипотезы, должен выдержать годы развития. Ориентир стоимости направления в прайсе Ingello: $4700.

Как технический долг выглядит для бизнеса

Собственник редко видит код, но хорошо видит последствия. Сроки на похожие задачи растут от квартала к кварталу. После каждого релиза всплывают ошибки в местах, которые никто не трогал. Разработчики просят «сначала всё переписать». Смена платёжной системы, CRM или ИИ-провайдера оценивается в месяцы, потому что внешний сервис вызывается из десятков мест напрямую.

Когда он окупается, а когда нет

Окупается, когда правки в одном месте регулярно ломают другое, когда новая функция стоит заметно дороже такой же полугодовой давности и когда новый разработчик входит в проект неделями. Не окупается, если продукт скоро закрывается или гипотеза ещё не проверена. Тогда честнее дописать как есть и вернуться к коду, когда станет понятно, что продукт будет жить.

Что входит в работу

В прайсе направление описано двумя пунктами: улучшение качества кода и подготовка к долгосрочной поддержке и масштабированию. На практике работа идёт в таком порядке:

  1. Карта проблемных зон: где правки чаще всего вызывают ошибки, где дублируется логика, какие модули никто не решается трогать.
  2. Страховка: тесты на самые денежные сценарии до того, как код начнут менять.
  3. Разделение ответственности: бизнес-правила переезжают в сервисы, а контроллеры и шаблоны остаются тонкими.
  4. Развязка зависимостей: между кодом и внешними сервисами появляется собственный слой, через который идут все вызовы.
  5. Порядок в данных: неудачные связи и поля исправляются через миграции, с планом переноса данных и отката.
  6. Чистка: удаление дублей, мёртвого кода и неиспользуемых библиотек.
  7. Единые стандарты кода и автоматические проверки, чтобы порядок не размывался после ухода команды с проекта.

Каждый шаг выкатывается отдельно, и система продолжает работать между шагами. Рефакторинг, который на два месяца замораживает продукт, мы не предлагаем.

Что Вы получаете

  • Предсказуемые оценки: похожие задачи снова стоят похоже.
  • Меньше ошибок после релизов в местах, которые не меняли.
  • Возможность сменить подрядчика, вендора или сервис без переписывания половины системы.
  • Код, в который новый разработчик входит за дни, а не за недели.
  • Готовность к росту нагрузки и числа пользователей без смены фундамента.

Сколько стоит и от чего зависит

Ориентир в прайсе: $4700 за направление. Объём зависит от размера кодовой базы и от того, какие зоны важны для бизнеса прямо сейчас: переписывать всё подряд почти никогда не нужно. Влияет и наличие тестов: если их нет, часть бюджета уходит на страховку перед изменениями.

Если код писала другая команда, первым шагом идёт аудит: $800 за текстовый отчёт или $2400 с ранним прототипом доработки. В нём фиксируются проблемные зоны, технический долг и риски, и только после этого понятно, что выгоднее: стабилизировать систему, рефакторить отдельные модули или проектировать замену.

Почему без тестов это риск

Менять работающий код, не имея способа проверить, что он остался работающим, опасная затея. Поэтому автоматизация тестирования обычно идёт вместе с рефакторингом или прямо перед ним.

Что ломается, если сэкономить

  • Каждая следующая функция дороже предыдущей, и бюджет развития уходит на обход старых решений.
  • Команда начинает бояться трогать код, и продукт перестаёт меняться вслед за рынком.
  • Зависимость от вендора становится ловушкой: его цены и условия меняются, а уйти дорого.
  • В какой-то момент остаётся только переписывать с нуля, и это стоит в разы дороже своевременной уборки.

Пример из практики

Самая дорогая зависимость в ИИ-проекте часто не модель, а её API. Как только десяток инструментов научился ходить в один конкретный интерфейс, смена вендора превращается в проект на месяцы. Мы решили это локальным шлюзом: он принимает запросы в прежнем формате, транслирует их другому провайдеру и маршрутизирует между моделями. Код вызывающих проектов при этом не меняется ни на строчку, а два провайдера можно держать одновременно и переключаться при сбое. Подробности в кейсе об адаптере смены AI-провайдера.

Тот же принцип развязки мы применяем к платёжным системам, CRM и любым внешним сервисам: один слой, через который идут все вызовы, вместо обращений из каждого модуля.

Куда дальше

Смежные направления: оптимизация сервера и документирование. Карта всех этапов в стратегии разработки приложения. Как мы подходим к архитектуре систем, описано на странице Ingello Systems.

На бесплатной консультации архитектор Ingello разберёт, где код тормозит развитие продукта, и предложит порядок работ без остановки релизов. После неё Вы получаете расчёт цены и сроков по этапам. Обсудить состояние кодовой базы.

Частые вопросы

01Сколько стоит рефакторинг кода в Ingello?

В прайсе Ingello направление «Рефакторинг» имеет ориентир $4700, итоговый объём фиксируется после разбора кода. Цена зависит от размера кодовой базы, числа проблемных модулей и наличия тестов. Если систему писала другая команда, сначала проводится аудит за $800 (текстовый отчёт) или $2400 (с ранним прототипом доработки). Первая консультация с архитектором бесплатная.

02Что лучше: рефакторинг или переписать систему с нуля?

Ingello рекомендует переписывать с нуля только тогда, когда модель данных и ключевые процессы устроены неверно и исправлять их дороже, чем построить заново. В остальных случаях выгоднее рефакторить по модулям: система продолжает работать и приносить деньги, а риск растянуть проект на годы ниже. Решение принимается по итогам аудита, а не по ощущениям команды.

03Остановится ли разработка новых функций на время рефакторинга?

Нет, Ingello ведёт рефакторинг небольшими шагами, каждый из которых выкатывается отдельно. Между шагами система работает как обычно, а новые функции можно выпускать параллельно, если они не затрагивают модуль, который сейчас перестраивается. Порядок шагов согласуется с бизнес-приоритетами: первыми идут зоны, которые чаще всего мешают ближайшим планам.

04Можно ли сделать рефакторинг кода, написанного другой командой?

Да, Ingello регулярно берёт в работу системы, начатые другими командами. Сначала нужен доступ к репозиторию или серверу, документация, если она есть, и схема базы данных. Аудит за $800 или $2400 фиксирует технический долг, риски и реальное состояние кода, после чего становится понятно, какие модули рефакторить, а какие оставить как есть.

05Как проверить результат рефакторинга, если внешне ничего не изменилось?

Ingello предлагает смотреть на измеримые признаки, а не на экраны. До и после работ сравниваются сроки на похожие задачи, число ошибок после релизов в нетронутых местах, покрытие ключевых сценариев тестами и время, за которое новый разработчик делает первую задачу. Отдельно фиксируется, какие внешние зависимости теперь заменяются без правок в остальном коде.