Шкала Фибоначчи в покере планирования

Возьмите почти любую колоду для покера планирования, и в ней окажутся одни и те же числа: 1, 2, 3, 5, 8, 13, а дальше скачок к 20, 40 и 100. Начало колоды — последовательность Фибоначчи, хвост — её округлённый вариант. В agile-командах шкала Фибоначчи стала самой привычной для оценки задач, и обычно это объясняют тем, как трудно оценить большую работу до того, как за неё взялись.

Почему промежутки растут

В последовательности Фибоначчи каждое число равно сумме двух предыдущих: 1, 2, 3, 5, 8, 13, 21, 34, 55. В самом начале шаги неровные (от 1 к 2 число удваивается, от 2 к 3 растёт в полтора раза), а начиная с тройки каждое следующее число больше предыдущего примерно в 1,6 раза.

Обычный аргумент в пользу такой шкалы звучит так. Маленькие задачи можно оценить довольно точно. Большинство разработчиков отличат задачу на 1 поинт, например поменять текст в письме-уведомлении, от задачи на 2, например добавить в форму обязательное поле с проверкой и тестом. На больших задачах эта точность пропадает. Никто не скажет честно, во сколько обойдётся переход на новую платёжную систему, в 20 поинтов или в 21, потому что неопределённость растёт вместе с размером работы. Шкала, шаги которой растут так же, соответствует той точности, которую команда реально может дать.

Сторонники этого аргумента часто ссылаются на закон Вебера из психологии: наименьшая разница, которую мы замечаем между двумя раздражителями, примерно пропорциональна их величине. Разницу между рюкзаком в 1 кг и в 2 кг почувствует любой, а разницу между 20 и 21 кг большинство вряд ли заметит. Считайте это аналогией. Никто не доказал, что Фибоначчи — идеальная шкала для оценки задач, хотя во многих командах говорят, что такая интуиция совпадает с их опытом.

Есть и чисто практическая польза. Чем меньше карт в верхней части колоды, тем меньше бессмысленных споров. Карты 14 нет, и спорить «13 или 14» не о чем. Выбирать приходится между 13 и 20, а такую разницу обсудить стоит.

Модифицированная последовательность: 20, 40, 100

После 13 большинство колод отходит от Фибоначчи: вместо 21, 34 и 55 в них 20, 40 и 100. Первая колода выглядела иначе: у Джеймса Греннинга в 2002 году были карты 1, 2, 3, 5, 7, 10 и ∞. Модифицированная последовательность Фибоначчи (0, ½, 1, 2, 3, 5, 8, 13, 20, 40, 100) стала стандартом позже, а распространили её книга Майка Кона «Agile Estimating and Planning» и его колоды карт.

Круглые числа выбраны намеренно. Оценка 34 выглядит так, будто историю измерили. Оценка 40 говорит о порядке величины: задача большая, и насколько большая, пока неизвестно. Для такого размера круглое число честнее.

Стандартная колода, которая используется и в SprintPoker:

0, ½, 1, 2, 3, 5, 8, 13, 20, 40, 100, ?, ☕

Особые карты

0

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

½

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

?

«Я не могу это оценить». К этой карте стоит относиться как к информации: человеку чего-то не хватает. Когда она появилась, остановитесь и спросите, чего именно. Часто это вопрос, на который владелец продукта ответит сразу. Иногда неизвестность техническая, например библиотека, с которой никто не работал, или API без документации. Тогда правильный ход — спайк, короткое исследование с ограничением по времени, после которого история возвращается на оценку. Если после спайка на той же истории снова появляется «?», скорее всего, саму историю надо переписать.

☕

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

Что делать с 40 и 100

Когда кто-то выкладывает 40 или 100, разговор стоит перевести с вопроса «40 это или 100?» на вопрос «как это разделить?».

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

  • По шагам сценария. «Пациент может записаться к врачу онлайн» распадается на выбор клиники, выбор врача и времени, подтверждение по СМС и отмену записи.
  • По данным. «Загружать прайс-листы всех поставщиков» можно начать с тех, кто присылает Excel, а поставщиков с PDF отложить на следующую историю.
  • Сначала основной сценарий. Сделать обычную запись, а перенос, лист ожидания и обработку ошибок вынести в отдельные истории.
  • По платформам. Сначала веб, мобильное приложение потом.

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

С 20 ситуация промежуточная. Одни команды спокойно берут двадцатки в спринт, другие считают всё больше 13 сигналом делить. Выберите правило всей командой и держитесь его.

Альтернативы Фибоначчи

Размеры футболок

XS, S, M, L, XL. Хорошо работают на ранней стадии планирования роадмапа, когда нужно прикинуть десятки сырых идей и понять только, какие маленькие, а какие огромные. Заказчикам, которых нервируют числа, футболки обычно понятнее. Складывать размеры футболок нельзя, поэтому для velocity их рано или поздно придётся перевести в числа, и вы вернётесь к поинтам.

Степени двойки

1, 2, 4, 8, 16, 32. Каждый шаг удваивает число. Это легко объяснить, и растёт такая шкала быстрее Фибоначчи. Платить за это приходится малым выбором внизу шкалы: между 2 и 4 ничего нет, а у многих команд именно там лежит большая часть бэклога.

Линейные шкалы

От 1 до 10 или от 1 до 5. Выглядят интуитивно понятными, но вверху шкалы дают ложную точность. 7 или 8? Никто толком не скажет, и команда спорит о разнице, которую ей нечем измерить.

Что выбрать

Для задач уровня спринта, по которым считают velocity, модифицированный Фибоначчи — надёжный вариант по умолчанию. Его знает большинство, а промежутки в нём растут вместе с неопределённостью. Размеры футболок подходят для ранней грубой оценки эпиков и пунктов роадмапа. Если у команды есть настоящая причина предпочесть степени двойки, пользуйтесь ими, но не меняйте шкалу посреди проекта, иначе накопленная история velocity перестанет что-то значить.

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