Стори поинты: что это и как считать
Стори поинт (story point) — условная единица размера задачи. Она ничего не говорит о часах и минутах и нужна ровно для одного: сравнивать задачи между собой, чтобы понимать, сколько команда успевает за спринт.
Почему не часы
Час — величина личная. Одна и та же работа занимает у двух разработчиков разное время, и оценка в часах — это всегда оценка «сколько это займёт у меня», которую потом почему-то считают общей.
Хуже другое: часы читаются как обещание. Сказанные «шесть часов» через день превращаются в вопрос «почему не готово», хотя между оценкой и сроком стоят ревью, тестирование, чужие блокеры и три отвлечения на поддержку.
Поинт этой ловушки лишён. Он говорит «эта задача примерно вдвое больше вон той» — утверждение, которое команда может проверить и с которым можно не согласиться, не оправдываясь.
Из чего складывается размер
Поинт — это не только объём кода. В него входят три вещи сразу, и путаница начинается там, где помнят только про первую.
- Объём: сколько всего надо сделать — экранов, полей, случаев, тестов.
- Сложность: насколько это трудно — незнакомая область, хитрая логика, чужая кодовая база.
- Неопределённость: сколько неизвестного — внешний сервис, который может повести себя как угодно, требования, которые ещё уточняют.
С чего начать: эталон
Оценивать в поинтах на пустом месте невозможно: единица сама по себе ничего не значит. Поэтому команда выбирает эталон — задачу, которую все помнят и которая была небольшой, но не пустяковой. Ей назначают, скажем, двойку, и дальше всё сравнивают с ней.
Полезно завести два-три эталона разного размера — на двойку, на пятёрку и на восьмёрку. С тремя точками отсчёта новая задача находит своё место быстрее, чем с одной.
Эталон живёт вместе с командой: через полгода то, что было пятёркой, может стать двойкой просто потому, что область стала знакомой. Это нормально, но пересматривать шкалу стоит осознанно, а не по одной задаче за раз.
Как из поинтов получается velocity
Velocity — сумма поинтов задач, доведённых до готовности за спринт. Считается по фактически законченному: наполовину сделанная задача в сумму не входит вовсе.
Смысл появляется на третьем-четвёртом спринте, когда видно среднее и разброс. С ними планирование перестаёт быть спором и становится арифметикой: «мы обычно берём сорок, в этот раз в бэклоге пятьдесят пять — что-то не поместится».
Velocity — инструмент прогноза, а не цель. Как только за неё начинают хвалить и ругать, поинты вырастают: команда не станет работать быстрее, а вот оценивать щедрее — станет уже к следующему спринту.
Чего с поинтами делать нельзя
Есть несколько привычек, которые обесценивают всю затею.
- Переводить поинты в часы. «Поинт — это четыре часа» возвращает всё туда, откуда уходили.
- Сравнивать velocity двух команд: у каждой своя шкала, и общей единицы между ними нет.
- Ставить velocity в цели. Растущая цифра при неизменной работе — первый признак того, что метрику начали кормить.
- Оценивать людей поинтами. Оценивается задача, а не тот, кто её взял.
- Менять оценку задним числом. Она описывает знание на момент оценки, и в этом вся её ценность для прогноза.
Сколько поинтов — слишком много
Всё, что команда оценивает выше восьмёрки, обычно означает, что задачу не понимают целиком. Такая карточка не оценивается, а дробится: не потому, что большие задачи запрещены, а потому, что оценке нечего опереться — в ней слишком много неизвестного.
Хорошее правило: задача должна помещаться в спринт с запасом. Если она занимает его целиком, любая неожиданность превращает спринт в ноль сделанного.