Рефакторинг: единственное направление, результат которого нельзя показать на демонстрации. Внешне после него ничего не меняется. Меняется стоимость всего, что будет сделано дальше: новая функция снова стоит столько, сколько должна, а правка в одном месте перестаёт ломать другое.
Это направление из блока корпоративного развития. Оно подключается, когда продукт уже работает и переходит от MVP к MMP и MLP, и код, написанный ради быстрой проверки гипотезы, должен выдержать годы развития. Ориентир стоимости направления в прайсе Ingello: $4700.
Как технический долг выглядит для бизнеса
Собственник редко видит код, но хорошо видит последствия. Сроки на похожие задачи растут от квартала к кварталу. После каждого релиза всплывают ошибки в местах, которые никто не трогал. Разработчики просят «сначала всё переписать». Смена платёжной системы, CRM или ИИ-провайдера оценивается в месяцы, потому что внешний сервис вызывается из десятков мест напрямую.
Когда он окупается, а когда нет
Окупается, когда правки в одном месте регулярно ломают другое, когда новая функция стоит заметно дороже такой же полугодовой давности и когда новый разработчик входит в проект неделями. Не окупается, если продукт скоро закрывается или гипотеза ещё не проверена. Тогда честнее дописать как есть и вернуться к коду, когда станет понятно, что продукт будет жить.
Что входит в работу
В прайсе направление описано двумя пунктами: улучшение качества кода и подготовка к долгосрочной поддержке и масштабированию. На практике работа идёт в таком порядке:
- Карта проблемных зон: где правки чаще всего вызывают ошибки, где дублируется логика, какие модули никто не решается трогать.
- Страховка: тесты на самые денежные сценарии до того, как код начнут менять.
- Разделение ответственности: бизнес-правила переезжают в сервисы, а контроллеры и шаблоны остаются тонкими.
- Развязка зависимостей: между кодом и внешними сервисами появляется собственный слой, через который идут все вызовы.
- Порядок в данных: неудачные связи и поля исправляются через миграции, с планом переноса данных и отката.
- Чистка: удаление дублей, мёртвого кода и неиспользуемых библиотек.
- Единые стандарты кода и автоматические проверки, чтобы порядок не размывался после ухода команды с проекта.
Каждый шаг выкатывается отдельно, и система продолжает работать между шагами. Рефакторинг, который на два месяца замораживает продукт, мы не предлагаем.
Что Вы получаете
- Предсказуемые оценки: похожие задачи снова стоят похоже.
- Меньше ошибок после релизов в местах, которые не меняли.
- Возможность сменить подрядчика, вендора или сервис без переписывания половины системы.
- Код, в который новый разработчик входит за дни, а не за недели.
- Готовность к росту нагрузки и числа пользователей без смены фундамента.
Сколько стоит и от чего зависит
Ориентир в прайсе: $4700 за направление. Объём зависит от размера кодовой базы и от того, какие зоны важны для бизнеса прямо сейчас: переписывать всё подряд почти никогда не нужно. Влияет и наличие тестов: если их нет, часть бюджета уходит на страховку перед изменениями.
Если код писала другая команда, первым шагом идёт аудит: $800 за текстовый отчёт или $2400 с ранним прототипом доработки. В нём фиксируются проблемные зоны, технический долг и риски, и только после этого понятно, что выгоднее: стабилизировать систему, рефакторить отдельные модули или проектировать замену.
Почему без тестов это риск
Менять работающий код, не имея способа проверить, что он остался работающим, опасная затея. Поэтому автоматизация тестирования обычно идёт вместе с рефакторингом или прямо перед ним.
Что ломается, если сэкономить
- Каждая следующая функция дороже предыдущей, и бюджет развития уходит на обход старых решений.
- Команда начинает бояться трогать код, и продукт перестаёт меняться вслед за рынком.
- Зависимость от вендора становится ловушкой: его цены и условия меняются, а уйти дорого.
- В какой-то момент остаётся только переписывать с нуля, и это стоит в разы дороже своевременной уборки.
Пример из практики
Самая дорогая зависимость в ИИ-проекте часто не модель, а её API. Как только десяток инструментов научился ходить в один конкретный интерфейс, смена вендора превращается в проект на месяцы. Мы решили это локальным шлюзом: он принимает запросы в прежнем формате, транслирует их другому провайдеру и маршрутизирует между моделями. Код вызывающих проектов при этом не меняется ни на строчку, а два провайдера можно держать одновременно и переключаться при сбое. Подробности в кейсе об адаптере смены AI-провайдера.
Тот же принцип развязки мы применяем к платёжным системам, CRM и любым внешним сервисам: один слой, через который идут все вызовы, вместо обращений из каждого модуля.
Куда дальше
Смежные направления: оптимизация сервера и документирование. Карта всех этапов в стратегии разработки приложения. Как мы подходим к архитектуре систем, описано на странице Ingello Systems.
На бесплатной консультации архитектор Ingello разберёт, где код тормозит развитие продукта, и предложит порядок работ без остановки релизов. После неё Вы получаете расчёт цены и сроков по этапам. Обсудить состояние кодовой базы.