August 29th, 2016

404

Задача на втекающие/вытекающие бассейны и теорвер

Средний, не занятый code review программист, коммитит 30 коммитов в день.
В среднем 20% коммитов попадают в фиче-бранчи, 60% в devel-бранчи, 20% - pull request'ы в мастер, требующих ревью всех накопившихся коммитов в соотв. devel-бранче (считать, что devel-бранч случаен)
Фиче-бранч имеет стать 10% (каждый день) вероятность стать devel-бранчем
Программист, занятый code review, на каждые 4 коммита в review, делает на один собственный commit меньше
Программист, делающий code review, в среднем делает две малые придирки к каждым трём коммитам на ревью, имеет 15% шанс полностью завернуть пулл-реквет, 30% сделать большую придирку (целиком на pull-request)
Программист, пушащий review, в среднем исправляет 5 придирок вместо одного коммита (или эквивалентного времени code review)
Программист, пушащий review, в исправляет большую придирку за счёт 3 обычных коммитов.
Программист, пущащий review, в ответ на reject имеет 50% вероятность выбросить написанный devel-бранч или попробовать снова, ценой 10 обычных коммитов.
Повторное ревью подчиняется тем же правилам, что и первое.
pull-реквесты пушатся пока не будут приняты или не будут дропнуты.
Для мерджа нужно положительное ревью хотя бы двух других программистов.
В среднем программист имеет каждый день 1% шанс заболеть на 1 день, 0.3% на 3 дня или 0.05% на неделю. (независимые события)
Программист работает 5 дней в неделю (для упрощения модели - без праздников)
У программиста отпуск 20 рабочих дней (для упрощения рассчётов), распределяется среди рабочих дней программиста случайным образом.
Программист имеет 0.001% шанс уволиться, в этом случае: все его ревью вешаются на других программистов, все не принятые коммиты - дропаются, коммиты в ревью имеют шанс быть принятыми, если есть хотя бы мелкие придирки - дропаются.
Новый программист (после увольнения предыдущего) имеет 1% шанс появления (в день).
Новому программисту нужна неделя чтобы начать писать коммиты.
Первые два месяца программист пишет в два раза меньше коммитов.
Первый месяц новый программист имеет 1% шанс увольнения (в день).
Коммиты программиста в первые 6 месяцев вызывают в два раза больше придирок и reject'ов.

Рассчитать количество успешных коммитов в день, попадающих в master для команды из 3, 4, 5 программистов.