В последнее время мне довольно часто приходится оценивать различные проекты, которые рассматривает компания в которой я работаю. И я хочу поделиться опытом оценки еще не созданных программных продуктов. Итак, что же необходимо для того чтобы правильно оценить трудозатраты на проект?
- Первое и самое главное - это безусловно опыт, потому что
если вы уже реализовывали подобное в ваших предыдущих проектах, то
вероятность того что ваша оценка совпадет с реальностью увеличивается.
- Далее
необходимо разбить будующий функционал на как можно более независимые
блоки их можно разрабатывать в различных фазах проекта.
- Затем каждый блок разбивается на функционал, время реализации котрого не более 3х часов.
- Если
какие-либо части настолько сложны или новы для вас, что вы не
представляете себе как их реализовывать, то лучше потратить час-два на
изучение/поиск подобных решений в гугле.
Кстати,забыл сказать, что прежде чем вообще садиться оценивать проект,
можно посмотреть не реализовывал ли кто-то другой, то что вы сейчас
пытаетесь создать. Свой опыт ценне всего, но если есть чужой, то почему
бы им не воспользоваться?
- Еще один момент - оценивать
проект лучше не в одиночку(какой бы вы гуру ни были), а небольшой
группой в 2-3 человека. Если количество людей будет больше, то будет
слишком много мнений и тяжело будет быстро прийти к компромиссу, а
следовательно быстро оценить проект (за оценку проекта заказчик как
правило не платит...). Если людей будет меньше, а именно вы один, то
есть риск переоценить или недооценить собственные силы.
- Но
даже разбив проект на мелкие части и оценив каждую из них, мы не сможем
получить точную оценку проекта(честно говоря получить точную оценку
проекта невозможно в принципе), так как еще необходимо учесть
человеческий фактор, а он предполагает чтот в рабочем 8ми часовом дне
вовсе не 8 часов отдается работе:
- Чтение блогов и новостей, разгребание почты по утрам. (15 минут в день)
|
| - Перерывы на кофе/чай. (2-3 в течении дня 10 минут на каждый) |
| - Различного рода собрания. Проектные собрания для решения текущих вопросов. (дважды в неделю 3 часа) |
| - Решение проблем с железом, не работает комп или сеть или нет тока. (раз в две недели пол дня) |
| - Мелкие
проблемы с ПО (не грузится студия, поставился патч после которого винда
перестала адекватно работать). (дважды в неделю по часу) |
| - Заполнение time journal-ов и других формальных документов. (15 минут каждый день) |
| - Походы в WC. Да, это тоже занимает время. (10 минут в день. В дни когда селедку запиваешь с молоком 10 минут каждый час ;) |
| - Написание необходимых емейлов (4 часа в неделю) |
| - Написание ненужных емейлов (4 часа в неделю) |
| - Удаление спама (30 минут в неделю) |
| - Болезни, прочие личные причины отсутсвия на работе (1 день в месяц) |
| - 8 минут - одна сигарета |
- Для
подсчета времени на вышеупомянутые радости жизни можно либо подсчитать
в столбик либо воспользоваться принципом трех четвертей: берем четверть
времени от общей оценки проекта и прибавляем ее к оценке - таким
образом закладываем время на разработку новых или измененных заказчиком
требований. Затем от этой четверти считаем четверть и опять прибавляем
к общей оценке(убираем риск преодоления "подводных" камней в проекте) и
наконец от последней четверти прибавляем четверть и таким образом
закладываем время на все те радости жизни, что я описал пунктом выше.