Честно говоря, sprint backlog — это выборка историй из product backlog'a. Он представляет собой список историй, которые команда обязалась выполнить в течение спринта.
Именно команда решает, сколько историй войдёт в спринт. Ни product owner, ни кто-нибудь ещё.
В связи с этим, возникают два вопроса:
1. Каким образом команда решает, какие истории попадут в спринт?
2. Как product owner может повлиять на их решение?
Начну со второго вопроса.
Как product owner может влиять на то, какие истории попадут в спринт?
Допустим, на планировании спринта возникла следующая ситуация:
Product owner’а разочаровал тот факт, что история «Г» не попадает в спринт. Что он может сделать в ходе совещания?
Второй вариант — изменение объёма работ: product owner начинает уменьшать объём истории «А» до тех пор, пока команда не решит, что историю «Г» можно втиснуть в спринт.
Первый вариант — изменение приоритетов. Если product owner назначит истории «Г» более высокий приоритет, то команда будет обязана включить её в спринт первой (исключив при этом историю «В»).
Третий вариант — разбиение истории. Product owner может решить, что некоторые части истории «А» не так уж и важны. Таким образом, он разбивает историю «А» на две истории «А1» и «А2», а затем назначает им разный приоритет.
И так, несмотря на то, что в большинстве случаев product owner не может контролировать прогнозируемую производительность, у него существует множество способов повлиять на то, какие истории попадут в спринт.
Как команда принимает решение о том, какие истории включать в спринт?
Мы используем два подхода:
1. на основе интуиции
2. на основе подсчёта производительности
Планирование, основанное на интуиции
ScrumMaster: «Ребята, мы закончим историю „А“ в этом спринте?» (Показывает на самую важную историю в product backlog’а)
Лиза: «Конечно, закончим. У нас есть три недели, а это довольно тривиальная функциональность». ScrumMaster: «Хорошо. А как на счёт истории „Б“?» (Показывает на вторую по важности историю) Том и Лиза одновременно: «Легко!»
ScrumMaster: «Хорошо. Как на счёт историй „А“, „Б“ и „В“?»
Сэм (обращаясь к product owner): «Нужно ли реализовывать расширенную обработку ошибок для истории „В“?»
Product owner: «Нет. Пока хватит базовой». Сэм: «В таком случае историю „В“ мы тоже закончим». ScrumMaster: «Хорошо, как на счёт истории „Г“?» Лиза: «Хмм…»
Том: «Думаю, что сделаем». ScrumMaster: «Вероятность 90 % или 50 %?» Лиза и Том: «скорее 90 %.»
ScrumMaster: «Хорошо, значит, включаем историю „Г“ в этот спринт. Что скажете на счет истории „Д“?» Сэм: «Возможно».
ScrumMaster: «90 %? 50 %?» Сэм: «Ближе к 50 %». Лиза: «Сомневаюсь».
ScrumMaster: «В таком случае, не включаем историю „Д“. Обязуемся реализовать истории „А“, „Б“, „В“ и „Г“. Конечно, если успеем, то реализуем и историю „Д“, однако не стоит на это расчитывать. Поэтому историю „Д“ исключаем из плана спринта. Согласны?» Все: «Согласны».
Интуитивное планирование хорошо работает для маленьких команд и коротких спринтов.
Планирование, основанное на методе оценки производительности
Этот подход включает в себя два этапа:
1. Определить прогнозируемую производительность
2. Посчитать, сколько историй вы можете добавить без превышения прогнозируемой производительности.
Производительность является мерой «количества выполненной работы». Она рассчитывается как сумма первоначальных оценок всех историй, которые были реализованы в течение спринта.
На следующем рисунке показан пример прогнозируемой производительности в начале спринта и реальной производительности в конце спринта. Каждый прямоугольник обозначает историю, число внутри прямоугольника — это его начальная оценка.
Помните, что реальная производительность расчитывается на основании начальной оценки каждой истории. Любые изменения оценки в течение спринта игнорируются.
Я уже слышу ваши возражения: «Какая от этого польза? Высокий или низкий уровень производительности зависит от миллиона факторов! Недалёкие программисты, неправильная начальная оценка, изменение объёма работ, незапланированные потрясения в ходе спринта и т. д.»
Согласен, производительность — это приблизительная величина. Но, тем не менее, очень полезная. Она лучше, чем ничего. Производительность даёт нам следущее: «Независимо от причин, мы имеем разницу между запланированным и выполненным объемом работ».