Глава 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 состоит из следующих элементов.
Элементы 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) – часть журнала пожеланий продукта с самой высокой важностью и суммарной оценкой, не превышающей скорости команды, отобранная для спринта.
• Инкремент продукта – новая функциональность продукта, созданная во время спринта.