Вы здесь

Гибкое управление проектами и продуктами. Глава 2. Scrum – гибкий управленческий фреймворк (Борис Вольфсон, 2014)

Глава 2. Scrum – гибкий управленческий фреймворк

Сегодня самой популярной гибкой методологией разработки ПО является Scrum. Если вы спросите любого практика Agile, он обязательно подтвердит это, хотя каждое слово в предыдущей фразе – неправда.

Начнем с конца: Scrum используют не только для разработки ПО, он отлично подходит для многих процессов по созданию продукта, от венчурных до маркетинговых продуктов. Соответственно подбираемся ко второму пункту: Scrum – вовсе не методология, это гибкий управленческий фреймворк. Откуда следует и третий пункт: Scrum обычно дополняют инженерными практиками из других гибких методологий (например, практики разработки из экстремального программирования или практики анализа и сбора требований из ICONIX). В дальнейшем, если не оговорено иное, под Agile будем подразумевать семейство гибких методологий, а Scrum будем рассматривать в качестве управленческого фреймворка, дополненного практиками из других гибких методологий. Однако довольно буквоедствовать, начнем знакомиться со Scrum.

Официальное описание Scrum, The Definitive Guide to Scrum: The Rules of the Game («Исчерпывающее руководство по Скраму: Правила игры»), можно найти на странице http://www.scrum.org/Scrum-Guides, включая перевод на русский язык.

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

Хенрик Книберг. Scrum и XP: Заметки с передовой

Классический Scrum состоит из следующих элементов.


Элементы Scrum


Роли

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

Владелец продукта (Product Оwner, менеджер продукта) – это член команды, ответственный за максимизацию ценности продукта и управление его журналом пожеланий.

Скрам-мастер (Scrum Master) – член команды, который дополнительно отвечает за процессы, координацию работы и поддержание социальной атмосферы в команде.

Команда разработки (Development Team) – это многофункциональная и самоорганизующаяся группа специалистов, которая создает инкремент продукта.

Владелец продукта

Основной задачей владельца продукта является максимизация его ценности через управление его журналом пожеланий, включая:


• создание и обработку элементов журнала пожеланий;

• приоритизацию элементов журнала пожеланий;

• выработку понимания элементов журнала пожеланий у команды.


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

Команда разработки

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


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


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

Скрам-мастер

Скрам-мастер – это член команды, который ответствен за понимание и реализацию Scrum и помогает в этом следующим субъектам.


Обязанности скрам-мастера


Процессы

Большинство процессов Scrum носят характер встреч, так как данная методология основана на качественных коммуникациях. Все встречи жестко ограничены по времени (time-boxed).

Спринт

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


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


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

Планирование спринта

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


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

Скрам-митинг

Скрам-митинг (Daily Scrum, ежедневный скрам, планерка) – собрание членов команды (с возможностью приглашения владельца продукта) для синхронизации деятельности команды и обозначения проблем. Каждый член команды отвечает на три вопроса.


1. Что было сделано с предыдущего скрам-митинга?

2. Какие есть проблемы?

3. Что будет сделано к следующему скрам-митингу?


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

Обзор спринта

Обзор спринта (Sprint Review, «демонстрация», или сокращенно «демо») – демонстрация владельцу продукта и заинтересованным лицам работающего функционала продукта, сделанного за спринт. Основная задача проведения обзора спринта заключается в получении обратной связи, общий цикл чего выглядит следующим образом.


Получение обратной связи в рамках Scrum


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


Если взглянуть еще раз на манифест Agile, в нем есть пункт, который непосредственно касается демонстраций: «Готовый продукт важнее документации по нему». Действительно, основной мерой прогресса является функционал нашего продукта, поэтому показывать на демонстрации надо именно программу. Если заказчик находится не в одном помещении с вами, используйте специальные средства демонстрации. Гораздо хуже будет отправить заказчику презентацию или отчет по сделанному функционалу, ведь мы хотим получить качественную обратную связь.


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


К паттернам можно отнести демонстрацию «чужих» реализованных элементов журнала пожеланий и привлечение к демонстрации аналитиков, тестировщиков, верстальщиков, UI-специалистов и т. д. Такой подход позволяет выработать командную ответственность за результат.

Ретроспектива

В долгосрочном плане ретроспективы (или сокращенно «ретро») являются самой важной практикой Scrum, ведь именно они позволяют адаптировать и настроить Scrum, делая из него по-настоящему гибкий фреймворк для управления проектами.


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


Структура ретроспективы. Обычно ретроспектива занимает от 30 минут до четырех часов и ее продолжительность зависит от таких факторов, как:


• длина спринта: чем длиннее спринт, тем больше команда успевает сделать и тем больше материала для обсуждения;

• размер команды: чем команда больше, тем больше надо времени, чтобы у каждого ее члена была возможность высказаться и тем больше функционала команда успевает сделать;

• наличие проблем: со временем команда решает проблемы, и ретроспективы сокращаются по времени.


В процентном соотношении принято выделять такую структуру.


Структура ретроспективы


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


1. Что было сделано хорошо?

2. Что можно улучшить?

3. Какие улучшения будем делать?


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


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


Если у команды отсутствуют серьезные проблемы, желательно следующие темы обсудить на ретроспективе:


• скорость команды и ее изменение по сравнению с предыдущими спринтами;

• нереализованные истории пользователей и причины опоздания;

• дефекты и их причины;

• качество процессов (нарушения, отступления).


К паттернам можно отнести анализ сделанных улучшений за несколько прошлых спринтов. Такая «ретроспектива ретроспектив» может проводиться раз в четыре спринта и позволяет контролировать уровень сделанных улучшений.

Артефакты

В Scrum определены три артефакта.


• Журнал пожеланий продукта (Product Backlog) – фактически приоритезированный список требований. Обычно он состоит из бизнес-требований, которые приносят конкретную бизнес-пользу и называются элементами журнала пожеланий.

• Журнал пожеланий спринта (Sprint Backlog) – часть журнала пожеланий продукта с самой высокой важностью и суммарной оценкой, не превышающей скорости команды, отобранная для спринта.

• Инкремент продукта – новая функциональность продукта, созданная во время спринта.