Turnaround time, comment quality, throughput, DORA metrics
Метрики помогают найти узкие места, но не должны становиться KPI. Измеряйте для улучшений, а не для наказаний.
Время до первого комментария:
Цель: < 4 часов (рабочее время)
Неделя 1: 2.5ч ✅
Неделя 2: 3.1ч ✅
Неделя 3: 5.2ч ⚠️ (выросло, нужно разобраться)
Время до мержа:
Small PR (< 200 строк): < 24 часов
Medium PR (200-400): < 48 часов
Large PR (> 400): < 72 часов
PR в неделю на разработчика:
Среднее по команде: 5-10 PR/неделю
⚠️ < 3 PR/неделю: возможно, блокировки
⚠️ > 15 PR/неделю: возможно, слишком мелкие PR
PR в неделю на рецензента:
Рекомендуется: ≤ 10 PR/неделю на человека
> 15 PR/неделю: риск поверхностного review
Распределение комментариев:
Blocking (критичные): 10-20%
Important (важные): 40-50%
Nit (незначительные): 30-40%
⚠️ > 50% nit: рецензент придирается к мелочам
⚠️ < 10% blocking: возможно, поверхностное review
Процент PR с замечаниями:
Здорово: 60-80% PR имеют замечания
⚠️ < 40%: review формальное, «для галочки»
⚠️ > 90%: возможно, проблемы с качеством кода
Исправленные замечания:
Цель: > 90% замечаний исправляются
< 70%: рецензенты дают бесполезные замечания
| Метрика | Связь с review | Цель |
|---|---|---|
| Deployment Frequency | Быстрое review → чаще деплои | On-demand |
| Lead Time for Changes | Время review входит в lead time | < 1 дня |
| Change Failure Rate | Качественное review → меньше багов | < 5% |
| Time to Restore | Быстрое review фиксов → быстрее restore | < 1 часа |
Коммит → PR создан → Review начато → PR смержен → Деплой
│ │ │ │
└─ Queue ────┴─ Review ────┴─ Deploy ──┘
Lead Time = Queue + Review + Deploy
Цель: Review ≤ 50% от Lead Time
Pull Requests → Average time to merge
→ Opened: 50
→ Merged: 45
→ Avg time: 8.5 hours
Review → Comments per PR
→ Average: 12 comments
→ Median: 8 comments
Merge Requests → Cycle time
→ Average: 1.2 days
→ Median: 0.8 days
→ Time to first review
→ Average: 3.5 hours
-- Пример: среднее время до первого комментария
SELECT
DATE(created_at) as date,
AVG(TIMESTAMPDIFF(HOUR, created_at, first_comment_at)) as avg_hours
FROM pull_requests
WHERE created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY DATE(created_at);Ретроспектива:
«Среднее время review выросло с 3ч до 6ч за месяц.
Давайте обсудим, что изменилось.
Возможно, нужно больше рецензентов?»
Индивидуальный коучинг:
«Я заметил, что твои PR висят без review дольше среднего.
Давай обсудим, как улучшить: возможно, стоит назначать рецензентов явно?»
KPI и наказания:
«У тебя время review > 4 часов — вычитаю из премии»
Соревнования:
«Кто сделает больше review на этой неделе?»
Ключевая мысль: Метрики — для улучшений, а не для KPI. Обсуждайте на ретроспективах, а не на one-on-one с наказаниями.
Вопросы ещё не добавлены
Вопросы для этой подтемы ещё не добавлены.