Предлагаю вашему вниманию перевод небольшой статьи Гойко Аджича на тему разделения пользовательских историй от 2012 года, с иллюстрациями и примерами автора: "Splitting User Stories: The Hamburger Method" — сделал его, в первую очередь, для себя.

Проблематика: История слишком велика и процесс разбиения и оценки слишком сложен; бизнес-пользователей не устраивает ни один вариант разбивки, предложенный командой разработки; команда не имеет достаточного опыта и использует только техническое разделение историй; запущен новый проект и у команды не выходит сформулировать достаточно простые пользовательские истории.

Решение: Метод гамбургера

image

В течение последних нескольких месяцев я разработал новую технику разбиения пользовательских историй, бессовестно украв пересмотрев и использовав метод составления пользовательских историй Джеффа Паттона и идеи, описанные Крейгом Ларманом и Басом Водде в Практиках масштабирования Lean и Agile-разработки. Я думаю, что эта техника особенно хорошо работает в ситуациях, когда команда не может разрушить традицию технического разделения задач на истории. У неё есть визуальный игровой аспект, как в Инновационных играх, и её просто запомнить. Я называю её Юзер Стори-Гамбургер.

Неопытные команды зачастую не могут понять, каким образом нужно разбивать пользовательские истории, сохраняя при этом бизнес-ценность, и вместо этого упорно разбивают истории на технические задачи и компоненты. Мне нравится идея Карты пользовательских историй, которая отображает общую картину, разбитую в соответствии с бизнес-процессами. Мы можем делать то же самое на более низком уровне, для задач, составляющих пользовательскую историю, тем самым не выводя команду из её зоны комфорта. В этом случае мы разбиваем историю для определения различных уровней качества для каждой итерации и создаём вертикальные срезы для определения критериев выпускаемого функционала. Ниже – о том, как составить гамбургер.

ШАГ 1: Определение задач — слоёв гамбургера

image

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

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

ШАГ 2: Определение различных способов реализации задач

Разбейте команду на несколько небольших групп и попросите их определить способы реализации различого уровня качества для каждой задачи. Пусть они запишут на стикерах несколько таких уровней.

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

Другой пример – это объем рассылаемой почты, персонализация контента и защита от попадания в анти-спам-фильтры. Первая опция – медленная и малопродуктивная ручная рассылка. Вторая – автоматическая рассылка неперсонализированных писем с возможностью ручной отписки. Третий путь – это авторассылка персонализированных писем, но с ручной отпиской. Четвёртый – персонализированная авторассылка с автоотпиской. И еще одной опцией может быть интеграция со сторонним сервисом, который предусматривает все описанные возможности.

ШАГ 3: Объединение результатов

image

Объедините полученную информацию в общий гамбургер на доске. Пускай представители каждой группы вклеят свои стикеры в нужные места внутри гамбургера, кратко описывая представляемые опции. Удалите с доски дублирующие наклейки. Выстройте стикеры слева направо, основываясь на возрастании уровня качества.

ШАГ 4: Обрежьте гамбургер

image

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

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

ШАГ 5: Сделайте первый укус

image

Теперь, когда гамбургер готов, решите, насколько большой кусок вы готовы откусить. Определитесь с минимально приемлемым уровнем качества для каждого слоя гамбургера. Например, будем считать ручную рассылку неприемлемой ввиду низкой эффективности, но ежемесячная отправка может быть вполне приемлемой. Если вариант с меньшим уровнем качества является более-менее близким к опции высшего качества по сложности реализации, тогда вам стоит откусить сразу кусок побольше. Например, реализация авторассылки неперсонализированных писем с ручной отпиской не будет гораздо более сложной, чем интеграция с MailChimp. Обратный пример – обновление клиентской активности в реальном времени может оказаться более трудоёмким, чем медленный запрос из базы по требованию. А для некоторых этапов, например, для задачи по удалению некорректных адресов, отсутствие реализации уже может быть минимальным требованием.

ШАГ 6: Откусите еще раз… и продолжайте

В дальнейшем каждый новый «укус» гамбургера должен обеспечивать более высокое качество – например, даже простейшая реалиация удаления некорректных адресов повышает качество, так же, как и более частая рассылка. Всегда сравнивайте сложность реализации возможных вариантов перед тем, как определить величину «откушенного» куска гамбургера.

Этот метод неплохо работает в первую очередь благодаря тому, что он достаточно визуален, и это помогает команде обдумывать альтернативные пути, оставаясь в своей зоне комфорта. Также хорошо работает аналогия с «откусыванием» гамбургера. Пользуясь этим методом, вы можете достаточно легко объяснить, почему реализация отдельного компонента в рамках истории не имеет смысла, ведь обычно люди не выбирают из гамбургера только салат. По крайней мере, пока они голодны.