Технический долг (technical debt) – это образ/аналогия, чтобы думать о хаосе, который накапливается в проекте.
Обычный долг: беру сейчас, пользуюсь, отдаю потом (с процентами).
Технический долг в IT-проекте: принимаем решение, которое сейчас экономит время или усилия, и за которое будем “платить с процентами” потом.
Например:
Отложенная несделанная работа в проекте – это и есть технический долг.
Интересно, что не обязательно технический долг создается действиями. Типичный случай техдолга – откладываемые обновления (библиотек, фреймворков, компиляторов и т.д.) Здесь мы как команда не делаем ничего сейчас и этим ничегонеделанием создаем себе работу потом.
В этом отношении накопление техдолга может быть больше похоже не на получение кредита в банке, а на набор избыточного веса: происходит постепенно, незаметно, когда ничего особенного казалось бы не делаешь.
А где здесь “проценты”?
“Основной долг” – это работа, которую мы делаем не сейчас, а потом.
“Проценты” – это дополнительная работа, которую мы вынуждены делать все то время, пока не сделана отложенная работа (не выплачен “основной долг”).
В примерах выше:
Что здесь важно: выплату “основного долга” можно откладывать неопределенно долго, а “проценты” мы как команда платим постоянно и неизбежно.
Мне кажется, сам по себе технический долг – это не хорошо и не плохо.
Когда мы (команда) откладываем определенную работу на потом, мы покупаем для себя дополнительное время сейчас. Если мы используем это дополнительное время достаточно выгодно, и делаем отложенное достаточно быстро, то в итоге остаемся в выигрыше.
Если же мы откладываем работу на “когда-нибудь потом” бессистемно и хаос в проекте накапливаем неконтролируемо, то когда-нибудь этот хаос “взорвется” и развитие проекта совсем застопорится. Продолжая банковскую аналогию, можно назвать такую ситуацию “техническим банкротством”: новые фичи невозможно реализовать за разумное время из-за накопленной отложенной работы.