понедельник, 27 августа 2012 г.

Почему оценки такие неточные

Очень часто то, на что планировалось потратить два часа, занимает почему-то 3 дня. Небольшая с виду доработка делается вместо недели 2 месяца. Знакомая картина, правда?
К примеру, возникла задача добавить в системе возможность экспорта пользовательских данных. В голове проносится - это мелочь, нужно добавить кнопочку на страницу профиля, в обработчике собрать данные и сохранить их в файл. Полчаса работы. Ну, ладно, я уже опытный, учту риски - пусть будет 2 часа. На практике и этого мало. Оказывается, мало внести исправления, нужно чтобы пользователь мог на неё нажать. А для этого сначала всё пересобрать, потом протестировать, развернуть на сервере и т.д. Только через полтора дня можно сказать, что задача сделана.
Мужик что-то ищет под фонарем.
К нему под ходит милиционер и спрашивает:
- Что вы тут делаете? Мужик отвечает:
- Ключи от квартиры ищу.
- А где потерял?
- В парке.
- А зачем здесь ищешь?
А здесь светлее.

Всё дело в том, что наш мозг очень не любит думать о мутном и непонятном, зато с удовольствием концентрируется на известном. Непонятное воспринимается как несуществующее, если не сделать специальных усилий, то все неопределённости в оценке учитываться не будут.
В первую очередь, мы склонны забывать о том, что нужен не факт выполнения задач, а её результаты. А если копнуть чуть глубже, то нужен даже не результат, а решение некоторой проблемы. Задача - это материализация гипотезы о том, что её выполнение решит проблему. Если после выполнения задачи исходная проблема не решена, то, скорее всего, к задаче придется вернуться. Для получения достоверной оценки очень важно определить критерии завершенности: Какую проблему мы решаем? Чья это проблема? Как можно удостовериться что проблема решена? Действительно ли ожидаемый результат от задачи решит проблему?

- Вы умеете играть на скрипке?
- Не знаю, не пробовал.

Второй большой источник неопределенности - это средства и способы выполнения задачи. Это могут быть люди, инструменты, подходы.
Например, я знаю, что Петя проходит пешком от точки А до точки Б за 10 минут. Я собираюсь отправить Петю проехать это расстояние на велосипеде. Сколько это займет времени?
Да, чуть не забыл! О существовании велосипедов я вчера случайно прочитал в Facebook. Посмотрел несколько роликов, поглядел документацию по популярным моделям. Судя по отзывам, велосипедист гораздо быстрее пешехода. Петя утверждает что ездил на велосипеде три года и был лучшим в команде. Решено, Петя едет на велосипеде.
...на следующий день, придя в сознание после столкновения с автобусом, Петя рассказал, что это была команда детского сада в гонках наа трёхколесных велосипедах...
Так простая задача растягивается на дни, а иногда и на недели. Невидимая неопределенность постепенно материализуется в виде нарушения сроков или неожиданных результатов.

Итоговое эмпирическое правило - не верьте оценкам, если они не учитывают кто, как, чем и зачем.

Если вы дочитали до конца, то наверное вам будет интересно почитать про изменения в требованиях и исходных кодах.

Комментариев нет:

Отправить комментарий

Эволюционная разработка программных систем

Программный продукт — это место где разработчики виртуально встречаются с пользователями. И часто с этой встречи обе стороны уходят разоч...