Есть еще одна возможность сохранить сезонный ритм. Она мне нравится даже больше: оставить фиксированную продолжительность сезона и уменьшить прогнозируемую производительность команды.
Если размер команды меняется в течение сезона, скорость меняется вместе с ним: появление нового участника или уход кого-либо из состава влияют на производительность команды. В особенности это касается небольших команд. Сложность вычислений заключается и в том, что интеграция новичков в команду также требует времени всех участников.
С упорядоченным бэклогом это легче легкого. Достаточно лишь указать временные рамки с учетом ожидаемой производительности, как в простом примере выше.
Это настолько просто, что автоматическое планирование было одной из первых функциональностей в инструменте
Существует доля неопределенности в гипотезах о размере историй. Не для каждого элемента, но для их совокупности устанавливаются так называемые пределы. Внутри этих пределов могут быть как спринты, так и сезоны.
Какие пределы можно устанавливать? Я предлагаю после проведения нескольких спринтов взять значение скорости команды в качестве стандартного отклонения.
Пределы, установленные на предстоящий спринт и на сезон, наглядно и понятно показывают, как работает этот процесс.
Есть разные способы показать пределы неопределенности (рисунки 16.6 и 16.7).
Подсчет данных за прошлые спринты позволяет нам выдвинуть следующую гипотезу: мы реализуем от 3 до 5 историй за спринт. У нас есть готовые элементы в стартовом лотке, к ним мы и применяем этот прогноз.
Рисунок 16.6 – План сезона с учетом неопределенностей
Элемент лотка в правом нижнем углу находится в первом ряду, тот, что над ним – во втором, самый верхний – в последнем. Нижняя стрелка, идущая от сезона, составляет нижний предел – минимум того, что команда в состоянии завершить. Верхняя стрелка составляет верхний предел, то есть максимум для команды. Бесполезно перегружать изображение данными о спринтах, которые будут еще совсем не скоро (в данном случае спринты 4 и 5).
Это изображение, включающее неопределенности, позволяет:
✓ убедиться, что все необходимое для сезона включено в нижний предел;
✓ легко и понятно сообщать заинтересованным сторонам о своих прогнозах.
Чем дольше команда работает в текущем сезоне, тем меньше неопределенностей, потому что появляются реальные данные о ее работе.
Такой план сезона наглядно демонстрирует, какая часть бэклога будет точно завершена, какая – точно не завершена. А между ними – зона неопределенности.
Я советую переместить истории, которые точно не будут завершены, как можно раньше, и с учетом пределов неопределенности переместить в ледяной лоток (во время чистки на этапе доработки). Таким образом, лоток доработки всегда актуален, а индикаторы легко реализуемы и интерпретируемы.
Должна ли команда в начале сезона принимать какие-либо обязательства в отношении результата, как она это делает в начале спринта?
Прежде всего, не стоит путать прогнозирование и обязательство. План сезона состоит из прогнозов – возможно, он позволит принять обязательства.
Поскольку процесс разработки может быть продолжительным, любое возможное обязательство должно учитывать риски, связанные с неопределенностью.
Конечно, обещать что-то в отношении задач бессмысленно. Точно так же несерьезно брать на себя обязательства касательно историй: большинство из тех, что будут завершены к концу сезона, в его начале еще не известны.
Нам нужно оставить одну корректируемую переменную – содержание. Обязательства, касающиеся списка функциональностей, оставляют место для маневра в историях, которые их составляют. Однако это возможно, если команда обладает достаточным количеством данных о пройденной работе и контролирует размер функциональностей.
Итак, никаких обяазательств касательно содержания. А что насчет цели на сезон?
Цель сезона – та же цель спринта, только на более высоком уровне. Она заранее обговорена и принята с началом сезона.
Техника