Представьте себе автомобиль, который никто не обслуживает (не меняет масло, фильтры и шины). Конечно, в краткосрочной перспективе это экономит немного денег, но каждое пропущенное ТО увеличивает «долг» владельца перед автомобилем. В какой-то момент этот долг может превысить стоимость самого автомобиля, а затем в один прекрасный день посреди дороги у него заклинит двигатель или же лопнет колесо, последствия чего обойдутся еще дороже. Таким образом, дешевле исправлять мелочи, чтобы избежать крупных, неожиданных аварий или затрат.
То же самое происходит и в информационной системе предприятия, только вместо автомобиля здесь исходный код и отдельные компоненты. Каждый раз, когда для какой-либо проблемы используется обходное решение (прямо в коде указывается фиксированное значение, не выполняется проверка параметров функции, игнорируется необходимость обновления или применения патча безопасности), вы увеличиваете технический долг.
Технический долг возникает естественным образом, если ваша система развивается быстро. Это нормально – и способствует более быстрому выполнению задач. Однако к такому долгу необходимо относиться так же, как к кредитной карте: деньги с нее тратить можно, но в конце месяца обязательно погасите задолженность.
Сколько времени стоит тратить на устранение технического долга? Это во многом зависит от вашей компании, но, как правило, от 10 до 30 % рабочего времени вашей команды посвящается избавлению от долгов.
Измерить количество проблем в исходном коде можно довольно просто с помощью инструментов контроля качества, включенных в ваш пайплайн (SonarQube, опять же, хороший пример). Если вы замечаете проблемы во время ревью кода, а также во время релизов и обновлений, помечайте их и добавляйте в бэклог. Например, инструмент анализа мог не указать на какой-то фрагмент кода, потому что синтаксических проблем в нем нет, но вы знаете, что это было временное исправление, которое необходимо обязательно переделать, чтобы оно соответствовало общим требованиям.
Хороший CTO всегда знает уровень технического долга в своем проекте. Полезный совет, особенно если вы используете спринты, – через каждые 2–3 спринта выделяйте некоторое время для работ по устранению технического долга.