SCRUM — ЭТО ЭФФЕКТИВНОЕ УПРАВЛЕНИЕ ПРОЕКТАМИ
SCRUM — это фреймворк управления, согласно которому одна или несколько кроссфункциональных самоорганизованных команд создают продукт инкрементами, то есть поэтапно. В команде может быть около семи человек.
АДЖАЙЛ И СКРАМ
Aджайл — это подход к разработке программ, описанный в Aджайл-манифесте. Этот документ раскрывает философию Aджайл через четыре главные ценности:
- люди и взаимодействия важнее процессов и инструментов;
- работающая программа важнее исчерпывающей документации;
- сотрудничество с Кастомером важнее согласования условий контракта;
- готовность к изменениям важнее следования первоначальному плану.
Aджайл-манифест служит скорее пособием о том, что такое Aджайл и как его использовать, чем методологическим предписанием. Ценности и принципы Aджайл-манифеста подразумевают адаптацию под каждую конкретную ситуацию. Поэтому Aджайл находит воплощение в разных фреймворках.
Один из самых популярных среди них — SCRUM. Согласно опросу за 2015 год (2015 State of Scrum Survey Report) от ScrumAlliance, SCRUM широко применяется и будет применяться в разных бизнес-отраслях для успешной разработки различных проектов. Эта статья посвящена SCRUM-фреймворку, его истории, преимуществам применения SCRUM в компаниях, его ограничениям и тому, как применять SCRUM-структуру в вашей организации.
ЧТО ТАКОЕ СКРАМ?
Любой разговор об успешном управлении проектами с помощью SCRUM стоит начинать с определения SCRUM.
«SCRUM — это фреймворк управления, согласно которому одна или несколько кроссфункциональных самоорганизованных команд создают продукт инкрементами, то есть поэтапно. В команде может быть около семи человек».
«В SCRUM есть система ролей, встреч, правил и артефактов. В этой модели за создание и адаптацию рабочих процессов отвечают команды».
«В SCRUM используются итерации фиксированной длины, называемые Спринтами. Они обычно занимают 1-2 недели (до 1 месяца). SCRUM команды стремятся создавать готовый к поставке (качественно протестированный) Инкремент продукта в каждой итерации».
Разберем эти утверждения, чтобы лучше понять методологию, фреймворки и процессы SCRUM.
ЧЕМ SCRUM-ПРОЦЕСС НЕ ЯВЛЯЕТСЯ
SCRUM — не линейный метод разработки; это не каскадная модель. Каскадная модель (Водопад — от англ. Waterfall) — линейная последовательность событий, когда продукт планируют, разрабатывают, тестируют и так далее. Ни один её этап нельзя начинать, пока не завершен предыдущий.
По SCRUM, продукт разрабатывают не сразу полностью, а небольшими готовыми к релизу частями, каждую из которых завершают за короткую итерацию, или спринт.
ЗАЧЕМ НУЖЕН СКРАМ?
У SCRUM-фреймворка Aджайл-разработки четыре главных преимущества:
- Отклик на потребности клиента. Компаниям-разработчикам программ слишком хорошо знакомо требование «разработать на вчера». Традиционные организации, которые работают по методу водопада, встраивают важные фичи и функции в расписание с двумя релизами в год — и в процессе нередко теряют клиентов. Если же клиенты не уходят, они всё равно могут остаться недовольными и уйти со временем, когда встретят более ответственного конкурента. Работая короткими и частыми циклами, вы можете предоставлять клиентам продукты почти по требованию и быстро адаптироваться к новым требованиям.
- Снижение стоимости разработки. Aджайл и SCRUM доказали свою экономичность и эффективность. В этих моделях роли разработчиков более разнообразны, ведь небольшие единицы можно эффективно тестировать той самой командой, которая разработала их. Специализация исчезает или сокращается, в конечном счете сокращая издержки.
- Удовольствие от работы. Поставляя продукты быстро, команда переживает дополнительную радость каждый раз, когда работа сделана и отправляется в мир. Каждая команда разработки знает, как приятен релиз. Со SCRUM команда радуется ему не два, а 12 раз в году, минимум.
- Больше быстрых доходов. Средства от клиентов поступают не дважды в год, а гораздо чаще. Кроме того, новые фичи тоже можно добавлять не дважды в год, а гораздо чаще, таким образом приводя больше клиентов и быстрее обрабатывая их особые запросы.
КРАТКАЯ ИСТОРИЯ
После выхода исследования доктора Уинстона Ройса «Управление разработкой крупных программных систем» (Managing the Development of Large Software Systems) в 1970 году многие начали искать новый подход к разработке, который бы помог бороться с недостатками модели водопада, раскритикованной в статье.
Название «SCRUM» происходит из исследования Такеучи и Нонаки 1986 года «Новые правила разработки новых продуктов» (The New New Product Development Game). В этой работе говорится, что лучший способ достичь цели — предоставить точные планы небольшой команде.
В 1995 году Джефф Сазерленд и Кен Швабер привели SCRUM в систему в статье «Разработка программного обеспечения по SCRUM» (SCRUM Software Development Process).
КАК РАБОТАЕТ СТРУКТУРА SCRUM
SCRUM как фреймворк управления проектами основывается на том, что самоорганизованные команды поставляют законченные продукты в фиксированные сроки, которые также называют спринтами. Чтобы применять SCRUM успешно, нужно использовать его структуру. Эта структура состоит из ролей, встреч, правил и артефактов.
РОЛИ В СКРАМ
В СКРАМ три роли, которые вместе образуют SCRUM команду:
- Владелец Продукта — апологет продукта, который полностью понимает его ценность для бизнеса. Этот человек доносит потребности кастомера/стейкхолдера до Команды разработки, но не отвечает за техническую сторону процесса. Владелец Продукта также отвечает за пользовательские истории и определяет их приоритетность.
- Команда разработки выполняет все технические задачи по разработке. Команда кроссфункциональна и отвечает за анализ, дизайн, программирование, тестирование, техническую коммуникацию и т. д. В этом она руководствуется пользовательскими историями и их приоритетностью.
- SCRUM-Мастер выступает фасилитатором работы СКРАМ команды. SCRUM-мастер помогает Владельцу Продукта и Команде разработки выполнять работу без препятствий и отвлекающих факторов. Вся коммуникация людей вне команды с Командой разработки проходит через SCRUM-Мастера. (Иногда СКРАМ команды взаимодействуют в формате SCRUMа SCRUMов, то есть собрания со SCRUM-мастерами каждой команды).
ВСТРЕЧИ В SCRUM
Есть четыре типа SCRUM-мероприятий:
- Планирование Спринта (Sprint Planning) — в нём участвуют все члены SCRUM команды. На этом мероприятии презентуют Продукт. Также каждый член команды может высказаться о том, что его интересует или беспокоит. В ходе встречи назначаются приоритеты и проводятся оценки сроков.
- Ежедневный СКРАМ (Daily Scrum) — SCRUM-мероприятия, которые проходят ежедневно во время спринтов. Они короткие (до 15 минут) и предназначены для того, чтобы спланировать дневное расписание Команды разработки. Здесь можно обсудить рабочие сложности или прояснить пользовательские истории. Встреча обязательна для Команды разработки в полном составе. SCRUM-мастер может на ней присутствовать.
- Обзор Спринта (Sprint Review) — демонстрация действующего продукта, разработанного во время спринта. Это мероприятие проходит в конце спринта и предназначено в первую очередь для того, чтобы в подробностях показать достигнутое стейкхолдерам.
- Ретроспектива Спринта (Sprint Retrospective) — это своего рода вскрытие, обсуждение того, как команда справилась во время спринта и как можно повысить качество её работы в будущем.
Дополнительно к этим типам мероприятий иногда во время спринта команды могут проводить уточнение бэклога (Backlog Refinement) — обсуждать элементы бэклога и готовиться к следующему спринту. В рамках этой встречи можно обсудить приоритетность элементов и разделить элементы бэклога на более мелкие составляющие.
AРТЕФАКТЫ
Aртефакты SCRUM представляют собой работу, которую нужно выполнить, чтобы завершить проект или спринт. Они делают информацию о проекте прозрачной для всех участников.
Существует три основных/обязательных артефакта в СКРАМ — Бэклог Продукта, Бэклог Спринта и Инкремент. Они необходимы, чтобы поставлять программное обеспечение, которое будет ценным для ваших кастомеров. Есть и необязательные артефакты, которые, в прочем, могут облегчить жизнь вашей команде (например, Берн-даун чаты) и сам “контейнер” — Спринт.
Aртефакты Спринта и их компоненты включают:
- Бэклог Продукта — все необходимые действия, связанные с пользовательской и технической сторонами проекта.
- Бэклог Спринта — совокупность всех задач, которые нужно выполнить за итерацию спринта. Их выводят из Бэклога Продукта во время Планирования Спринта.
- Инкремент — Инкремент представляет собой сумму всех элементов Бэклога Продукта, выполненных во время спринта, и ценность инкрементов всех предыдущих Спринтов. В конце спринта новый Инкремент должен быть «Готов», что означает его работоспособность и соответствие определению «Критериев Готовности» СКРАМ команды.
- Элемент Бэклога Продукта — элемент Бэклога Продукта, который нужно выполнить за итерацию спринта. Обычно разбивается на несколько меньших подзадач.
- Цель Спринта — то, что нужно сделать, чтобы выполнить элемент Бэклога Продукта.
- Берн-даун чат Спринта — работа, которая остается до полного выполнения задач спринта. Берн-даун чат может быть восходящим или нисходящим в зависимости от того, с чем команда сталкивается при выполнении задачи. Он служит не отчетом о продвижении команды, а методом преодоления трудностей и поддержания активности.
- Релиз Продукта/Берн-даун чат Продукта — его в конце каждого спринта обновляет СКРАМ-мастер. Горизонтальная ось соответствует спринтам, вертикальная — показывает, сколько работы (в начале каждого спринта) осталось до завершения проекта.
ПРАВИЛА СКРАМ-ФРЕЙМВОРКА
Роли, встречи и артефакты — основные правила SCRUM, но есть и другие, которые также добавляют процессу эффективности:
- СКРАМ команда состоит только из Владельца Продукта, SCRUM-мастера и Команды разработки.
- Все спринты должны быть одинаковыми по длине.
- Когда завершается один спринт, следующий начинается немедленно.
- Каждый спринт начинается с Планирования Спринта. Команда разработки каждое утро проводит Ежедневный SCRUM.
- В каждом спринте проводят Обзор Спринта, чтобы стейкхолдеры могли предоставить обратную связь.
- Дополнять Бэклог Спринта во время спринта — не лучшая практика.
Больше сведений по терминологии SCRUM вы сможете получить из глоссария SCRUM-терминологии (см. scrum.org).
ОГРАНИЧЕНИЯ В СКРАМ
SCRUM был разработан, чтобы усилить сотрудничество в проектах. Как следствие, среда, где сотрудничество не складывается, неидеальна для SCRUM. Например, Ежедневный SCRUM невозможен для некоторых членов международных команд. Если такая важная часть SCRUM, как ежедневное мероприятие, начинает раздражать, а не помогать, это знак того, что СКРАМ может не сработать.
Еще одно ограничение состоит в том, что СКРАМ команда должна быть разнообразной и гибкой. В идеале, любой член Команды разработки должен быть способен выполнять задачи других членов команды. Это еще один довод в пользу Ежедневного СКРАМа, на котором собирается вся команда.