Как можно измерить удобство поддержки кода?

🎯 Зачем спрашивают
Задача интервьюера понять:
  • может ли кандидат рассуждать не только о коде, но и о процессах, инструментах, взаимодействии команды?
  • Понимает ли он, что DX — это не «удобство IDE», а совокупность факторов: CI/CD, ревью, тесты, документация, поддержка.
  • Умение оперировать метриками и данными
 
📝 Ответ
Удобство поддержки (или же developer experience) редко измеряются напрямую, поэтому чаще всего используют косвенные признаки, которые показывают, насколько комфортно и эффективно разработчикам работать:
 
Метрики производительности разработки:
  • Cycle Time — сколько времени уходит на выполнение задачи.
  • Lead Time for Changes (из DORA) — время от коммита до деплоя в прод.
  • Время code review — среднее время от открытия PR до мержа.
  • Частота деплоев — чем чаще, тем проще процесс.
 
Метрики качества и стабильности:
  • Mean Time to Recovery (MTTR) — как быстро команда чинит баги/продовые инциденты.
  • Change Failure Rate (из DORA) — доля релизов, которые ломают прод.
  • Количество rollbacks / hotfixes — сигнал о качестве пайплайна и тестов.
  • Автоматизация тестирования — покрытие и скорость прогона.
Метрики инструментов и среды:
  • Скорость CI/CD пайплайна — насколько быстро прогоняются тесты, собирается билд, выкатывается релиз.
  • Доступность окружений (dev/staging) — как часто среда «падает» или блокирует работу.
  • Время на поднятие нового окружения — onboarding нового разработчика или запуск проекта. Чем меньше нужно сделать шагов — тем лучше.
  • Наличие и качество документации (можно мерить косвенно — через опросы или скорость онбординга).
Метрики разработчиков и команды (человеческий фактор):
  • Удовлетворенность разработчиков (опросы, шкалы от 0 до 10 или любой другой числовой диапазон).
  • Частота контекстных переключений (например, количество параллельных задач на одного разработчика).
  • Время, затраченное на непроизводственные задачи (почта, бюрократия, поиск информации).
  • Доля технического долга в спринтах (если его много — DX страдает).
Метрики знаний и взаимодействия:
  • Доля задач, которые можно сделать без внешней помощи (автономность).
  • Время поиска ответа (например, если в компании есть внутренний Slack-бот или база знаний).
  • Скорость онбординга нового разработчика (через сколько он делает первый рабочий pull request).
 
⚖️ Компромиссы
  • Метрики ≠ абсолютное качество. Их легко «накрутить» (например, уменьшили Cycle Time, но за счёт качества кода).
  • DORA-метрики больше подходят для команд/организаций, чем для оценки отдельного проекта.
  • Не все метрики универсальны. В стартапах важнее скорость итераций, в enterprise — стабильность
  • Некоторые показатели субъективны (опросы удовлетворённости) и подвержены влиянию внешних факторов (настроение, личные обстоятельства), поэтому требуют осторожной интерпретации.
 
🔎 Встречные вопросы
  • Какие из этих метрик применимы к маленьким командам (3–5 человек), а какие к enterprise?
  • Как сбалансировать «скорость релизов» и «стабильность»?
  • Вы пришли в проект, в котором не собираются какие-либо метрики. Какие ваши первые шаги?
  • Какие метрики могут ввести в заблуждение?
 
🚩 Красные флаги
  • Очень общий ответ («ну, удобно — значит хорошо») → поверхностное мышление, нет опыта в метриках.
  • Сильно технический ответ («замерять скорость компиляции, время тестов») → показывает глубину, но возможно узость взгляда.
 
🛠 Практика
Кейс 1
Вы — техлид 5 команд разработки. В каждой команде по 2 frontend и 2 backend разработчика. Каждый квартал стабильно в эксплуатацию вводится 6 новых backend микросервиса, и 2 frontend приложения. В проекте используются микросервисы и микрофронты. Текущий процесс вывода нового микросервиса:
  • Разработчики копируют скелет проекта с другого репозитория
  • Меняют конфигурацию и меняют все названия
  • Ставят задачу на инфраструктурный отдел, чтобы те подняли все необходимые зависимые сервисы (БД, кэш, брокер сообщений)
  • Вручную меняют конфиг файлы API Gateway, добавляя новый сервис
  • Деплоят сервис
Полный процесс занимает 4 дня.
Текущий процесс вывода нового фронтенд приложения:
  • Разработчики копируют скелет проекта с другого репозитория
  • Меняют конфигурацию и меняют все названия
  • Вручную вносят новый сервис в список доступных сервисов в stage/production средах
  • Деплоят приложение
Полный процесс занимает 2 дня одного разработчика.
 
Часто встречающиеся проблемы:
  • Не пишутся логи сервиса/фронта
  • Роуты backend сервиса недоступны
  • Вроде задеплоили frontend приложение, а по роуту выводится 404
 
Какие изменения вы бы предложили? Какие метрики вы бы ввели для отслеживания этого процесса?
Кейс 2
Вы тимлид команды. Несколько кварталов подряд ваша команда срывает сроки поставки фичей. Все фичи ваша команда должна была вносить в проекты других команд. Вы пытаетесь разобраться с ситуацией. После серии 1-to-1 вы понимаете, что узким горлышком является процесс core review. Например, релиз задачи с оценкой 1-2 story point занимает от 1-2 недель. Ваши действия?
 
📚 Источники / ссылки