Прогнозировать сроки по Throughput проще, чем кажется. Нужна история завершённых элементов, понятные WIP-лимиты и честное отношение к вероятности.
Хороший прогноз звучит так: «с вероятностью 50% закончим за 39 дней, с вероятностью 85% — за 50 дней». Это честнее для команды и полезнее для стейкхолдеров, чем дата «ровно через 6 недель».
Это продолжение статьи про Throughput как метрику потока. База по метрике остаётся в первой части. Здесь — как превратить историю завершённых элементов в прогноз, вокруг которого можно принимать решения.
Теперь практический вопрос, который менеджмент любит особенно сильно: «Когда вы закончите проект из X задач?»
На какие вопросы отвечает Monte Carlo
Обычно Monte Carlo помогает ответить на три практических вопроса.
- Когда закончим X задач? Например, когда будет готов эпик из 10 элементов.
- Сколько задач успеем к дате? Например, сколько можно обещать к концу квартала.
- Сколько работы брать в следующий спринт, неделю или месяц? Так разговор смещается от точной оценки к вероятности и диапазону.
Во всех трёх случаях основа одна: история завершённых элементов. Мы смотрим, какие будущие сценарии чаще всего получаются из похожего прошлого.
Что проверить перед симуляцией
Перед запуском Monte Carlo я бы проверил несколько вещей.
- Definition of Done понятен. Закрытая задача действительно завершена, а не просто переехала в соседнюю очередь.
- Рабочий процесс стабилен. Команда сохраняла процесс, состав и тип работы в последние недели.
- Историческое окно свежее. Обычно хватает последних 3–6 месяцев. Старые данные часто описывают уже другую систему.
- Нулевые дни сохранены. Выходные, праздники, больничные и дни без релизов — часть реальности.
- WIP ограничен хотя бы верхней планкой. Без ограничения незавершённой работы прогноз быстро превращается в красивую картинку поверх хаоса.
- Команда не закрывает задачи пачками задним числом. Такое поведение ломает дневной Throughput и создаёт ложные пики.
Если этот чеклист провален, симуляция всё равно построит график. Просто график будет показывать качество ваших данных и процесса, а не надёжный прогноз.
Основа вероятностного прогноза
Любой нормальный прогноз состоит из трёх частей:
- вероятность;
- диапазон;
- предположение, что будущая работа похожа на историческую.
Фраза «этот эпик из 10 задач займёт ровно 6 недель» создаёт ложную точность. Более честная формулировка:
10 задач займут 5–7 недель.
Где:
- 5 недель — 50-й перцентиль: половина симуляций завершилась к этому сроку или быстрее;
- 7 недель — 85-й перцентиль: 85% симуляций завершились к этому сроку или быстрее.
Такой прогноз сразу показывает риск. Можно выбрать более быстрый сценарий и принять большую неопределённость. Можно выбрать более консервативный сценарий и получить больше запаса.
Как работает Monte Carlo Simulation
Дальше я использую графики из Predictable.Team — моего React-приложения, которое визуализирует командную производительность и строит прогнозы по CSV/XLSX из Jira и YouTrack.
Представим, что нам нужно понять, когда команда завершит следующие 10 элементов.
1. Собираем исторический Throughput
Допустим, у нас есть данные о том, сколько элементов команда завершала каждый день за стабильный период. Важно считать все календарные дни, включая дни с нулём завершённых элементов: выходные, праздники, больничные, дни без релизов.
Пусть историческое окно — 90 дней. Симуляция случайно выбирает день из этих 90 и смотрит, сколько элементов было завершено в этот день.
Например, случайно выпал день 20. В исторических данных в этот день команда завершила 1 элемент. Значит, в текущем сценарии у нас пока 1 завершённый элемент.
2. Запускаем тысячи сценариев
Для одного сценария алгоритм повторяет простое действие:
- случайно выбрать день из исторического окна;
- взять Throughput этого дня;
- прибавить его к сумме завершённых элементов;
- повторять, пока сумма не достигнет 10 элементов;
- записать, сколько календарных дней занял сценарий.
Один сценарий готов. Дальше запускаем 1 000–10 000 таких сценариев и смотрим распределение результатов.
3. Смотрим распределение сроков
В результате получаем вероятность завершения к разным датам.
Для примера с 10 задачами:
- 50% вероятность: 39 дней;
- 85% вероятность: 50 дней;
- 95% вероятность: 58 дней.
Стейкхолдерам можно сказать: с вероятностью 85% закончим до 50-го дня, если входящий поток и WIP сохранятся. Это сильнее, чем дата без условий.
50-й перцентиль показывает медианный сценарий. 85-й перцентиль обычно даёт рабочий управленческий прогноз. 95-й перцентиль — консервативный буфер для дорогих обязательств. Широкий разрыв между 50-м и 85-м перцентилями — сигнал нестабильности системы.
Чем стабильнее Throughput, тем ближе друг к другу 50-й и 85-й перцентили. Диапазон сужается, прогноз становится плотнее.
Дэвид Андерсон предлагает простой индикатор предсказуемости: 98-й перцентиль / 50-й перцентиль < 5.6. Если разброс выше, система слишком нестабильна для уверенного прогноза.
Что влияет на качество прогноза
Monte Carlo Simulation работает ровно на том качестве данных, которое вы в неё положили. В стабильной системе она даёт полезный диапазон; в хаотичной — показывает хаос красивым графиком.
На прогноз сильнее всего влияют несколько факторов.
Размер и тип задач. End-to-end slices дают лучший прогноз, чем задачи, нарезанные только по компонентам. Если одна задача — это «поменять кнопку», а другая — «переписать половину интеграции», распределение будет шумным.
Историческое окно. Не стоит брать слишком старые данные. Обычно я бы не использовал данные старше шести месяцев: команда, процесс, домен и нагрузка уже могли измениться.
Дни с нулевым Throughput. Их нужно включать. Иначе прогноз будет жить в мире, где нет выходных, праздников, больничных, аварий и организационных пауз.
Календарные дни против рабочих. Для прогноза сроков лучше использовать календарные дни. Стейкхолдеру важно, когда результат будет готов в календаре, а не сколько «идеальных рабочих дней» он занял.
Качество данных. Garbage in, garbage out. Если в Jira неполные статусы, странный Definition of Done, задачи закрываются пачками задним числом, прогноз будет выглядеть красиво и обманывать всех участников.
Без WIP-лимитов прогноз разваливается
Для Monte Carlo-прогнозов нужны работающие WIP-лимиты. Когда команда стартует больше задач, чем способна завершить, работа стареет, очередь раздувается, предсказуемость падает.
Дэниел Ваканти формулирует это жёстко: No WIP limit = no flow, which means no predictability.
WIP-лимиты держат Kanban-доску честной. Команда может выглядеть занятой, результат при этом застревает в незавершённой работе. Лимит делает этот перегруз видимым раньше, чем он ломает прогноз.
Прогноз нужно регулярно обновлять
Запускайте свежую симуляцию каждые 1–2 недели.
Прогноз сроков похож на прогноз погоды или трафика. Мы видим не все параметры системы, поэтому однажды посчитанная дата быстро устаревает. Регулярное обновление на свежих данных показывает, куда движется реальность.
Это снимает ненужную драму. Если команда ускорилась, диапазон изменится. Если появились блокеры, диапазон тоже изменится. Прогноз становится инструментом разговора, а не обещанием, выбитым из команды в начале проекта.
Простая случайная выборка часто сильнее сложных моделей
Интуитивно кажется, что сложная модель должна прогнозировать точнее: учитывать день недели, искать похожие сценарии, строить цепочки состояний.
Исследование Prateek Singh из ActionableAgile показало другой результат: простая случайная выборка часто даёт более точный прогноз, чем модели с подбором по дням недели и Markov chain.
Можно прочитать исследование по ссылке выше или посмотреть выпуск Drunk Agile с разбором темы:
https://www.youtube.com/watch?v=gO3Uw7CG04I
Почему Throughput работает
Здесь помогает закон больших чисел. Если у команды достаточно исторических данных по Throughput, случайная вариативность размера и типа задач постепенно сглаживается и сходится к более стабильной картине производительности.
Та же механика знакома всем, кто бросал кубики в DnD: один бросок хаотичен, серия бросков постепенно складывается в понятное распределение. С Throughput и Monte Carlo Simulation работает похожая логика.
Инструменты
Predictable.Team — безопасное приложение без хранения данных на сервере. Принимает CSV/XLSX из Jira и YouTrack, визуализирует Throughput и строит Monte Carlo-прогнозы по вашим данным: когда закончится проект, сколько элементов брать в спринт, когда будет готов эпик.
ActionableAgile Analytics и Nave — зрелые индустриальные инструменты для flow-метрик и Monte Carlo Simulation.
Что почитать дальше
- Monte Carlo Simulation Analysis of Team Strategies and Backlogs — Matthew Croker, 2023. Репликация эксперимента Prateek Singh на 10 000 симуляций: специализированные стратегии быстрее в коротком горизонте, обобщённые подходы сильнее в долгую.
- All Models are Wrong, but Some are Random… — Prateek Singh, 2021. Back-testing пяти моделей Monte Carlo sampling: простая случайная выборка стабильно обгоняет Markov chain и weekday-matching.
- Agile project status prediction using interpretable machine learning — Forouzesh-Nejad et al., 2023. Прогнозирование статуса agile-проектов по Throughput-данным команды.
- Empirical findings on team size and productivity in software development — Rodríguez et al., 2012. Эмпирическое исследование размера команды и производительности в разработке.
Финальная мысль
Monte Carlo Simulation меняет разговор о сроках сильнее, чем любой красивый график.
Команда приносит диапазон, вероятность и предположения. Стейкхолдеры видят риск заранее. Разговор становится взрослым: какой уровень уверенности нам нужен и чем мы готовы за него заплатить?
Хороший прогноз показывает риск в тот момент, когда ещё есть время что-то изменить.







