Технический долг — накопленные компромиссные решения, которые замедляют будущую разработку и увеличивают стоимость изменений. Сюда относятся устаревшие зависимости, дублирование кода, отсутствие тестов и архитектурные проблемы. Важно не просто фиксировать объём долга, а отслеживать его динамику и планомерно выделять ресурсы на его погашение.
Накопленные компромиссы, замедляющие работу. Элитные команды тратят <10% времени на долг.
УЛУЧШАЕТСЯ для рефакторинга: Монорепозитории делают масштабные обновления кода значительно проще. Однако архитектурный долг в общих библиотеках имеет критически высокий радиус поражения.
Долг накапливается быстрее с большим количеством контрибьюторов.
Простые изменения занимают дни. Поставка на 25–50% медленнее.
Баги, связанные с долгом: неполные исправления вводят новые дефекты. Соотношение дефектов растет с накоплением долга.
Запутанные зависимости не дают делать инкрементальные сборки.
Разбросанная логика заставляет держать в голове огромные ментальные модели.
Борьба с кодом вместо создания нового.
Опытные разработчики уходят первыми.
Обходные пути увеличивают цикломатическую сложность.
Хрупкий код чаще ломается при изменениях.
Долг замедляет каждое изменение на 25-50%.
Запутанные межпроектные зависимости усложняют определение затронутых проектов. Скрытые зависимости снижают селективность.
Покрытие даёт возможность безопасного рефакторинга.
Сфокусированные разработчики пишут более чистый код.
Сложный код → обходные пути → больше долга.
Устаревшие зависимости накапливают breaking changes.
Hotfix под давлением → срезание углов.
На 37% больше долга в командах с высокой текучкой.
45% снижение скорости через 30-90 дней. 10x скорость, но 2x сложность.