Как в действительно выглядит оценка времени исполнения задачи или почему программисты не умеют прогнозировать сроки

Перепост с 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 дней