Электронная библиотека » Клод Обри » » онлайн чтение - страница 7


  • Текст добавлен: 10 декабря 2021, 02:08


Автор книги: Клод Обри


Жанр: О бизнесе популярно, Бизнес-Книги


Возрастные ограничения: +12

сообщить о неприемлемом содержимом

Текущая страница: 7 (всего у книги 25 страниц) [доступный отрывок для чтения: 8 страниц]

Шрифт:
- 100% +

6
Структура бэклога

После решения о начале разработки продукта самая большая трудность – трансформировать первоначальное видение в нечто, что может использовать команда разработчиков.

В традиционных проектах стадия спецификации выполняется полностью в начале проекта и принимает форму документа. Он описывает, что будет делать продукт, какие функции от него ожидаются. Документ довольно громоздкий: детально расписано, что требуется от разработчиков – чтобы ничего не упустить, чтобы все четко знали свои задачи.

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

В Scrum этот подход в корне отличается: задачи, которые необходимо выполнить, появляются в связи и благодаря постоянному сотрудничеству участников команды и Владельца продукта, регулярной обратной связи от заинтересованных сторон.

Бэклог – это инструмент сбора и распределения задач.

6.1 Бэк что?

Неужели нет французского слова для бэклога?

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

Наши братья из Квебека, которые являются ревностными последователями офранцуживания английских слов, переводят бэклог как carnet (блокнот), но блокнот продукта не укоренился в нашем лексиконе. В конце концов, все привыкли к использованию термина бэклог.

Хотя и не без путаницы: кое-кто упорно произносит блэклог. Я даже как-то раз слышал блэкдог.

Рисунок 6.1 – «Я сказал дополнить бэклог, а не исполнить «Black dog»

Scrum-мастер – разработчику и фанату группы «Led Zeppelin»


В литературе о Scrum различают бэклог продукта и бэклог спринта.


✓ В 2008 я решил более не использовать термин бэклог спринта для обозначения плана на спринт. Я объясню свое решение в главе 9.

✓ Начиная с третьего издания этой книги, сокращаю бэклог продукта до бэклога.


Этому есть несколько причин: во-первых, так проще, во-вторых, мы говорим о продукте и, наконец, – это больше соотносится с командой. К слову, в Scrum 3.0 термин продукт почти не встречается.

Остается только прояснить грамматический род этого слова. Я слышал, кто-то считает, что бэклог женского рода. Но я буду, как большинство, думать, что это слово мужского рода.

6.2 Необходимый инструмент экосистемы

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


Рисунок 6.2 – Свойства бэклога

6.2.1 Доступный

Владелец продукта – главный в процессе разработки и поддержания бэклога. В то же время, бэклог является инструментом обмена в экосистеме: он легко доступен как для команды, так и для заинтересованных сторон. Любой может его просмотреть и предложить идеи.

Бэклог находится в общем доступе, поддерживая прозрачность процесса и упрощая обратную связь.

6.2.2 Конструктивный

Часто бывает, что бэклог команды, начинающей работать в формате Scrum, – огромный и неприступный. Особенно у команд, которые используют электронные таблицы, бэклог выглядит как мешанина из десятков и сотен элементов.

Это нецелесообразно. Список невероятно длинный. Распределить задачи невозможно. Хотя бэклог и является, по сути, списком задач, это не значит, что с самого начала работы надо детально описывать, к чему команда подойдет не завтра и даже не послезавтра.

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

Конструктивное сокращение бэклога делает его понятным и упрощает его использование.

6.2.3 Упорядоченный

Элементы бэклога расставлены в предположительном порядке их реализации. У задач должна быть четкая последовательность.

Приоритетный порядок, нетипичный для документов спецификации, адаптирован для итеративной разработки: последовательность элементов соответствует последовательности, в которой они будут реализованы.

Если А приоритетнее, чем Б, то А будет выполнено до Б.

Владелец продукта стремится максимизировать ценность, минимизируя затраченные ресурсы. Он использует критерии, чтобы определить порядок.

6.2.4 Уникальный

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

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

6.2.5 Живой

Бэклог следует жизни продукта и развивается вместе с ним. В современном мире продукты не статичны, они создаются и развиваются постепенно и постоянно.

Бэклог живет продолжительное время, претерпевая изменения с каждым сезоном:

✓ одни элементы добавляются,

✓ другие убираются,

✓ какие-то из них разбивают на несколько,

✓ порядок элементов корректируется.

Бэклог живой, потому что продукт постоянно развивается. Иначе он умирает вместе с продуктом.

6.2.6 Развивающийся

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

Бэклог доступен для всех членов экосистемы. Каждый может привнести свой вклад в его развитие.

Только обратная связь от пользователей позволяет узнать, что они действительно ожидают от продукта.

Бэклог допускает внесение новых элементов, потому что невозможно все знать заранее.

6.3 Маленькие и большие части бэклога

Существует множество паттернов, чтобы адаптировать бэклог к контексту.

В этой главе мы рассмотрим те, что позволят структурировать бэклог, в следующей – те, что пригодятся при его доработке.

6.3.1 Две точки зрения на бэклог

«Руководство по Scrum» формально не навязывает использование какого-либо термина для элементов бэклога, но употребляет аббревитуру PBI (Product Backlog Item).

Со временем элементы бэклога стали называться историями (stories). Истории становились все меньше и короче по определенным причинам – мы коснемся их позднее. Но в связи с этим проблема: маленькие обособленные части бэклога не понятны заинтересованным сторонам. А разработчик не может свести их в общую картинку и перестает разбираться в процессе.

Джефф Паттон [«Пользовательские истории»] заострил внимание на этой тенденции и использовал метафору астероидов. Он предложил создать карту, чтобы соотнести большие и маленькие части бэклога.

Учитывая размер элементов бэклога, не стоит забывать, что самым важным остается работа с ними.

После десяти лет практики я пришел к выводу, что бэклог состоит из двух частей.


✓ Та, что касается команды и содержит маленькие части, над которыми команда работает или планирует работать в скором времени

✓ Та, что служит для общения с заинтересованными сторонами и содержит большие части. Конечно, она также полезна и для команды.

Бэклог состоит из двух частей, каждая из которых служит своей цели:

– Рабочий бэклог состоит из маленьких частей, называемых историями.

– Бэклог поставки состоит из больших частей, называемых функциональностями.

В экосистеме продукта истории соотносятся с функциональностями, поскольку большая часть продолжает существовать даже после того, как ее разбили на более маленькие (что отлично от любимых астероидов Джеффа).


Рисунок 6.3 – Бэклог и две его части

6.3.2 Функциональность

В литературе по теме можно найти в качестве эквивалентов такие термины, как feature (то, что я использовал в предыдущих изданиях этой книги) или capability. Наиболее близкое мне понятие – Minimal Marketable Feature, MMF (прим. пер.: коммерчески ценная функциональность) [23]23
  Определение MMF: https://www.agilealliance.org/glossary/mmf – Прим. авт.


[Закрыть]
. На мой взгляд, функциональность, появившаяся вследствие декомпозиции – это MMF.

Функциональность – это функция продукта, формулировка которой понятна для заинтересованных сторон. Она влияет на пользователя.

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

Ключевая концепция заключается в поиске наименьшей значимой функциональности. Это задача Владельца продукта.

Функциональность больше, чем сумма историй, которые ее составляют. У нее своя жизнь. Это элемент, который может быть введен в эксплуатацию конечными пользователями.

Пример функциональности для команды Рeetic.

Изначальная функциональность. Онлайн-тренировки для домашних питомцев.

После разделения на части и анализа каждой функциональность стала выглядеть следующим образом:

Окончательная функциональность, введенная в эксплуатацию: бесплатные онлайн-тренировки для собак-компаньонов.

6.3.3 История

Термин user story – пользовательская история – появился в Экстремальном Программировании, а сейчас широко употребляется в Scrum.

Пользовательская история – это небольшая часть функциональности, видимая пользователю. Она может быть разработана в течение одного спринта.

Пример истории для команды Peetic.

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

Название едва созданной истории обычно состоит из глагола и дополнения. Уже потом, в процессе работы, разработчики добавляют в него все, что сочтут важным.

Как и функциональность, история видна пользователям. Но есть два отличия:

✓ в эксплуатацию вводится сразу несколько историй,

✓ история разрабатывается в течение одного спринта.


Не все истории в бэклоге относятся к пользователям. Вот почему я чаще использую общий термин история, говоря об элементах бэклога. Некоторые также употребляют термин epic.

Epic – это история, которую невозможно закончить за один спринт. Она не может перейти к статусу готово.

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

Epic должен быть разделен на части и хорошо изучен, он нуждается в доработке. После разделения на части он исчезает.

6.4 Изображение бэклога

Из одного простого списка бэклог превращается в хранилище двух списков, к которому мы применяем структурный паттерн поставки/работы для большей наглядности.

Чтобы упростить управление бэклогом и мониторинг, существует еще один паттерн – двухфазный. Он основывается на изображении значимых этапов жизненного цикла элементов бэклога.

6.4.1 Жизненный цикл истории

В 2001 году Рон Джеффрис дал следующее определение истории: мы пишем на карточках то, чего хотим достигнуть. Затем мы проговариваем дальнейшую работу и коллективно подтверждаем. Такой подход называется Три П.

В Scrum команда дважды повторяет этапы проговаривания и подтверждения. Первый раз, чтобы подготовить работу над историей, и второй – чтобы ее закончить.


1. Однажды у кого-то появляется идея, и он пишет ее на карточке (сейчас для этого чаще используются Post-it®).

2. Владелец продукта и команда дорабатывают ее, коллективно и всесторонне проговаривая, пока она не становится историей, которую можно реализовать за один спринт.

3. Команда подтверждает, что она готова.

4. Команда реализует историю в рамках спринта, проговаривая весь процесс с Владельцем продукта.

5. Владелец продукта подтверждает, что работа завершена.


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

Между этими двумя непоследовательными этапами история уже готова – в том смысле, что она может быть реализована во время следующего спринта.


Рисунок 6.4 – Жизненный цикл истории


Эта модель помогает структурировать и дорабатывать бэклог, не забывая о том, что идея не приравнивается к готовой истории.

В главе 2 мы обсудили двухфазный подход (исследовать, затем использовать) к продукту, который, по сути, очень похож: общая идея – снизить риски и оценить все возможные варианты на первом этапе и приступить к реализации на втором.

Двухфазный паттерн – фрактальный: он применим к жизненному циклу и истории, и функциональности.


6.4.2 Бэклог поставки

Жизненный цикл функциональности

Жизненный цикл функциональности зависит от контекста. На него влияет позиция Scrum в цепочке создания ценности. На начальном этапе – это принятие решения о начале разработки, на последнем – развертывание и ввод в эксплуатацию.

Под контекстом в данном случае понимаются тип развертывания, размер продукта, темп спринтов и сезонов. В жизни функциональности ярче остальных выделяются два этапа: готово и завершено.

Функциональность готова, когда:

– подтверждается гипотеза о ее воздействии на пользователей,

– усилия по достижению этого воздействия сводятся к минимуму.

Она завершена, когда добавляет продукту ценность.

Владелец продукта придерживается принципа максимальный эффект при минимальных усилиях [24]24
  На английском: «Minimize output, maximize outcome». – Прим. авт.


[Закрыть]
.

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


Изображение при помощи kanban-таблицы

Бэклог поставки, содержащий функциональности, обычно изображается при помощи таблицы. Каждая колонка означает определенный этап. Визуальный менеджмент позволяет отслеживать работу над элементами (в данном случае, это функциональности) в течение времени.

Такая таблица называется kanban (не следует путать с методом Kanban, о котором мы поговорим в главе 20).


Рисунок 6.5 – kanban-таблица для работы с функциональностями


Бэклог поставки является основным инструментом коммуникации с заинтересованными сторонами.

6.4.3 Рабочий бэклог

Жизненный цикл истории

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

Далее в контексте рабочего бэклога может применяться двухфазный паттерн. Команда может столкнуться с большим списком историй на стадии доработки. Чтобы уменьшить его, существует паттерн лотков[25]25
  Под лотками у автора подразумеваются столбцы. – Прим. ред.


[Закрыть]
: наглядно изображаются пять этапов жизни истории (два действия, период ожидания между ними, до и после).

Суть этого паттерна – в распределении историй в соответствии с их текущим состоянием.

Во французском употребляется слово bacs (лотки) – как бы фонетическая отсылка к бэклогу.

Изображение при помощи лотков

Песочница идей

Лоток, заполненный песком, то есть, песочница – это в некотором роде прихожая бэклога. Отправная точка, где каждый, включая разработчиков и заинтересованных лиц, может предлагать истории. Точнее, в песочницу помещаются идеи разных фишек, которые можно добавить в продукт – а они, в свою очередь, могут стать историей (или функциональностью).

Продолжительность их пребывания в песочнице, как правило, небольшая. Это время, за которое Владелец продукта должен понять и обработать внесенную идею.

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

Обратная связь имеет большое значение в Аgile-методах, и первоначальным хранилищем для нее является песочница.

Лоток доработки

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

Этот лоток выглядит, как обычная воронка.


✓ Приоритетная история уже почти готова. Она небольшого размера.

✓ В середине воронки то, что перейдет к этапу разработки через несколько спринтов. Здесь находятся epics среднего размера.

✓ Наименее приоритетные истории будут разрабатываться еще позднее. Это большие, громоздкие epics, которые впоследствии будут разложены на части.


Рисунок 6.6 – Воронка


Поскольку лоток доработки – воронка, большие истории через нее не просочатся. В следующий лоток попадут только самые маленькие и доработанные.

Стартовый лоток для готовых историй

Scrum использует метафору гонки (спринт), и я предлагаю ее развить.

До спринтерских забегов готовые истории находятся в стартовых блоках. Назовем их стартовым лотком.

Во время спринта выбранные истории начинают забег. Как и в случае спринта с определенным количеством дорожек, число историй, одновременно участвующих в забеге, ограничено.

Это похоже на очередь, в которой история не развивается или развивается понемногу – пока ее не реализуют.

Истории участвуют в спринте. Это гонка, за которой мы внимательно следим. Мы вернемся к ней, когда будем говорить о событиях спринта.

Финишный лоток для завершенных историй

Здесь хранятся законченные истории. Не нужно дожидаться конца спринта, чтобы перенести историю в этот лоток. Это можно сделать прямо в процессе.

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

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

Преимущества паттерна лотков

Применение этого паттерна означает для команды (и особенно для Владельца продукта) следующее:

✓ четко видеть, что у каждой части в изображении своя цель, отличная от других;

✓ работать над каждой частью в соответствии с этапом, на котором она находится;

✓ не быть заваленными огромным количеством историй.


Рисунок 6.7 – Структура рабочего бэклога на основе этапов жизни


В этой главе мы рассмотрели бэклог в статике. Следующая будет посвящена бэклогу в динамике и процессу циркулирования историй и функциональностей в потоке.

6.5 Типология историй

Какую работу заносить в бэклог? Бывает, команда тратит время на технические аспекты или на исправление ошибок. Паттерн сториотип [26]26
  Характеристики, свойственные нескольким историям. – Прим. ред.


[Закрыть]
может помочь команде разобраться, что стоит записывать в бэклог, а что вносить не нужно.

Этот паттерн основан на идее Филиппа Крухтена: визуализация элемента бэклога по двум основным направлениям [27]27
  http://www.infoq.com/news/2010/05/what-color-backlog – Прим. авт.


[Закрыть]
:


✓ Ценность – в зависимости от того, добавляет элемент новую или восполняет отсутствующую;

✓ Значимость – в зависимости от того, кому продукт предназначен.


Рисунок 6.8 – Четыре основных типа историй


Эта классификация помогает не забыть внести работу в бэклог. Она будет полезна вкупе с более детальной классификацией критериев завершенности (Definition of Done, DoD).

6.5.1 Пользовательская история

Это история, которая имеет значение и ценность для заинтересованных сторон.

Большинство из этих элементов адресованы и обещают ценность отдельным группам заинтересованных сторон, в частности, пользователям.

Пример пользовательской истории для команды Peetic.

Для нашего сайта встреч и знакомств для животных – это добавить фотографию своего питомца.

Эта история реализована при помощи кода. Он может включать и другие истории, не содержащие кода и имеющие значение для заинтересованных сторон.

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

6.5.2 Исправление ошибок

Баги уменьшают ценность продукта: история, которая к нему относится, больше не выполняет все, что было обещано пользователю. Соответственно, устранение багов поможет восстановить ценность продукта.

Подход к багам в Scrum довольно хитрый. Не надо думать, что все баги хранятся в бэклоге. В первую очередь, нужно постараться выявить и исправить ошибки как можно быстрее, прямо во время спринта. Их не нужно заносить в бэклог. Добавление нового критерия приемки также не считается багом: это новая история.

Какие же баги входят в бэклог? Если по завершении истории, уже в следующем спринте обнаруживается несовершенство, препятствующее ее использованию, такой баг может быть внесен в бэклог. Для команды, освоившей инженерные практики, это лишь незначительные ошибки.

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

6.5.3 Техническая работа

Это работа, которая приносит ценность команде, но не видна заинтересованным сторонам.

Внимание

В пользовательских историях всегда есть техническая работа (дизайн, код), и это очень хорошо. Речь идет о работе, которая не связана с пользовательскими историями, но настолько значительна, что хотелось бы, чтобы она была более видима заинтересованным сторонам.

Внесение технической работы в бэклог оправдано в следующих ситуациях:

✓ необходимо провести техническое исследование, чтобы принять решение о том, как реализовать пользовательскую историю;

✓ есть технические риски, которые надо устранить до реализации пользовательской истории;

✓ необходимо улучшить качество или способ работы команды: инфраструктуру, логистику, новые инструменты, обучение, и т. д.

Пример технической работы. Изучить решение для хранения фото и видео с питомцами (в случае, если эта работа не включена в историю добавить фото или видео).

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

6.5.4 Погашение технического долга

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


Рисунок 6.9 – Попытка объяснить Владельцу продукта, что нужно сократить задолженность


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

В Scrum-подходе команда пытается его избегать, а если он уже есть – погасить как можно скорее: иначе накапливаются проценты, прямо как в случае финансового долга.

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

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

Выявление технического долга и работа по его погашению – один из шагов на пути устойчивого развития.


Страницы книги >> Предыдущая | 1 2 3 4 5 6 7 8 | Следующая
  • 0 Оценок: 0

Правообладателям!

Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.

Читателям!

Оплатили, но не знаете что делать дальше?


Популярные книги за неделю


Рекомендации