Короткий ответ
Технический долг — это накопившиеся в коде компромиссы и упрощения, которые ускорили разработку в моменте, но в будущем требуют дополнительных усилий на поддержку, доработку или исправление.
Как это работает подробнее
Технический долг возникает не только из-за «плохого кода»: часто это осознанное решение сделать проще и быстрее сейчас, чтобы успеть к сроку, с пониманием, что позже понадобится доработка. Долг накапливается и из-за изменения требований, устаревших библиотек или кода, который писали в спешке без документации, а также из-за естественного устаревания изначально разумных решений по мере роста системы.
Пример кода
example.py
# Временное решение, закоммичено с пометкой технического долга
def get_exchange_rate(currency: str) -> float:
# TODO(tech-debt, JIRA-456): захардкожен курс на время MVP,
# заменить на вызов внешнего сервиса курсов до конца квартала
rates = {"USD": 90.0, "EUR": 98.0}
return rates.get(currency, 1.0)Что использовать на практике
- Практика. Важно отличать технический долг от обычного плохого кода: долг осознанно фиксируется (например, тикетом «TODO: заменить временное решение после релиза X»), а не просто появляется незаметно. Команда должна периодически выделять время на погашение долга, иначе он накапливается и замедляет разработку новых фич, как финансовый кредит накапливает проценты при отсутствии выплат. Полезно вести отдельный список таких временных решений, чтобы они не терялись и не забывались со временем.
Подводные камни
- Риски. Частая ошибка — считать, что любой «не идеальный» код — это технический долг; на деле не все компромиссы требуют немедленного исправления, если они не создают реального риска или замедления. Другая ошибка — полностью игнорировать долг, объясняя это нехваткой времени, пока он не начинает замедлять каждую новую задачу и не превращается в постоянный источник багов.