Технический долг

↑ 9.1 Team Lead и soft skills · ← Предыдущая · → Следующая

Обязательно~3 мин чтенияУровень: senior

Зачем это на собесе

Лид должен уметь убеждать бизнес и управлять долгом: измерять, приоритизировать, встраивать в процесс.

Что это

Накопленные компромиссы, которые замедляют будущую разработку: быстрые решения, устаревшие библиотеки, отсутствие тестов, дублирование.

Виды (по Фаулеру)

ОсознанныйНеосознанный
Осторожный«Сдадим MVP и вернёмся»«Теперь знаем, как надо было»
Безрассудный«Нет времени на дизайн»«Что такое слои?»

Также: архитектурный, кодовый, тестовый, документационный, инфраструктурный (устаревшие зависимости, CI).

Как выявлять и измерять

  • частые баги и hotspots в git (файлы с большим числом изменений и авторов);
  • время на изменение в модуле, lead time;
  • метрики: сложность, покрытие, размер файлов, дубли (SonarQube);
  • опрос команды («где больнее всего»);
  • устаревшие зависимости и CVE.

Как приоритизировать

Цена долга (время на обход в месяц, риск инцидентов, блок фич) против стоимости погашения. Матрица: влияние × усилия. Начинать с областей, в которых команда работает чаще всего.

Как гасить

  • правило бойскаута: оставляй код чище;
  • выделенный бюджет: 10–20% времени в спринте;
  • рефакторинг вместе с фичей: трогаем модуль → приводим в порядок;
  • strangler: постепенная замена по частям, а не «большой переписыв»;
  • тесты перед рефакторингом (характеризационные);
  • автоматизация: линтеры, codemod, Renovate.

Как говорить с бизнесом

Не «код плохой», а «каждая фича в модуле X стоит на 40% дороже; исправление за 3 недели вернёт эту разницу через 2 месяца». Язык денег, рисков и скорости поставки.

Чего избегать

  • полный переписывание с нуля (риск, потеря знаний);
  • долги без учёта (реестр с владельцами и сроками);
  • «долг на потом» без плана.

Вопросы с ответами