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