Симулятор решений: анализ сценариев

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

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

Теория: анализ чувствительности на сети

Спринт в Такте — это сеть зависимостей: задачи-узлы, блокировки-рёбра, длительности из истории команды. Сценарий — это вектор модификаций такой сети:

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

По модифицированной сети заново прогоняется весь конвейер: CPM находит новый критический путь, PERT даёт аналитическую оценку, Монте-Карло — распределение сроков. Разница между базовым прогнозом и сценарным — эффект решения. В исследовании операций это называется анализом чувствительности (sensitivity analysis): как меняется выход модели при изменении входов.

Почему дельте можно верить: общие случайные числа

Монте-Карло — случайный процесс: два прогона одной и той же сети дают чуть разные цифры. Если сравнивать базовый и сценарный прогоны «в лоб», часть разницы будет просто шумом симуляции.

Такт использует классический приём снижения дисперсии — метод общих случайных чисел (common random numbers, CRN): оба прогона получают один и тот же зерновой генератор случайных чисел. Каждая итерация симуляции разыгрывает одни и те же случайности для обеих сетей, поэтому при вычитании шум сокращается:

Var⁡(D^base−D^scen)=Var⁡(D^base)+Var⁡(D^scen)−2Cov⁡(D^base,D^scen)\operatorname{Var}(\hat{D}_{\text{base}} - \hat{D}_{\text{scen}}) = \operatorname{Var}(\hat{D}_{\text{base}}) + \operatorname{Var}(\hat{D}_{\text{scen}}) - 2\operatorname{Cov}(\hat{D}_{\text{base}}, \hat{D}_{\text{scen}})

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

Как это реализовано в Такте

  • Сценарий — именованный набор изменений (реальное решение почти всегда комбинация: «режем задачу X и просим +2 дня»).
  • При каждом изменении прогноз пересчитывается вживую: базовый и сценарный прогоны — по 5000 итераций на общих случайных числах.
  • Сценарии сохраняются: к ним можно вернуться, показать команде на планёрке; вместе со сценарием сохраняются снимки обоих прогнозов на момент расчёта.
  • Понравившийся сценарий применяется одним действием: система атомарно выполняет все изменения — убирает задачи из спринта, правит зависимости (с проверкой циклов), записывает оценки, сдвигает дедлайн. Если спринт успел измениться и сценарий устарел — применение честно откажет, а не выполнится наполовину.
  • Роли: симулировать и сохранять сценарии может любой участник команды; применять — Scrum Master и выше, потому что применение меняет реальный состав спринта.

Оценки длительностей наследуются от ядра прогнозирования: перцентили истории за 90 дней, минимум 5 закрытых задач (подробнее о порогах). Если истории мало — симулятор скажет об этом прямо, а не нарисует цифры из воздуха.

При переоценке задачи вручную указанное значение становится наиболее вероятной оценкой (M), а оптимистичная и пессимистичная масштабируются пропорционально историческому разбросу — неопределённость сохраняется, задача не превращается в «ровно N дней».

Где увидеть

  • Пункт «Симулятор» в боковом меню — выбор спринта по всем доскам workspace.
  • Кнопка «Симулятор решений» на странице спринтов, рядом с сетевым прогнозом активного спринта; у запланированных спринтов — кнопка на карточке.
Симулятор: слева изменения сценария, сверху сравнение «база vs сценарий» с дельтами, в центре сеть с пересчитанным критическим путём.

Ограничения

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