среда, ноября 14, 2007

Project Estimation

Прочитал сегодня в блоге у Элдара Мусаева про
"Оценки софтверных проектов или равно ли целое сумме слагаемых?". Захотелось подискутировать на эту тему с коллегой из Рэдмонта, но объем комментария вылез за общепринятые размеры и тянет на отдельный пост :).
Элдар высказывает популярную в среде разработчиков точку зрения о том что, во первых разработчики не любят давать оценки. Цитата:
"Нет-нет, я понимаю, что в ожиданиях менеджмента, вы как Кассандра должны совершенно точно предсказать будущее, причем в отличие от Кассандры сделать это не в пример более оптимистично, как того требуют business tenets (не знаю, как эта штука переводится, ну, что-то вроде морального кодекса молодого строителя коммунизма – по ней у нас каждый год обязательный тренинг). В общем, все понимают, что это сложно, но ваши пророчества должны быть «good enough!» со всех точек зрения."

А во вторых, точные оценки дать весьма сложно. И далее автор подводит под это дело математическую базу (цитата):
"То есть, если вы разбили проект всего на две части, оценили каждую с 80 процентами вероятности, то сумма имеет «надежность» всего лишь в 64 процента! Попробуйте в качестве домашнего задания, что получится если проект разбить на десять шагов?"


С тем что оценки давать сложно я согласен. А вот с тем что математика показывает, что предварительные оценки вообще бессмысленны можно поспорить.

Потому что математика, и теория вероятности в частности, к дисциплине "project estimation" имеет мало отношения. Здесь гораздо лучше математических работают различные эмпирические методы. Существуют такие веселые методики, как "оценка по аналогии" или "экспертная оценка". Просто приходит умный дядька, смотрит на проект и говорит: "этот тянет на 26 человеко месяцев". И все. В таких методиках главное найти этого самого дядьку.
И, кстати, если в проекте не велика инновационная составляющая, или иными словами, проект достаточно типовой, то оценить его не так уж сложно. Есть Early function Points, есть Use Case Points, есть COCOMO, и они в умелых руках дают неплохие результаты.
Другой важный момент. Если менеджер на старте проекта требует от вас точных оценок и стопроцентных гарантий, это говорит только о том, что это не очень хороший менеджер. Причем он об этом знает и ему от этого становится страшно.
В нормальных управленческих практиках, на стадии анализа никто не требует точных оценок. Оценка плюс минус 50% считается нормальной и достаточной для планирования бюджета проекта. Причем по моей практике, в результате точность оценки оказывается выше чем +-50%.
Если же проект инновационный и в нем велика неопределенность, то такие проекты обычно выполняются по схеме time & materials. Т.е. выделяют кучу денег (сначала небольшую) и говорят: "за эти деньги мы будем стремиться достигнуть таких-то целей". По прошествии времени, смотрят достигнуты ли поставленные цели. Если да, то выделяют новую кучу денег, ставят новые цели. Если нет, закрывают лавочку. Все мы читали новости наподобие: "НАСА выделяет 20 млн долларов на программу разработки материалов для космического лифта". Как они посчитали, что надо именно 20 лимонов? А никак. Они поставили цель "сделать нить, которая не порвется при длине в 20 километров". Получится, выделят еще денег на продолжение работ. Нет, - закроют проект. В этом случае оценки вообще не важны. Важнее хорошая организация, четкая постановка целей и управление рисками. По таким принципам, кстати, работает XP и другие Agile методики.
И что в итоге?:
- оценивать проекты можно, но для этого нужно умение.
- точность оценки не так уж важна, просто надо уметь пользоваться этой оценкой
- методики есть, и не смотря на то что они эмпирические, они работают.

2 комментария:

Unknown комментирует...

Насколько я понимаю, пойнт Эльдара именно в том, что во-первых, нельзя тупо складывать длительности, и во-вторых, погрешность будет всегда.

В своем примере он сам вообще говоря не очень корректно складывает вероятности.

Что до твоих примернов, я сомневаюсь про дядьку, который скажет цифру с потолка. Слишком уж похожие должны быть проекты. Он скорее тоже разложит на сабтаски и будет по каким-то правилам складывать.

Sergey Rozovik комментирует...

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