Математическое выпрямление сроков
В комментариях к предыдущей статье "О чем молчит диаграмма Ганта или почему проекты всегда опаздывают" накидали ссылок на видео и слайдкасты, описывающие и другие причины вызывающие ошибки при использовании диаграмм Ганта. Наибольшее обсуждение и недопонимание вызвало выпрямление сроков обусловленное несимметричностью распределения срока решения задачи. Под катом пример влияния на срок окончания проекта этого самого несимметричного распределения.
Перед тем как начать, напомню, что в рамках приводимых примеров, используемые значения математического ожидания взяты из некоторого предыдущего опыта и являются объективными. Приводимые примеры призваны продемонстрировать, что опираясь при построении диаграммы Ганта только на математическое ожидание времени завершения одиночной задачи, мы будем попадать в просак.
Рассмотрим пример, в рамках которого математическое ожидание времени решения задачи составляет 3 часа. Вполне понятно, что есть некоторое время быстрее которого мы решить задачу не сможем. Нам нужно прочитать задачу, посмотреть связанные задачи, обсудить некие вопросы с аналитиком или архитектором, открыть IDE, загрузить проект, внести изменения в код, сбилдить, запустить, проверить что все работает как ожидалось и т.д. Допустим, быстрее чем за 30 минут мы решить задачу не сможем. Но, с другой стороны, при возникновении проблем с компьютером (маловероятно, но все же), при обнаружении попутного бага, при отсутствии на месте сотрудника с которым нужно согласовать решение задачи, срок может увеличится и до 6, а то и до 9 часов. В результате мы получим плотность распределения вероятностей вида (по оси абсцис время на решение задачи):
А это уже не нормальное распределение. Я, для этой статьи, взял гамма распределение, есть еще и другие, например, распределение Максвелла, бетта-распределение и т.д.
Отлично, как я уже сказал, математическое ожидание времени решения задачи равно трем часам. Диаграмма Ганта для пяти последовательно выполняемых задач будет иметь вид:
Теперь вернемся к гамма распределению и проведем расчет или (как сделал я, уж очень люблю программирование) моделирование вероятности завершения всех этапов в заданный час.
Первая новость является радостной, плотность распределения вероятности приняла вид нормального распределения, но вот все остальное… Для того чтобы это остальное понять, строим вероятность завершения к заданному часу:
Вероятность завершить к запланированному 15 часу составляет всего 20%. Для достижения вероятности в 90% необходимо время завершения сдвинуть на 7 часов (что составляет 50% от исходного времени). И то, в случае оставшихся 10% мы будем не укладываться, а с вероятностью 5% мы завершим эти пять задач через 9 часов.
Еще одна печальная новость заключается в том, что даже применение популярной в последнее время методики трех оценок, ситуацию сильно не выправляет.
Если не помните, то основная идея метода трех оценок заключается в том, что берется пессимистический прогноз, оптимистический прогноз и математическое ожидание. В этом случае, срок завершения задачи определяется по формуле:
Для нашего случая, если мы возьмем для одной задачи в качестве оптимистического прогноза вероятность 30%, для пессимистического – 95%, а для наиболее ожидаемого –50%, то исходя из графика вероятности завершить одну задачу к заданному часу:
Получим что:
Умножает 3,7 часа, на 5 этапов и получаем 18,5 часов. Это уже значительно лучше, мы будем укладываться в этот срок с вероятность 75%. А в четверти случаев продолжим сроки срывать.
Ссылки на материалы из комментариев к предыдущей статье:
1. Пуассоновское горение сроков
2. Человеческое и математическое выпрямление сроков
P.s. За вычитывание и советы по статье большая благодарность Андрею Потапову, CrazyViper и Cartmendum (последнему за ругань на мое незнание теории вероятности).
Автор: Teacher