Метода оценки времени выполнения задач, которая не работат

Метода оценки времени выполнения задач, которая не работат
О различных методиках оценки времени выполнения технических задач написано много теоретических изысканий.

Проблема совсем небольшая: эти методики не работают. Причем, как правила в сторону существенного сдвига сроков.

Не работает формула «умножить на два и прибавить еще 30%».
Не работает формула «написать детальные требования и разбить проект на мелкие задачи».
Не работает формула «оценивать в идеальных часах, а в день программист работает 4 идеальных часа».
Не работает формула «выбрать задачу и оценивать сложность числами Фибоначчи относительно ее».

То, что написано ниже тоже, скорее всего не работает. Просто так случайно получилось.


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

Почему все так печально

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

  • Понимание сложности задачи разработчиками, что автоматически предполагает наличие опыта в данном классе задач.
  • Стабильность команды. Новая команда всегда несет много непроизводственных рисков, которые так или иначе влияют на производительность.

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

Предпосылки

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

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

Нам хотелось чего-то, что позволяет оценивать задачи быстро и грубо. На уровне здравого смысла. На уровне примерного объема работы, который можно взять на спринт(2 недели).

Логическим выводом стало использование Planning Pocker, который оценивает задачи по сложности, а не по времени.
Проблема Planning Pocker в чистом виде в том, что полностью абстрагироваться от времени все равно не получается. Да и конечному заказчику продукта наплевать на то, насколько сложно его сделать. В первую очередь важно, когда будет готово, верно?

Другой прикол Planning Pocker методики заключается в том, что оценивается производительность команды, а не индивидуальных членов. Видимо, там, откуда она пришла никто никогда не ходит в отпуск. В нашей реалии, к сожалению, разработчики уходят в отпуска, болеют, берут отгулы и т.п. Для команды из 5 человек минус один член на спринт — это минус 20% ресурсов(а то и минус 30% в случае матерых производителей). Т.к. мы живем в реальном мире, мы решили мерять индивидуальную производительность и учитывать ее при отсутствии членов команды.

В итоге, извилистыми дорожками мы пришли к простой методике, которая описана ниже.

Методика

Вся методика заключается в оценке задач в баллах(Story Point) из этой таблички:

Story Points Примерный уровень сложности
1 Меньше 1 часа.

Очень простая задача.
Например: добавить простой контроллер, поправить опечатку, добавить простое поле в форму.

2 1-3 часа.

Простая задача + дополнительные работы.
Например: добавить метод в модель и написать тест.

3 3-6 часов ~ пол рабочего дня.

Стандартная задача средней сложности.
Например: добавить новый фильтр в поисковый запрос.

5 6-9 часов ~ один рабочий день.

Стандартная задача средней сложности, требующая небольшого R&D.
Например: найти библиотеку для тегов и добавить ее в проект.

8 2-3 рабочих дня.

Сложная задача с большим уровнем неопределенности.
Например: произвести профайлинг и оптимизацию раздела сайта.

Задач сложнее 8 баллов в нашей вселенной не существует, если такой астероид невзначай залетает — он дробится лазерной пушкой на мелкие куски. Традиционно для Planning Pocker мы оцениваем задачи всей командой и дискутируем, если что-то непонятно или оценки слишком сильно отличаются друг от друга.

Баги и задачи, не вносящие явного профита в продукт(системное администрирование и т.п.), не оцениваются.

На оценку 2х-недельного спринта уходит порядка 2-3 часов.

Первые два-три двухнедельных спринта мы просто сделали столько, сколько смогли, а потом начали ориентироваться на среднестатистические данные.

На выходе каждого спринта в простую табличку добавляется строка:

Sprint Team Story Points Ivan Alex Dmitry Vera
Sprint 1 110 35 30 20 25
Sprint 2 90 30 25 10 25

Вот так и живем =)

Поддерживающие требования

Никакая методика не будет работать, если нечего оценивать или нет понимания задачи, которую нужно оценить. Это означает, что перед оценкой должны быть заготовлены требования и сами задачи(ну или User Story).
За подготовку требований обязательно кто-то должен отвечать, и этого ответчика нужно ставить в позицию гориллы, если перед оценкой требования сформулированы недостаточно четко. Но это тема для отдельной статьи.

Естественное снижение производительности

По мере развития проекта мы заметили заметное снижение производительности, до 30-40% в отдельно взятых спринтах. А недавно вдруг опять подскочила. Ларчик, как оказалось, ломом открывался: производительность была хорошая в тех спринтах, в которых мы практически не исправляли баги.

Наша стратегия относительно исправления ошибок очень проста и отображена в этой табличке:

Приоритет Ситуация Время на исправление
Blocker Недоступна жизненно важная функциональность сайта.

Например: невозможно открыть сайт, сломалась регистрация, не приходит e-mail

Бросить все и делать!
Critical Сломалось что-то существенное, но можно потерпеть.

Например: не работает статистика, не работает восстановление пароля.

1-2 рабочих дня.
Разработчик может спокойно завершить текущую задачу и приступить к проблеме.
Standard Стандартная ошибка, не имеющая существенного влияния на качество продукта.
Таких должно быть 90%(ну или работайте над качеством).

Например: небольшие проблемы в верстке, неправильная обработка 404 страницы.

Исправляется в начале следующего спринта.

Именно эта категория багов может прогнозируемо влиять на производительность и должна приниматься во внимание при оценке.

Таким образом, если при планировании спринта мы видим большое количество ошибок, подлежащих исправлению — в спринт берется на 20-30% меньше задач.

Заключение

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

Автор: Irbiz

Источник

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