Scrum – одна из методик, которая помогает команде быстро, гибко и эффективно заниматься разработкой программного обеспечения, повышать качество контента, уровень сотрудничества и коммуникации в команде, увеличивать личную мотивацию каждого участника и общую работоспособность. Этот процесс необходимо грамотно организовать. Для этого требуется полное понимание концепций Scrum.
Далее предстоит разобраться с соответствующим вопросом более подробно. Нужно изучить состав Scrum-команды, ее цели и ключевые задачи, задействованные методологии. А еще – научиться отличать Scrum от других подходов к разработке. Эта информация рассчитана на широкую публику. Она подойдет и уже состоявшимся IT-специалистам, и тем, кто только планирует заниматься разработкой программного обеспечения в команде.
Определение
Scrum – название одной из самых гибких методологий. Она используется для создания программного обеспечения и других продуктов. Концепция, выступающая одной из наиболее распространенных и известных во всем мире. Scrum создавалась для того, чтобы управлять сложными проектами, требующими в процессе разработке регулярного (или постоянного) обновления и внедрения изменений.
Команда при помощи Скрам сможет структурировать работу и выстраивать грамотное управление, опираясь на некоторый набор ценностей, принципов и практик. Люди, трудящиеся над проектом, должны извлекать уроки из полученного опыта, осваивать новые принципы самоорганизации, стараясь отыскать решение проблемы, анализировать собственные успехи и провалы.
Основной идеей рассматриваемой методологии служит разделение проекта на короткие периоды времени – спринты. Каждый спринт может длиться от 1 недели до месяца. Заканчивается каждый соответствующий период выпуском очередной работающей модели. В самом начале каждого спринта команда определяет, что будет выполнено в процессе работы и трудится над соответствующими целями до полного завершения. Каждый день команда организовывает короткие встречи (стендап-митинги), чтобы обсудить достигнутый прогресс и синхронизировать дальнейшие действия. Каждый спринт может требовать меньше времени, чем на него отведено.
Команда при применении Скрам методологии самоорганизуется – она будет самостоятельно решать, как выполнять работу и какие именно методы применять на практике. Если компания планирует внедрить Scrum, необходимо заложить время, отведенное на обучение каждого члена команды.
Концепция также предусматривает:
- открытость;
- улучшение процессов на постоянной основе;
- прозрачность.
Все это может быть достижимо только при помощи постоянного взаимодействия людей в группе и коммуникацией. Несмотря на широкое распространение, рассматриваемая методология подойдет не всем. Она имеет свои особенности и недостатки. Обо всем этом будет рассказано далее.
Историческая справка
История методики Scrum начинается в 1980-х годах, когда ученые из Японии проводили исследования в сфере автомобильного производства. Они выяснили, что некоторые автопроизводители (Honda, Toyota) добиваются успеха за счет возможности быстрой адаптации к изменениям на рынке. Это позволяло компаниям быстро выпускать новые модели авто для потребителей.
Японские ученые пришли к выводу, что такой успех связан с применением совершенно новых методологий управления проектами и разработки продуктов. Таких, которые дают возможность быстро адаптироваться к стремительно меняющимся рыночным условиям. Соответствующий подход получил название «нового знания производства» и был описан в книге The New New Product Development Game».
В конце 1980-х Джефф Сазерленд, который на тот момент работал в компании США Easel Corporation, тоже начал искать способы улучшения процедуры разработки программного обеспечения. Он вдохновился идеями Нонаки и Хиротаки, стал применять их труды в своей работе. Так появилась новая концепция управления проектами, которая получила название «Скрам», использующая теорию сложных систем и гибкое управление.
Кен Швабер в 1995 году встретился с Джеффом Сазерлендом и заинтересовался его методологией. Он продолжил работать на Scrum, уточнил и дополнил его принципы и правила, описав все это в книге The Scrum Guide. Это печатное издание вышло в свет в 2010 году.
Сейчас Scrum – это одна из наиболее эффективных методологий управления разработкой и разнообразными проектами. Концепция встречается не только в программировании, но и во многих других отраслях. С ее помощью удается быстро адаптировать команду к стремительно меняющимся условиям на рынке и добиваться большей эффективности и производительности.
Ключевые задачи и цели
Система Scrum используется для того, чтобы команда разработчиков могла создавать более качественный и полезный продукт. С ее помощью эффективность каждого человека в группе возрастает, а риски, связанные с внедрением и разработкой ПО, снижаются.
Основными задачами Scrum можно назвать:
- Управление проектом. Подход обеспечивает структурированное управление проектом. С его помощью можно манипулировать процессом разработки конечного продукта и тщательно следить за достигнутым прогрессом.
- Коммуникацию. Методология поддерживает взаимодействие между всеми сторонами проекта. Это благоприятно сказывается на скорости и эффективности решения проблем и достижении общих целей по итогу.
- Прозрачность. Scrum позволит добиться прозрачности разработки. Концепция дает возможность всем участникам посмотреть, что происходит с продуктом «здесь и сейчас», какие задачи уже выполнены, а какие – только в процессе реализации.
- Адаптивность. Команда сможет быстро реагировать на изменения и адаптироваться под новые условия. Соответствующая особенность имеет особое значение на современном бизнес-рынке, где постоянно происходит что-нибудь новое.
- Улучшение качества. Методология позволяет команде все время совершенствовать качество за счет регулярного обмена мнениями и обратной связи. Сюда же можно отнести регулярное внедрение улучшений и оптимизацию процессов.
- Управление рисками. Рассматриваемый метод ставит перед собой задачу обеспечения структурированного подхода к управлению рисками, позволяя команде определить и минимизировать их на ранних этапах разработки.
В основу управления продуктами Scrum заложены несколько ключевых принципов:
- человек важнее инструментов;
- взаимодействие с заказчиками важнее контактов;
- качество итогового продукта важнее документации;
- готовность вносить изменения в ранее продуманный план действий.
Соответствующие идеи были заложен не только в Скрам, но и в Agile – гибкого процесса разработки программного обеспечения.
Принципы
В Скрам и других agile-методологиях соблюдаются следующие принципы:
- Заказчик (владелец продукта) удовлетворяется за счет ранней и непрерывной поставки эффективного и ценного программного обеспечения.
- Изменения требований к итоговому продукту приветствуются, даже если они вносятся на поздних стадиях разработки.
- Работающие модели программного обеспечения поставляются регулярно. Здесь предпочтение отдается коротким срокам выполнения.
- Бизнес-сотрудники и команда разработчиков должны работать совместно. Это происходит на протяжении всего жизненного цикла исходного проекта.
- Программные продукты создаются вокруг мотивированных людей.
- Наиболее эффективным способом представления и передачи информации считаются личные разговоры. Обсуждениям в agile-методологиях отводится центральное место.
- Ключевым критерием оценки достигнутого прогресса является работающее программное обеспечение.
- За счет agile-процессов удается добиваться устойчивого и качественного развития не только конкретного проекта, но и всей команды.
- Улучшение гибкости достигается за счет привлечения внимания к техническому совершенству и хорошему дизайну конечного продукта.
- Максимизация количества работы, которую не нужно делать, достигается за счет простоты. В рассматриваемой концепции каждый обсуждаемый этап дальнейшего развития конечного продукта должен быть четким и понятным.
- В основе методологии заложена самоорганизация как команды, так и каждого ее члена. Сюда же относится способность группы людей, трудящихся над проектом, адаптироваться к новым условиям.
- Концепции agile подразумевают регулярную оценку и анализ процессов разработки и конечного продукта.
Основной целью Scrum является обеспечение эффективной и гибкой разработки программного обеспечения (или иного продукта), который максимально точно соответствует требованиям и потребностям заказчика.
Отличие от Agile и Kanban
Kanban, Scrum и Agile – это три метода, позволяющие управлять различными проектами. Чтобы лучше понимать разнице между ними, необходимо помнить о ключевых особенностях каждой концепции.
Для Скрам характерны следующие моменты:
- Так называется гибкая методология управления проектами, которая разработана для создания ПО и иных продуктов.
- Предусматривается явная структура, включая роли, артефакты и практики.
- Работа будет организовываться в виде небольших спринтов (до месяца общей продолжительностью), в которых команда выполняет задачи из Sprint Backlog (списка поставленных целей).
- Концепция подчеркивает коллективную ответственность и повышает доверие между членами имеющейся команды.
Kanban предусматривает такие черты и нюансы:
- Это метод управления рабочими процессами, позволяющими оперировать потоками работы и повышать общую эффективность команды.
- Отсутствуют явная структура и распределение ролей. Канбан – это визуальная доска с задачами. На ней будет отображаться текущее состояние работы.
- Работа не имеет установленных четких сроков. Задачи на доске перемещаются, базируясь на основе их текущего состояния, а также степени приоритетности.
- Канбан подчеркивает непрерывное улучшение и устранение излишков.
Для Agile актуальны следующие характеристики:
- Концепция разработки программного обеспечения, которая подчеркивает сотрудничество и быстрые реакции на изменения.
- Agile – это не конкретная идея. Методология представляет собой некоторый набор принципов и ценностей, включая удовлетворение клиента, сотрудничество с заказчиком, работающий продукт, а также ответ на изменения и так далее.
- Данный подход подчеркивает гибкость и способность быстро адаптироваться к изменяющимся окружающим условиям.
Scrum сразу определяет рамки процесса, а Канбан будет встраиваться в любой существующий, позволяя начать работу с того, что есть на текущий момент, постепенно добиваясь улучшений.
Agile – это более широкий подход к разработке программного обеспечения. Он может быть реализован посредством самых разных методологий, включая Скрам и Канбан.
Этапы работы
Методика Scrum включает в себя следующие этапы работы (реализации):
- Планирование. В самом начале каждого спринта команда и владелец продукта (или его представитель) планируют цели, время, объем предстоящих работ, а также ожидаемые от спринта результаты.
- Итерация (или спринт). Работа в рассматриваемой методологии базируется на итерациях, которые называются спринтами. Они длятся от 1 до 4 недель. Команда разработчиков в процессе всего спринта выполняет свои задачи, совершенствуя исходный проект.
- Постоянное обновление. Команда все время занимается обновлением исходного продукта за счет новых функциональных возможностей, исправления обнаруженных ошибок и других нововведений.
- Проверка. Каждый спринт заканчивается проверкой полученного продукта. Команда представляет достигнутый результат заказчику/владельцу проекта.
- Ретроспектива. Необходима для того, чтобы команда могла провести анализ выполненной работы, выявить проблемы и подобрать методы оптимизации дальнейших действий.
- Планирование следующего спринта. Каждый спринт заканчивается не только проверкой, но и планированием нового этапа разработки. Команда должна будет определить новые сроки, цели и объем предстоящих работ.
Планирование спринта в управлении проектами Scrum состоит из нескольких шагов:
- Предварительная оценка предстоящего объема работ.
- Определение целей. Здесь участие принимает не только команда разработчиков, но и владелец продукта.
- Создание плана спринта. На этом этапе команда программистов определяет, какие задачи будут выполняться в рамках спринта, как это произойдет, кто будет нести ответственность за каждый пункт.
- Оценка рисков.
- Создание бэклога спринта. Команда разработчиков создает список задач (бэклог) для выполнения в рамках спринта.
- Определение сроков спринта.
- Завершение планирования. На этом этапе владелец продукта окончательно согласовывает с командой план спринта и договаривается о дальнейших шагах.
Результатом станет только готовый к использованию продукт или его версия.
Ключевые элементы
Система Scrum включает в себя 10 ключевых элементов. К ним относят:
- Команду разработчиков. Это группа специалистов, которая будет трудиться над программным обеспечением. Называется Development Team.
- Владелец продукта. Представитель заказчика, который несет ответственность за расставление приоритетов задач, определение ключевых требований, мгновенное принятие решений.
- Скрам-мастер – человек, несущий ответственность за поддержание процесса работы команды в соответствие с принципами Scrum. Он следит за устранением препятствий и обеспечением эффективной концепции взаимодействия между членами команды.
- Журнал продукта – список задач и требований к проекту, который поддерживается и управляется владельцем.
- Журнал спринта – список задач, выбранных командой разработчиков для выполнения на текущем этапе. Спринты и итерации могут повторяться.
- Спринт – промежуток времени, отведенный для работы над единой задачей в Scrum.
- Планирование спринта – встреча, во время которой команда и владелец продукта определяют объем работы и цели на текущий спринт.
- Ретроспектива. Встреча, на которой анализируются полученные результаты от последнего спринта. Команда будет искать способы улучшения процесса работы в будущем.
- Обзор спринта. Во время него заказчику или владельцу итогового продукта демонстрируются достигнутые результаты в рамках последнего спринта.
- Инкремент продукта. Это – новая функциональность, добавленная в продукт в процессе работы команды во время спринта.
Без всего этого работа по Scrum невозможна.
Состав команды
В Scrum существуют разнообразные роли. Они распределяются между участниками команды:
- разработчики;
- владелец продукта;
- Scrum-мастер.
Разработчики – это специалисты, которые совместно трудятся над программным обеспечением. Сюда можно отнести тестировщиков, программистов, дизайнеров и других работников IT. Разработчики в Scrum:
- выполняют работы, необходимые для достижения результатов каждого этапа программирования;
- трудятся совместно для создания потенциально выполняемых инкрементов ПО;
- оценивают сложность поставленных задач;
- занимаются согласованием объема работ на каждом этапе разработки;
- определяют и проверяют собственный рабочий процесс, принимают по нему решения;
- несут ответственность за выполненную работу – стремятся завершить ее в срок с установленным бюджетом.
Владелец продукта в Scrum – представитель заказчика или сам заказчик. Тот, кто несет ответственность за определение требований к исходному программному обеспечению, расставляет приоритеты задач. У владельца должно иметься четкое представление о том, как выглядит программа, какие функциональные возможности она предусматривает.
В его обязанности входят такие задачи:
- определение требований к модели и приоритета задач в журнале программного обеспечения;
- объяснение команде Scrum, что должно быть создано и почему;
- определение факта готовности инкремента программы;
- обеспечение соответствия инкремента требованиям и потребностями бизнеса/конечных пользователей;
- решение относительно принятия или отклонения инкремента, представленного Scrum командой.
Scrum-мастер – человек с большим опытом в Scrum. Он занимается обучением команды, обрабатывает обратную связь после каждой итерации, анализирует продуктивность действий, узнает о практическом проявлении членов команды.
В его обязанности входят:
- обеспечение эффективности работы команды в соответствии со Scrum;
- устранение препятствий, которые могут помешать достигать результатов на каждом этапе разработки;
- обеспечение взаимодействия между командой, владельцем программного обеспечения и иными заинтересованными сторонами;
- обучение и помощь членов команды в применении Scrum;
- помощь при принятии решений и самоорганизации.
В Scrum могут встречаться другие члены – эксперты по тем или иным технологиям, product-менеджеры, аналитики.
Преимущества и недостатки
Scrum – методология, которая имеет множество преимуществ. Она дает возможность быстро реагировать на изменения, модернизировать продукты по мере их непосредственного развития и достигать поставленных целей поэтапно.
К преимуществам Scrum относят:
- Гибкость и адаптивность.
- Улучшение качества итогового продукта. Связано это с тем, что разработчики могут сосредоточиться на создании высококачественного проекта при помощи регулярных ретроспектив и обзоров.
- Улучшение коммуникации между специалистами.
- Развитие всей группы разработчиков. Каждый ее участник сможет проявить себя, а также высказаться и выслушать коллег.
- Быстрый запуск программного обеспечения на рынок.
Недостатки у этой концепции следующие:
- Сложная реализация – требуется хорошая координация и эмуляция работы группы.
- Низкая эффективность там, где нужен строгий контроль за бюджетом и сроком сдачи продукта.
- Высокая степень зависимости от команды.
- Небольшое внимание, уделяемое документации.
- Необходимость поддержки руководства. Если руководитель не готов поддерживать, концепт может оказаться неэффективным.
Теперь понятно, что такое Scrum. Лучше разобраться с этой методологией помогут специализированные компьютерные курсы. На них с нуля обучат не только этой концепции, но и другим подходам к управлению проектами.
Интересует управление проектами? Возможно, вам будут интересны следующие курсы в Otus: