Шкала Фибоначчи в покере планирования
Возьмите почти любую колоду для покера планирования, и в ней окажутся одни и те же числа: 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 перестанет что-то значить.
Какую бы шкалу вы ни выбрали, числа имеют смысл только относительно эталонных задач вашей команды. Как их выбрать и почему поинты удобнее часов, описано на странице про стори поинты. Правила раунда собраны на странице про покер планирования.