Как стать автором
Обновить

Как оценить задачи без Planning Poker и лишних слов

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров6.6K

Привет, Хабр!

Меня зовут Александр, я занимаюсь релиз менеджментом в ИТ-компании TAGES. Эта работа требует быстрой поставки бизнес-ценности в условиях меняющегося мира. Однако непрерывность регулярных деплоев невозможна без четкого плана. А правильный план, в свою очередь, требует точной оценки трудозатрат.

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

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

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

В предисловии к статье упоминается Planning Poker. Возможно, вы хотя бы раз о нем слышали, кому-то даже доводилось участвовать в нем. Эта техника помогает избегать «эффекта привязки».

«Эффектом привязки» ученые называют когнитивное искажение, свойственное всем людям и заключающееся в том, что оценка одного человека становится зависимой от ранее озвученной оценки другого человека.

Не будем подробно останавливаться на описании техники покер планирования — она достаточно подробно описана в Интернете, в том числе и на Хабре о ней есть немало достойных материалов.  

Я поделюсь своим опытом и расскажу, как избежать «эффекта привязки» при оценивании задач без Planning Poker. 

Эффект привязки

Давайте рассмотрим «эффект привязки» в контексте оценки времени. Представим, что мы собрали команду из 5 человек на груминг по бэклогу, в рамках которого происходит поочередный разбор, обсуждение и оценка задач.

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

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

Для наглядности рассмотрим такой пример: 

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

В то же время Алина, Middle backend-разработчик, об этом знает, поскольку была на встрече с архитектором, и изначально полагала, что на реализацию потребуется не менее 100 часов. Теперь после озвученной Никитой оценки она начинает колебаться («У Никиты же опыта больше!») и называет число, близкое к высказанному Никитой — 50 часов. 

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

В итоге фича была реализована за 80 часов. И тут налицо проблема оценки времени — задача недооценена в 2 раза! А если такого «ошибочного оценивания» в бэклоге много? Сроки не ползут, они летят!

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

Цена Planning Poker

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

1. Собрать (отвлечь от работы) ряд специалистов.
2. Найти консенсус. Это редко происходит быстро, особенно, если все участники — опытные и придерживаются своего мнения. 

Сильнее всего это чувствуется в больших командах. Полагаю, многие согласятся, что достигнуть консенсус между 2-3 участниками значительно проще, нежели в группе людей из 7 и более человек. 

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

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

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

Так что покер планирования — блестящий инструмент, который стоит попробовать, если вы еще им не пользовались. 

И рыбку съесть, и на елку влезть! 

Представим, что у команды нет возможности проводить полноценный покер планирования. Однако существует потребность в достижении реалистичной оценки с учетом мнения разных исполнителей без эффекта привязки.

Предположим, что системные аналитики уже провели работу над новым эпиком: проанализировали требования и описали подробно постановки на разработку методов REST API.

Видим, что бэклог состоит из 14 новых задач, а в команде есть 3 backend-разработчика: Никита, Алина и Сергей. Нужно, чтобы они оценили эти задачи.

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

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

Подготовительное действие 1. Основной файл с оценками

Данный файл (на примере Google Таблицы) будет содержать оценки всех разработчиков в одном месте.

Основной файл с оценками
Основной файл с оценками

1 — Название основного файла (в нашем случае это «Summary»).

2 — Название листа. В ячейке «B1» дублируем название листа (это пригодится в дальнейшем для настройки автоматических формул).

3 — Столбец будет содержать ссылки на Jira/Trello/Yandex Tracker, при переходе разработчик сможет изучить подробное описание выбранной задачи.

4 — Столбец содержит название и описание задачи (чаще всего оно совпадает с названием задачи в Jira).

5 — Столбцы с оценками времени от разработчиков, которые будут автоматически импортироваться из файлов разработчиков.

6 — Столбец, который будет содержать самую консервативную оценку по задаче.

7 — Столбец с медианной оценкой задачи.

8 — Столбец со средней оценкой задачи.

9 — Столбец с фактическим затраченным временем на задачу.

Подготовительное действие 2. Файлы с оценками для разработчиков

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

Первым делом создадим и настроим таблицу для Никиты:

Файл с оценками для разработчика
Файл с оценками для разработчика

1 — Название файла содержит имя разработчика.

2 — Название листа. В ячейке «B1» дублируем название листа (это пригодится нам в дальнейшем для настройки автоматических формул).

3 — Столбец будет содержать ссылки на Jira/Trello/Yandex Tracker, данные будут автоматически импортироваться из основного файла (нашего «Summary»).

4 — Столбец содержит название и описание задачи, данные будут автоматически импортироваться из основного файла Summary.

5 — Столбец, в который разработчик будет вносить оценку времени в часах.

6 — Необходимо настроить доступ к файлу разработчика.

Предоставьте разработчику права на редактирование файла. Таким образом доступ к файлу будет только у вас и у разработчика Никиты. И даже если вы являетесь параноиком, вы точно гарантируете, что Алина не сможет подсмотреть оценки Никиты. Если только последний не захочет вступить с ней в сговор, но это уже риск, выходящий за рамки данной статьи :)

Настройки доступа
Настройки доступа

Теперь создадим такие же файлы для Алины и Сергея. Проще всего создать копии файлов и повторить пункты 1 и 6 для Алины и Сергея, то есть переименовать файл и настроить доступ под них.

Подготовительное действие 3. Настраиваем автоматический импорт данных

Для автоматического импорта данных воспользуемся функцией IMPORTRANGE(spreadsheet_url, range_string).

  • spreadsheet_url — ссылка на другую таблицу, из который мы хотим импортировать данные.

  • range_string — диапазон данных в формате «SheetName!Range», который мы хотим импортировать.

Основной файл — Автоматический импорт оценок разработчиков

Синхронизация оценок времени
Синхронизация оценок времени

Столбец с оценками Никиты (ячейка С4):

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/1icCY_nHpJMruFQPX0w1gD88G64xK75vK2uYWhD8Nhr4/edit?usp=sharing";$В$1&"!C2:C100")

Эта формула импортирует оценки времени, которые проставит Никита, из диапазона C2:C100 на листе «Бэклог» из файла «Никита». Обратите внимание, что название листа указано в ячейке B1.

Столбец с оценками Алины (ячейка D4):

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/1gtaLDNGvInjfELgPqUDI4t0ZQdSYUVkcTgmriv1Ua_g/edit?usp=sharing";$B$1&"!C2:C100")

Столбец с оценками Сергея (ячейка E4):

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/1AlMWqIUrVFIzgT3C9N-g2tPGQ5EtHOZlk6I6IRLxQtY/edit?usp=sharing";$B$1&"!C2:C100")

Эти формулы мы вставляем в первые строки столбцов с оценками. При этом важно открыть доступ для подключения внешних таблиц.

Настройка доступа
Настройка доступа

Файлы разработчиков — Автоматический импорт ссылок на Jira и описание

Синхронизация описания задач
Синхронизация описания задач

Столбцы Jira issue + Описание (ячейка A4):

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/1uMWqq6-OQmnrJkAko6_F3y87bIy0ZwjBuEYm9vCuxP4/edit?usp=sharing";$B$1&"!A2:B100")

Эта формула импортирует ссылки на трекер и название задачи из диапазона A2:B100 на листе «Бэклог» из файла «Summary». Обратите внимание, что название листа указано в ячейке B1. 

Оценка времени 

Итак, все готово для того, чтобы попробовать инструмент в действии. 

Добавим ссылки на трекер, а также названия и описание задач в основной файл «Summary». Это описание автоматически импортируется в файл разработчиков для оценки времени.

Описание задач
Описание задач

Напишем в чат нашим разработчикам и попросим их оценить 14 новых задач:

Никита, Алина, Сергей, привет!
Пожалуйста, оцените сегодня задачи на листе «Бэклог».

  • Необходимо внести оценку в часах.

  • Округлить до целого значения.

  • Если есть затруднения, то можно не проставлять оценку.

Ссылки на файлы:

Никита

Алина

Сергей

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

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

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

Файл с заполненными оценками
Файл с заполненными оценками

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

Итоговая таблица с оценками бэклога
Итоговая таблица с оценками бэклога

1 — Оценки задач (часы).

2 — Максимальное значение (часы).

3 — Медианное значение (часы).

4 — Среднее значение (часы).

5 — Общие суммы по максимальной, медианной и средней оценкам (в часах).

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

Далее можно разложить этот объем работ эпика по спринтам, чтобы определить срок реализации, о чем было подробно рассказано в другой статье

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

Анализируем оценки
Анализируем оценки

Например, здесь вы как руководитель должны:

  1. Уточнить у Алины, почему она полагает, что на реализацию методов createCart и updatedClient необходимо столько времени, а также какие она видит риски.

  2. Уточнить у Сергея, почему он не смог оценить метод deleteCart, а также какие моменты ему непонятны.

При необходимости можно организовать встречу по обсуждению конкретно этих вопросов уже в расширенном составе.

Ретроспектива

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

Ретроспектива
Ретроспектива

1 — Фактическое время совпадает с оценкой времени.

2 — Фактическое время больше оценки времени (недооценка).

3 — Фактическое время меньше оценки времени (переоценка).

Дальнейшее использование

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

Самый простой вариант: 

1 — Обновите ссылки и описание задач в основном файле «Summary».

2 — Удалите старые оценки разработчиков в их файлах.

Теперь вы можете снова проводить оценку в тех же файлах.

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

Итог

Мы рассмотрели инструмент оценки задач, который может помочь избежать эффекта привязки практически так же хорошо, как покер планирование. Однако стоит отметить, что описанное не является его заменой. Цель статьи — поделиться еще одним инструментом, который может расширить арсенал успешного руководителя и помочь в решении похожей активности. 

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

Буду рад вашим комментариям с идеями, замечаниями и мыслями. 


Ссылка на папку с  файлами для оценки https://drive.google.com/drive/folders/1jx7tunEft2ax90UcJzbTgI3rRC7bkEQM?usp=sharing 

Теги:
Хабы:
Всего голосов 17: ↑11 и ↓6+7
Комментарии36

Публикации

Истории

Работа

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область