Одна из главных проблем при разработке и поддержке ПО — это организация процесса. Ведь нужно сделать так, чтобы работа была максимально эффективной на всех этапах. Для этого применяют разные стандартизированные методологии и техники, главная из которых на сегодня — это Scrum. О ней сегодня и пойдет речь в нашей статье.
Содержание:
1. Что такое Scrum?
2. История появления Scrum
3. Зачем нужен Scrum, чем отличается от других методологий?
4. Основы работы по Scrum
5. Стандартный состав Scrum-команды
6. Разработчики
7. Scrum-мастер
8. Владелец продукта
9. В чем отличия и сходства у Agile и Scrum?
10. Какие компании применяют Scrum?
11. Преимущества и недостатки Scrum
12. Почему Scrum не для всех?
13. Примерный срок для перехода на Scrum
14. Альтернативы
Заключение
Scrum (в переводе с английского — «схватка») — это спортивный термин, взятый из регби. Изначально он обозначал состояние команд в начале состязания, перед вбросом мяча.
В разработке и поддержке ПО его значение состоит в минимально необходимом количестве ресурсов, ролей, общих правил и прочего, что необходимо для начала цикла коллективной работы. Иначе это можно назвать базовым необходимым набором правил, который на выходе даст готовое рабочее решение.
Методология Scrum-разработки подразумевает создание продукта с новыми возможностями для бизнеса, которые имеют максимальный приоритет. Это делается за определенное количество фиксированных по длительности небольших промежутков времени (циклов), которые называют спринтами (sprints).
По аналогии с регби это представляет собой командную работу, которая дает на выходе заданный результат. Обычно перед началом спринта проводится совещание, где планируются задачи и длительность. Последний показатель подсчитывается с помощью практики покера планирования и относительных оценок.
По итогам спринта проводится уже обзорное совещание, где заказчику показывают версию продукта со всеми основными функциями
Длительность одного спринта составляет 1–4 недели. При этом сокращение времени спринта ускоряет разработку и делает ее более гибкой, ведь релизы выходят чаще. Также это позволяет оперативнее реагировать на обратную связь от заказчика/клиента. При этом увеличение сроков позволяет снизить накладные расходы на уйму совещаний, коррекций и так далее. Команда подбирает длительность спринта в зависимости от типа продукта.
Методология Scrum появилась сравнительно недавно — в 2009 году ее официально определили в документе. Однако основа для нее возникла намного раньше.
В качестве первоисточников Scrum указывают производственные системы компании Toyota. Также часть была взяла из концепции применения боевой авиации под названием цикл OODA (она же петля OODA или петля Бойда). Название расшифровывается как observe («наблюдать»), orient («ориентироваться»), decide («решать»), act («действовать»).
Если говорить упрощенно, то речь идет о взаимодействии небольших команд для достижения результата. В военном деле это разведка, ориентировка на местности, принятие решений и удар по врагу. То же применяется в разработке и поддержке ПО.
Что касается документального определения, то впервые подход
Впервые слово Scrum появилось в 1991 году в книге «Нечестивые проблемы, праведные решения» авторов ДеГрейса и Шталя, после чего этот термин начали использовать в бизнесе. Отметим, что буквально он переводится как «толкотня», а перевод «схватка» — это спортивная версия диалекта.
В 2001 Кен Швабер совместно с Майком Бидлом описали метод в книге Agile Software Development with Scrum. И там этот термин уже применялся официально (что видно из названия книги). С этой книги Scrum начал набирать свою популярность в IT.
Годом позже силами Швабера сотоварищи был организован Альянс Scrum. Там создали серию сертифицированных аккредитаций Scrum. После этого Швабер ушел из альянса и основал Scrum.org. На этом ресурсе идет работа над параллельной серией аккредитаций Professional Scrum.
Наконец, в том же 2009 году Кен Швабер и Джеф Сазерленд сформулировали и задокументировали этот подход, что означало его официальное внедрение в качестве методологии разработки.
Главной задачей Scrum является быстрое создание продукта и вывод его на рынок. Причем речь идет о разработке решений, которых ранее не существовало. Суть в том, что при наличии идеи сложно заранее сказать, как пойдет разработка, сколько потребуется времени, и что получится в итоге. Scrum же позволяет разбить процесс на четкие этапы и развеять «туман неопределенности».
Преимуществом такого подхода, помимо четкого плана, является наличие обратной связи, которая позволяет корректировать действия. Иначе говоря, есть ответ на вопрос: «То ли мы делаем, чего от нас ждут?».
До появления Scrum использовали так называемую «водопадную модель». Ее особенностью является последовательность этапов разработки. То есть пока не завершится один этап, не начинается второй.
Примерно так выглядит «водопадная модель»:
Сразу бросается в глаза кардинальное отличие от Scrum — обратная связь поступает только на этапе приемки. Также проект дольше разрабатывается, поскольку «откат» на предыдущий этап невозможен. Потому разработка растягивается на месяцы и годы, но зато не требует серьезных доработок. При этом такой продукт, как и процесс создания, не является гибким, так что внести изменения сложнее.
Расширением «водопадной модели» может служить итеративная модель. По сути, это «водопад с циклом», то есть внутри некоторых этапов есть независимые циклы, которые позволяют оценить результат на определенном шаге, а не по окончании разработки в целом.
Однако и этого недостаточно, поскольку зачастую обратная связь приходит только на финальном этапе. При этом, Scrum-методология позволяет получать «обратку» в конце каждого спринта, которых может быть несколько.
Отметим главные особенности Scrum, которые отличают его от других методологий:
Процесс разработки с помощью Scrum-методологии итеративный
Для максимальной конкретизации перед каждый спринтом создается план, которому все следуют. При этом разработчики «синхронизируются» между собой, но на это нужно тратить минимум времени — не более 15 минут в день.
По итогам спринта заказчику показывают результат и получают обратную связь, после чего проект либо принимается, либо корректируется.
Если вкратце, схема выглядит так:
Крайне важно понимать — промежуточных результатов здесь быть не может. Каждый спринт должен давать готовый результат. При этом допускается «доводка» проекта после спринта, но при этом на итоговом совещании нужно показать, что проект есть и работает.
Теперь поговорим о структуре команды, которая занимается разработкой по методике Scrum. Команда должна отвечать нескольким критериям. Во-первых, в ней должны быть профессионалы своего дела, поскольку времени на обучение новичков в методике в принципе не запланировано. Во-вторых, у команды более-менее четкий состав. В-третьих, она не имеет подчиненных команд, и сама невелика.
Давайте поговорим более конкретно. В число участников Scrum-команды входят обычно владелец продукта
Также отметим, что команда является самоорганизованной, а с 2020 года фокус сменился на самоуправляемость. Суть в том, что у разработчиков нет каких-то жестких рамок в плане того, что определенную работу должен выполнять только конкретный человек. Принципиальная идея в том, что команда сама выбирает, как достичь оптимального результата и представить продукт.
Какие для этого используются решения, кто именно выполнит ту или иную работу — все это работает по принципу самоорганизации.
При этом в случае провала ответственность тоже несет вся команда, а не отдельный руководитель или исполнитель. Здесь работает принцип «все в одной лодке».
Разработчиками в данном случае называют любых специалистов — не только программистов. Так называют всех, кто вносит свой вклад в продукт. Это могут быть дизайнеры, композиторы
Важно отметить, что разработчики мотивированы представить хороший продукт и выполнить взятые на себя обязательства. Но это обязательства командные, а не персональные. То есть, команда работает сама, без указаний извне, решая те или иные проблемы самостоятельно. Также есть ответственность в рамках конкретного спринта — необходимо реализовать сформированный план.
Таким образом, особенности Scrum-команды выглядят так:
В целом, идея состоит в том, чтобы разработчиков ничто не отвлекало от создания продукта — ни длинные совещания, ни внешнее руководство, ни другие проекты.
«Дирижер» команды, который выполняет главную задачу — создать сплоченный и сработанный коллектив для выполнения задачи и выпуска конкретного продукта.
Его задача в том, чтобы команда стала самоуправляемой. То есть это не классический руководитель в стиле «я так сказал, потому что я главный», а скорее, психолог и мотиватор для команды, который учит людей работать в группе. Он должен отслеживать наличие препятствий в работе команды и устранять их. Это можно сравнить с работой тренера команды или сержанта в армии.
Важно отметить, что в полномочия Scrum-мастера не входят методы наказания, какие-либо ограничивающие функции и так далее. Его задача — сделать команду максимально эффективной, используя ее сильные стороны, балансируя имеющиеся людские ресурсы и возможности.
Разумеется, в идеале Scrum-мастер должен обучить команду и отойти от этой задачи, но в реальной жизни так бывает редко. На это влияет возможное изменение позиционирования продукта, его задач и так далее. Также могут быть чисто человеческие недопонимания и «терки» в коллективе.
При этом Scrum-мастер старается на первых порах устранять внешние препятствия, которые зачастую находятся вне команды.
Это не заказчик, как многие могли бы подумать. Такое название проистекает из его функций — до передачи продукта им обладает владелец и никто иной.
Его можно сравнить с менеджером проекта, хотя это не совсем так. Подробнее расскажем ниже, а пока отметим, что этот человек занимается взаимодействием между заказчиками или клиентами, и командой разработки. Он отвечает за бэклог продукта (перечень задач, которые нужно выполнить, чтобы получить готовое решение), устанавливает приоритеты элементов (но не заставляет разработчиков бросить это на полпути и делать это «прямо сейчас и немедленно»).
По сути, владелец продукта — это стратег, который разрабатывает план создания продукта от и до. При этом он может отказать заказчику в выполнении его сиюминутных желаний, если они нарушают общую стратегию. Условно говоря, если заказчик захочет в последний момент добавить красивую кнопку «Сделать все супер» в готовый продукт, то владелец продукта скажет: «Нет», поскольку это может потребовать серьезной переделки готового решения и привести к срыву сроков.
По сути, владелец продукта отвечает за создание конечного продукта и передачу его заказчику. С другой стороны, он взаимодействует с разработчиками, уведомляет их об изменениях и обратной связи от заказчиков. Фактически, только он имеет право ставить задачи команде
При этом отметим, что владелец продукта отличается от менеджера проекта. Последний отвечает за свой участок работы в рамках времени и бюджета. Фактически, в Scrum-командах его заменяют разработчики.
Само собой, Scrum не панацея и не единственное решение такого рода. Более того, он даже не универсален — это лишь простой инструмент, который работает при определенных условиях. О них мы поговорим ниже, а пока разберемся, в чем разница между Scrum и Agile.
Для начала, Agile — это более общая методология, описывающая общую систему ценностей самоуправляемого подхода к разработке, набор главных принципов. Если угодно, Agile — конституция страны, а Scrum — конкретное прикладное законодательство. То есть Scrum — это практическая реализация Agile, которая реализует конкретную схему действий.
При этом цели у Agile и Scrum едины — создание новых продуктов и их передача пользователю или заказчику.
Нужно понимать, что подходы Agile отличаются от более традиционных методологий разработки. В рамках Agile важнейший параметр — это люди, их взаимодействие между собой и готовность к изменениям.
Набор ценностей Agile выглядит примерно так:
Таким образом, Agile декларирует принципы Scrum в разработке. Например, в рамках Agile приветствуются изменения даже на поздней стадии. Сравните это с «водопадной» или инкрементной моделями, где разработка шла строго последовательно и отклонения не допускались.
Еще один пункт — важность обмена информацией между членами команды. Благодаря малому числу участников, процесс не «провисает», а отсутствие бюрократии делает его более эффективным и быстрым.
Пример — заказчик хочет получить крупный интернет-магазин. Компания-исполнитель предлагает разработку за один месяц, но заказчик хочет за неделю. Тогда представитель компании
Как сказано в начале статьи, Scrum используется не только для разработки программного обеспечения, а для всех подходящих задач. В Украине его используют мобильные операторы, торговые сети, фармакологические компании, производственные гиганты и так далее.
Также эту популярную методологию используют крупные IT-гиганты, вроде Google, Amazon, Zappos. А общие принципы Agile используются в Xerox, Honda, Canon и других.
В целом, многие компании — от IT-сферы до промышленных — используют либо Scrum, либо более общие принципы Agile.
Как и любой инструмент, Scrum хорош для выполнения своих задач. Однако бывает так, что он оказывается неэффективным способом решения. В этом разделе мы поговорим о том, когда такое бывает и что с этим делать.
Итак, эффективность Scrum проявляется только при соблюдении ряда условий. Список их выглядит примерно так:
Преимущества же Scrum тоже очевидны:
Как сказано выше Scrum — не панацея, а решение для конкретных ситуаций. Потому методология не подходит для долгосрочных проектов
Поэтому Scrum не подходит для государственных проектов и заказов, строительства, военных задач (кроме упомянутого в начале статьи тактического планирования и нанесения удара).
Таким образом, Scrum — это инструмент, который правильно функционирует и дает результат только если им правильно пользоваться. Условно говоря, не нужно забивать гвозди микроскопом, для этого есть молоток. Точно также — не нужно пытаться тем же молотком пристукнуть бактерию.
Если вам для каких-то задач необходимо перевести команду на Scrum, то на это потребуется время. Как показывает практика, нужно не менее трех месяцев «тренировок» и «обкатки». В результате можно получить этакий «спецназ» для конкретных задач, которые нужно решить быстро и эффективно.
Правда, здесь многое зависит от руководителя и Scrum-мастера. Первый обязан точно понимать, зачем ему это нужно и что он готов сделать для этого. Второму необходимо четко удерживать в фокусе внимания конечный результат и просчитывать, что нужно для его достижения: какие препятствия мешают команде, как их убрать, каким образом мотивировать разработчиков.
Не исключены варианты, когда в погоне за эффективностью именно она становится главной целью. А там недалеко до «выгорания» и других проблем. Потому Scrum-мастер должен понимать — главная задача состоит в том, чтобы получить продукт, а не повысить эффективность ради эффективности.
Ну и кратко опишем типичные ошибки:
Проблемы есть и со стороны Scrum-мастера:
Таким образом, для нормальной работы Scrum-команды методику надо использовать только там, где она нужна, а не гнаться за модой.
В числе альтернативных фреймворков отметим такие:
Nexus — решение для увеличения Scrum-команды. То есть, если в команде порядка 20 человек, то создается команда-посредник. Строго говоря, это просто развитие Scrum of Scrums.
Плюсы:
Минусы:
LeSS — решение для более крупных проектов. Поддерживается более восьми команд, причем нет отдельной команды для интеграции.
Плюсы:
Минусы:
Простая альтернатива Scrum — подходит для небольших проектов. Отличие в том, что в Scrum спринты жестко заданы по времени, а в Kanban они могут меняться.
Плюсы:
Минусы:
В целом, как видим, методология Scrum вполне эффективна, но лишь там, где есть условия для этого. Если снова метафорически сравнить обычное планирование и Scrum, то первое — это регулярные сухопутные силы, второе — спецназ. У них просто разное назначение, задачи, принципы работы и так далее. Потому выбирать нужно тот инструмент, который подойдет именно под текущую задачу.
Видео по теме:
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…