Как в действительно выглядит оценка времени исполнения задачи или почему программисты не умеют прогнозировать сроки
Перепост с http://boombick.org/blog/posts/219 . Согласен с автором всеми четырьмя руками ))
Оценка | Ход мысли программиста | О чем он забыл | Реальное время |
---|---|---|---|
30 секунд | Это совсем небольшое изменение. Я точно знаю где и что поправить. На это уйдет полминуты | Время для запуска компьютера, среды разработки, поиска нужного исходника Сборка, тестирование и документирование изменения | 1 час |
5 минут | Небольшое изменение. Сейчас я загуглю верный пример использования и исправлю | Редко удается найти нужную информацию с первого раза. Даже если это случится, то, вероятно, будет нужно внести изменения. Ну и добавьте время на сборку, тестирование etc | 2 часа |
1 час | Я знаю, как это сделать, но потребуется немного времени для написания кода | 1 час – идеальное время без учета возможного возниконовения проблем. А они точно возникнут. | 2 часа |
4 часа | Я примерно понимаю, в какую сторону думать, чтобы решить эту проблему. Есть клевый модуль WizzaBanga для нашего фреймворка, но мне надо почитать документацию, чтобы правильно подключить его | Единственная оценка, приближенная к реальности. Достаточно большой запас времени на случай возможных проблем и сравнительно небольшой объем задачи, чтобы сильно ее затянуть | 4 часа |
8 часов | Сначала я отрефакторю класс класс Balunga в два, затем добавлю вызовы модуля WizzaBanga и в конце добавлю новые поля в GUI | Слишком много зависимостей у класса Balunga в разных частях системы. Потребуется поправить около 40 файлов. Новые поля в GUI также должны быть добавлены в базу данных. 8 часов слишком мало, чтобы выполнить весь объем работы. И будет гораздо больше итераций, чем видит программист при оценке | 12-16 часов |
2 дня | Нужно написать реально много кода. Надо добавить новые таблицы в базу данных, написать GUI для них и логику работы этой части приложения | Если задача оценивается в два дня, то она слишком велика, чтобы оценить ее верно. Не только мелочи, но и большие куски функционала будут упущены из вида при оценке | 5 дней |
1 неделя | Ого, это реально БОЛЬШАЯ задача. У меня пока нет ясного понимания как я буду ее делать, но я же не могу так сказать. Я надеюсь, я на самом деле надеюсь, что недели мне хватит, чтобы разобраться в ней и выполнить ее. Я не могу попросить больше времени, руководство может усомниться в моей компетентности | Подобные задачи не могут быть корректно оценены большинством программистов. Лучше всего направить ее обратно архитектору, чтобы он провел декомпозицию и подсказал пути решения получившихся небольших задач. Архитектор может найти более простой путь… Или выяснить, что работы куда больше, чем ожидалось | 2-20 дней |