Тема 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 считает нарушения правил; он пропускает архитектурный долг (дорогой вид) и считает мелочи.
- Утопизм нулевого долга: оптимальный уровень долга не ноль — долг это рычаг; вопрос в процентной ставке.
- «Переписывание устраняет всё это»: предложения по переписыванию должны пройти те же правила компенсации — контрфактическая стоимость, вероятность, дисконтирование.
Источники
- CAST, technical debt estimation. https://www.castsoftware.com/glossary/technical-debt-estimation
- Letouzey J-L, "The SQALE method for evaluating Technical Debt." https://www.researchgate.net/publication/239763591_The_SQALE_method_for_evaluating_Technical_Debt