История появления Scrum
У истоков развития разработки программного обеспечения стоял водопадный подход к работе, его использовало большинство команд и делило реализацию продукта на следующие этапы:
- определение требований к проекту;
- планирование операций от начала и до конца;
- написание кода;
- тестирование.
То есть приходил заказчик, описывал задачу, команда планировала реализацию и приступала к работе, следуя установленному техническому заданию. После окончания разработки продукт тестировали и если что-то не работало, приходилось исправлять большие объемы кода, в результате чего сроки растягивались.
Так работали из года в год, пока одна команда новаторов долгое время наблюдала за успешными коллективами: теми, кому удавалось соблюдать дедлайны и делать качественный продукт. В результате у них возникло понимание, что успех кроется в гибкости процесса.
На основе выводов, сделанных по результатам долгих наблюдений, вывели Манифест гибкой разработки программного обеспечения. В него включили четыре пункта:
- Люди важнее инструментов.
- Качество продукта важнее документации.
- Взаимодействие с заказчиком важнее контракта.
- Готовность к изменениям важнее установленного плана.
Эти четыре пункта кардинально изменили подход к разработке программного обеспечения и легли в основу Agile. Спустя некоторое время энтузиасты вывели 12 основных принципов гибкого процесса, которые на сегодняшний день лежат в основе всех agile-методологий:
- Главное хорошее ПО и довольный заказчик.
- Готовность к изменениям в любой момент.
- Добиваться работающего ПО по итогам разработки как можно чаще.
- Встреча команды лучше всего для обмена информацией.
- Заказчик и команда разработки должны работать вместе.
- Доверять людям делать свою работу.
- Есть рабочее ПО есть прогресс.
- Гибкие процессы непрерывное развитие.
- Внимание к качеству способствует гибкости.
- Простота процесса позволяет не делать лишней работы.
- Самоорганизующаяся команда лучше работает.
- Постоянное стремление к большей эффективности.
В начале 1990-х годов Джефф Сазерланд и Кен Швабер начали говорить о собственной методологии гибкой разработки. Долгое время они наблюдали за военными, спецназовцами и даже регбистами и пришли к выводу, что им удается выполнять поставленные задачи благодаря взаимодействию и командной работе эти принципы легли в основу Scrum.
В 2001 году они детально описали принципы своей методологии и выпустили книгу Agile Software Development with SCRUM. На сегодняшний день этот подход считается одним из самых популярных среди разработчиков.
Базовые принципы Scrum
У методологии есть несколько базовых принципов, которые помогают ориентироваться на клиента и давать ожидаемый результат при минимальных ресурсных и временных затратах.
Базовые принципы Scrum:
- Работа короткими циклами (спринтами). Проект делится на части (спринты) и реализуется поэтапно. Спринт длится до момента окончания работы над определенной частью продукта.
- Гибкость. После окончания каждого спринта проводится тестирование. При наличии ошибок меняется стратегия реализации или пересматривается список текущих задач (бэклог) по продукту.
- Пользователи и заказчик участвуют в разработке. В любой скрам-команде есть владелец продукта заказчик или его представитель. Через него команда взаимодействует с пользователями, которые участвуют в тестировании проекта по окончанию каждого спринта. Владелец продукта собирает фидбэк, передает команде и на основе этих данных принимаются решения по дальнейшему развитию.
- Взаимодействие команды. Scrum-team это несколько человек, которые взаимодействуют друг с другом и стремятся к достижению общей цели.
Scrum-команда
Scrum-команда в большинстве случае состоит из 5-9 человек, реже из 3-4. В рамках скрама коллектив не может быть больше, потому что усложняется взаимодействие между каждым звеном, что негативно сказывается на эффективности работы.
Состав
В команде есть три основные роли:
- Владелец продукта (Product Owner).
- Скрам-мастер (Scrum Master).
- Разработчики (Delivery Team).
Рассмотрим все роли подробнее.
Владелец продукта
Владелец ответственное за разработку лицо. Эту роль занимает заказчик продукта или его официальный представитель. В редких случаях представитель рынка, на котором впоследствии реализуют запланированный проект.
Владелец отвечает за составление бизнес-плана, в котором отражается ожидаемый экономический эффект. Также в нем он определяет план развития, в котором для каждого пункта рассчитывается коэффициент окупаемости вложений. Еще один важный документ, формированием которого занимается владелец, список требований, они сортируются по важности.
Если говорить просто, то владелец продукта центр принятия решения для проектной команды. Он должен быть единственным в рамках проекта, иначе принцип быстрого принятия важных решений нарушается.
Примерный перечень обязанностей владельца:
- формирование видения продукта;
- управление ожиданиями заказчика (и других заинтересованных лиц);
- координация и приоритизация бэклога продукта;
- предоставление команде понятных и тестируемых требований;
- взаимодействие с командой проекта и заказчиком;
- прием и оценка результата работы в конце каждой итерации.
Скрам-мастер
Скрам-мастер отвечает за соблюдение методологии Scrum в работе: контролирует инициативность и самостоятельность всех членов команды, удовлетворенность получаемыми результатами, атмосферу в коллективе и итоги работы в общем.
Причем важно понимать, что скрам-мастер это не просто какое-то обособленное лицо, наблюдающее за разработкой со стороны. Он член команды и должен наравне с контролем принимать непосредственное участие в технической реализации продукта.
Скрам-мастер отвечает за взаимодействие всех членов команды между собой, поддержание работоспособности на высоком уровне, устранение проблем, следованием намеченному графику работ.
Примерный перечень обязанностей скрам-мастера:
- создание доверительной атмосферы;
- участие в общих встречах и обеспечение успешной коммуникации участников;
- устранение препятствий в работе;
- обозначение проблем и открытых вопросов;
- обеспечение соблюдения практик процесса.
Разработчики
Разработчики те, кто отвечают за техническую реализацию продукта. Как правило, на одну команду приходится 5-9 разработчиков. Первая задача постановка реально достижимых, прогнозируемых, интересных и значимых целей для каждого спринта.
Вторая задача достижение поставленных целей каждого спринта в установленные сроки (дедлайн). Достижение цели растяжимое понятие и определяется в каждом проекте индивидуально. Например, где-то задачу считают выполненной после написания всех кодов, а где-то добавляют еще и окончание тестирования. В общем, все руководствуются собственным видением и опытом.
Ключевые навыки для команды разработчиков планирование, объективная оценка выполненной работы, умение взаимодействовать с другими членами коллектива.
Примерный перечень команды разработчиков:
- оценка элементов бэклога продукта;
- разработка продукта и предоставление его заказчику;
- отслеживание своего прогресса (совместно со скрам-мастером);
- предоставление результата владельцу продукта.
Принципы работы Scrum-команды
Успешная работа по методологии Scrum возможна при соблюдении трех принципов:
- Постоянное самосовершенствование. Опытные разработчики рассказывают, что совершенствование продукта, доведение до идеального состояние невозможно без самосовершенствования каждого члена команды.
- Автономность. Все сотрудники должны отвечать не только за общий результат и уметь работать в коллективе, но и выполнять многие обязанности индивидуально.
- Кросс-функциональность. Любая команда самодостаточна, так как в нее входят специалисты с разными навыками.
Процесс работы Scrum-команды
Работа команды, руководствующей методологии Scrum, условно делится на несколько этапов.
1. Планирование списка задач спринта. Каждый спринт начинается с планирования. Все члены команды собираются, оценивают бэклог продукта в целом и выбирают приоритетные задачи, которые необходимо выполнить в рамках текущей итерации. Так формируется список задач (бэклог) текущего спринта.
После этого на основе бэклога оговаривается объем работ и длительность цикла. Также заранее определяют результат: что должны получить по итогам спринта.
2. Проведение регулярных совещаний. Ежедневно или еженедельно команда проводит короткие совещания (не более 15-30 минут). В них участвуют владелец продукта, скрам-мастер и все разработчики. Цель встреч получить от каждого ответы на три вопроса:
- Что сделано с момента прошлой встречи?
- Какие планы на сегодня?
- Есть ли препятствия к достижению цели?
Scrum-мастер в ходе совещания выявляет текущие проблемы и помогает команде решить их.
3. Организация скрам-доски. В конференц-зале, где проводятся регулярные совещания, вешается доска, разделенная на три части: что нужно сделать, в работе и сделано.
В каждой части размещают стикеры разных цветов с основными задачами. По мере выполнения они перемещаются от одной части к другой. Это помогает отслеживать прогресс текущего спринта каждому члену команды.
4. Изменение планов в ходе итерации. Команда должна быть открытой и если один специалист не успевает уложиться в срок, то сообщает об этом владельцу продукта. Он поменяет расстановку задач, оптимизирует рабочее время и поможет уложиться в дедлайн.
То же самое делается и при слишком быстрой работе, когда задачи выполняются быстрее запланированных сроков. Руководитель дополняет бэклог новыми целями по собственному усмотрению, чтобы реализация продукта протекала быстрее.
5. Подведение итогов. После завершения каждого спринта проводится тестирование выполненной части программного обеспечения. В нем также принимают участие потенциальные потребители (фокус-группа). Владелец собирает обратную связь и принимает решения для успешной работы в дальнейшем.
Артефакты Scrum
Scrum-проекты включают в себя три важных документа, их еще называют артефактами:
- Журнал продукта (Product Backlog).
- Журнал спринта (Sprint Backlog).
- График спринта (Burndown Chart).
Каждый из них имеет определенные особенности, о которых поговорим далее.
Журнал продукта
Журнал продукта в самом начале готовит владелец. Документ (артефакт) включает в себя требования, отсортированные по значимости. Первичную версию дополняют разработчики: оценивают стоимость реализации каждого требования.
Бэклог продукта должен включать в себя не только технические аспекты, необходимые для реализации, но и функциональные. Для каждого требования определяется приоритет (например, от 1 до 5). Самые приоритетные описываются детально, чтобы команда смогла оценить их и протестировать.
Владелец продукта обязан не только подготовить журнал продукта, но и предоставить его в оговоренные сроки. В противном случае своевременная реализация проекта невозможна.
Журнал спринта
Как вы помните, в рамках скрам-методологии продукт реализуется мелкими итерациями. Как правило, один спринт одна функция. Для эффективной работы она разбивается на мелкие задачи так, чтобы на реализацию уходило не больше 2-3 рабочих дней.
Грамотная разбивка функций на задачи позволяет к концу итерации выполнить все необходимое, чтобы определенная часть программного обеспечения работала корректно и представляла ценность для конечного потребителя.
После составления бэклога спринта его оценивает команда разработчиков и сопоставляет с журналом продукта. При наличии существенных отклонений коллектив определяет наиболее приоритетные задачи в рамках текущего спринта и менее важные, которые допустимо перенести на следующую итерацию.
Задача владельца продукта исключить из бэклога мелкие и незначительные задачи, выполнение которых никак не повлияет на конечный результат работы.
График спринта
График спринта это расписанный задачами календарь работы в рамках текущей итерации. В нем отображается оставшийся до конца спринта объем работы. Команда регулярно оценивает график и при необходимости оперативно реагирует на какие-либо изменения.
Особое внимание календарю уделяет владелец продукта. По нему оценивается скорость работы и соблюдение дедлайнов. Например, если со временем объем работы не уменьшается, значит, в процессе есть какие-то отклонения и требуется срочная корректировка действий команды.
Как правильно внедрить Scrum-методологию
Для повышения эффективности работы команды необходимо правильное внедрение Scrum-методологии. Допущенные ошибки могут не только ничего не изменить, но и негативно сказаться на продуктивность.
Если вы решились на изменения, проводите внедрение поэтапно:
- Соберите команду. Основной шаг, от которого зависит успех продукта в будущем. Подбирайте квалифицированных специалистов, имеющих практический опыт в своей сфере. Не жалейте времени и помните: сбор кросс-функциональной команды непростая задача.
- Назначьте владельца продукта. Эту роль отдайте заказчику или его представителю. Важно, чтобы человек имел опыт работы в этом направлении, так как от него зависит взаимодействие внутри команды и между заказчиком.
- Выберите скрам-мастера. Найдите человека, который хорошо знаком с методологией и имеет практический опыт ее внедрения в команду разработчиков. От него зависит, насколько комфортно будет протекать реализация нового продукта.
- Создайте список требований к продукту. Обдумайте требования к проекту. Желательно, чтобы в обсуждениях участвовал весь коллектив. Это позволит определить самые важные моменты. Должно получиться что-то вроде технического задания, которое направит разработку в нужное русло.
- Запланируйте спринты. Разделите разработку на несколько мелких и последовательных этапов. Изначально уделите внимание только первым итерациям. Не стоит планировать сразу всю реализацию, так как впоследствии потребуется внесение правок.
- Анализируйте и оценивайте результаты. После окончания каждого спринта проводите анализ и оценивайте результаты. К следующему этапу разработки приступайте только при полной удовлетворенности итогами предыдущего.
Эти шесть шагов позволят повысить эффективность работы всей команды. Но они кажутся простыми лишь на первый взгляд. На самом деле придется потратить немало времени, чтобы стабилизировать работу по новым правилам.
Кому-то из команды нововведения могут не понравиться. Это естественно, когда люди противятся чему-то новому. Ваша задача донести до каждого члена команды пользу новой методологии.
Подведем итоги
Scrum это методология гибкой разработки, основанная на принципах Agile. Ее разработкой занялись в 90-х годах прошлого столетия, а широкую известность она начала обретать в начале 00-х годов. На сегодняшний день скрам используют многие команды, чья деятельность тесно связана с проектами.
Scrum можно внедрить в свою компанию за 6 шагов, но следует тщательно подходить к организации процесса. Специальных знаний от сотрудников методология не требует, здесь скорее вопрос в организации и правильном построении рабочего времени.
При этом не забывайте, что скрам не волшебная пилюля, если у вас наблюдается постоянный срыв дедлайнов, плохая атмосфера внутри коллектива, внедрение новой техники не решит всех проблем. Поэтому изначально наладьте коммуникации внутри команды, постройте эффективную работу, а затем внедряйте scrum для повышения продуктивности.