Найти тему
Цифровые Привычки

Как понять, что пора автоматизировать технический долг

Оглавление

Если вы замечаете, что количество ошибок в коде растет, а скорость их устранения оставляет желать лучшего, то самое время начать автоматизацию и избавиться от технического долга.

Что такое техдолг, и по каким критериям можно понять, что настало время его оптимизировать — узнаете в нашей новой статье.

Что такое технический долг

Технический долг — это накопленные проблемы в коде. К ним относят отложенные задачи, устаревшие компоненты, нереализованные функции, запутанные алгоритмы, некорректные архитектурные решения и другие «костыли». Все они приводят к багам, дополнительным затратам времени на их исправление или на внедрение нового функционала.

Согласно отчету Software AG, в 2022 году ИТ-компании потратили на устранение техдолга более 20% общего бюджета. 58% опрошенных не имеют официальной стратегии по управлению им.

Отчет Software AG «How sustainability is (or should be) shaping IT decisions in 2023»
Отчет Software AG «How sustainability is (or should be) shaping IT decisions in 2023»

А по данным Stepsize, 66% разработчиков считают, что команда могла бы работать на 100% быстрее, если бы у них был процесс управления техдолгом.

Отчет Stepsize «The State of Technical Debt 2021»
Отчет Stepsize «The State of Technical Debt 2021»

Какие проблемы возникают из-за технического долга

Увеличение времени разработки
Накопившиеся задачи создают дополнительную нагрузку на команду. Разработчики вынуждены исправлять ошибки и улучшать код, написанный в спешке.

График «Скорость разработки от количества технического долга»
График «Скорость разработки от количества технического долга»

Снижение качества продуктов
Когда проект находится под жестким давлением сроков и бюджетов, разработчики могут идти на компромиссы и пренебрегать код-ревью.

Увеличение затрат на проекты
Если продукт выпущен с недоработками или ошибками, команда тратит больше времени и ресурсов на исправление проблем. При этом качество не увеличивается пропорционально.

Неудовлетворенность пользователей
Частые неполадки и ошибки в работе продуктов приведут к тому, что клиенты начнут искать альтернативу у конкурентов.

Уменьшение конкурентоспособности
Проблемы с качеством продуктов, удовлетворенностью пользователей и затратами на техническое обслуживание приводят к потери рыночной доли.

Как выявить технический долг

Критерий 1. Низкая степень модульности
Сложный код — верный признак растущего техдолга. Если код сложно разделить на отдельные модули, которые могут быть легко понимаемы и использованы, то проект становится большим, а значит есть вероятность, что архитектурные решения некорректны.

Критерий 2. Нарастающее количество ошибок
Особенно это касается случаев, когда проблема в коде возникает не единожды. Если разработчики уже несколько раз сталкивались с одной и той же проблемой, возможно дело не хард скиллах, а в системном сбое, который должен быть решен автоматически.

Критерий 3. Метрика «Отток кода»
Code Churn — показатель, который подсчитывает, сколько раз в конкретной строке код удалялся, заменялся или переписывался. При разработке новой функции отток неизбежен, но после запуска новой версии отток кода должен уменьшаться.

Критерий 4. Метрика «Покрытие кода»
Code Coverage — с помощью показателя можно узнать, какой процент кода был протестирован. Низкое покрытие кода означает, что код содержит ошибки или он не был протестирован.

Критерий 5. Коэффициент технического долга
Technical Debt Ratio — метрика для расчета стоимости техдолга. В идеале ваш TDR должен быть около 5%. Единой формулы не существует, компании выбирают наиболее адекватный вариант для себя:

  1. TDR = Сумма технического долга / Годовая выручка• сумма технического долга — общее количество времени, затраченное на оптимизацию кода;• годовая выручка — доход, полученный от продукта за год.
  2. TDR = (Стоимость восстановления / стоимость разработки) × 100• стоимость восстановления может быть рассчитана как функция метрик качества кода: «Отток кода» и «Покрытие кода»;• стоимость разработки — количество строк кода, необходимых для создания продукта или функции, разделенный на средние затраты ресурсов на одну строку.

Критерий 6. Ручной тестировщик не справляется
QA находят много проблем. И тогда стоит посмотреть на метрику «Покрытие кода» с помощью юнит-тестов.

Варианты автоматизации технического долга

Чтобы успешно управлять техническим долгом, мы рекомендуем:

  • регулярно проводить аудит и код-ревью;
  • включить рефакторинг в план работы на регулярной основе;
  • вовремя обновлять инструменты, фреймворки и библиотеки;
  • использовать модульную архитектуру и четко обозначать свою позицию по отношению к техдолгу в новых компонентах или библиотеках;
  • внедрять инструменты для автоматического анализа кода и выявления потенциальных ошибок.

Например, наша система оптимизации работы с техдолгом CodeAche сама анализирует код, оценивает нарушения, зависимости и уязвимости в исходном коде.

Проанализируйте техдолг своего продукта!