Перейти к содержанию

Scrum

В обширном мире Agile-разработки, если Agile — это набор "ценностей", помогающий нам принимать изменения, то Scrum — это наиболее популярная и широко применяемая легковесная методология, которая претворяет эти ценности в жизнь. Scrum — это не подробный процесс или метод, а "правила игры", разработанные для того, чтобы помочь командам эффективно сотрудничать и постоянно создавать ценность при разработке сложных продуктов. Она предоставляет простой, понятный и в то же время мощный итеративный ритм работы, определяя четкие роли, события и артефакты.

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

Три основы фреймворка Scrum

Весь фреймворк Scrum построен на трех эмпирических основах:

  1. Прозрачность: Все важные аспекты, влияющие на результат, должны быть видны всем, кто несет ответственность за этот результат (включая клиентов). Это означает, что прогресс работы, препятствия, бэклог и т.д. должны быть открытыми и прозрачными.
  2. Инспекция: Артефакты Scrum и прогресс достижения цели должны регулярно и тщательно проверяться для своевременного выявления нежелательных отклонений или проблем.
  3. Адаптация: Если проверка показывает, что текущая работа выходит за допустимые пределы и результат будет неприемлемым, процесс или обрабатываемые материалы должны быть скорректированы как можно скорее.

Структура 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 и регулярно обновляется для отражения развития практики.