Technical debt — технический долг: особенности внутреннего устройства системы, из-за которых дальнейшие изменения требуют лишних усилий. Это метафора затрат на развитие, а не сумма, которую команда кому-то должна.
Если всё работает, где долг?
Приложение может выполнять свою задачу, но быть неудобным для изменения. Представьте, что одно правило продублировано в нескольких модулях. Чтобы изменить его, разработчику приходится находить и согласованно исправлять каждую копию.
Текущий результат может устраивать пользователя. Трудность обнаруживается при следующей доработке. Именно это помогает отличить смысл метафоры от обычных «ошибок в коде».
The feature works, but changes to it take longer because of technical debt.
Функция работает, но из-за технического долга её изменения занимают больше времени.
Термин не является точным синонимом bug. Ошибка описывает проблему в работе; долг выделяет дополнительную нагрузку при развитии системы. В конкретном случае они могут быть связаны.
Что называют процентами и погашением
В метафоре долга «проценты» — лишние усилия при изменениях. «Погашение» — улучшение устройства системы, которое уменьшает эти усилия. Поэтому в рабочей речи встречаются pay down technical debt и короткая форма tech debt.
We need to pay down the tech debt in this module.
Нам нужно уменьшить технический долг в этом модуле.
Это не обещание перечислить деньги. И финансовую метафору не стоит переносить буквально: по объяснению Мартина Фаулера, дополнительные затраты возникают, когда приходится работать с проблемным участком, а не просто от течения времени.
Назначает ли термин виновного?
Нет. В обсуждениях долг часто связывают со спешкой или сознательным выбором в моменте, но выражение само по себе не говорит, было ли решение сознательным или кто его принял. Фаулер различает намеренно и ненамеренно возникший долг; причины нужно выяснять отдельно.
Проверьте себя
Подумайте над ответом и откройте объяснение.
1. Может ли долг быть у работающей функции?
Функция выдаёт правильный результат, но каждое изменение требует исправлять несколько дублирующих модулей.
It works, but we keep paying interest on the tech debt.
- Нет: technical debt возможно только после поломки функции.
- Да: речь может быть о дополнительных усилиях при изменении.
Показать ответ
Верный ответ — 2. Работающий результат не исключает неудобного внутреннего устройства. Interest в этой метафоре — дополнительные усилия, а не буквальные денежные проценты.
2. Что известно о виновнике?
В отчёте есть только эта фраза.
This module has technical debt.
- Конкретный разработчик сознательно испортил код.
- Из одной фразы нельзя установить ни виновника, ни сознательность решения.
Показать второй ответ
Верный ответ — 2. Technical debt называет проблему устройства и будущих изменений. Долг может возникнуть намеренно или ненамеренно; причины и ответственность требуют отдельного контекста.
Источники
- Martin Fowler: Technical Debt — метафора затрат
- Martin Fowler: Technical Debt Quadrant — намеренный и ненамеренный долг
- Вопрос новичка о термине technical debt — Reddit SaaS
Примеры без отдельной пометы составлены для объяснения.
Сообщить об ошибке