8
0
0
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники
Назад

Технический долг — это не мусор, а ипотека: как объяснять бизнесу важность рефакторинга

Время чтения 9 минут
Нет времени читать?
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники
8
0
0
Нет времени читать?
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники

Привет, меня зовут Владислав Лукашенко, я руководитель группы веб-аналитиков компании Kokoc Group. Технический долг в IT-проектах, он как батарея на ноутбуке. Пока работает, никто не парится. Но однажды она начинает разряжаться за 15 минут — и всё, работа встала.

Когда речь заходит о рефакторинге, бизнес часто слышит: «Давайте на время всё остановим и перепишем то, что и так вроде работает». Звучит пугающе, особенно если продукт уже на рынке и приносит деньги. Но правда в том, что технический долг — это не баг, а закономерный побочный эффект роста. Он появляется, когда команда двигается быстро, принимает компромиссы, закладывает фичи «в обход», и это нормально. Главное — понимать, что с этим делать дальше.

Проблема возникает не от самого долга, а от отношения к нему. Если его игнорировать, он начинает душить продукт, замедлять разработку и есть ресурсы. Но если управлять, он становится чем-то вроде ипотеки: да, платим, но зато живем и развиваемся.

Технический долг — это не мусор, а ипотека: как объяснять бизнесу важность рефакторинга

Технический долг — это ипотека, а не стихийное бедствие

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

Если его учитывать и «обслуживать», то всё нормально. Даже большие компании, например Google, Amazon, Atlassian, спокойно живут с техническим долгом: они его не избегают, они его планируют. У них в роадмапе прямо написано, например, здесь делаем фичу в обход, но через два спринта выделяем ресурс на рефакторинг. Всё прозрачно, риск под контролем.

Но если не платить по счетам, всё сыпется. Команда начинает чинить баги дольше, фичи катятся медленно, а в какой-то момент любое изменение уже становится игрой Jenga: тронешь — всё упадет.

Именно поэтому задача продакта, тимлида или архитектора — не только объяснить бизнесу важность «переписывания старого», но и перевести это на понятный язык управления рисками и темпов роста.

Как показать влияние технического долга на бизнес-скорость

Одна из ключевых проблем технического долга в том, что он не виден на первый взгляд. Продукт вроде работает, клиенты довольны, деньги идут. Но внутри команда буксует: баги не чинятся, фичи не лезут, сроки срываются. И пока бизнес не увидит прямую связь между этим и качеством кода, рефакторинг будет казаться «дорогой роскошью».

Как технический долг влияет на скорость

Технический долг напрямую замедляет:

  • разработку — добавление новой фичи требует сначала разобраться, как работает старая архитектура (часто без документации);
  • тестирование — багов больше, регрессия шире, на каждый релиз уходит больше часов QA;
  • поддержку — багфиксы превращаются в рисковые мини-рефакторинги;
  • время выхода на рынок — простая идея превращается в недельную доработку из-за неготовности кода к изменениям.

Это приводит к тому, что вместо «быстрее запускаем — быстрее тестируем гипотезу» команда живет в режиме «нельзя трогать, вдруг сломается».

Примеры замедления бизнес-операций

  • Фичи внедряются дольше.
    Вместо трех дней уходит две недели: нужно поднимать старую бизнес-логику, обходить кривые зависимости, писать костыли.
  • Исправление багов затягивается.
    Баг один, а цепляет четыре модуля. В итоге фиксят его по кусочкам, каждый раз рискуя сломать другое. Тесты слабые или устаревшие.
  • Сложно адаптироваться к рынку.
    Если завтра нужно быстро изменить бизнес-логику, то это невозможно. Продукт «запаян». Бизнес упускает окно возможности, потому что «ну, в этом месяце мы не успеем, всё очень хрупкое».

Какие метрики использовать

Технический долг, конечно, не абстракция. Его можно и нужно показать в цифрах:

  • Lead Time for Change (LTC) — сколько времени проходит от идеи до реализации. Если фича тривиальная, а срок — неделя, это уже тревожный сигнал.
  • Bug count per release (BCpR) — сколько багов в каждом релизе. Рост — это индикатор ухудшающегося состояния кода.
  • Code churn — насколько часто переписываются одни и те же участки кода (признак «горячих точек» и костыльной логики).
  • Скорость выката фич — сравнение числа новых фич в релизах за последние 3–6 месяцев.

Эти метрики можно собрать из Jira, Git, CI/CD и баг-трекеров.

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

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

Пример:

«Из-за архитектурного ограничения фича Х заняла 10 рабочих дней вместо 3. Это замедлило запуск новой партнерской интеграции и отложило потенциальную выручку на две недели — это около 800 тыс. рублей недополученной прибыли».

Или:

«У нас 27 багов повторяются от релиза к релизу. Их фиксы в среднем отнимают 40 часов в месяц. Это одна полноценная ставка middle-разработчика, которая уходит на борьбу с последствиями, а не на развитие продукта».

Кейс: как команда отказалась от рефакторинга — и села в лужу

Команда разрабатывала маркетплейс для B2B-заказов. Быстрый рост, частые фичи, давление со стороны инвесторов, всё как обычно. Архитектура стартовала на монолите с быстрым MVP на Django, к которому через год приросло 200+ моделей, 90% без автотестов. Кодовая база держалась на авось и паре старших разработчиков, которые «просто знали, где что лежит».

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

«Мы не можем тормозить фичи ради абстрактного „качества кода“. Всё работает, давайте не мешать прогрессу».

Через полгода в приоритете появилась новая функция: быстрый заказ через Excel. И тут началось.

Как выглядела «лужа»

Чтобы добавить загрузку Excel-файлов:

  • пришлось лезть в ветку заказов, где была куча бизнес-правил, добавленных прямо в контроллеры;
  • часть заказов работала через отдельные таблицы с кастомной логикой (написанной уже уволенным разработчиком);
  • при попытке внедрить новую логику стали падать старые интеграции;
  • потребовалось 13 рабочих дней, 4 hotfix в прод и приостановка релизов других фич.

А потом баг. Excel-файл с заказом одного клиента привел к падению сервиса расчета доставки, потому что при чтении файла вызывался старый блок кода, ожидавший другие поля. Баг отловили спустя три дня, когда один из крупных клиентов начал писать в поддержку каждый час.

Что могло быть иначе

На ретроспективе команда пришла к очевидному: мы знали о проблеме, мы планировали рефакторинг, но отказались от него из-за бизнес-давления.

Если бы в свое время:

  • выделили хотя бы один спринт на вынос логики заказов в отдельный сервис;
  • внедрили хотя бы базовые автотесты на критичный функционал;
  • начали постепенно закрывать устаревшие участки кода флагами и refactor-маркерами.

то:

  • внедрение Excel-заказов заняло бы 3–4 дня без блокировок;
  • баг в логике доставки бы не всплыл или был бы отловлен раньше;
  • релизы других фич не замедлились бы на две недели.

Вывод

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

Как убедить бизнес в необходимости рефакторинга и контроля технического долга

Убедить бизнес потратить время и деньги на рефакторинг — задача не из легких, особенно если «всё работает» и «пользователи довольны». Но если IT-команда хочет развивать продукт стабильно, без постоянного тушения пожаров, технический долг нужно объяснять на языке бизнеса, то есть в деньгах, рисках и скорости реакции на рынок.

Стратегии для убеждения руководства

Привязывайте долг к бизнес-целям
Вместо «нам нужно переписать модуль заказов» — «без рефакторинга мы не сможем за две недели добавить фичу, которая увеличит средний чек».

Показывайте долг как риск
Не надо пугать CTO или CEO словами «грязный код». Вместо этого: «У нас нет разработчиков, которые понимают модуль X. Любое изменение в нем — потенциальная остановка всего сервиса. Это риск уровня „падает основная выручка“».

Создайте карту технического долга
Покажите, где и как он влияет на скорость разработки: какие модули сложнее всего менять, где чаще всего баги, где дольше всего правятся фичи. Привяжите это к потерям: в скорости, деньгах, пользовательском опыте.

Как подготовить бизнес-кейс на рефакторинг

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

  • быстрее запускать фичи (time-to-market);
  • сокращать издержки на поддержку;
  • снижать риски сбоев и инцидентов;
  • масштабироваться без хаоса.

Пример бизнес-кейса

Мы инвестируем три спринта в рефакторинг блока оплаты. Это позволит в будущем:

  • сократить время внедрения новых способов оплаты с 10 до 3 дней;
  • уменьшить баги в релизах (в среднем шесть багов на релиз → целевой показатель 1–2);
  • снизить нагрузку на поддержку (минус 20% обращений по оплате).

Роль тестирования и автоматизации

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

Именно поэтому:

  • автотесты = свобода для рефакторинга без страха;
  • CI/CD = раннее выявление ошибок;
  • code review с фокусом на долг = постоянный контроль качества кода.

Важно встроить контроль техдолга в процесс, а не устраивать «рефакторинг-фест» раз в год. Например, по 10–20% времени в спринте отдавать под «обслуживание системы», как техобслуживание автомобиля.

Как делать понятные для бизнеса отчеты

Бизнес не читает ваш код, да даже если бы и читал, и не волнуется из-за code smell. Зато он реагирует на графики и прогнозы.

Создайте простую метрику:

  • Долг/фича — сколько часов уходит на старую архитектуру на каждую новую фичу.
  • Частота критичных багов в зоне N.
  • Технический риск по зонам: зеленая/желтая/красная зона.

Добавьте прогноз:

«Если не вложиться в переработку модуля доставки, в течение трех месяцев мы не сможем безболезненно интегрировать новых партнеров, а это потеря до 15% потенциальной выручки».

Заключение

Технический долг не зло. Он неизбежен в любой живой системе. Проблема не в его наличии, а в отсутствии управления.

  • Техдолг — это инвестиция, которую нужно обслуживать.
  • Рефакторинг — это бизнес-инструмент для скорости, стабильности и роста.
  • Показывайте влияние долга на деньги, сроки и возможности.
  • Делайте техническое понятным, тогда оно перестанет восприниматься как абстракция.

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

Комментарии0
Тоже интересно
Комментировать
Поделиться
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники