Тема 67 из 91· Разработка ПО и цифровая доставка

Технический долг (Technical Debt)

Технический долг — это подразумеваемая будущая стоимость целесообразных прошлых решений в кодовой базе: причитающаяся работа по исправлению (основной долг) и продолжающееся сопротивление, которое он оказывает поставке (проценты). Методы количественной оценки, такие как SQALE, превращают его из метафоры в оценённое в деньгах обязательство.

Почему это важно

Неквантифицированный технический долг — это нытьё; квантифицированный — это бизнес-кейс. Отраслевые базовые показатели (CAST Appmarq, 1 400 приложений / 550 млн строк кода): исторически ≈ $3,61 основного технического долга на строку кода, с типичными кодовыми базами, несущими коэффициент долга 15–20% от стоимости перестройки, против часто используемой здоровой планки ≤5% (оценка «A» SonarQube). Рамка экономики здравоохранения подходит точно: долг — это хроническое состояние — без лечения он прогрессирует, его «проценты» накапливаются как более медленная поставка и более высокая частота дефектов, а исправление конкурирует за мощность с работой над функциями точно так же, как профилактика конкурирует с лечением.

Математика

Основной долг SQALE = Σ по нарушениям (время исправления) × стоимость часа разработчика
Коэффициент технического долга (TDR) = стоимость исправления / стоимость перестройки × 100
                    (оценки SonarQube: A ≤ 5%, B ≤ 10%, C ≤ 20%, D ≤ 50%)

Проценты (цифра, обосновывающая погашение):
  проценты/год = Δ скорость поставки × ценность на единицу скорости
                + Δ частота дефектов × стоимость на дефект
Кейс погашения = PV(предотвращённые проценты за горизонт) − стоимость исправления
                (дисконтировано — см. discounting-and-time-preference.md)

Основной долг формулирует обязательство; проценты обосновывают инвестицию. Заплатить £500 тыс. основного долга, чтобы избежать £40 тыс./год процентов, — плохая сделка; чтобы избежать £400 тыс./год — отличная.

Практический пример

Слой интеграции клинических записей на 400 тыс. строк кода: основной долг SQALE 3 800 часов × £75 = £285 тыс.; TDR ≈ 12% (оценка C). Измеренные проценты: команды, работающие с этим слоем, показывают время цикла на 40% дольше и в 2 раза более высокую долю неудачных изменений относительно базовой линии парка. Слой поглощает 6 000 инженеро-часов/год:

Проценты ≈ 6,000 × 0.40 × £75      = £180,000/год (замедление скорости)
         + 12 дополнительных сбоев × £8,000 = £96,000/год (переделка/инциденты)
         ≈ £276,000/год

Исправление худших 30% основного долга (£85k), таргетируя горячие точки → смоделированное
снижение процентов на 60%: экономит ~£166k/год. Окупаемость ≈ 6 месяцев.

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

Связь с разработкой программного обеспечения

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

Подводные камни

  • Отчётность только по основному долгу: большая пугающая цифра без оценки процентов ничего не обосновывает.
  • Буквальное восприятие цифр долга, сгенерированных инструментами: SQALE считает нарушения правил; он пропускает архитектурный долг (самый дорогой вид) и считает мелочи.
  • Утопизм нулевого долга: оптимальный уровень долга не равен нулю — долг — это рычаг; вопрос в процентной ставке.
  • «Переписывание избавит от всего этого»: предложения о переписывании должны проходить те же правила компенсации — контрфактическая стоимость, вероятность, дисконтирование.

Источники