Разбираемся в Scrum: Руководство с картинками и примерами

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

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

Определение Scrum

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

В формате «цитат» я буду во время статьи делить своим мнением.

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

»Фреймворк описывает начальную заготовку и свод инструкций, которые упрощают достижение конечной цели: каркас корабля и фундамент дома достроить проще, чем собирать с нуля.» (данное описание взято с сайта Яндекс Практикума)

Также важно отметить, что при внедрении Scrum в компанию не рекомендуется менять названия мероприятий и инструментов. Дело в том, что это может сбить с толку ваших коллег и затруднить процесс их адаптации. Преимущества Scrum заключаются в том, что существует Scrum Guide, который позволяет быстро и эффективно погрузить сотрудников в процессы. Благодаря этому вам не придётся тратить время на создание собственной документации.

Ниже вы увидите изображение, которое часто встречается при работе со Scrum:

c2746f2b062da27c9449d3a702198400.png

На них описаны все основные мероприятия, которые позволяет создать гибкую среду, в которой:

  1. Product Owner упорядочивает работу по решению комплексной проблемы в Product Backlog.

  2. Scrum Team в ходе Sprint превращает выбранную работу в Increment, несущий ценность.

  3. Scrum Team и заинтересованные лица инспектируют результаты и вносят правки для следующего Sprint.

  4. Повторяет.

Ценности Scrum

Ценности Scrum лучше всего иллюстрирует изображение, представленное ниже:

aeaa4e71ffce87eb0f05ca247267a2c0.png

Scrum команда

Основная единица Scrum — небольшая команда людей (до 10 человек).

Scrum команда состоит из:

  1. одного Scrum Master,

  2. одного Product Owner,

  3. Developers.

Внутри Scrum Team нет подкоманд и иерархий. Это сплоченное объединение профессионалов, в любой момент времени сфокусированных на одной цели.

219f06cd1c74598ff625d901851321b7.png

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

26313b00844dfbefebd93f87d9e42edb.png

Scrum Team достаточно маленькая, чтобы оставаться проворной, и достаточно большая, чтобы выполнять значительную работу в течение Sprint — состоит не более чем из 10 человек.

4dcc50d3513413598454421c03292980.png

Если Scrum Teams становятся слишком большими, участникам следует рассмотреть возможность реорганизации в несколько сплоченных Scrum Teams, каждая из которых сфокусирована на одном и том же продукте. Следовательно, у них должна быть та же Product Goal, тот же Product Backlog, тот же Product Owner.

cab8f00a224ab0c7454d3168921e3b51.png

Вся Scrum команда несет ответственность за создание ценного, полезного Increment в каждом Sprint.

Важно помнить, что Increment — не значит релиз. Scrum не обязует каждый спринт выпускать новый релиз.

0bb789fa9a1109f25087281c8e2ff2de.png

Developers

Developers — это люди в Scrum команде, которые привержены созданию любого аспекта готового к использованию Increment в каждом Sprint.

35ab626fa4fd1eb55b5ee16f4a353f0b.png

Product Owner

Product Owner несет ответственность за максимизацию ценности продукта, получаемого в результате работы Scrum Team.

e0dbb4d2ece61afc1f6ba7654b0785d7.png

Scrum Master

Scrum Master несет ответственность за применение Scrum в соответствии с Руководством по Scrum. Они делают это, помогая всем понять теорию и практики Scrum, как внутри Scrum Team, так и в организации.

Важно понимать, что scrum-мастер — это не просто менеджер, который указывает, как нужно работать. Это человек, который обучает команду и помогает ей работать по методологии scrum, устраняя все препятствия на пути. На самом деле, он даже не должен участвовать в мероприятиях. Например, он не обязан ходить на Daily. Его задача только научить команду укладываться в 15 минут, а затем команда может работать самостоятельно.

293880a7279ec3f98e084c6fde6541f0.png

Ответственности ролей

Для удобства можно свести обязанности всех ролей в одну таблицу:

Developers

Product Owner

Scrum Master для команды

Scrum Master для Product Owner

Scrum Master для организаци

создание плана на Sprint — Sprint Backlog;

разрабатывает и точно коммуницирует Product Goal;

коучит участников команды в части самоуправления и кросс-функциональности;

помогает находить техники эффективного определения Product Goal и управления Product

Backlog;

направляет, обучает и коучит организацию в применении Scrum;

стремление к качеству посредством соблюдения DoD (definition of done);

создает и четко объясняет элементы Product Backlog;

помогает Scrum Team фокусироваться на создании Increments с высокой ценностью,

соответствующих DoD;

помогает Scrum Team осознать необходимость четких и лаконичных элементов Product

Backlog;

планирует переход на Scrum и консультирует по вопросам применения Scrum в рамках

организации;

ежедневную адаптацию своего плана для достижения Sprint Goal (Daily);

упорядочивает элементы Product Backlog;

способствует устранению препятствий, мешающих прогрессу Scrum Team;

помогает применять эмпирическое планирование продукта в комплексной среде;

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

подход к комплексной работе;, а также,

взаимную подотчетность друг перед другом как профессионалами.

обеспечивает прозрачность, доступность и понимание Product Backlog.

убеждается в том, что все события Scrum происходят, позитивны, продуктивны и не

выходят за рамки ограничений по времени.

фасилитирует взаимодействие с заинтересованными лицами по запросу или при

необходимости.

устраняет барьеры между заинтересованными лицами и Scrum Teams.

Кратко данную таблицу можно представить с помощью такого рисунка:

68f35309c2af61870bd36eb05f80c29c.png

События Scrum

Sprint — это контейнер для всех остальных событий.

Каждое событие в Scrum специально спроектированы для обеспечения необходимой прозрачности.

Неспособность проводить какое либо из событий Scrum в соответствии с описанием приводит к потере возможностей для инспекции и адаптации.

4b494412a502f43eb4acacf8cb5120a2.png

Sprint

Sprints — это пульс Scrum, где идеи превращаются в ценность.

Цель:

Вся работа, необходимая для достижения Product Goal, включая события Sprint Planning, Daily Scrum, Sprint Review и Sprint Retrospective, выполняется в рамках Sprints.

Участники:

Developers, Product Owner, Scrum Master

Timebox

(время проведения)

до 1 месяца

В ходе мероприятия:

• не вносятся изменения, которые могут поставить под угрозу Sprint Goal;

• не снижается качество;

• Product Backlog уточняется по мере необходимости;, а также,

• по мере появления новых знаний содержание работы может быть уточнено и

пересмотрено с Product Owner.

Ограничения:

Sprint может быть отменен, если Sprint Goal потеряла актуальность. Только Product Owner имеет право отменить Sprint

Результат:

Готовый инкремент (не обязательно релиз)

5a122e4c8bc13b5927fb0022bd2dcfcc.png

Sprint Planning

Sprint Planning инициирует Sprint, планируя работу, которую необходимо выполнить в этом Sprint.

Цель:

Постановка Spring Goal и планирование Spring Backlog, который команда должна будет сделать для реализации инкремента

Участники:

Developers, Product Owner

Timebox (время проведения)

до 8 часов (при спринте 1 месяц)

В ходе мероприятия:

Участники должны ответить на основные вопросы:

• почему этот Sprint ценен?

• что может быть готово в этом Sprint?

• как будет выполняться выбранная работа?

Результат:

Spring Goal

Spring Backlog

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

Пример из практики
Однажды нам потребовалось создать функционал, который позволил бы пользователям фильтровать результаты запросов по определённым правилам. Первое, что пришло нам в голову, — это создать текстовый запрос, похожий на SQL или JQL. Для этого нам нужно было бы подключить Antler, чтобы работать со сложными вложенностями в запросе (скобочки и т.п.) Однако мы никогда раньше не работали с этим инструментом, и он выглядел довольно сложно. Поэтому мы решили создать небольшой прототип с базовыми функциями без сложных структур. Мы показали его Product Owner.
Он посмотрел и сказал: «Но пользователи же не будут всё это писать вручную. Давайте сделаем визуальный конструктор запросов». За следующий спринт мы создали несколько макетов и продемонстрировали их. Product Owner внёс небольшие комментарии, но в целом его всё устроило. Затем мы реализовали прототип за спринт, показали его, и Product Owner окончательно одобрил функционал.
После выпуска версии заказчику он тоже оценил, что такой вариант удобен. В итоге мы не потратили много времени на внедрение Antler и, благодаря итерациям, смогли понять, что именно нужно заказчику. Можно сказать, что Product Owner не прописал задачу правильно, но нужно понимать, что он тоже человек и не всегда может предугадать все варианты реализации.

6387d28b6569858f74729d025ba1f654.png

Daily Scrum

Daily Scrum — это 15-минутное событие, которое позволяет команде каждый день проверять прогресс выполнения Sping Backlog.

Цель:

Инспекция прогресса в достижении Sprint Goal, адаптация Sprint Backlog по мере необходимости, корректировка запланированной предстоящей работы.

Участники:

Developers

Timebox (время проведения)

до 15 минут

В ходе мероприятия:

Developers определяют прогресс выполнения Sping Backlog

Результат:

Spring GoalSpring Backlog

Небольшое замечание: стоит обратить внимание, что в этом событии не обязательно должен участвовать Scrum Master. На данном мероприятии его задача — научить команду проводить самостоятельно и укладываться в отведенное время.

Многие разработчики считаю, что данное мероприятие не нужно и просто отнимает время. Но не забывайте, что в во время Sprint вся команда отвечает за Increment, а не один человек. Поэтому Daily и должны позволять команде понять статусы по задачам и определить нужна ли кому-то помощь в реализации.

0d9296f02ddb1f8732b0d9d053dfe4cc.png

Sprint Review

Цель:

Инспекция результата Sprint и выявление возможностей для адаптации.Scrum Team представляет результаты своей работы ключевым заинтересованным лицам, иобсуждает прогресс в достижении Product Goal.

Участники:

Developers, Product Owner, заинтересованные люди (stakeholders)

Timebox (время проведения)

до 4 часов (при спринте 1 месяц)

В ходе мероприятия:

Во время события Scrum Team и заинтересованные лица анализируют, что было достигнуто в ходеSprint, и что изменилось в их окружении.

Результат:

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

В Scrum Guid отдельно отмечено, что Sprint Review — это не просто демонстрация инкремента. Это в первую очередь обсуждения чего добилась команда и куда нужно идти дальше.

16b89549037d7f44dad88ce652a2de29.png

Sprint Retrospective

Цель:

Запланировать повышение качества и эффективности

Участники:

Developers, Product Owner, Scrum Master

Timebox (время проведения)

до 3 часов (при спринте 1 месяц)

В ходе мероприятия:

Участники Scrum Team обсуждают, что прошло хорошо во время Sprint, с какими проблемами они

столкнулись, и как эти проблемы были (или не были) решены.

Результат:

Предположения, которые сбили Scrum Team с пути, и исследуется их происхождение.

Ретроспектива является последним мероприятием в спринте и обозначает его завершение.

Интересно, что ретро — это то, что не делают чаще всего в компаниях.
Возможно, это и хорошо, так как не тратится время разработчиков. Но. ретро — в первую очередь инструмент обучения, который позволяет команде понять, что пошло не так во время спринта и что можно улучшить в следующем.
Для того, чтобы команда полюбила использовать данный инструмент важно, чтобы было видно что изменилось после него.
На своей практике мы за 4 месяца устранили больше 20 проблем и уменьшили LeadTime на 30% за счет проведения ретро внутри команды.

367186d6374e7c6e4cd83215f935d4a3.png

Артефакты Scrum

Артефакты Scrum иллюстрируют работу или ценность. Они созданы так, чтобы максимально чётко отражать важную информацию. Это позволяет всем, кто с ними знакомится, иметь общее представление о ситуации и действовать на его основе.

Для каждого артефакта есть определенная цель, для которой он реализуется. Это позволяет понять в какую сторону идет разработка и достигнута ли ее цел.

Связи артефактов и целей представлены в таблице:

Артефакт

Цель

Product Backlog

Product Goal

Spring Backlog

Spring Goal

Increment

DoD (определение готовности)

Product Backlog

Product Backlog — это список задач, которые необходимо выполнить для улучшения продукта. Он упорядочен и постоянно обновляется. Этот список — единственный источник работы для Scrum Team.

Также должен постоянно проводится процесс Gruming Backlog (актуализации бэклога), когда задачи в бэклоге продукта должны описывать подробнее, декомпозироваться до уровня спринта, а лишние задачи удаляться.

Ответственность за Product Backlog лежит на Product Owner. Он отвечает за наполнение и приоритезацию задач.

3e0ccda078d8c2fc17b213e69e1695bc.png

Product Goal

Product Goal — это долгосрочный ожидаемый результат Scrum Team. Они должны достичь одной цели (или отказаться от нее), прежде чем приступить к следующей.

Product Goal входит в состав Product Backlog. Остальная часть бэклога продукта появляется, чтобы определить, «что» будет способствовать достижению Product Goal.

5d26393259376fad4c8511ff1281de2d.png

Sprint Backlog

Sprint Backlog — это план, который команда разработчиков создаёт для себя. Он представляет собой понятное и актуальное описание работы, которую команда планирует выполнить в течение спринта для достижения цели спринта. Поэтому в течение спринта Sprint Backlog обновляется по мере получения новой информации. В нём должно быть достаточно подробностей, чтобы команда могла отслеживать свой прогресс во время ежедневных собраний (Daily Scrum).

Sprint Backlog состоит из:

  1. Sprint Goal — почему нужен данный инкремент,

  2. набора выбранных на Sprint элементов Product Backlog — что нужно сделать для реализации инкремента

  3. осуществимого плана действий по поставке Increment — как реализовать инкремент.

9f9a3a2d0113335de9010db056109bfd.png

Sprint Goal

Sprint Goal — это единственная цель на спринт. Хотя разработчики и стремятся достичь этой цели, она также даёт им гибкость в выборе конкретных задач, необходимых для её выполнения. Sprint Goal помогает сохранять связность и фокусировку, побуждая команду Scrum работать вместе, а не над отдельными инициативами.

Sprint Goal создаётся во время планирования спринта и затем добавляется в список задач на спринт (Sprint Backlog). Разработчики помнят о Sprint Goal, работая над задачами спринта.

Отдельно отмечу абзац из манифеста:» Если работа не соответствует ожиданиям, они (developers) взаимодействуют с Product Owner, чтобы пересмотреть содержание Sprint Backlog в рамках Sprint, не изменяя Sprint Goal.»

2318378b920ad18e75aca405d372733a.png

Increment

Increment — это конкретная ступенька к достижению Product Goal.

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

В течение одного спринта можно создать несколько инкрементов.

Итоговые инкременты демонстрируются на Sprint Review, что способствует развитию эмпирического подхода.

Отдельно выделю абзац, который мне показался интересным: «Однако инкремент может быть предоставлен заинтересованным сторонам ещё до завершения спринта. Важно понимать, что Sprint Review не является единственным моментом для предоставления ценности.»

b5ea50744fc24b7c24c7cfb4cd2eb44d.png

DoD (Определение готовности)

DoD (Определение готовности) — это формальное описание состояния Increment, при котором он соответствует требованиям качества, предъявляемым продукту.

Определение готовности обеспечивает прозрачность, предоставляя всем единое общее понимание того, какая работа была выполнена в рамках Increment.

Если элемент Product Backlog не соответствует определению готовности, его нельзя выпускать или даже показывать на Sprint Review. Вместо этого он возвращается в Product Backlog для дальнейшего рассмотрения.

Если определение готовности для Increment является частью единых стандартов организации, все Scrum Teams должны использовать его в качестве необходимого минимума. Если оно не определено стандартами организации, то Scrum Team должна создать определение готовности, подходящее поставляемому продукту.

Разработчики должны строго придерживаться определения готовности. Если несколько команд Scrum работают над общим продуктом, они должны совместно создать и соблюдать одно и то же определение готовности.

Заключение

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

В данной статье я постарался объединить теоретические аспекты с практическими иллюстрациями, чтобы сделать понимание Scrum более доступным.

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

© Habrahabr.ru