Техдолг приносит бизнесу (а нередко и самим айтишникам) ощутимые потери. Например, по данным McKinsey, он отъедает порядка 40% ИТ-бюджета. И время тоже — по оценкам исследования CAST, уровень глобального техдолг вырос настолько, что суммарное время на его исправление оценивается в 61 млрд рабочих дней — и это еще довольно консервативная цифра.

Однако техдолг — это не всегда про TODO в комментариях и паутинку из костылей. Да и вообще не всегда про код — внушительная его часть появляется еще до написания первой строки. В этой статье разберемся, что это за зверь такой, можно ли с ним разобраться или хотя бы укротить. Погнали!

Что такое техдолг на самом деле

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

А теперь узнаем, что на эту тему говорят данные.

Исследователи InsighTD опросили 653 разработчика из 6 стран, чтобы понять реальную структуру техдолга. Вот как, по результатам их опроса, распределяются типы долга:

Тип техдолга

Доля

Design debt 

22%

Test debt 

20%

Code debt 

14.7%

Architecture debt 

10.7%

Documentation debt 

9%

Код — это лишь 14.7% проблемы. Все остальное — долг проектирования, тестирования, архитектурный, долг документации — могло появиться еще до того, как была написана первая строка кода. 

«We identified the top 5 TD types by occurrence as: design debt (21.99%), test debt (19.94%), code debt (14.66%), architecture debt (10.7%), and documentation debt (9.09%)» InsighTD Survey, ScienceDirect 

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

То, что нельзя переписать за выходные

Есть принципиальная разница между техдолгом в коде и техдолгом в архитектуре. Код можно переписать относительно оперативно. А вот с архитектурой такой фокус не пройдет.

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

Вот парочка хрестоматийный кейсов

  • Southwest Airlines

В декабре 2022 года, в разгар праздничного сезона, Southwest Airlines столкнулась с коллапсом: более 16 000 отмененных рейсов и десятки тысяч застрявших пассажиров. Причиной стала устаревшая система планирования экипажей SkySolver, разработанная еще в 1990-х годах и ни разу не модернизированная для работы с пиковыми нагрузками.

Когда зимний шторм Elliott вызвал массовые сбои в расписании, система просто не справилась с объемом переназначений экипажей и упала. Архитектурный долг, копившийся десятилетиями, превратился в $600 млн возвратов пассажирам и $140 млн штрафов — почти $1 млрд прямых убытков, не считая репутационного ущерба.

  • Siri

Apple запустила Siri в 2011 году — первой среди мейнстрим-голосовых ассистентов, за годы до Alexa и Google Assistant. К 2024 году Siri должна была быть самым продвинутым AI-ассистентом на планете. Вместо этого она стала одним из самых показательных примеров архитектурного долга в современной технологии.

Внутренние отчеты описывали Siri как технически фрагментированную систему: старые rule-based компоненты, сшитые с новыми генеративными моделями. Такая лоскутная архитектура делала обновления сложными и приводила к постоянным ошибкам — внутреннее тестирование показало, что ключевые функции Siri работают в 66-80% случаев.

За один год Apple покинули 12-15 ключевых AI-исследователей и руководителей, включая главу команды AI-моделей. В 2024 Apple анонсировала «персонализированную Siri» с впечатляющими новыми функциями, но так и не выпустила ее. Релиз откладывали повторно, и в марте 2025 Apple публично признала, что работа занимает больше времени, чем ожидалось. 

В январе 2026 Apple завершила сделку по выплате Google примерно $1 млрд в год за лицензирование кастомной модели Gemini с 1.2 триллиона параметров и перестройку основной функциональности Siri на ее базе. Как сообщается, архитектура Siri была настолько запутанной, что ее пришлось полностью перестроить с нуля на базе большой языковой модели. Самая дорогая компания в мире обратилась к прямому конкуренту за помощью с одним из своих флагманских продуктов — потому что накопленный архитектурный долг сделал невозможным достаточно быструю модернизацию Siri собственными силами.

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

Как может проявляться архитектурный долг?

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

  • Неверно выстроенные границы — из-за этого данные ходят через лишних посредников, а никак не связанные друг с другом фичи приходится выкатывать в продакшен одним релизом.

  • Запутанная система событий — сеть очередей и подписок, где уже никто не может проследить полный путь сообщения от начала до конца.

И такие штуки, как правило, копятся с самого первого спринта, с первого решения «давайте пока сделаем побыстрее, потом переделаем». Только «потом» не наступает — потому что на повестке всегда стоят новые фичи.

Реальные потери

CodeScene провела исследование, которое дает, довольно неприятную цифру по техдолгу. Как оказалось, разработчики тратят до 42% своего рабочего времени на работу с последствиями техдолга — не на написание нового кода, а на разбор и починку того, что уже есть.

«Technical debt wastes up to 42% of developer time. By identifying and managing high-impact technical debt, organizations can reclaim lost capacity and deliver faster with existing teams.» — CodeScene Research.

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

Но есть и обратная сторона медали. Те же данные CodeScene показывают, что дает «здоровый» код:

  • 2× быстрее разработка — фичи доезжают до продакшена вдвое быстрее

  • 15× меньше дефектов — баги не плодятся лавиною после каждого релиза

  • 9× предсказуемее доставка — оценки перестают быть гаданием на кофейной гуще

«Healthy code delivers 2× faster development, 15× fewer defects, and 9× more predictable delivery» — CodeScene Research.

Иными словами, разница между «здоровым» и «нездоровым» кодом — это далеко не 10-20% производительности. 

Почему техдолг вообще копится

Иногда можно встретить мнение, что в появлении техдолга виноваты джуны, поверхностные код-ревью или даже просто лень. Мол, если бы все писали «правильно», долга бы не было.

Давайте посмотрим, что говорят исследования.

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

«Time pressure or deadlinewas the single most cited cause of TD» — InsighTD Survey 

И работает это примерно так:

  1. Бизнесу нужно «вчера», чтобы обогнать конкурентов или закрыть квартал.

  2. Команда идет на осознанный компромисс и берет краткосрочное, но далеко не самое оптимальное решение.

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

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

Как измерять?

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

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

Как это можно сделать?

1. Контекстные метрики

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

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

2. Приоритизация по бизнес-ценности

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

Вот, например, McKinsey предлагает фреймворк из трех ступеней:

  • insights edge — понимание, где долг бьет сильнее всего;

  • commitment edge — готовность бизнеса выделить ресурсы;

  • execution edge — способность команды выполнить поставленные задачи.

Если говорить проще — сначала нужно определить, где долг бьет больше всего, потом убедить бизнес выделить ресурсы, и только после этого гасить. 


А боритесь ли с техдолгом вы? Поделитесь в комментариях, что работает, а что нет, и имеет ли вообще смысл его укрощать. Будем ждать ваших историй!