Привет, Хабр! На связи Дмитрий Гребнев, руководитель команды Beehive в Рунити. Сегодня поговорим о том, как сделать управление командой предсказуемым — не на ощущениях, а на данных.

Статья будет полезна тем, кто сталкивается с постоянным «разъездом» сроков и переоценкой задач — разработчикам, руководителям команд и менеджерам проектов, работающим по Agile. Речь пойдет о статистическом методе управления: как метрики помогают бороться с шумом и смещением в оценках, почему начинать стоит с Cycle Time, и как декомпозиция, блокировки и нормальное распределение влияют на эффективность команды.

Навигация по тексту:

Зачем считать, если и так всё видно

Кажется, что мы и без статистики понимаем, как работает команда: задачи двигаются по доске, сроки видны в диаграмме Ганта, все процессы под контролем. Но реальность обычно сложнее.

Интуиция всегда запаздывает — пока мы осознаем, что что-то идет не так, уходит ценное время. Статистика же дает цифры, которые видно сразу. По ним можно понять, где команда зависла, что мешает выпуску релизов и какие этапы процесса требуют вмешательства.

Цифры снимают домыслы и эмоции — помогают принимать решения на фактах. Например, если растет Cycle Time (время прохождения задачи от статуса «взяли в работу» до «выпустили»), и вместе с ним увеличивается доля блокировок, значит, дело не в нагрузке или мотивации, а в самом процессе.

Почему прогнозы сроков могут быть неточными

Любой, кто хоть раз планировал спринт, знает: почти всегда мы ошибаемся. Задача кажется простой — «пара дней работы», — а превращается в неделю. Другие, наоборот, завершаются быстрее. Проблема не в опыте или компетенции, а в статистике — точнее, в ее отсутствии.

Когда мы оцениваем задачи «на глаз», на результат влияют десятки факторов: кто выполняет задачу, как у него с фокусом, понятны ли критерии приемки, нет ли зависимостей от других команд. А еще — человеческий фактор: усталость, стресс, параллельные задачи, активность в чатах, даже погода.

Психолог Даниэль Канеман, автор книги «Шум» и один из тех, кто заложил основы поведенческой экономики, описывает это как системное свойство человеческого суждения. Даже при одинаковых данных люди приходят к разным выводам — и каждый уверен, что прав. Для нас это важная мысль: если в процессах нет общих критериев и понятных правил, такой разброс в оценках неизбежен.

Чтобы показать это на практике, есть простой эксперимент. Закройте глаза и попробуйте мысленно отсчитать десять секунд. Теперь повторите это в разных условиях — утром, вечером, дома, на работе.  Результаты будут отличаться. Всегда. Это и есть шум — случайное отклонение, которое сбивает любые оценки.

А есть еще смещение — систематическая ошибка. Например, вечный оптимизм разработчиков, которые уверены, что «на этот раз всё пойдет гладко». Шум делает прогноз непредсказуемым, смещение — стабильно неточным в одну сторону. Вместе они подрывают доверие к планированию и заставляют продуктовых менеджеров и бизнес-заказчиков — а это часто разные люди — воспринимать оценки как гадание, а не рабочий инструмент.

Первая метрика: Cycle Time

Начали мы с самой базовой, но при этом показательной метрики — Cycle Time. Она отвечает на простой вопрос: сколько времени проходит от начала активной работы над задачей до ее завершения.

Cycle Time показывает не то, сколько задача пролежала в бэклоге, а сколько заняла реальная работа. Это помогает отделить время ожидания от времени разработки и увидеть, где именно теряется эффективность — на тестировании, согласовании или доработках.

Почему не Lead Time?

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

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

Что показала статистика

В 2024 году мы в Рунити собрали данные по всем задачам команды Beehive. Распределение получилось асимметричным — с длинным «хвостом».

Вот, что показали цифры:

  • Медиана (50-й перцентиль — точка, выше и ниже которой по 50% задач) — 8 дней. Половина задач завершается за 8 дней или быстрее.

  • Среднее время — 18,2 дня. Почти вдвое больше медианы, что говорит о смещении вправо: редкие, но очень длинные задачи тянут среднее вверх.

  • 85-й перцентиль (значение, в которое укладывается 85% задач) — 28 дней.

  • 90-й перцентиль — 48 дней.

  • 95-й перцентиль — 70 дней.

  • Максимум (100%) — 166 дней.

То есть если медиана дает 50% вероятность уложиться в срок, то 85-й перцентиль показывает, что 85% задач закрываются за 28 дней или меньше. Это уже более надежный ориентир для планирования, особенно когда нужно обсуждать сроки с продактами и заказчиками на языке вероятностей.

Что означают эти данные

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

Пока хвост длинный, прогнозировать сроки бессмысленно: разница между быстрой и долгой задачей может достигать 20-кратного значения. Поэтому следующий шаг был очевиден — сократить разброс и привести распределение к более узкой и стабильной форме.

Работа с хвостом распределения

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

Как команда изменила подход

Мы взяли за правило разбирать все задачи, начиная с 80-го перцентиля и до максимума — каждую, где срок заметно превышал медиану. Задачи с длинным временем выполнения рассматривались отдельно: проверялись зависимости от других команд, качество декомпозиции, соблюдение Definition of Ready (набор критериев, без которых задачу нельзя брать в работу) и наличие блокировок.

Пример из практики: один из типичных «длинных» тикетов оказался зависим от дизайна, который не был готов на момент старта. Формально задача выглядела простой, но по факту несколько дней ушло на ожидание макетов. После разбора мы обновили Definition of Ready — теперь задачу нельзя было начинать, пока не загружены финальные материалы. Это сразу сократило хвост у похожих задач в следующих спринтах.

Выявленные причины фиксировались в процессе — либо корректировались правила подготовки задач, либо менялся порядок их проработки. Кроме того, при установке сроков мы перешли на перцентильное планирование: вместо среднего значения стали ориентироваться на 85–90-й перцентиль. Если 85% задач закрываются за 28 дней, значит, с такой же вероятностью новая задача завершится в этот срок или быстрее. Так мы получили план с измеримой надежностью, а не субъективное обещание

Первые результаты

Через один квартал, после того как команда взяла эти обязательства, статистика изменилась:

  • Медиана снизилась с 8 до 7 дней.

  • 85-й перцентиль — с 28 до 23 дней.

  • 95-й перцентиль — с 70 до 35 дней.

Максимальная длительность задач уменьшилась в два раза. Хвост распределения сократился, и прогнозы стали точнее. Теперь, когда мы говорим заказчику, что задача займет примерно 23 дня с вероятностью 85%, это звучит как обоснованный прогноз.

Вторая итерация

Следующая итерация показала, что улучшения становятся менее заметными:

Медиана осталась прежней — 7 дней.
85-й перцентиль уменьшился до 22 дней. Самые долгие задачи снова сократились примерно вдвое.

Это нормальная динамика: чем стабильнее процесс, тем труднее его улучшать. Но важно, что распределение сжимается, хвост становится короче, и команда движется в сторону большей предсказуемости.

Вторая метрика: процент блокировок

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

Как появились данные

Собирать статистику по блокировкам мы начали в третьем квартале 2024 года. Почти сразу мы увидели: примерно треть всех задач на доске находилась в статусе Blocked — ожидала ответов или правок от других команд. Это был показатель системного сбоя во взаимодействии между разработкой, аналитикой, дизайном и смежными сервисными командами.

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

  • уточнили и формализовали Definition of Ready — теперь тикет нельзя было взять в работу, пока не закрыты все зависимости;

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

Что изменилось после внедрения

Всего через один квартал метрика показала заметный сдвиг:

  • процент заблокированных задач снизился кратно;

  • общая длина «хвоста» по Cycle Time уменьшилась;

  • доля задач, выполняющихся в разумные сроки (до 85-го перцентиля), выросла.

По сути, это был первый случай, когда простая метрика позволила увидеть эффект сразу. Теперь мы следим за блокировками на постоянной основе. Если их доля снова начинает расти — это сигнал проверить upstream, критерии готовности или приоритеты на уровне эпиков.

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

Нормальное распределение и как к нему прийти

После нескольких итераций работы с хвостом и сокращения блокировок стало видно, что команда движется к устойчивому состоянию. Разница между средним временем выполнения задач и медианой сократилась втрое — с 18,8 до 6 дней. Это значит, что разброс уменьшился, а результаты стали предсказуемее.

Что такое нормальное распределение

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

Проверяется это просто: если разница между медианой и средним небольшая, значит, распределение близко к нормальному.

В нашем случае путь выглядел так:

  • в начале — 18,8 дня разницы, после первого квартала — 13,7;

  • после второго — 10,7;

  • и в итоге — около 3 дней.

Это важный сигнал: процесс стал стабильным и прогнозируемым, а оценки начали совпадать с фактом.

Ниже — инструкция, которую легко повторить с любой доской задач.

1. Соберите Cycle Time по задачам

Возьмите выборку задач за несколько месяцев — лучше от 100 штук и больше, чтобы кривая была устойчивой. Для каждой задачи зафиксируйте:

– дату, когда задачу взяли в работу;
– дату, когда она перешла в Done;
– разницу между этими датами в днях — это и есть Cycle Time.

2. Сформируйте набор значений

У вас получится массив чисел, например: [2, 3, 7, 10, 4, 5, 30, 6, 9…].
Если встречаются аномально длинные задачи (100+ дней), оставьте их — они показывают хвост распределения.

3. Постройте гистограмму

Откройте удобный инструмент: Google Sheets, Excel, Notion Charts, Python, Grafana или Metabase, если данные уже в хранилище.

Постройте гистограмму по Cycle Time — она покажет, как часто встречается то или иное время выполнения задач.

4. Добавьте линию распределения

В Excel, Sheets или Python поверх гистограммы можно построить сглаженную линию. На графике появится «колоколообразная» кривая, которая показывает форму распределения.

5. Сравните среднее и медиану

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

6. Посмотрите, из чего состоит хвост

Отметьте задачи, которые попали в диапазон 80–95-го перцентилей. Когда хвост становится короче, кривая приближается к симметричной форме.

Зачем команде нормальное распределение

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

Например, если среднее время задачи S — три дня, а в эпике таких задач десять, можно с высокой вероятностью сказать, что весь эпик займет около тридцати дней. Такой подход дает точность выше, чем при субъективной оценке каждой задачи по отдельности. Мы больше не тратим время на споры и согласования — вместо «кажется, успеем» появляются прогнозы, подтвержденные цифрами. И главное — эти прогнозы можно объяснить бизнес-заказчику: вероятность 85% укладывания в срок подтверждена статистикой, а не интуицией.

Как снизить шум в оценках

Когда базовые метрики стабилизировались, команда переходит к следующему шагу — уменьшению шума в оценках. Даже при нормальном распределении субъективные факторы всё еще влияют на то, как мы оцениваем задачи. Важно сделать этот процесс максимально формальным и сравнимым, чтобы цифры зависели от прозрачных правил.

Формализованные критерии

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

В качестве шкалы используют Story Points — абстрактные единицы сложности в Agile — или фиксированные категории. Мы выбрали S / M / L и связали каждую категорию с ретроспективными данными по Cycle Time.

Например, на планировании команда сравнивает новую задачу с уже выполненными. Если задача сложнее типичной задачи уровня S, но заметно проще задач категории L, ее относят к уровню M. После этого мы сверяемся со статистикой: сколько времени раньше занимали задачи S, M и L. Так формируется прогноз, основанный на данных.

Относительные оценки вместо абсолютных

Абсолютные числа — плохие ориентиры: слишком много контекста, от усталости до внешнего фона. Зато сравнение работает почти всегда. Если одна задача кажется немного сложнее другой, то это уже надежная точка для оценки.

Например, при разборе бэклога команда находит задачу на интеграцию с внутренним сервисом. Она не выглядит крупной, но требует больше шагов, чем задачи уровня S. Команда сравнивает ее с похожими задачами и относит к уровню M. В прошлых итерациях задачи уровня M занимали от 5 до 7 дней с вероятностью 85 %. Этот диапазон и становится рабочим ориентиром.

Ошибка игрока

После серии быстрых задач иногда кажется, что следующая тоже будет простой. Интуиция пытается «уравнять» последовательность, хотя задачи независимы. Из-за этого команда может занижать сложность, и тогда оценки снова становятся неточными.

Мы исключили такие корректировки на основе интуиции. Теперь оцениваем каждую задачу только через сравнение с уже выполненными задачами того же типа и уровня. После этого сверяем оценку с ретроспективными данными по Cycle Time. Если задача попадает в категорию M, берем тот же диапазон, что и у прошлых задач уровня M, даже если предыдущие несколько задач оказались проще среднего.

Постфактум-коррекция: избегать нельзя корректировать

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

Мы столкнулись с этим на нескольких последовательных спринтах. Итоговые сроки регулярно превышали прогнозы — не из-за роста сложности, а потому что мы вносили правки уже после планирования. Когда сравнили плановые оценки с фактическим Cycle Time, стало понятно: источник ошибки — именно постфактум-коррекция, сделанная интуитивно.

После этого мы зафиксировали правило: корректировать оценку только после обсуждения конкретной причины. Если команда видит, что пропустила тестирование или не учла взаимодействие с другой командой, мы фиксируем основание и меняем оценку один раз. Это снизило разброс и убрало «накрутки», которые появлялись из-за попыток перестраховаться.

Как команда применяет статистику в планировании

Когда шум удалось снизить, статистика стала основой для планирования. Мы перестали оценивать задачи в днях — вместо этого используем категории сложности S, M и L, каждая из которых опирается на реальные данные из Cycle Time. Это убрало споры о сроках и сделало коммуникацию со смежными командами более предсказуемой.

Как сейчас устроена система

Каждая новая задача сравнивается с уже выполненными. Мы смотрим: она проще, сложнее или примерно такая же, как эталонная задача категории S, M или L. После этого ставим тег — и система сама подтягивает статистику: сколько занимали задачи этой категории в прошлых спринтах.

Ретроспективные данные перевели категории в понятные интервалы:

  • S — до трех дней;

  • M — до недели;

  • L — до двух недель.

Эти значения основаны на 85-м перцентиле для каждой категории: то есть с вероятностью 85% задача S закроется за три дня или меньше.

Как мы рассчитываем прогноз по задачам

Для эпиков всё просто: берем количество задач каждой категории и умножаем на их среднее время выполнения. Например, если в эпике пять задач S и три M, а 85-й перцентиль для них равен трем и семи дням, итоговая длительность эпика — примерно 36 дней. Если нужно уточнить, мы можем добавить диапазон — 85-й и 95-й перцентили, чтобы показать лучший и худший сценарий.

Проверка гипотез и корректировка

После спринта мы сравниваем прогноз и факт. Если задача выбилась из оценки, разбираем причину: пропустили зависимость, неверно определили сложность или не соблюли Definition of Ready. Такие разборы стали частью процесса — не для поиска виноватых, а для улучшения модели.

Мы фиксируем все отклонения. Каждая задача хранит два значения: прогноз и фактический Cycle Time. Jira автоматически собирает даты переходов между статусами: когда задачу взяли в работу и когда перевели в Done.

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

Почему это работает

Главный эффект статистического метода — устойчивость. Даже если в команде появляются новые люди или меняется нагрузка, распределение не рушится: данные усредняют различия, а процесс остается предсказуемым. Система не требует ручного контроля, но сразу показывает, где возникли отклонения.

Когда заказчик видит, что прогноз основан не на субъективной оценке, а на вероятности 85%, доверие к команде растет, а внутри команды снижается стресс.

Ограничения метода и выводы

Статистический подход не делает чудес — он не работает в хаосе. Цифры становятся осмысленными только тогда, когда у команды есть стабильный состав и достаточный период наблюдений для наработки базовых значений. Если участников часто меняют, статистика просто не успевает «усредниться».

В нашем случае была возможность наработать базу в стабильных условиях: состав команды  оставался постоянным, процессы не пересекались с другими проектами. Благодаря этому мы могли сравнивать итерации и видеть причинно-следственные связи между изменениями и показателями команды.

Где метод дает лучший эффект

  1. При повторяющихся типах задач

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

  2. При стабильных процессах

    Если Definition of Ready и процесс работы формализованы, шум снижается, а выводы становятся точнее.

  3. Когда важна предсказуемость

    Для продуктовых команд и внутренних сервисов, для которых предсказуемость сроков важнее скорости поставки.

Следующий логичный шаг — перейти от Cycle Time к Lead Time, чтобы оценивать уже не только скорость разработки, но и весь путь задачи: от появления в бэклоге до поставки в прод. Для этого потребуется подключить к процессу продуктового менеджера и выстроить аналитику upstream-этапов — декомпозиции, приоритизации, согласований. Так можно будет управлять не просто командой, а всей цепочкой поставки.

Что изменилось с момента введения изменений 

За год команда Beehive прошла путь от ручных оценок до предсказуемого статистического процесса. Cycle Time стал короче, хвост распределения — уже, доля блокировок — меньше. Разница между медианой и средним сократилась втрое, а прогнозы стали совпадать с фактическими сроками.

Ключевое — изменилась культура работы: вместо обсуждений «успеем — не успеем» появились аргументы и данные. Планирование стало спокойным, обсуждения с заказчиками — конструктивными, а обратная связь — конкретной.

Какие выводы мы сделали

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

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

Расскажите, а вы собираете статистику по своей команде или пока полагаетесь на интуицию — поделитесь своими подходами к управлению в комментариях.

Комментарии (0)