Scrum — это гибкая структура совместной работы в команде, широко используемая в разработке программного обеспечения и других отраслях.
Scrum предписывает командам разбивать работу на цели , которые должны быть выполнены в течение ограниченных по времени итераций, называемых спринтами . Каждый спринт не длиннее одного месяца и обычно длится две недели. Команда Scrum оценивает прогресс на ограниченных по времени, стоячих собраниях продолжительностью до 15 минут, называемых ежедневными Scrum . В конце спринта команда проводит еще два собрания: одно для обзора спринта, чтобы продемонстрировать работу заинтересованным сторонам и получить обратную связь, и одно для внутренней ретроспективы спринта . Человек, отвечающий за команду Scrum, обычно называется Scrum-мастером . [2]
Подход Scrum к разработке продукта подразумевает перенос полномочий по принятию решений на операционный уровень. [3] В отличие от последовательного подхода к разработке продукта, Scrum является итеративной и пошаговой структурой для разработки продукта. [4] Scrum обеспечивает непрерывную обратную связь и гибкость, требуя от команд самоорганизации путем поощрения физического совместного размещения или тесного онлайн-сотрудничества и предписывая частое общение между всеми членами команды. Гибкий подход Scrum частично основан на идее изменчивости требований, что заинтересованные стороны будут менять свои требования по мере развития проекта. [5]
Термин scrum в разработке программного обеспечения появился в 1986 году в Harvard Business Review под названием «The New New Product Development Game» Хиротаки Такеучи и Икудзиро Нонака . На основе тематических исследований производственных компаний в автомобильной, копировальной и принтерной отраслях авторы изложили новый подход к разработке продукта для повышения скорости и гибкости. Они назвали это подходом регби , поскольку процесс включает в себя одну кросс-функциональную команду, работающую на нескольких перекрывающихся этапах, в которых команда «пытается пройти дистанцию как единое целое, передавая мяч вперед и назад». [6] Позже авторы разработали scrum в своей книге « The Knowledge Creating Company» . [7]
В начале 1990-х годов Кен Швабер использовал то, что впоследствии стало Scrum в его компании Advanced Development Methods. Джефф Сазерленд , Джон Скумниоталес и Джефф Маккенна разработали аналогичный подход в Easel Corporation, называя этот подход термином Scrum . [8] Позже Сазерленд и Швабер работали вместе, чтобы объединить свои идеи в единую структуру, официально известную как Scrum. Швабер и Сазерленд тестировали Scrum и постоянно совершенствовали его, что привело к публикации исследовательской работы в 1995 году [9] и Манифеста гибкой разработки программного обеспечения в 2001 году [10] Швабер также сотрудничал с Бабатунде Огуннаике в Исследовательской станции DuPont и Университете Делавэра для разработки Scrum. Огуннаике считал, что проекты по разработке программного обеспечения часто могут терпеть неудачу при изменении начальных условий, если управление продуктом не основано на эмпирической практике. [3]
В 2002 году Швабер с другими основал Scrum Alliance и создал серию аккредитации Certified Scrum . [11] Швабер покинул Scrum Alliance в конце 2009 года и впоследствии основал Scrum.org, который курирует параллельную серию аккредитации Professional Scrum . [12] С 2009 года Швабер и Сазерленд опубликовали и обновили публичный документ под названием The Scrum Guide [13] . Он был пересмотрен шесть раз, а последняя версия была опубликована в ноябре 2020 года.
Scrum-команда организована по крайней мере из трех категорий лиц: владелец продукта, разработчики и scrum-мастер. Владелец продукта связывается с заинтересованными сторонами, теми, кто заинтересован в результате проекта, чтобы сообщать разработчикам о задачах и ожиданиях. [14] Разработчики в scrum-команде организуют работу самостоятельно, при содействии scrum-мастера. [15]
У каждой команды Scrum есть один владелец продукта. [16] Владелец продукта фокусируется на деловой стороне разработки продукта и проводит большую часть времени, взаимодействуя с заинтересованными сторонами и командой. Роль предназначена в первую очередь для представления заинтересованных сторон продукта , голоса клиента или желаний комитета , и несет ответственность за предоставление бизнес-результатов. [17] [18] [19] [20] Владельцы продукта управляют бэклогом продукта и несут ответственность за максимизацию ценности, которую предоставляет команда. [18] Они не диктуют технические решения команды, а вместо этого могут попытаться найти консенсус среди членов команды. [21] [22]
Будучи основным связующим звеном команды Scrum с заинтересованными сторонами, владельцы продукта отвечают за сообщение объявлений, определений и хода проекта, RIDA ( рисков , препятствий, зависимостей и предположений), изменений в финансировании и расписании, бэклога продукта и управления проектом, а также за другие обязанности. [23] [ нужен лучший источник ] Владельцы продукта также могут отменить спринт, если это необходимо, без участия членов команды. [13]
В Scrum термин «разработчик» или «член команды» относится к любому человеку, который играет роль в разработке и поддержке продукта и может включать исследователей, архитекторов , дизайнеров, программистов и т. д. [13] [24]
Scrum поддерживается scrum-мастером, чья роль заключается в обучении и наставничестве команд теории и практике scrum. [1] Scrum-мастера имеют иные роли и обязанности, чем традиционные руководители групп или менеджеры проектов . Некоторые обязанности scrum-мастера включают наставничество, постановку целей, решение проблем, надзор, планирование, управление бэклогом и содействие коммуникации. [1] С другой стороны, традиционные менеджеры проектов часто имеют обязанности по управлению людьми , чего нет у scrum-мастера. Scrum-команды не включают менеджеров проектов, чтобы максимизировать самоорганизацию среди разработчиков. [25]
Спринт (также известный как спринт дизайна , итерация или таймбокс ) — это фиксированный период времени, в течение которого члены команды работают над определенной целью. Каждый спринт обычно длится от одной недели до одного месяца, наиболее распространенным является двухнедельный период. [3] Результатом спринта является функциональный результат или продукт, который получил некоторую разработку по частям . Когда спринт аварийно завершается, следующим шагом является проведение нового планирования спринта, в ходе которого рассматривается причина завершения.
Каждый спринт начинается с мероприятия по планированию спринта, в котором определяется цель спринта. Приоритеты для запланированных спринтов выбираются из бэклога. Каждый спринт заканчивается двумя мероприятиями: [8]
Рекомендуемая максимальная продолжительность планирования спринта составляет восемь часов для четырехнедельного спринта. [13]
Каждый день во время спринта разработчики проводят ежедневный Scrum (часто проводимый стоя ) с определенными инструкциями, который может быть организован Scrum-мастером. [3] [26] Ежедневные Scrum-встречи должны длиться менее 15 минут, проходить в одно и то же время и в одном и том же месте ежедневно. Цель встречи — объявить о прогрессе, достигнутом в достижении цели спринта, и о проблемах, которые могут препятствовать достижению цели, не вдаваясь в какие-либо подробные обсуждения. После этого отдельные участники могут перейти на «сеанс секционного обсуждения» или «вечеринку» для расширенного обсуждения и сотрудничества. [27] Scrum-мастера несут ответственность за обеспечение того, чтобы члены команды эффективно использовали ежедневные Scrum-встречи или, если члены команды не могут их использовать, за предоставление альтернатив для достижения аналогичных результатов. [28] [29]
Проводимый в конце спринта обзор спринта представляет собой собрание, на котором команда делится выполненной работой с заинтересованными сторонами и связывается с ними по вопросам обратной связи, ожиданий и предстоящих планов. На обзоре спринта завершенные результаты демонстрируются заинтересованным сторонам. Рекомендуемая продолжительность обзора спринта составляет один час в неделю спринта. [13]
Ретроспектива спринта — это отдельное совещание, которое позволяет членам команды внутренне проанализировать сильные и слабые стороны спринта, будущие области улучшения и действия по постоянному улучшению процесса . [30]
Уточнение бэклога — это процесс, в ходе которого члены команды пересматривают и расставляют приоритеты в бэклоге для будущих спринтов. [31] Это может быть сделано как отдельный этап, выполняемый перед началом нового спринта, или как непрерывный процесс, над которым члены команды работают самостоятельно. Уточнение бэклога может включать в себя разбиение больших задач на более мелкие и понятные, уточнение критериев успеха и пересмотр меняющихся приоритетов и возвратов.
Артефакты — это средства, с помощью которых команды Scrum управляют разработкой продукта, документируя работу, проделанную в рамках проекта. Основные используемые артефакты Scrum — это бэклог продукта, бэклог спринта и инкремент.
Журнал невыполненных работ по продукту представляет собой разбивку работы, которую необходимо выполнить, и содержит упорядоченный список требований к продукту (таких как функции , исправления ошибок и нефункциональные требования ), которые команда поддерживает для продукта . Порядок журнала невыполненных работ по продукту соответствует срочности задачи. Обычные форматы для элементов журнала невыполненных работ включают пользовательские истории и варианты использования . [25] Журнал невыполненных работ по продукту может также содержать оценку ценности бизнеса владельцем продукта и оценку усилий или сложности продукта командой, которые могут быть указаны в баллах истории с использованием округленной шкалы Фибоначчи . Эти оценки пытаются помочь владельцу продукта оценить временную шкалу и могут повлиять на порядок элементов журнала невыполненных работ по продукту. [32]
Владелец продукта поддерживает и расставляет приоритеты в элементах бэклога продукта на основе таких соображений, как риск, ценность для бизнеса, зависимости, размер и сроки. Высокоприоритетные элементы в верхней части бэклога разбиваются на более подробные детали для разработчиков, в то время как задачи ниже по бэклогу могут быть более расплывчатыми. [3]
Бэклог спринта — это подмножество элементов из бэклога продукта, предназначенных для разработчиков, которые должны выполнить в определенном спринте. [33] Разработчики заполняют этот бэклог задачами, которые они считают подходящими для заполнения спринта, используя прошлые результаты для оценки своих возможностей для каждого спринта. Подход Scrum подразумевает, что задачи в бэклоге спринта не назначаются разработчикам каким-либо конкретным лицом или руководителем. Члены команды самоорганизуются, вытягивая работу по мере необходимости в соответствии с приоритетом бэклога и своими собственными возможностями и возможностями. [34]
Инкремент — это потенциально выпускаемый выход спринта, который соответствует цели спринта. Он формируется из всех завершенных элементов бэклога спринта, интегрированных с работой всех предыдущих спринтов.
Часто используемая в Scrum диаграмма сгорания — это публично отображаемая диаграмма, показывающая оставшуюся работу. [35] Она обеспечивает быструю визуализацию для справки. Горизонтальная ось диаграммы сгорания показывает оставшиеся дни, а вертикальная ось показывает объем оставшейся работы на каждый день. Во время планирования спринта строится идеальная диаграмма сгорания. Затем, во время спринта, разработчики обновляют диаграмму, указывая оставшуюся работу.
Обновляемая в конце каждого спринта, диаграмма выработки релиза показывает прогресс в достижении прогнозируемого объема. Горизонтальная ось диаграммы выработки релиза показывает спринты в релизе, а вертикальная ось показывает объем работы, выполненной в конце каждого спринта.
Некоторые менеджеры проектов считают, что общие возможности команды для одного спринта можно получить, оценив работу, выполненную в последнем спринте. Сбор исторических данных о « скорости » является руководством для помощи команде в понимании ее возможностей.
Некоторые утверждают, что мероприятия Scrum, такие как ежедневные Scrum и Scrum-обзоры, снижают производительность и тратят время, которое можно было бы потратить на реальные производительные задачи. [36] [37] Также было замечено, что Scrum создает трудности для команд, работающих неполный рабочий день или географически удаленных; для тех, в которых есть узкоспециализированные участники, которым было бы лучше работать самостоятельно или в рабочих группах; и для тех, которые не подходят для инкрементального и развивающего тестирования . [38] [39]
Scrum часто адаптируется или подстраивается под различные контексты для достижения различных целей. [40] Распространенным подходом к адаптации Scrum является сочетание Scrum с другими методологиями разработки программного обеспечения, поскольку Scrum не охватывает весь жизненный цикл разработки продукта . [41] Различные практики Scrum также предложили более подробные методы применения или адаптации Scrum к конкретным проблемам или организациям. Многие называют эти методы «шаблонами», что аналогично использованию шаблонов проектирования в архитектуре и программном обеспечении. [42] [43]
Scrumban — это модель производства программного обеспечения, основанная на Scrum и Kanban . Чтобы проиллюстрировать каждый этап работы, команды, работающие в одном пространстве, часто используют стикеры или большую доску. [44] Модели Kanban позволяют команде визуализировать этапы работы и ограничения. [45]
Scrum of scrums — это метод масштабного управления scrum для нескольких команд, координирующих работу над одним продуктом. Ежедневные встречи Scrum-of-scrums включают послов, выбранных из каждой отдельной команды, которые могут быть либо разработчиком, либо мастером Scrum. Как инструмент координации, Scrum of Scrums позволяет командам совместно работать над общекомандными рисками, препятствиями, зависимостями и предположениями (RIDA), которые могут отслеживаться в их собственном бэклоге. [46] [47]
Масштабный Scrum — это фреймворк разработки продукта, который масштабирует Scrum с помощью различных правил и рекомендаций, разработанный Басом Водде и Крейгом Ларманом . [48] [49] Фреймворк состоит из двух уровней: первый уровень, рассчитанный на восемь команд; и второй уровень, известный как «LeSS Huge», который может вместить разработку с участием сотен разработчиков. [50]
Систематический обзор показал, что «распределенный Scrum не оказывает никакого влияния, ни положительного, ни отрицательного, на общий успех проекта» в распределенной разработке программного обеспечения. [51]
Мартин Фаулер , один из авторов Манифеста гибкой разработки программного обеспечения , раскритиковал то, что он называет «фальшиво-гибкими» практиками, которые «игнорируют ценности и принципы гибкой разработки» [52], и «гибкий промышленный комплекс, навязывающий людям методы», противоречащие принципу гибкой разработки, согласно которому «люди и взаимодействия важнее процессов и инструментов» [10] и которые позволяют людям, выполняющим работу, решать, как она должна выполняться, изменяя процессы в соответствии со своими потребностями.
В сентябре 2016 года Рон Джеффрис, подписавший Agile Manifesto , [10] описал то, что он назвал «Темным Scrum», заявив, что «Scrum может быть очень небезопасным для программистов». [53]
Scrum вниз по полю
Швабер и Джефф Сазерленд впервые представили Scrum на конференции OOPSLA в Остине, штат Техас, в 1995 году. [...] В 2001 году была опубликована первая книга о Scrum. [...] Год спустя (2002) Кен основал Scrum Alliance, целью которого было обеспечить всемирное обучение и сертификацию по Scrum.
...] на практике эта роль имеет два важнейших аспекта: во-первых, как доверенное лицо заинтересованной стороны в команде разработчиков и, во-вторых, как представитель проектной группы для всего сообщества заинтересованных сторон в целом.