PERT и Story Points
Если оставить способы планирования (вычисление коэффициентов оптимистичности и пессимистичности по сотруднику и их корректировка в зависимости от собранной статистики) за бортом и сфокусироваться только на оценке задачи, то остаются два принципиальных подхода.
Принять фактор неопределённости
Всегда давать точные прогнозы нереально. Об этом нам говорит в “Вальсируя с медведями” ДеМарко и предлагает использовать прогнозы в виде распределений. Прогноз по таске - распределение, прогноз по проекту - кумулятивное распределение таких тасок. Наиболее вероятный прогноз - где-то посередине между оптимистичным и пессимистичным, но где - неизвестно. Мы в любом случае имеем “наиболее вероятную”, “оптимистичную” и “пессимистичную” оценки, а также уверенность в данной оценке. Вопрос только что из этого считать входными данными, а что функцией.
Можно просить дать оптимистичную и пессимистичную оценку, из того, насколько они расходятся, вычислить степень уверенности и по какой-нибудь хитренькой функции вычислить наиблее реалистичный прогноз.
Проще попросить дать наиболее вероятную оценку и степень уверенности в ней. Степень уверенности прямо пропорциональна объёму имеющихся данных по задаче и их пониманию исполнителем. Отрицать существование этого параметра кажется нелепым. Степень уверенности - число от 0 до 100% (0..1).
Оптимистичная и пессимистичная оценки выводятся по следующим формулам:
Оптимистичная = наиболее вероятная * степень уверенности
Пессимистичная = наиболее вероятная / степень уверенности
Подход бесконечно декомпозируемый, до тех пор пока при декомпозиции сумма наиболее вероятных, оптимистичных и пессимистичных заменяют собой изначальные оценки декомпозируемых задач.
У подхода есть один большой плюс, если у подзадачи явно низкая степень оценки, она будет выделяться и исполнителю можно будет помочь предоставлением и уточнением информации. В таком случае степень уверенности повысится, прогноз станет более точным, а сумма пессимистичных оценок уменьшится.
Избегать фактора неопределённости
В скраме используются Story Point’ы. Это буквально попугаи, у них нет чёткого критерия и они не конвертируются линейно во время. Если вы пытаетесь по Story Point’ам вычислить сроки - вы неправильно используете стори поинты.
По своей сути они являются попыткой смешать в одно целое два параметра - наиболее вероятную оценку и степень уверенности в ней.
Более того, они требуют от дающего оценку в них совершить в уме нестрогую, но сложную математическую операцию: наложить шкалу предыдущего опыта на шкалу размеров стори поинтов, принятых в команде.
Опять же, здесь вознкиает ещё один нюанс - люди разные, оценки в стори-поинтах у них будут разные. Как должен работать планнинг-покер, в духе аукциона - хз. По идее, если кто-то даёт меньшую оценку в сторипоинтах - пусть он эту задачу и берёт - так получим наиболее экономически эффективный рыночный способ поиска исполнителя, которому легче всего задачу решить. Но обычно такой исполнитель один на всю команду, а что делать джунам? Неясно. Давить на них и заставлять давать меньшую оценку? Нелепо, они будут делать задачу столько, сколько будут делать, прогноз на реальность не влияет. Всё что может сделать предлагающий меньшую оценку, не захватив задачу себе - дать больше информации, чтобы у других людей были более точные оценки. Но точность сама по себе в оценках в стори поинтах отсутствует. В итоге вся математика получается неявной и люди могут спорить об оценке необоснованно. А могли бы уже работать идти.
Опять же, всё зависит от. Если взять шкалу стори-поинтов в виде семантических градаций вида:
- “херня, ща я” - 1,
- “ну, сделаем” - 3,
- “чот-хз” - 9,
- “БОЖЕ НЕТ” - 27
Это кажется вполне приемлемым подходом. БОЖЕ НЕТ - стопудово надо дробить на отдельные задачи и считать кумулятивную оценку. Фибоначчи в качестве шкалы мне не очень нравится, сложность задач в разработке зачастую экспоненциальная.