Scrum¶
В обширном мире Agile-разработки, если Agile — это набор "ценностей", помогающий нам принимать изменения, то Scrum — это наиболее популярная и широко применяемая легковесная методология, которая претворяет эти ценности в жизнь. Scrum — это не подробный процесс или метод, а "правила игры", разработанные для того, чтобы помочь командам эффективно сотрудничать и постоянно создавать ценность при разработке сложных продуктов. Она предоставляет простой, понятный и в то же время мощный итеративный ритм работы, определяя четкие роли, события и артефакты.
Название Scrum происходит от действия "scrum" в регби, подчеркивая, что вся команда работает вместе как единое целое, двигаясь к общей цели. Scrum признает, что при решении сложных задач мы не можем знать все ответы заранее. Поэтому основная идея Scrum заключается в том, чтобы разбить большую, неопределенную задачу на серию небольших, управляемых экспериментов с помощью коротких итераций фиксированной длительности (т.е. "спринтов"). В конце каждого спринта команда представляет рабочее приращение продукта и проводит анализ и корректировку, таким образом обучаясь на опыте и двигаясь вперед в условиях изменений.
Три основы фреймворка Scrum¶
Весь фреймворк Scrum построен на трех эмпирических основах:
- Прозрачность: Все важные аспекты, влияющие на результат, должны быть видны всем, кто несет ответственность за этот результат (включая клиентов). Это означает, что прогресс работы, препятствия, бэклог и т.д. должны быть открытыми и прозрачными.
- Инспекция: Артефакты Scrum и прогресс достижения цели должны регулярно и тщательно проверяться для своевременного выявления нежелательных отклонений или проблем.
- Адаптация: Если проверка показывает, что текущая работа выходит за допустимые пределы и результат будет неприемлемым, процесс или обрабатываемые материалы должны быть скорректированы как можно скорее.
Структура Scrum: 3-5-3¶
Правила игры в Scrum можно кратко описать как структуру "3-5-3": 3 роли, 5 событий, 3 артефакта.
graph TD
subgraph Scrum Framework (3-5-3)
subgraph 3 Roles
A(<b>Product Owner</b><br/><i>Отвечает за максимизацию ценности продукта</i>)
B(<b>Scrum Master</b><br/><i>Обеспечивает правильное применение Scrum</i>)
C(<b>Разработчики</b><br/><i>Отвечают за доставку приращений продукта</i>)
end
subgraph 5 Events
D(<b>Sprint</b><br/><i>Основное событие, цикл итерации от 1 до 4 недель</i>) --> E(<b>Планирование спринта</b>);
E --> F(<b>Ежедневный Scrum</b>);
F --> G(<b>Обзор спринта</b>);
G --> H(<b>Ретроспектива спринта</b>);
end
subgraph 3 Artifacts
I(<b>Product Backlog</b><br/><i>Общий список требований</i>)
J(<b>Sprint Backlog</b><br/><i>Список задач текущего спринта</i>)
K(<b>Increment</b><br/><i>Рабочая часть продукта, завершенная в текущем спринте</i>)
end
end
3 Роли¶
- Product Owner: Единственный человек, отвечающий за "ценность" продукта. Основная задача — управлять и оптимизировать Product Backlog, гарантируя, что команда разработчиков всегда работает над тем, что приносит наибольшую ценность для клиентов и бизнеса. Он решает "что делать".
- Scrum Master: "Служащий лидер" и "тренер" фреймворка Scrum. Он не руководит командой, а служит ей, помогая устранять препятствия, организовывать события и обеспечивать правильное понимание и соблюдение правил и ценностей Scrum.
- Разработчики: Многофункциональная самоорганизующаяся команда профессионалов, которые совместно несут ответственность за превращение элементов бэклога в качественное, готовое к доставке приращение продукта в каждом спринте. Они решают "как это сделать".
5 Событий¶
- Sprint: Сердце Scrum — это итерация фиксированной длительности (обычно 1-4 недели). В рамках спринта команда сосредоточена на достижении ценной "цели спринта".
- Планирование спринта: Проводится в начале каждого спринта. Product Owner представляет команде разработчиков наиболее приоритетные элементы из Product Backlog. Команда совместно выбирает и берет на себя обязательство выполнить те задачи, которые она может завершить в рамках спринта, и составляет предварительный план выполнения, формируя Sprint Backlog.
- Ежедневный Scrum: Ежедневная встреча, не превышающая 15 минут. Каждый член команды разработчиков по очереди отвечает на три вопроса: "Что я сделал вчера?" "Что я буду делать сегодня?" "Какие препятствия я встретил?" Цель — быстро синхронизировать прогресс и выявить препятствия, а не отчитываться перед руководством.
- Обзор спринта: Проводится в конце спринта. Команда разработчиков демонстрирует готовое, рабочее приращение Product Owner, заказчикам и другим заинтересованным сторонам, собирая обратную связь. Это неформальная встреча, посвященная "продукту".
- Ретроспектива спринта: Проводится после обзора спринта и до начала следующего спринта. Команда Scrum (PO, SM, Разработчики) совместно анализирует, что прошло хорошо, а что можно улучшить в части людей, взаимоотношений, процессов и инструментов в только что завершенном спринте, и разрабатывает конкретный план улучшений для следующего спринта.
3 Артефакта¶
- Product Backlog: Динамический, приоритезированный, исчерпывающий список всех известных требований, функций, исправлений и улучшений продукта. Управлением этого списка занимается исключительно Product Owner.
- Sprint Backlog: Список задач, на выполнение которых команда разработчиков берет обязательства в текущем спринте, а также план достижения "цели спринта". Им владеет и управляет исключительно команда разработчиков.
- Increment: Сумма всех завершенных элементов Product Backlog по итогам каждого спринта. Он должен быть рабочим и соответствовать "Определению готовности (Definition of Done)". Это прямое проявление результатов работы команды.
Примеры применения¶
Пример 1: Разработка мобильного приложения для заказа еды
- Product Backlog: Содержит сотни пользовательских историй, таких как "регистрация пользователя", "просмотр меню", "онлайн-оплата", "отслеживание заказа" и т.д.
- Sprint 1 (2 недели):
- Цель спринта: "Пользователи могут успешно зарегистрироваться и войти в систему".
- Sprint Backlog: Команда выбрала 5 пользовательских историй, связанных с регистрацией и входом.
- Ежедневный Scrum: Команда ежедневно синхронизировала прогресс и выявила, что "неустойчивый интерфейс отправки SMS-кода" является препятствием. Scrum Master немедленно организовал его устранение.
- Обзор спринта: Команда продемонстрировала рабочий процесс регистрации и входа.
- Ретроспектива спринта: Команда пришла к выводу, что оценка задач была слишком оптимистичной, и решила использовать более консервативный подход к оценке в следующем спринте.
Пример 2: Маркетинговая команда планирует мероприятие запуска продукта
- Scrum применим не только в разработке программного обеспечения.
- Product Owner: Директор по маркетингу.
- Product Backlog: Содержит все задачи, такие как "определить тему мероприятия", "разработать визуальные элементы", "пригласить СМИ и лидеров мнений", "написать пресс-релизы", "забронировать площадку" и т.д.
- Sprint 1 (1 неделя):
- Цель спринта: "Утвердить основную тему и предварительный дизайн визуальных элементов мероприятия".
- Команда быстро создала результаты за одну неделю и представила их на обзоре для руководства, получив своевременную обратную связь и избежав излишних затрат ресурсов на неправильное направление дизайна.
Пример 3: Группа студентов, выполняющая семестровой проект
- Product Owner: Один из студентов выступает в роли PO, отвечая за общение с преподавателем и уточнение требований к проекту.
- Product Backlog: Весь проект разбит на части: "обзор литературы", "сбор данных", "анализ данных", "написание отчета", "создание презентации".
- Sprint: Они разделили оставшиеся 8 недель семестра на 4 двухнедельных спринта. У каждого спринта была четкая цель, например, цель первого спринта — "завершить обзор литературы и разработать исследовательский план". Такой подход эффективно помог избежать срочной работы в конце семестра.
Преимущества и вызовы Scrum¶
Основные преимущества
- Повышенная продуктивность и скорость: Благодаря коротким итерациям и фокусу команда может быстрее создавать ценность.
- Улучшенная гибкость и адаптивность: Возможность спокойно реагировать на изменяющиеся требования и корректировать направление на основе обратной связи.
- Улучшенная прозрачность и коммуникация: Четкие роли, события и артефакты значительно облегчают коммуникацию и синхронизацию информации внутри и вне команды.
- Эмпауэрмент команды, повышение морального состояния: Самоорганизующиеся команды разработчиков обладают более высокой автономией и чувством ответственности.
Возможные вызовы
- "Просто понять, сложно освоить": Правила Scrum просты, но действительно понять дух Agile и успешно применять его в конкретной организационной культуре очень сложно.
- Высокие требования к Product Owner: Product Owner должен глубоко понимать бизнес, рынок и потребности клиентов, обладать отличными навыками коммуникации и принятия решений.
- Риск "расползания требований": Если Product Owner не умеет управлять бэклогом и ожиданиями заинтересованных сторон, это может привести к частым изменениям целей спринта.
- Требуется зрелость команды: Самоорганизующиеся команды требуют от участников высокой ответственности, командного духа и межфункциональных навыков.
Расширения и связи¶
- Agile-разработка: Scrum — это конкретная, популярная методология, реализующая ценности и принципы Agile.
- Kanban: Еще один популярный Agile-метод. В отличие от ритма Scrum, основанного на "итерациях (спринтах)", Kanban делает упор на "непрерывный поток". На практике многие команды комбинируют оба подхода; например, используют Kanban внутри спринта Scrum для визуализации и управления потоком задач, что называется "Scrumban".
- Extreme Programming (XP): Scrum предоставляет "управленческий фреймворк", а XP — набор отличных "инженерных практик". Интеграция XP-практик (таких как разработка через тестирование, парное программирование) в фреймворк Scrum может значительно повысить техническое качество приращений продукта.
Справка: Фреймворк Scrum был предложен в начале 1990-х годов Джеффом Сазерлендом и Кеном Швербером. Их совместная работа "The Scrum Guide" является единственным официальным определением фреймворка Scrum и регулярно обновляется для отражения развития практики.