Понравились проекты?
Свяжитесь с нами!

Технический долг в ИТ: как понять, сколько он стоит бизнесу

Принцип «Работает — не трогай» не всегда оправдан в ИТ. Накопленные ошибки, компромиссные решения и допущения приводят к тому, что разработка замедляется, код усложняется, продукт теряет гибкость, а бизнес — деньги.

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

Что такое технический долг

Понятие «технический долг» (Tech Debt) ввел Уорд Каннингем как метафору накопленных в программном коде и архитектуре проблем, которые в будущем увеличивают затраты на разработку.

Почему этот долг появляется? Причины бывают разные:

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

Иногда в качестве причины указывают недостаток компетенций разработчиков, но технический долг и плохой код — не одно и то же. Чаще долг возникает как осознанный компромисс, поэтому неизбежен в любом ИТ-проекте.

Пополнение технического долга из бэклога.

На российском ИТ-рынке также говорят о техническом долге в контексте инфраструктурного программного обеспечения и проблемы импортозамещения. По данным исследования OCS, у 25% крупных российских компаний технический долг затрагивает более половины инфраструктурного ПО.

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

Зачем бизнесу следить за техническим долгом

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

+23–124%*

Рост времени на выполнение задач при высоком техдолге

*Данные Chalmers University и Sourcery.ai

В 15 раз* больше

Дефектов в проектах без регулярного рефакторинга кода

*Данные Code Red

30%* в среднем

От всех ИТ-расходов компании составляет размер техдолга

*Данные Deloitte

Скрытые в архитектуре и коде проблемы влияют на окупаемость проектов и конечную прибыль. Ниже — общие последствия технического долга:

  • замедление разработки, когда до 40% времени команды уходит на поддержку вместо развития продукта;
  • учащение аварий и простоев в работе сервисов из-за нестабильной архитектуры;
  • учащение аварий и простоев в работе сервисов из-за нестабильной архитектуры;
  • невозможность быстро реагировать на новые бизнес-требования и потеря гибкости продукта;
  • выгорание команды и текучка кадров из-за необходимости постоянно «тушить пожары».

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

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

Модели прямой стоимости и стоимости изменений

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

Формула

Прямая стоимость = потерянные часы за спринт × стоимость часа инженера × количество спринтов в году

Пример

Команда из 5 разработчиков со ставкой 3 000 руб./час. Потери времени в среднем 8 часов на спринт каждым инженером. Для 26 спринтов в год получаем:

Стоимость техдолга за год

40 × 3 000 × 26 =

3 120 000 руб.

Другой вариант — посчитать стоимость изменений кода, времени на исправление ошибок, исходя из доли технических задач в бэклоге.

Пример

Проект длительностью год на 10 человек с зарплатой 120 тыс. руб./мес. Потери 15% времени.

Стоимость техдолга за год

15% × (120 000 × 12 × 10) =

2 160 000 руб.

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

Автоматическое измерение техдолга (CISQ ATDM)

Команды разработчиков используют академические метрики и стандартизированные формулы, например, модель SIG, модель COCOMO II, CISQ ATDM. Последний применяют, если нужно автоматизировать расчет.

Этот стандарт от OMG/CISQ основан на подсчете нарушений паттернов кода и оценке усилий на их исправление. Для каждого типа нарушения (например, SQL-инъекция) задано базовое время исправления (например, 90 минут). Оно умножается на количество вхождений и поправочные коэффициенты (сложность, связанность, концентрация).

Формула

Стоимость техдолга = Количество инцидентов × Поправочный коэффициент × Затраты на восстановление.

Какие решения проблемы бывают

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

Причина Последствия для бизнеса Решение
Проект нужно сдать «еще вчера» Замедление разработки в будущем на 30-40% 15–20% времени каждого спринта на рефакторинг
Низкая квалификация разработчиков Ошибки в архитектуре и программных решениях, аварии Обязательный код-ревью, обучение команды
Смена бизнес-требований Неготовность архитектуры и увеличение стоимости владения Стратегический план миграции, реестр долгов
Отсутствие управления качеством Скрытый рост технического долга, угроза безопасности Стандартизация процессов, CI/CD, автотесты

Мы занимаемся заказной разработкой более 15 лет. Были случаи, когда на поддержку приходили проекты со значительным техническим долгом. Иногда действовать приходилось радикально — переписывать код с нуля. Это было дешевле и быстрее, чем вносить изменения в легаси.

Заключение

Накопление технического долга в ИТ-продуктах неизбежно. Бизнес не может позволить себе идти по пути потребительской логики и «никогда не жить в кредит», точно так же, как не может игнорировать проблему.

Что делать? Учиться управлять размером этого долга и приоритезировать его устранение, заранее закладывать в проекты инвестиции и время для работы над ошибками.

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