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

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

Рассмотрим небольшой пример.

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

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

  • Оптимистичный прогнозминимально возможное время выполнения, в данном случае это время выполнения задачи мобильным разработчиком, при условии, что дизайнер уже сделал свою работу и сервис для получения текста для шаринга в социальных сетях готов.
  • Пессимистичный прогноз  — максимально возможное время, требующееся для выполнения задачи, в предположении что все происходит наихудшим образом, то есть в данном случае это время выполнения задачи мобильным разработчиком при условии, что дизайнер еще не делал свою часть и сервис не готов. В таком случае необходимо увеличить время выполнения задачи, так как задача в целом не будет готова, если мобильный разработчик сделает только свою часть.
  • Вероятный прогноз — оценка времени, требующегося для выполнения задачи, в предположении, что все происходит как обычно; это что-то среднее между оптимистичной и пессимистичной оценкой, как правило, оптимальный прогноз наиболее приближен к реальной ситуации выполнения задачи, то есть это то время, которое обычно уходит на выполнение такого рода задач.

Таким образом, мобильный разработчик вместо одной оценки выдает три, учитывая сложности, которые могут возникнуть. Результирующая оценка является средним между вероятной, оптимистичной и пессимистичной оценкой и рассчитывается по формуле:

(Пессимистичная + 4 *Вероятную + Оптимистичная) / 6

Таким образом, вместо одной оценки получаем четыре, по которым более наглядно можно судить о времени выполнения задачи. В качестве базовой оценки необходимо выбрать среднюю оценку, рассчитанную исходя из пессимистичного, оптимистичного и вероятного прогноза, так как в ней заложены возможные риски.

Если вы работаете  в компании, то попробуйте с вашим коллегой оценить одну и ту же задачу независимо друг от друга, а потом сравнить результат. Мы проделывали такой эксперимент по оценки проекта в компании, в которой я работаю. В нашем случае прогнозы отличались всего на один рабочий день (хотя общая оценка проекта составляла около 30 рабочих дней), что, я считаю, хорошим результатом. Если наши оценки совпадают, значит, мы имеем примерно одинаковый опыт выполнения аналогичных задач.

В основе данного метода  планирования выполнения задач лежит принцип PERT.

Program (Project) Evaluation and Review Technique (сокращенно PERT) — техника оценки и анализа программ (проектов), которая используется при управлении проектами. PERT обеспечивает оценку и анализ времени выполнения, трудозатрат и потребности в других ресурсах проекта, на основе соответствующих характеристик и зависимостей входящих в него задач. Более детально про данную технику оценки можно почитать здесь