Метрики Agile

Введение

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

Закон Гудхарта

“Когда мера становится целью, она перестаёт быть хорошей мерой.” Метрики нужны для диагностики и улучшения процессов, а не для оценки отдельных сотрудников или давления на команду. Как только метрика начинает использоваться как KPI для наказания - люди начинают оптимизировать метрику, а не процесс.

Vanity-метрики vs Actionable-метрики

ТипОписаниеПримеры
Vanity (тщеславные)Красиво выглядят на дашборде, но не помогают принимать решенияКоличество строк кода, общее число коммитов, “часы работы”
Actionable (действенные)Дают ясный сигнал о проблеме и подсказывают, что нужно изменитьCycle Time, Throughput, Change Failure Rate, Flow Efficiency

Принцип: Measure to improve, not to judge

Каждая метрика должна отвечать на вопрос: “Что мы будем делать иначе, если это число изменится?”

Принципы хороших метрик

  1. Прозрачность - метрики доступны всей команде, не только менеджменту
  2. Контекст - числа без контекста бесполезны (velocity 42 - это хорошо или плохо?)
  3. Тренды важнее абсолютных значений - следите за динамикой, а не за конкретным числом
  4. Минимализм - лучше 3-5 ключевых метрик, чем 30 неотслеживаемых
  5. Командные, а не индивидуальные - метрики измеряют систему, а не людей

Метрики потока (Flow Metrics)

Метрики потока пришли из Lean и Kanban. Они измеряют, как работа проходит через систему от момента запроса до момента поставки.

Lead Time

Lead Time - время от момента поступления запроса (задача создана / попала в бэклог) до момента поставки ценности конечному пользователю.

Lead Time = Дата поставки - Дата поступления запроса

Lead Time включает в себя всё время ожидания: в бэклоге, в очереди на разработку, в разработке, на ревью, на тестировании, на деплое.

Что показывает: предсказуемость поставки для заказчика. Чем стабильнее Lead Time, тем точнее можно прогнозировать сроки.

Как улучшить:

  • Уменьшить WIP (незавершённую работу)
  • Ускорить ревью и тестирование
  • Автоматизировать деплой
  • Убрать этапы ожидания и согласования

Cycle Time

Cycle Time - время от начала активной работы над задачей до её завершения.

Cycle Time = Дата завершения - Дата начала работы

Cycle Time - это подмножество Lead Time. Он не включает время ожидания в бэклоге.

Соотношение:

Lead Time = Время ожидания в бэклоге + Cycle Time

Что показывает: эффективность самого рабочего процесса команды.

Lead Time - для заказчика, Cycle Time - для команды

Заказчику важно, когда его запрос будет выполнен (Lead Time). Команде важно понимать, сколько занимает непосредственная работа (Cycle Time).

Throughput (Пропускная способность)

Throughput - количество завершённых единиц работы за единицу времени.

Throughput = Количество завершённых задач / Период времени

Например: 12 задач в неделю, 48 задач в месяц.

Чем полезен:

  • Позволяет прогнозировать, сколько задач команда может выполнить за спринт/месяц
  • Помогает определить реалистичный объём работы на итерацию
  • Тренд Throughput показывает, растёт или падает продуктивность команды

Throughput vs Velocity: Throughput считает количество задач, Velocity - сумму Story Points. Throughput проще и менее подвержен манипуляциям.

WIP (Work in Progress)

WIP - количество задач, находящихся в работе одновременно.

Закон Литтла

Фундаментальная связь между тремя метриками потока:

Cycle Time = WIP / Throughput

Или эквивалентно:

WIP = Throughput x Cycle Time

Следствие закона Литтла

При постоянном Throughput, уменьшение WIP напрямую уменьшает Cycle Time. Это математическое обоснование WIP-лимитов в Kanban.

WIP-лимиты

WIP-лимит - это максимальное количество задач, допустимых на определённом этапе работы (колонке на канбан-доске).

Эффекты WIP-лимитов:

ЭффектОписание
Уменьшение Cycle TimeМеньше переключений контекста, задачи быстрее проходят через систему
Выявление узких местКогда колонка “забита” до лимита, видно, где тормозит процесс
Повышение качестваКоманда фокусируется на меньшем количестве задач одновременно
Снижение стрессаМеньше параллельных потоков работы для каждого участника

Как определить начальный WIP-лимит:

  • Формула-ориентир: WIP-лимит = количество участников x 1.5 (округлить до целого)
  • Затем корректировать эмпирически: если лимит слишком высок - задачи стоят; если слишком низок - люди простаивают

Flow Efficiency (Эффективность потока)

Flow Efficiency - отношение времени активной работы к общему Lead Time.

Flow Efficiency = (Время активной работы / Lead Time) x 100%

Типичные значения:

  • Большинство организаций: 5-15% (шокирующе низко!)
  • Хорошие команды: 15-40%
  • Отличные команды: 40%+

Это значит, что в среднем задача 85-95% времени ждёт, а не обрабатывается.

Как улучшить:

  • Уменьшить WIP
  • Устранить этапы согласования и ручного одобрения
  • Автоматизировать тестирование и деплой
  • Улучшить кросс-функциональность команды

Cumulative Flow Diagram (CFD)

CFD (Накопительная диаграмма потока) - визуализация количества задач на каждом этапе работы в динамике времени.

CFD - один из самых мощных аналитических инструментов Kanban. По одной диаграмме можно определить Lead Time, WIP, Throughput и выявить проблемы.

Как читать CFD

На графике по оси X - время, по оси Y - количество задач. Каждая цветная полоса соответствует этапу работы (бэклог, в работе, ревью, тестирование, готово).

Ключевые паттерны:

ПаттернЧто видно на CFDЧто означает
Параллельные полосыШирина каждой полосы постояннаСтабильный поток, процесс предсказуем
Расширяющаяся полосаОпределённый этап растётУзкое место: задачи застревают на этом этапе
”Лестница” на линии DoneЗадачи завершаются партиямиБатчинг вместо непрерывного потока
Схождение полосРабота не поступает, но завершаетсяИстощение входного потока
Расхождение полосПоступает больше, чем завершаетсяПерегрузка: WIP растёт бесконтрольно

Как извлечь метрики из CFD:

  • Lead Time = горизонтальное расстояние между линией поступления и линией завершения
  • WIP = вертикальное расстояние между линиями поступления и завершения
  • Throughput = наклон линии завершения (чем круче, тем выше пропускная способность)

Velocity и планирование

Velocity (Скорость команды)

Velocity - суммарное количество Story Points завершённых задач за спринт.

Velocity = SUM(Story Points завершённых задач за спринт)

Расчёт средней Velocity:

Берётся среднее арифметическое за последние 3-5 спринтов:

Средняя Velocity = (V(Sprint N-2) + V(Sprint N-1) + V(Sprint N)) / 3

Пример: команда за 3 спринта завершила задачи на 99, 101, 100 SP. Средняя Velocity = 100 SP. Это означает, что на следующий спринт команда может взять примерно 100 SP.

Velocity - не мера продуктивности!

Velocity - это инструмент планирования, а не оценки эффективности. Нельзя сравнивать Velocity разных команд. Нельзя требовать “повышения Velocity”. Это приведёт к инфляции оценок (Story Points начнут искусственно завышаться).

Pitfalls использования Velocity:

  • Сравнение Velocity между командами (разные шкалы оценки)
  • Использование как KPI (инфляция Story Points)
  • Принуждение к увеличению Velocity (жертвование качеством)
  • Планирование по Velocity новой/неустоявшейся команды (нет истории)

Sprint Goal Completion Rate

Sprint Goal Completion Rate - процент спринтов, в которых была достигнута поставленная цель спринта.

Sprint Goal Completion Rate = (Спринты с достигнутой целью / Общее количество спринтов) x 100%

Целевое значение: >= 80%

Эта метрика важнее, чем процент выполненных задач, потому что цель спринта - это то, что реально несёт ценность. Можно выполнить 95% задач, но не достичь цели.

Burndown Chart (Диаграмма сгорания)

Burndown-диаграмма показывает количество оставшейся работы в спринте по дням.

Ось X - дни спринта, Ось Y - оставшиеся Story Points (или количество задач).

Идеальная линия - прямая от общего объёма работы до нуля.

Паттерны:

ПаттернОписаниеЧто делать
Линия выше идеальнойОтставание от планаПересмотреть скоуп, убрать задачи
Линия ниже идеальнойКоманда опережает планМожно взять дополнительные задачи
”Плато” в началеЗадачи не начинают завершатьсяВозможно, задачи слишком крупные - декомпозировать
Резкое падение в концеЗадачи закрываются пачкой в конце спринтаПроблема: вероятно, задачи не завершены качественно
Линия идёт вверхДобавляются новые задачи в спринтНарушение Sprint Commitment - обсудить на ретро

Burnup Chart (Диаграмма нарастания)

Burnup показывает два графика одновременно:

  1. Общий объём запланированной работы (scope)
  2. Завершённая работа

Преимущество перед Burndown: видно, когда объём работы менялся (scope creep). На Burndown это скрыто.

Capacity (Ёмкость команды)

Capacity - реальное количество рабочих часов команды на спринт с учётом отпусков, больничных, встреч и технического долга.

Capacity = Количество участников x Рабочие дни x Фокус-фактор

Фокус-фактор (обычно 0.6-0.8) учитывает время, потерянное на встречи, переключения контекста и прочее.

Capacity != Velocity:

  • Capacity - это входные данные (сколько времени есть)
  • Velocity - это выходные данные (сколько работы получается сделать)

DORA метрики

DORA (DevOps Research and Assessment) - набор из четырёх метрик, разработанных командой Google Cloud на основе исследований более 30 000 специалистов за 6 лет. Описаны в книге "Accelerate" (Nicole Forsgren, Jez Humble, Gene Kim).

DORA-метрики измеряют эффективность поставки ПО и являются золотым стандартом для оценки DevOps-зрелости.

Четыре метрики DORA

1. Deployment Frequency (Частота деплоев)

Определение: Как часто код успешно деплоится в прод.

УровеньЧастота
EliteНесколько раз в день (on-demand)
HighОт раза в день до раза в неделю
MediumОт раза в неделю до раза в месяц
LowРеже, чем раз в месяц

Как улучшить:

  • CI/CD-пайплайн с автоматическим деплоем
  • Feature flags для разделения деплоя и релиза
  • Trunk-based development вместо долгоживущих веток
  • Уменьшение размера изменений (small batches)

2. Lead Time for Changes (Время от коммита до прода)

Определение: Время от момента коммита кода до его успешного запуска в продакшене.

УровеньВремя
EliteМенее одного дня
HighОт одного дня до одной недели
MediumОт одной недели до одного месяца
LowБолее одного месяца

Это не тот же Lead Time, что в Kanban

DORA Lead Time for Changes измеряет только техническую часть: от коммита до прода. Kanban Lead Time - от появления запроса до поставки.

Как улучшить:

  • Автоматизация тестирования (unit, integration, E2E)
  • Параллельное выполнение этапов CI/CD
  • Автоматизированное code review (линтеры, SAST)
  • Уменьшение ручных gate-ов

3. Mean Time to Recovery - MTTR (Среднее время восстановления)

Определение: Среднее время от обнаружения сбоя в продакшене до полного восстановления работоспособности.

УровеньВремя
EliteМенее одного часа
HighМенее одного дня
MediumОт одного дня до одной недели
LowБолее одной недели

Как улучшить:

  • Мониторинг и алертинг (Prometheus, Grafana, PagerDuty)
  • Автоматический rollback
  • Feature flags для быстрого отключения проблемных фич
  • Runbook-и для типичных инцидентов
  • Chaos Engineering (тренировка реакции на сбои)

4. Change Failure Rate (Доля неудачных изменений)

Определение: Процент деплоев, которые приводят к сбоям в продакшене и требуют hotfix, rollback или patch.

УровеньПроцент
Elite0-5%
High6-10%
Medium11-15%
Low16-30%+

Как улучшить:

  • Расширение автоматического тестирования
  • Canary-деплой и blue-green деплой
  • Peer code review с чеклистами
  • Smoke-тесты после деплоя
  • Feature flags и постепенное раскатывание

Взаимосвязь DORA-метрик

Ключевой вывод из исследований DORA

Команды с высокими показателями Deployment Frequency и Lead Time for Changes одновременно демонстрируют низкий Change Failure Rate и быстрый MTTR. Скорость и качество не противоречат друг другу - они взаимоусиливаются.

Рекомендуемая литература:

  • “Accelerate: The Science of Lean Software and DevOps” - Nicole Forsgren, Jez Humble, Gene Kim (2018)
  • Ежегодные отчёты DORA (State of DevOps Report): https://dora.dev

Метрики качества

Defect Density (Плотность дефектов)

Defect Density - количество дефектов на единицу объёма кода или на единицу работы.

Defect Density = Количество дефектов / (Тысячи строк кода)  [дефекты/KLOC]

Или в контексте Agile:

Defect Density = Количество дефектов / Количество Story Points

Типичные значения (промышленный стандарт):

  • Среднее ПО: 15-50 дефектов на KLOC
  • Качественное ПО: 2-10 дефектов на KLOC
  • Критическое ПО (NASA, авиация): < 1 дефект на KLOC

Escaped Defects (Дефекты, прошедшие в продакшен)

Escaped Defects - дефекты, обнаруженные пользователями в продакшене, а не на этапах тестирования.

Escaped Defect Rate = (Дефекты в проде / Общее количество дефектов) x 100%

Это критическая метрика, потому что стоимость исправления дефекта в продакшене в 10-100 раз выше, чем на этапе разработки (по данным IBM Systems Sciences Institute).

Целевое значение: < 10%

Как снизить:

  • Shift-left testing (тестирование на ранних этапах)
  • Code review с чеклистами
  • Автоматизированное регрессионное тестирование
  • Качественные AC (Acceptance Criteria) и DoD

Technical Debt (Технический долг)

Technical Debt - объём "быстрых" решений в коде, которые потребуют переделки в будущем.

Измерить технический долг можно несколькими способами:

  1. Technical Debt Ratio (TDR):
TDR = (Стоимость устранения долга / Стоимость разработки с нуля) x 100%
  1. Процент спринта на техдолг:
Рекомендуется: 15-20% ёмкости спринта на работу с техдолгом
  1. Инструментальные метрики: SonarQube, Code Climate предоставляют оценку техдолга в человеко-днях.

Code Coverage (Покрытие кода тестами)

Code Coverage = (Строки кода, покрытые тестами / Общие строки кода) x 100%

Ловушки Code Coverage

  • 100% покрытие не гарантирует отсутствие багов
  • Покрытие можно накручивать тестами без assertions
  • Важнее покрытие критических путей и граничных условий, чем общий процент
  • Хорошее покрытие: 70-85% для бизнес-логики, 50-70% для инфраструктурного кода

Mean Time Between Failures (MTBF)

MTBF - среднее время безотказной работы системы между сбоями.

MTBF = Общее время работы / Количество сбоев

Чем выше MTBF, тем надёжнее система. Связана с MTTR - обе нужны для оценки доступности:

Availability = MTBF / (MTBF + MTTR)

Метрики команды и организации

Team Health Check (Spotify модель)

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

Параметры (примеры):

ПараметрЗелёный (хорошо)Жёлтый (есть проблемы)Красный (плохо)
Delivering ValueПоставляем ценность регулярноИногда пропускаемЗаказчик недоволен
SpeedРаботаем быстро, нет блокеровИногда тормозимПостоянные задержки
FunРаботать интересноБывает скучноХочется уволиться
LearningПостоянно учимсяНет времени на обучениеСтагнация
TeamworkКоманда - единое целоеЕсть изоляцияКаждый сам по себе
SupportПомощь всегда доступнаИногда не получаетсяНет поддержки
MissionПонимаем, зачем работаемЧастично непонятноНе понимаем миссию
Codebase HealthКод чистый и поддерживаемыйЕсть проблемные зоныLegacy-хаос

Проведение: команда голосует карточками (зелёный/жёлтый/красный) по каждому параметру. Важно обсудить красные и жёлтые зоны, зафиксировать action items.

Периодичность: раз в квартал или после каждого PI.

eNPS (Employee Net Promoter Score)

eNPS - индекс лояльности сотрудников, адаптированный из маркетинга (NPS).

Вопрос: “С какой вероятностью от 0 до 10 вы порекомендуете работу в вашей компании/команде знакомому?”

КатегорияОценка
Промоутеры9-10
Нейтральные7-8
Критики0-6
eNPS = % Промоутеров - % Критиков

Диапазон: от -100 до +100. Хороший eNPS: > +10. Отличный eNPS: > +50.

Bus Factor

Bus Factor - минимальное количество людей, уход которых из команды критически затруднит работу.

Bus Factor = 1 означает, что один ушедший сотрудник парализует работу. Это серьёзный риск.

Целевое значение: >= 3

Как улучшить:

  • Парное программирование
  • Code review всего кода
  • Ротация задач между участниками
  • Документирование знаний
  • Карты компетенций (Star Map)

Star Map / Карта компетенций

Инструмент для визуализации компетенций каждого члена команды.

КомпетенцияСотрудник AСотрудник BСотрудник C
Backend4 (эксперт)2 (средний)1 (базовый)
Frontend143
DevOps214
QA332
Архитектура423

Шкала: 0 - нет знаний, 1 - базовые, 2 - средний, 3 - продвинутый, 4 - эксперт.

Применение:

  • Определение Bus Factor по каждому направлению
  • Планирование развития сотрудников
  • Распределение задач для наращивания кросс-функциональности
  • Подробнее: Сторипоинты

Team Happiness Index

Простая метрика: каждый участник команды на ежедневной встрече или еженедельно оценивает своё настроение/удовлетворённость по шкале от 1 до 5.

Team Happiness = Среднее значение оценок команды

Целевое значение: >= 3.5

Тренд вниз - сигнал для ретроспективы и обсуждения причин.


Операционные метрики

Cost of Delay (Стоимость задержки)

Cost of Delay - финансовые потери от задержки в поставке фичи.

Cost of Delay = Упущенная выгода в неделю/месяц задержки

Это метрика, которая позволяет приоритизировать задачи не по субъективной важности, а по экономическому влиянию.

Формула WSJF (Weighted Shortest Job First):

WSJF = Cost of Delay / Job Duration

Задачи с высоким WSJF выполняются первыми (максимальная ценность за минимальное время).

Используется в SAFe для приоритизации бэклога.

Value Delivered per Sprint

Качественная оценка ценности, поставленной за спринт:

  • Количество завершённых пользовательских историй
  • Процент достижения Sprint Goal
  • Бизнес-метрики: конверсия, retention, revenue от выпущенных фич

ROI фич

ROI = (Прибыль от фичи - Стоимость разработки) / Стоимость разработки x 100%

Помогает ретроспективно оценить, какие фичи оправдали вложения, и улучшить будущую приоритизацию.

Операционные метрики команды

МетрикаОписаниеПериодичность
Задач завершеноКоличество закрытых задачЕжедневно/еженедельно
Задач в бэклогеРазмер бэклогаЕженедельно
Время на встречи% рабочего времени на meetingsЕженедельно
Время на техдолг% спринта на техдолгЗа спринт
БлокерыКоличество и длительность блокеровЕжедневно
Rework rate% задач, возвращённых на доработкуЗа спринт

Визуализация и инструменты

Дашборд команды

Рекомендуемый минимальный набор метрик на дашборде:

+-------------------+-------------------+-------------------+
|    Throughput      |    Cycle Time     |    WIP            |
|    (тренд)        |    (медиана)      |    (текущий)      |
+-------------------+-------------------+-------------------+
|    CFD             |   Sprint Burndown |   Sprint Goal     |
|    (накопительная) |   (текущий)       |   Completion %    |
+-------------------+-------------------+-------------------+
|    DORA: Deploy    |   DORA: Lead Time |   DORA: CFR       |
|    Frequency       |   for Changes     |   & MTTR          |
+-------------------+-------------------+-------------------+

Burndown: паттерны и анти-паттерны

ПаттернВизуальноПричинаРешение
ИдеальныйРовная линия внизХороший баланс скоупа и ёмкостиПоддерживать
”Утёс”Всё внизу в последний деньЗадачи закрываются формальноДекомпозировать задачи мельче
”Плато”Горизонтальная линияБлокеры или слишком крупные задачиРазбить задачи, устранить блокеры
”Гора”Линия идёт вверхScope creepЗащитить Sprint Scope

Инструменты

ИнструментВстроенная аналитикаСильные стороны
JiraVelocity, Burndown, CFD, Control ChartГлубокая настройка, экосистема Atlassian
KaitenCFD, Cycle Time, Lead Time, ThroughputКанбан-ориентированный, удобный CFD, русский UI
YouTrackBurndown, Time Tracking, Custom reportsГибкие workflows, бесплатен для малых команд
Azure DevOpsVelocity, Burndown, CFD, DORAИнтеграция с Azure CI/CD
LinearBDORA, Cycle Time, Review TimeАвтоматический сбор из Git и CI/CD
JellyfishEngineering metrics, AllocationДля engineering leadership
Grafana + PrometheusЛюбые кастомные метрикиДля технических метрик и DORA

Практическое внедрение

Алгоритм внедрения метрик

Шаг 1: Начните с малого

Не пытайтесь внедрить все метрики сразу. Начните с 2-3 метрик:

Уровень зрелостиРекомендуемые метрики
Начинающая командаThroughput + Cycle Time
Практикующая команда+ CFD + Sprint Goal Completion Rate
Зрелая команда+ DORA метрики + Flow Efficiency
Продвинутая команда+ Quality метрики + Team Health

Шаг 2: Настройте автоматический сбор

Метрики должны собираться автоматически из существующих инструментов:

  • Трекер задач (Jira, Kaiten) - Throughput, Cycle Time, Lead Time, CFD
  • CI/CD (GitHub Actions, GitLab CI) - DORA метрики
  • Мониторинг (Grafana) - MTBF, MTTR

Ручной сбор метрик - это анти-паттерн

Если для метрики нужен ручной ввод, она перестанет собираться через 2 недели. Автоматизируйте.

Шаг 3: Визуализируйте и обсуждайте

  • Разместите дашборд на видном месте (телевизор в офисе или ссылка в канале)
  • Обсуждайте тренды на ретроспективах
  • Выявляйте корневые причины отклонений

Шаг 4: Действуйте на основе данных

Метрика Гипотеза Эксперимент Измерение результата:

  1. Cycle Time вырос Гипотеза: слишком большой WIP
  2. Эксперимент: ввести WIP-лимит = 3 на колонку “В работе”
  3. Через 2 спринта: проверить, снизился ли Cycle Time

Анти-паттерны внедрения метрик

Анти-паттернОписаниеПоследствие
Метрики как кнутИспользование для наказанияФальсификация данных, демотивация
Метрическая перегрузка20+ метрик одновременноНи одна не отслеживается реально
Vanity dashboardКрасивые графики без action itemsСамообман
Сравнение командVelocity команды A vs команды BРазрушение доверия, гонка показателей
Игнорирование контекста”Cycle Time вырос - команда ленится”Неверные выводы (может быть техдолг, отпуска)
Ручной вводЛюди вводят метрики рукамиДанные быстро устаревают или фальсифицируются

Чеклист для старта

  • Определить 2-3 метрики для начала
  • Настроить автоматический сбор из трекера задач
  • Создать дашборд (Jira Board, Kaiten analytics, Grafana)
  • Провести вводную встречу с командой: зачем метрики, как будем использовать
  • Договориться: метрики - для процесса, не для оценки людей
  • Включить обсуждение метрик в повестку ретроспективы
  • Через месяц: ревью - помогают ли метрики? Нужно ли что-то изменить?

Рекомендуемая литература

  1. “Accelerate” - Nicole Forsgren, Jez Humble, Gene Kim. Научное обоснование DORA-метрик.
  2. “Actionable Agile Metrics for Predictability” - Daniel Vacanti. Глубокое погружение в Flow Metrics.
  3. “When Will It Be Done?” - Daniel Vacanti. Прогнозирование с помощью метрик потока.
  4. “Kanban from the Inside” - Mike Burrows. Практическое применение Kanban и метрик.
  5. “Measuring and Managing Performance in Organizations” - Robert Austin. Почему метрики опасны и как их правильно использовать.
  6. DORA Reports - https://dora.dev - ежегодные исследования DevOps-практик.