Автор статьи: Дмитрий Курдюмов

Участвовал в Аджайл-трансформациях в крупнейших компаниях в России (Альфа банк, МТС, Х5 retail group), с международным опытом в стартапе зарубежом.

Как я люблю эти оценки разработчиков: «нууу…эта задача на полчаса». Через два дня: 

— Ну че, когда будет готово? 

— Да тут уперлись в интеграцию и еще нужно кое-что согласовать с аналитиком, думаю за сегодня закрою...

Еще через день:

— Еще делаю, вчера не успел, думаю завтра будет готово. 

Занавес. И проблема здесь не в разработчиках. Просто абсолютные оценки НЕ работают.

Если большую задачу оценивать по сумме мелких подзадач и не закладывать время на уточнения, передачу задачи из отдела в отдел, «ждем, когда починят», «жду ответа» и прочие неопределенности, сроки реализации задачи ВСЕГДА будут слетать. Почему они будут слетать? Потому что учесть на старте все невозможно. Существует много неопределенностей по ходу разработки, включающие объем работы, техническую сложность, простои, задержки, согласования, ожидания. И какие бы мы инструменты планирования ни старались использовать, сроки разработки все равно слетят.

Как же тогда планировать время выполнения?

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

Часто время ожидания между передачей задачи из рук в руки не учитывается. Поэтому важно настроить трекер так, чтобы фиксировать время на целиковую задачу. Для этого нужно настроить сбор статистики задачи от статуса «выбрано в работу» до «готово». В итоге получите распределение времени выполнения по завершению задач. И тогда вы будете при планировании опираться не на предиктивные данные в попытке все учесть, а на данные статистики. Статистика же покажет реальную картинку и отразит, через какое время задачи проходили через систему. Такое распределение можно собирать для каждой из категорий задач. Чтобы упростить, я рекомендую выделить в вашем бэклоге несколько типов задач по объему (например, S — самая маленькая, M — средняя, L — большая, XL — очень большая) и для каждого типа строить свое распределение. 

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

Например, три задачи выполнены за 10 дней, а девять рабочих элементов — за девять дней. С 89% вероятностью следующая задача будет выполнена в срок до 10 дней, так как задач всего было 28, а 25 из них сделаны до 10 дней.

Почему можно доверять статистике?

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

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

Пользуясь статистикой, в одной компании мы улучшили прогнозируемость выполнения задач до 90%, и когда заказчики приходили с новыми задачами, после их выбора мы давали объективные сроки. Была счастлива и команда, и заказчики. Команда — потому что на них не давили, а заказчики были спокойны.

3. Если работаете по Scrum — лучше пользоваться оценкой не в часах, а в относительных единицах (например, по последовательности Фибоначчи или оценке в майках). И смотреть, какое количество относительных оценок команда делает за спринт. И смотреть статистику по спринтам, в прошлом, в позапрошлом месяцах. Важно, что в относительных единицах вы также оцениваете целиковую задачу (несущую ценность), а не набор подзадач.

Почему?

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

Здесь также фокус на статистике — вы собираете статистику завершенных относительных единиц в спринте и на основе этого можете планировать будущие спринты. 

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

Как оценивать в относительных оценках?

  1. Возьмите ваш бэклог продукта (список задач).

  2. Найдите в нем самые маленькие и схожие элементы между собой.

  3. Договоритесь, что эти элементы вы примите за самые маленькие элементы и тогда их можно будет оценить в 1 SP (стори поинт), если вы оцениваете по Фибоначчи или в XS, если оцениваете по майкам. Особой разницы нет, какой метод использовать. Но на практике майки могут восприниматься командой на старте проще.

  4. Далее найдите элементы в бэклоге, которые в 2 раза больше тех, которые 1 SP и договоритесь, что они 2 SP и так далее.

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

  6. После того как спринт завершен — посмотрите, сколько SP вы сделали.

  7. У вас появились первые данные, продолжайте собирать дальше.

  8. Через 3-5 спринтов у вас будет статистика, на которую можно опираться.

Важно понимать, что это не оценка, а прогноз, основанный на статистике. 

Какие могут быть плюсы от таких подходов к оцениванию:

  • Сильно улучшается прогнозируемость и предсказуемость поставок. 

  • Вы видите реальную картину по задачам в компании или департаменте.

  • Улучшается качество планирования. Сдали фичу в срок — клиент доволен. Больше никаких извинений из-за переноса сроков.

  • Скорость планирования и оценки задач возрастает в два, а то и в три раза.

  • Даете объективные прогнозы заказчику на основе статистики.


Приглашаем всех желающих на бесплатный вебинар «Как правильно увольнять человека». Увольнения — сложная тема, поэтому научимся работать с увольнениями, как с нормальной частью менеджерской деятельности. Обсудим:
— Кого и почему надо увольнять?
— Причины увольнения; законодательная основа; сроки увольнения;
— Увольнение по инициативе сотрудника — как предотвратить.
Регистрация на занятие.

А если вам понравилась статья, жду в своем телеграмм канале и на сайте.

Комментарии (13)


  1. DarkTiger
    04.07.2022 23:25

    Любил я этот момент, когда читал проектное управление на втором высшем. Лекция по оценкам сроков. Сидят, слушают - устали, вечер уже. Подкидываю невинный вроде бы вопросик:
    - Когда ваш начальник спрашивает, сколько времени займет у вас задача, с какой вероятностью вы укладываетесь по срокам в данный вами ответ?
    Пауза, все думают, потом с разных столов прилетает "90%", "60%", "10%". Я сижу, улыбаюсь, а они глазами друг на друга в наступившей тишине - хлоп-хлоп. Потом начинается галдеж минут на пять. Вроде же учатся вместе второй год, и вот тебе на...
    Тут-то я им и рассказываю про методику оценок Джоэла Спольски, которую раскрывает эта статья. Очень хорошо заходит тема. Понимают, что люди бывают разные, очень разные.


  1. in_heb
    05.07.2022 00:42
    +3

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


    1. Akon32
      05.07.2022 11:03

      при этом все понимают что есть коэффициент перевода SP в реальные дни

      Я подозревал это и поставил у себя 1 SP = 1 день (задач меньше чем 0.5 SP практически нет).

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

      Когда-то видел запись римскими цифрами вещественных чисел, в другой сфере разве что.


    1. VasiliyShiryaev
      05.07.2022 13:27
      -1

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


      1. in_heb
        05.07.2022 19:27
        +1

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


        1. antonblockchain
          06.07.2022 22:33

          Оценка в Днях тут-же становится ОБЯЗАТЕЛЬСТВОМ сделать за X дней.
          Что это не оценка, а что исполнитель обязуется сделать за X дней.

          Сразу вопросы идут подтверждающие взятие обязательства — точно сделаешь, сам ведь сказал, тебя никто за язык не тянул?..
          (тянул конечно, это работа менеджера тянуть за язык и брать обязательства, иначе зачем он нужен если не управляет командой)
          Наблюдал это всегда — так удобно считать руководителю — все подчиненные взяли обязательства.

          А оценка в сторипоинтах остается ОЦЕНКОЙ, хоть и прямо пересчитывается в дни.


          1. in_heb
            06.07.2022 22:42

            Чем-то это напоминает у.е. в 90ых. Все знают что у.е. это доллар, но не называют его долларом.

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


          1. in_heb
            06.07.2022 22:48

            Кстати, я напоминаю, что в этих ваших скрамах нет такой роли как менеджер


    1. MikeEshva
      06.07.2022 16:01

      SP больше предназначены для организации диалога команды о реализации задачи, чем для сбора реальной статистики и итоговой оценки времени реализации задачи в часах/днях. Во время покера не интересны средние оценки, интересны крайние оценки. Один говорит: 1, другой 100500. Вот это интересно, так как тот, кто оценивает задачу простой, может знать о уже реализованном функционале ("немного допилим и переиспользуем"), второй знает о каких-то траблах, о которых никто другой не в курсе ("нам там интегрироваться нужно с продуктом Х, а у них неделю назад ушёл последний разработчик, есть только менеджер, который ещё на испытательном и не набрал экспертизы").

      А так, в целом, согласен. Из гибких подходов разработки слепили религию Agile с массой сект, вроде Scrum, и священниками в лице скрам-мастеров и им подобных, многие из которых ни строчки кода не написали (был у нас один такой диджей с радио, Антон, привет!)


  1. Truba
    05.07.2022 06:57

    Оценки в часах работают вполне приемлемо.

    Для вероятностных оценок в часах неплохо работает метод PERT, который Дядька Боб описывает в книжке «Идеальный программист».


    1. oracle_schwerpunkte
      05.07.2022 09:20
      +3

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


  1. salkat
    05.07.2022 16:12
    +3

    Статистика - это про большие числа. Вряд ли у вас есть статистика "мы сделали 1000 интергаций с Apple pay и в среднем это занимало Х часов"


    1. Akon32
      06.07.2022 10:20

      Так-то да, но вряд ли бы эти оценки вообще работали, если бы для точной оценки требовались минимум 1000 итераций одной фичи. (а может, они и не работают вовсе?)

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