Технический долг — это то, из-за чего одна и та же по смыслу правка через два года стоит втрое дороже, чем стоила на старте. Система работает, снаружи ничего не поменялось, клиенты ничего не заметили, а вот счета от подрядчика растут, и объяснение «стало сложнее» звучит всё менее убедительно.
Разница между тем, как система устроена сейчас, и тем, как её собрали бы без спешки и с сегодняшним знанием о процессе. Он появляется в каждом живом проекте и сам по себе не является браком: часть решений принимается быстро осознанно, чтобы успеть к сроку. Долгом это становится тогда, когда за него перестают платить, — и тогда он капитализируется в стоимости каждой следующей правки.
Ниже — как долг образуется, как его увидеть, не открывая код, сколько он стоит в рублях на горизонте трёх лет и какую долю бюджета поддержки разумно на него тратить.
Откуда он берётся: четыре источника
Ни один из четырёх не связан с квалификацией исполнителя. Все четыре — следствие нормальных решений, принятых в нормальных обстоятельствах.
- Срочность. «Надо к вторнику, отчётность горит». Решение принимается за час вместо дня и работает, но встраивается в систему не там, где ему место. Через год кто-то будет искать, почему расчёт скидки живёт в модуле печати документов.
- Обходные решения. Смежная система не отдаёт нужное поле, и ставится временная перемычка: выгрузка через файл, ручной перенос, дублирование данных в двух местах. Планировалось переделать, когда вендор добавит метод. Вендор добавил, переделывать никто не пришёл.
- Отсутствие документации. Знание о том, почему сделано именно так, живёт в голове одного инженера. Формально долга нет — код исправен. Фактически цена любого изменения включает время на то, чтобы разобраться, и это время растёт по мере того, как автор забывает детали.
- Ручные шаги внутри автоматического процесса. Раз в неделю кто-то выгружает файл и загружает его в другую систему, потому что «так пока проще». Про этот шаг знают трое, в схеме процесса его нет, и обнаруживается он в отпуск того, кто его делает.
Одна перемычка — это неудобно и дёшево. Проблема начинается, когда следующую доработку приходится строить с учётом уже существующей перемычки, а третью — с учётом двух. Стоимость растёт не линейно: каждое новое изменение обязано не сломать все предыдущие обходы, и проверка этого занимает больше времени, чем сама работа.
Пять признаков, видных без программиста
Все пять наблюдаются со стороны руководителя и не требуют доступа к коду. Один сработавший признак — это случайность, три и больше — состояние системы.
- 1Правка «на час» стабильно занимает три дня. Ключевое слово — стабильно: разовое отклонение бывает у всех, повторяющееся означает, что оценка перестала соответствовать реальности системы. Проверяется по актам за год: сравните часы на похожие правки тогда и сейчас.
- 2Каждое изменение ломает соседнее. После правки в модуле счетов приходит жалоба из модуля отгрузок. Это самый надёжный признак: он означает, что части системы связаны сильнее, чем следует, и изменить одну, не задев другие, физически нельзя.
- 3Никто не берётся назвать срок. Ответ «надо смотреть» на третью подряд типовую задачу — не осторожность, а честное признание, что предсказуемость потеряна. Инженер, который знает систему, называет вилку сразу.
- 4Всё держится на одном человеке. Отпуск конкретного инженера подрядчика останавливает изменения, а не замедляет их. Это долг в чистом виде: знание не переведено в документацию и в код, а значит, за него платят временем.
- 5Растёт список «сюда не лезем». Есть модули, про которые говорят «работает — не трогай». Каждый такой модуль — участок, где любое будущее изменение будет стоить кратно дороже, и таких участков со временем становится больше.
Четвёртый признак стоит проверить отдельно, потому что он влияет не только на цену правок. Система, которую может трогать один человек, — это система, которую нельзя передать: подхват такой системы другим подрядчиком стоит в три с половиной раза дороже организованной передачи.
Что долг стоит в рублях: три года
Модельная система: внедрение обошлось в 900 000 ₽, договор поддержки — 45 000 ₽ в месяц, то есть 15 часов инженера по 3 000 ₽/час и 180 часов в год. Компания вносит примерно 14 изменений в год: новый отчёт, изменение условий скидки, дополнительное поле, новый статус, адаптация к обновлению смежной системы.
| Год эксплуатации | Типовая правка без погашения долга | Она же при погашении 15 % часов | Что изменилось в системе |
|---|---|---|---|
| Первый год | 6 часов | 6 часов | Система свежая, автор помнит все решения |
| Второй год | 11 часов | 7 часов | Появились первые три обходных решения, документация отстала |
| Третий год | 19 часов | 7 часов | Обходы наложились друг на друга, часть модулей в списке «не трогать» |
| Четвёртый год | 26 часов | 8 часов | Оценка перестала быть предсказуемой, срок называют с запасом вдвое |
Строка с доплатами в третий год важнее самой разницы. Пока правки укладываются в оплаченные часы, рост долга виден только внимательному глазу. Как только они перестают укладываться, к абонементу добавляются счета сверх него, и разговор с подрядчиком мгновенно становится разговором о деньгах, а не о состоянии системы. Обычно в этот момент и начинают искать нового исполнителя — то есть лечить симптом.
Двухосевой график за четыре года эксплуатации. Ось X — год, ось Y — часов на типовую правку. Верхняя линия «без погашения долга» проходит через точки 6 часов в первый год, 11 во второй, 19 в третий, 26 в четвёртый. Нижняя линия «с погашением 15 % часов» проходит через 6, 7, 7, 8. Горизонтальная штриховая линия на уровне, соответствующем 180 оплаченным часам в год при 14 правках, — то есть примерно 12,9 часа на правку — подписана «предел абонемента 45 000 ₽/мес». Верхняя линия пересекает её между вторым и третьим годом, точка пересечения выделена и подписана «здесь начинаются счета сверх абонемента».
Учёт долга: список вместо устных жалоб
Пока долг существует только в виде фразы инженера «там всё плохо», решение по нему принять невозможно: непонятно, что именно плохо, сколько стоит починить и что будет, если не чинить. Учёт превращает жалобу в позицию бюджета, и делается это списком из четырёх полей.
| Поле | Что писать | Пример |
|---|---|---|
| Что не так | Одно предложение без терминов | Обмен со складом идёт через ручную выгрузку файла раз в неделю |
| К чему это приводит | Наблюдаемое последствие, а не техническая формулировка | Остатки в CRM отстают до 7 дней; менеджеры обещают товар, которого нет |
| Оценка на устранение | Часы и деньги, как в обычной задаче | 14 часов, 42 000 ₽ |
| Что будет, если не устранять | Прогноз, а не угроза: что подорожает и насколько | Каждая правка обмена дороже на 3–4 часа; при уходе сотрудника выгрузка встанет |
Ведёт список инженер подрядчика, читает руководитель раз в квартал — двадцать минут на всё. Правило пополнения одно и оно механическое: любое обходное решение попадает в список в момент создания, вместе с датой, к которой планировалось его убрать. Это не бюрократия, а единственный способ не забыть про перемычку, которая «до вторника». Тот же принцип работает и в обратную сторону: если у вас есть регламент проведения изменений, каждая срочная правка мимо маршрута автоматически становится строкой в списке долга.
Правило бюджета и пять вопросов подрядчику
Рабочая норма — 10–20 % часов поддержки ежемесячно на погашение долга. Не проценты от бюджета проекта и не отдельный разовый проект «рефакторинг», а постоянная доля текущих часов. При абонементе на 15 часов в месяц это 1,5–3 часа: одна перемычка в квартал, и этого достаточно, чтобы линия роста стоимости не уходила вверх.
Норму стоит записать в договор сопровождения отдельной строкой, иначе она не расходуется никогда: у текущих задач всегда более высокий приоритет, чем у устранения того, что и так работает. Что вообще должно быть в договоре и где проходит граница между поддержкой и доработкой, мы разбирали отдельно.
- 1Сколько часов заняла последняя типовая правка и сколько такая же занимала год назад
Проверяется по актам за двенадцать месяцев, никакого доверия на слово не требуется. Рост в полтора раза — норма развития системы, рост втрое — долг.
- 2Какие модули вы стараетесь не трогать и почему
Хороший ответ — конкретный короткий список с объяснением. Ответ «таких нет» на системе старше двух лет означает либо что подрядчик не знает систему, либо что он не готов говорить откровенно.
- 3Что произойдёт, если ваш инженер уйдёт в отпуск на три недели
Ответ проверяется отпуском. Если на это время изменения останавливаются, у вас не только технический долг, но и организационный риск — и он дороже.
- 4Сколько ручных шагов осталось внутри автоматического процесса
Единственный вопрос, ответ на который проверяется не у подрядчика, а у своих сотрудников. Спросите тех, кто работает в процессе, что они делают руками каждую неделю, — список обычно длиннее, чем ожидает и подрядчик, и руководитель.
- 5Покажите список технического долга с оценками
Либо он есть, либо его нет, и отсутствие — это тоже ответ. Подрядчик, который ведёт такой список сам и приносит его на квартальную встречу, экономит вам деньги, даже если каждый раз просит часы на погашение.
Сравнение в две колонки: «Без погашения» и «С погашением 15 % часов». Строки: часов на правку в третий год (19 — 7), стоимость правок за три года (1 512 000 ₽ — 882 000 ₽), стоимость погашения за три года (0 ₽ — 243 000 ₽ при 27 часах в год), итого за три года (1 512 000 ₽ — 1 125 000 ₽), превышение абонемента (86 часов в третий год, 258 000 ₽ доплат — нет), предсказуемость срока правки (оценка с запасом вдвое — вилка называется сразу). Внизу подпись: «разница 387 000 ₽».
Когда долг разумно оставить как есть
Погашение долга — вложение, и оно окупается только на достаточном горизонте. Есть четыре ситуации, в которых правильное решение — не гасить, а честно дожить с тем, что есть.
- Системе остался год. Если она заменяется или переписывается в обозримом сроке, вложения в её внутреннее состояние не успеют вернуться. Считать здесь надо не долг, а что выгоднее — дорабатывать или переписывать, и это отдельное решение по пяти критериям.
- Процесс меняется. Участок реорганизуют, отдел объединяют с другим, продукт снимают с производства — устранять долг в модуле, который через полгода не понадобится, значит платить дважды.
- Правок мало. Две-три правки в год не дают долгу капитализироваться: рост стоимости есть, но за срок жизни системы он не накопится до заметных сумм. Порог, за которым погашение начинает окупаться, — примерно восемь-десять изменений в год.
- Обходное решение дешевле устранения на всём горизонте. Ручной шаг, который стоит пять тысяч рублей в месяц, и его устранение за 380 000 ₽ окупятся через шесть с лишним лет, то есть не окупятся никогда. Это надо посчитать, а не решить на глаз: интуиция здесь систематически ошибается в пользу переделки.
Самая частая реакция на выросшие счета — поискать исполнителя подешевле. Новый подрядчик получает ту же систему с теми же обходными решениями, но без человека, который помнит, почему они там появились, и первые два-три месяца работает медленнее прежнего. Если признаки из этой статьи сработали, менять надо не людей, а состояние системы — и начинать с того, чтобы получить список долга в часах.
И последнее наблюдение. Долг — единственная статья расходов эксплуатации, которая растёт сама, без участия компании, и оплачивается через стоимость обычной работы, где её никто не видит. Пятнадцать процентов часов — цена того, чтобы он перестал расти.
За технический долг платят всегда. Вопрос только в том, платят ли за него осознанно или через счета, в которых он называется по-другому.
