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

Технический долг

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

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

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

Расчёт

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

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

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

Разобранный пример

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

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

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

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

Связь с программной инженерией

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

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

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

Источники