Гибкая организация

Scrum, каким его задумывали

— Какой методологией организации разработки вы пользуетесь?
— Мы адепты Scrum!
— Scrum, как он описан в методичке?
— Конечно! Кроме…
Вступление
В России и странах СНГ около 95% сотрудников, считающих что используют Scrum, не открывали и не читали 13-страничный Scrum Guide, не понимают даже основ этого фреймворка и предприятия, в которых они работают, этого от них не требуют.

Данная статья описывает Scrum максимально близко к официальной документации. Описание некоторых элементов представлено прямым переводом руководства. Сложные части руководства или части, которые можно свободно интерпретировать (как многие организации успешно делают) уточнялись информацией из работ и тематических исследований (Case Studies) Джеффа Сазерленда как основного продавца Scrum.

Статья состоит из двух частей. Первая — на этой странице, сфокусирована на том каким предполагался фреймворк и почему, а так же какие частые отклонения от него наблюдаются на предприятиях. Авторы статьи признают, что отклонения часто настолько сильные, что единственное что объединяет процесс в организации со Scrum это терминология. Вторая статья сосредоточена на исследовании ограничений, допущений и рисках, которые несёт Scrum организациям, использующим фреймворк.
Это длинная статья. Её прочтение может занять до 20 минут.
Как позиционируется Scrum создателями
Scrum это легковесная практика разработки, помогающая людям, командам и организациям порождать ценность за счёт применения адаптивных решений комплексных проблем.
Scrum is a lightweight framework that helps people, teams and organizations generate value through adaptive solutions for complex problems.
Что есть Scrum по своей сути
Если не брать его рыночное позиционирование, то Scrum это подробно детализированный процесс разработки, в котором часть активностей и артефактов процесса зафиксирована в правилах, обязательных к беспрекословному исполнению, а часть умышленно оставлена на усмотрение организации или команды, которая его использует.
Если вы не соблюдаете все правила без исключений, то вы делаете всё что угодно, только не Scrum и рассчитывать на прогнозируемую этой практикой ценность нельзя. В строго определённых местах процесса вы вольны выбирать как вам работать.
Фреймворк Scrum, описанный здесь, является неизменяемым. В то время как реализация только частей Scrum возможна, результат не является Scrum. Scrum существует только в полном объёме…

The Scrum framework, as outlined herein, is immutable. While implementing only parts of Scrum is possible, the result is not Scrum. Scrum exists only in its entirety…
Скрам сравнивает свой подход с типами жизненного цикла традиционного проектного управления, однако сам Scrum не является методикой или практикой управления проектами. При сравнении скорее имеется в виду парадигма порождения ценности, нежели само управление: проектное или продуктовое.
Scrum это НЕ методология проектного управления
Краткая историческая справка
Для того чтобы понимать почему появились именно эти столпы, ценности, артефакты, мероприятия, команда и её правила и роли нужно вернуться в начало 80-х, когда Scrum обретал свою текущую форму.
Разрушение бункеров
Случайная картинка из интернета
Механизм разработки ПО почти не отличался от разработки и строительства судов, аэропорта или космической ракеты. Ситуация была практически одинаковой как в частных лидирующих в бизнесе компаниях, так и в госучреждениях.

Компании состояли из "бункеров" (Silo), например: маркетинг, продажи, бухгалтерия и недавно присоединившегося ИТ-подразделения, которое, в свою очередь, тоже делилось на "бункеры": разработку ПО, поддержку и эксплуатацию ПО (IT-operations), инфрастуктуру и так далее.

Задачи делались в режиме передачи описанной заявки-работы (карточки) между подразделениями-бункерами. Жизнь текла медленно, средства оптимизации деятельности предприятий только зарождались, торопиться было не куда (если не считать необходимость победить в холодной войне, но это касалось только военной разработки, то есть некоммерческого производства со своими правилами).

Бункерного взаимодействия хватало для осуществления даже суперуспешного бизнеса. Взаимодействие по рабочим вопросам между "жителями разных бункеров" осуществлялось преимущественно на больших совещаниях, которые планировались.
Другая случайная картинка из интернета
В то же время в Японии оттачивали дисциплину массового производства высококачественного аппаратного обеспечения, применяя самые современные подходы, а, когда их не хватало, выдумывали новые и доводили их до совершенства.

Персональные компьютеры распространялись. Почти в каждом офисе появлялся компьютер. Конкуренция среди разработчиков ПО нарастала, скорость и гибкость разработки начинала играть роль.
В прогрессивной Японии взрыв рынка производства ПО следовал вслед за рынком производства аппаратного обеспечения. Профессоры Университета Хитоцубаси Hirotaka Takeuchi и Ikujiro Nonaka, изучавшие управление знаниями, наблюдали неоптимальность исторического подхода к разработке ПО и в 1986 разработали основы Scrum, вдохновляясь увиденными и тщательно исследованными практиками некоторых японских компаний (Хонда, Фуджицу-Ксерокс). Предприимчивые Jeff Sutherland, John Scumniotales и Jeff McKenna увидели возможности монетизации подхода, умышленно отступили от общепринятых в те времена терминов, заимствуя новые из регби, опубликовали в 1993 подход к разработке под названием Scrum, в 1995 представили его на конференции OOPSLA и начали активно готовиться к его продажам.
Столпы Scrum
Прозрачность (Transparency)
Вся работа должна быть видима всем участникам процесса разработки ПО на каждом его этапе.

Не стоит воспринимать это слишком буквально. Главное, что должно быть видимым какие задачи выполняют какие ответственные и на каком этапе. Подразумеваемая прозрачность не обязывает, например, разработчика транслировать свой экран, чтобы любой член команды мог смотреть как двигается каретка и печатается код. Важна видимость — какую задачу взял разработчик и выполнил или не выполнил за определённый период или итерацию, называемую спринтом.
Контроль (Inspection)
Вся работа, её результат и все артефакты Scrum должны быть часто и старательно проверены и измерены везде, где возможно, для уменьшения вероятности получения нежелательного результата и возможности измеримо менять процесс при необходимости.


Для контроля в Scrum-процессе созданы четыре мероприятия, которые должны проводиться на регулярной итеративной основе.
Приспособление (Adaptation)
Контроль и измерения требуются для улучшения процесса производства ПО и качества ПО.
Почему это важно
Эти столпы — воплощение идеи постоянного контролируемого улучшения, унаследованы от практик совершенствования операционных процессов (часто машиностроения) и есть сверхупрощённая адаптация
Прозрачность необходима для осуществления контроля и измерений, которые, в свою очередь, требуются для изменения текущего состояния процесса. Внедрённое изменение, при наличии прозрачности, будет измерено и оценено с точки зрения пользы и снова откорректировано при необходимости.

Несмотря на отсутствие планирования внедрения изменений процесса в явном виде среди столпов, оно является неотъемлемой частью планирования итераций разработки.
Scrum не обязывает использовать отчёт, называемый KANBAN, а одноимённая практика управления разработкой была основана на 20 лет позже Scrum и практически независимо от него. Однако отчёт настолько хорошо покрывает требования к прозрачности процесса, что в современном мире стал неразрывно связан с фреймворком Scrum.

Самоуправляемость команды в Scrum играет ключевую роль и разблокирует применение практик постоянных улучшений. Команда должна решать что изменять и это не должно требовать совещаний с руководством и его одобрения. Конечно, это требует доверия руководства компетентности команды, которого часто нет.
"До популяризации agile-методик разработки работа выполнялась так "как исторически сложилось", иногда годами осуществляясь с одними и теми же систематическими ошибками, которые никто не искал, потому что они никого не интересовали. Процветал подход "это не моя работа", который особенно хорошо работал в "бункеризированной" среде.

Предоставить возможность работникам, непосредственно осуществляющим свою деятельность, стать хозяевами процесса и самим менять его было поистине революционным предложением. Но как это осуществить в команде или процессе, где никто не понимает практики постоянных улучшений и когда команда состоит в значительной степени из приверженцев подходов "это уже не моя работа" и "я так делал годами и всё работало, что вы ко мне пристали, я не хочу ничего менять", по сути, тем самым подкрепляя как недоверие руководства, так и его желание участвовать в согласовании любого рода изменений?

Появилась необходимость в отдельной роли с минимально необходимыми специфическими знаниями в области практик совершенствования процессов производства."

Виталий Новиков
Гл.редактор
Ценности Scrum
Целеустремлённость
Commitment
Сосредоточенность
Focus
Открытость
Openness
Уважение
Respect
Смелость
Courage
Почему это важно
  • Команда стремится к достижению цели итерации и цели продукта, сосредотачиваясь на задачах текущей итерации
  • Команда открыта всему новому и в том числе проблемам и вызовам, которые несёт новизна
  • Члены команды уважают друг друга и всех, с кем работают
  • Членам команды хватает смелости браться за сложные задачи и искать правильные решения, а не просто подходящие

Если вы только знакомитесь со Scrum или ценности для вас сейчас не несут смысла, стоит вернуться к ним после прочтения всей статьи.
Спринт (Sprint)
Спринт (от англ. sprint ) — гонки на короткое расстояние.
Статистика регби показывает, что большинство ключевых моментов игры ограниченны дистанцией в 10 метров и что игроки редко ускоряются в одном игровом моменте более чем на 30 метров. Этот факт убедительно указывает нам на ключевой момент в разнице стилей бега игрока регби и бегуна по дорожке — время набора максимальной скорости. Говоря проще, игроку в регби нужно уметь набрать максимум своей скорости гораздо раньше, чем спринтеру на беговой дорожке.
rugbysport.ru
Что такое спринт
"Спринты - это сердцебиения Scrum, в которых идеи превращаются в ценность"
, где под ценностью, конечно, имеется в виду работающее ПО, которое покрывает потребность клиента.
Спринт это итерация разработки, по сути, проект/фаза проекта со многими его/её характеристиками.

Свойства спринта:
  • все спринты одинаковой длины
  • новый спринт обязан начинаться после завершения текущего (никакого отдыха!)

Все работы и задачи по разработке выполняются внутри спринта. Все мероприятия Scrum проводятся внутри спринта.

Вне спринтов нет Scrum. Вне спринтов — вакуум, нерегламентированный официальной документацией Scrum.

Во время течение текущего спринта:
  • Нельзя менять цель спринта
  • Нельзя вносить изменения, которые ставят под угрозу цель спринта;
  • Нельзя допускать ухудшения качества инкремента, порождаемого в спринте;
  • Состав продукта и его характерных особенностей
    • уточняется по мере необходимости;
    • уточняется или пересматривается с владельцем продукта по мере поступления дополнительной информации.
  • Чем короче тем лучше
  • Может быть отменён, если цель спринта стала неактуальной, но право отмены есть только у Владельца Продукта.

В первичных официальных методических пособиях говорится о длине от 3 до 6 месяцев. В современном мире со всеми дарами автоматизации, DevOPS культуры и open source спринты длиннее четырёх недель уже считаются спринтами курильщика.

Когда запускается разработка, фундаментальное представление о цели продукта у всех есть. Длина спринта выбирается в том числе из общего понимания сложности планируемых функций и прогнозируемых задач, которые они породят.
Почему это важно
Итерации равной длительности повышают дисциплину и упрощают планирование, управление рисками и контроль качества.

В проектном управлении как итеративный, так и инкрементный типы жизненных циклов были известны и активно использовались задолго до появления Scrum, но именно он обязал применять инкрементный жизненный цикл проекта в разработке ПО. По сути, это частный вырожденный случай жизненного цикла проектного управления, адаптированный к процессу разработки.

Приведём определения жизненных циклов проектов от PMI:
— В случае итеративного жизненного цикла содержание проекта обычно определяется на начальной стадии жизненного цикла проекта, однако оценки сроков и стоимости проекта меняются в рабочем порядке по мере расширения понимания продукта командой проекта. Итеративность определяет разработку продукта путём выполнения ряда повторяющихся циклов, в то время как инкрементность определяет последовательное наращивание функциональности продукта.

— В случае инкрементного жизненного цикла проекта поставляемый результат производится путём выполнения ряда итераций, которые последовательно наращивают функциональность в рамках заданного временного интервала. Поставляемый результат содержит такие необходимые и достаточные характеристики, чтобы считаться полным только после заключительной итерации.
— Почему они (итерации) обязаны быть одинаковой длины? Нельзя ли сделать разик один спринт чуть длиннее?
— Для того чтобы приблизить процесс к конвейерному производству, которым вдохновлялись авторы. Нет. Нельзя разово делать ни короче, ни длиннее.
— Задачи разной сложности выполняются за разное время, тогда почему они должны быть вмещены в одинаковые итерации? Почему бы не сделать наоборот — итерации разной длины в зависимости от задачи на очереди?
— Авторы фреймворка посчитали, что дисциплина конвейерного характера получаемая от итераций равной длины с мероприятиями в её одних и тех же точках стоит рисков возникновения простоев в конце спринта или невозможности завершить задачу, потому что она слишком большая, чтобы вместиться в спринт.

Считается, что задачи, настолько большие и неделимые, что их нельзя вместить в спринт это исключение, требующее индивидуального подхода.
"Идея заимствования терминов из совершенно несвязанной области "регби" была в том, что они должны были обозначать предельно конкретный элемент фреймворка со всеми его необходимыми свойствами. Но глубочайшая ирония в том, что организации, ровно наоборот, просто начали называть терминами Scrum всё подряд. Спринт яркий пример такой ситуации, потому что любую итерацию теперь называют спринтом совершенно не осознавая, что отсутствует одно или вообще все его обязательные свойства."

Виталий Новиков
Гл.редактор
Спринты Scrum и проектное управление
— Можно ли использовать процесс разработки Scrum с его итеративной инкрементальной спринтовой основой, если в организации все изменения порождаются на проектной основе, в том числе традиционными водопадами?
— Да, можно.

Для большого проекта этап разработки ПО часто лишь один из многих этапов и, возможно, даже не самый большой и сложный. Каким образом команда разработки делает свою работу может не иметь значения и не зависеть от жизненного цикла проекта, если сроки и бюджет этапа разработки не нарушены, а качество соответствует ожиданиям.

Больше того, опытные руководители проектов всё больше начинают любить инкрементный подход к разработке, потому что в умелых руках это может сильно упростить управление рисками и ожиданиями заказчика.
Диаграмма 1. Пример, когда в проекте только одна команда работает по процессу Scrum
Планирование Спринта (Sprint Planning)
Даже короткие дистанции нужно знать как бежать
Планирование Спринта — совещание Scrum-команды, которое часто носит характер мозгового штурма и направлено на нахождение ответов на следующие вопросы:
  • Как спринт добавит стоимости продукту?
  • Что можно успеть сделать?
  • Как делать запланированную работу?
Результатом такого совещания является Бэклог Спринта (Sprint Backlog) — план, созданный разработчиками на спринт. План должен содержать как минимум:
  • цель спринта, т.е. "почему мы это делаем?"
  • задачи, которые необходимо завершить для достижения цели спринта и рождения инкремента с ожидаемым набором функциональностей, а также сложность или трудоёмкость задач. Помогает ответить на вопрос "что мы делаем?"
  • план действий для успешного выполнения намеченных задач — "как мы это делаем?"

На планировании спринта бизнес-функции продукта, приоритизированные и отобранные к разработке, анализируются командой и превращаются разработчиками в конкретные задачи с оценками и исполнителями. И оценки, и исполнители при этом могут поменяться в течение спринта.
Планирование спринта не должно длиться более четырёх - восьми часов для спринта длиной в один месяц. В таких сжатых временных рамках план может получиться только высокоуровневым, а задачи потребуют последующего уточнения и декомпозиции. Это так и задумано.

Бэклог спринта должен быть на виду и доступен любой заинтересованной стороне без отвлечения членов Scrum команды — помним о прозрачности.
Почему это важно
Результаты десятилетий практики итеративной и инкрементной моделей жизненного цикла проектов однозначно говорят о повышении вероятности достижения цели итерации и инкремента при наличии минимально необходимого плана ближайшей итерации или инкремента.

Любое планирование есть моделирование будущего. Без модели невозможно строить адекватных прогнозов.

Без плана прогнозирование становится гаданием.
Эмпирическая природа планирования в Scrum
Зачастую при оценке задач для определения объёма задач, которые команда может выполнить за спринт, используются безразмерные абстрактные величины. Story points являются примером таких величин.

Идея такого планирования в том, чтобы абстрагироваться от традиционных человеко-дней и за небольшое количество итераций методом проб и ошибок "почувствовать" скольких очков стоит та или иная задача, оценивая каждую всей командой в сравнении с предыдущими. Когда вся команда участвует в оценке задач каждого члена команды — ответственность как за конкретную оценку, так и за общую цель спринта возрастает.
Вопреки популярному мнению Scrum не обязывает использовать ни Story points ни другие абстрактные величины, однако крайне рекомендует именно эмпирическое планирование с учётом итеративной природы работы.

Эмпирическое планирование не запрещает использовать старые добрые человеко-часы.
Почему это важно?
— Сереж, ты в прошлый раз оценил похожую задачу на 8, а в итоге мы еле успели. Давай в этот раз оценим в 10?
— Но тогда же не влезет другая задача?!
— А какая у нас планируется цель спринта?
Цель Спринта (Sprint Goal)
Просто быть быстрым недостаточно?!
Единая цель, которую стремится достичь сплочённая ею Scrum-команда за время спринта.

Свойства:
  • появляется при планировании спринта;
  • разработчики помнят о ней и учитывают её, решая задачи в течение спринта. Часто разработчикам рекомендуют задаваться вопросом "когда я сделаю эту задачу, она приблизит команду к цели спринта?";
  • если план спринта по ходу прохождения спринта оказывается невыполнимым или неактуальным — команда совместно с Владельцем Продукта пересматривают план спринта, если это возможно без изменения цели спринта. В противном случае спринт отменяется и цель пересматривается.
Примеры Цели Спринта:
  1. Исследовать и разработать прототипы пользовательского пути аутентификации;
  2. Реализовать аутентификацию по стандарту OAuth;
  3. Подключить способ аутентификации от Apple;
  4. Позволить пользователю скрывать Сторис в мобильном приложении;
  5. Добавить возможность собирать клиентские метрики приложения;
  6. И даже так: Исправить все высокоприоритетные дефекты пром.среды для увеличения степени удовлетворённости клиентов
Почему это важно
Потому что нельзя допустить разлаженную работу членов команды над несвязанными задачами разных инициатив.

Прозрачность — все заинтересованные стороны знают что делает команда и что ожидать к концу спринта.
Типичные ошибки

Самая распространённая — отсутствие цели. Если у вашей команды нет корректно сформулированной цели спринта — вы не работаете по Scrum.
— Мы работаем по Scrum, но каждый член команды занимается разными задачами из разных проектов или потоков создания ценности. Это плохо?
— Ничего плохого! Однако к Scrum это не имеет никакого отношения.
— Наш проект работает по Scrum, но есть достаточно классическая последовательность фаз по несколько спринтов для бизнес-анализа, дизайна, разработки и так далее...
— Ваш проект не работает по Scrum, потому что проекты не могут работать по процессу разработки ПО по определению. Вы работаете в классическом предиктивном жизненном цикле или по-колхозному "водопад", но, возможно, ваша разработка работает по Scrum, если в фазе разработки выполняются все остальные условия, описанные в Scrum Guide или в этой статье.
— Наша разработка работает по Scrum, но мы транспонировали процесс — разные роли в разных спринтах, например: спринт разработки, спринт тестирования, спринт девопсов.
— Несмотря на то, что все эти фазы — часть разработки, у вас не Спринты сразу по многим причинам:
во-первых, в рамках спринта должны порождаться инкременты ПО, которые буквально можно использовать, принять решение об установке в пром.эксплуатацию или принять решение о необходимости продолжения исследования и модификации без релиза. Это правило — за спринт вы должны породить работающее ПО, пусть даже прототип;

во-вторых, у спринта есть цель, связывающая всю команду и обязывающая слажено работать над ней. Эта цель в большинстве случаев бизнесовая, то есть требует реализации одного из сценариев, описанных, например, методом оформления пользовательских историй. Целью спринта не может быть "разработать по спеке", "протестировать то, что разработано" или "установить в прод то, что протестили";

в-третьих, основные задумки Scrum при его создании: понизить степень "бункеризации" и повысить интенсивность живой коммуникации для решения большей части задач в рабочем порядке, то есть забыть процесс, когда каждый этап разработки ПО осуществлялся в своём специализированном отделе/департаменте, а общение между ними было бюрократизировано и осуществлялось организацией больших собраний или пересылкой подробно оформленных "карточек"-задач и исчерпывающей документации.

Специализировать спринты под стадии процесса/конвейера разработки не просто противоречит определению Спринта, такой подход противоречит самой сути Scrum и культивирует то, с чем он призван бороться.
— Мы работаем по Scrum, но у нас в команде вендор-разработчик. Значит ли …
— Если вендор не выдал вам внутрь команды разработчиков в out-stuff, то это не Scrum.
Ежедневная Схватка (Daily Scrum)
Схватка (англ. scrum) служит основой для продолжения игры после незначительных нарушений. Арбитр назначает схватку в тех случаях, когда имеет место пас или игра вперёд, игрок касается мячом земли в своей зачётной зоне или когда мяч окончательно блокируется в моле или раке. Если команда получила право пробить штрафной удар, игроки могут выбрать удар по воротам, свободный розыгрыш, удар в аут с последующим розыгрышем коридора или розыгрыш схватки.
Вики
Ежедневная Схватка — совещание, цель которого: обзор и проверка прогресса продвижения к цели спринта и корректировка бэклога спринта при необходимости.

Такое совещание должно
  • длиться не более 15 минут, независимо от длины спринта
  • проводиться в одно и то же время каждый день

Scrum не предписывает специфическую технику проведения совещания.

Совещание призвано способствовать:
  • улучшению коммуникации и
  • устранению нужды в других совещаниях
  • идентификации препятствий
    • кто что ожидает;
    • у кого что не получается;
    • кто что недопонимает;
    • иными словами, у кого какие проблемы, мешающие завершить текущую задачу или взять новую.
  • принятию быстрых решений

Такое совещание, или как его часто называют стендап (standup), нельзя отменить, однако допускается сдвиг по времени, если это единичный случай.

Единственным исключением, которое всё же не зафиксировано в основополагающих документах, но общепринято в сообществе и не считается ошибкой это отсутствие стендапа в день проведения Планирования Спринта.
Типичные ошибки
Зачастую члены команды утаивают информацию о проблемах или возможностях до следующего стендапа, так как в неверно установленном процессе привыкают говорить об этом исключительно на таком совещании.

Scrum в его современном виде, пропагандирующий крохотные команды и совместное размещение в едином пространстве, создан для того чтобы рабочие вопросы решались в моменте, а не откладывались до ближайших совещаний, даже если одно из них уже завтра, таким образом, минимизируя отходы процесса, такие как простои. Однако команда, предварительно обсудив поднятый в рабочем порядке вопрос и оценив его риски, может отложить его до стэндапа.

Вторая типичная ошибка — пытаться решить одну или все проблемы прямо на стендапе. Даже ограничение в 15 минут часто не останавливает упорных коллег с плохим пониманием Scrum от того, чтобы превратить короткий обзор статуса и сверку с планом в решение вопроса конкретного члена команды. Это неверный подход. Обозначенные на совещании проблемы должны быть зафиксированы в общедоступном месте и решены в рабочем порядке или на специально посвящённой этому встрече.
— У нас каждый член команды занимается разными задачами из разных проектов, инициатив или потоков создания ценности. Однако мы проводим ежедневный standup.
— Вы подменяете понятия. Команда означает слаженную работу её членов, направленную на достижение общей цели. В вашем случае это скорее отдел, служба или департамент.

Стоит задуматься, какую стоимость добавляет это мероприятие в такой ситуации. Улучшение коммуникации и устранение нужды в прочих совещаниях не происходит. Коллеги вынуждены порой отчитываться дважды — сначала у вас, а потом в фактическом проекте или команде, над задачами которой они работают. Как идентификация и устранения препятствий, преград и блокеров, так и принятие быстрых решений невозможны, так как фактически "настоящие" члены команды отсутствуют на совещании.

Практика показывает, что сотрудники на подобном мероприятии не проявляют интерес к чужим задачам и не принимают активное участие в их обсуждении, а скорее ждут вызова по фамилии, чтобы отчитаться.

В таком случае корректнее обуздать системы отслеживания задач и их статусов, научить коллектив дисциплине своевременного обновления информации взятых в работу задач и устранить мероприятие вовсе. Интерактивная (или даже висящая на стене офиса) Канбан доска позволит не отвлекать коллектив ради формального запроса статуса.
Обзор Спринта (Sprint Review)
Покажите как хорошо вы бежали
Обзор Спринта — совещание, часто носящее характер презентации с последующей сессией мозгового штурма, целями которого являются:
  • обзор/проверка результатов спринта
  • представление результатов трудов команды за спринт, часто с присутствием представителей заказчиков и других заинтересованных сторон
  • обсуждение командой и заинтересованными сторонами представленного результата для
  • определение возможных будущих корректировок процесса разработки ПО

Совещание не должно длиться больше четырёх часов при месячном спринте.
Почему это важно
Обзор спринта хоть и служит генеральной приёмкой работ, но не должен на этом ограничиваться.

Это единственное мероприятие Scrum, на котором все члены Scrum команды общаются с заказчиками и представителями бизнеса. Коллеги из бизнеса могут добавить контекста в части стратегии организации или продукта, поведать о состоянии рынка, как это влияет на состав продукта и функции, которые от него ожидают, как это меняет приоритеты или, наоборот, подкрепляет текущие.

В рамках живого общения могут обсудиться вопросы приоритетов бизнеса, как они выровнены с технической сложностью реализации той или иной функции и наоборот — влияет ли сложность и трудозатратность, которые представители бизнеса теперь осознают, на приоритеты, которые они обозначили.
Типичные ошибки
Перегруженные представители бизнеса часто требуют ограничиваться презентацией и забывать про этап обсуждения, ради которого в большей степени такое совещание создавалось авторами фреймворка. Крайне важно не допускать превращение обзора спринта в рутинную проверку качества заказчиками.

Вторая частая ошибка — это превращение обзора спринта в приёмочное пользовательское тестирование.
Ретроспектива
Обо что вы споткнулись, пока бежали последний Спринт?
Ретроспектива — совещание, направленное на обсуждение возможности улучшения качества и эффективности процесса разработки ПО. На ретроспективах редко присутствует кто-то кроме scrum-команды.

На совещании должно быть осуществлено
  • исследование производительности
    • на уровне личности
    • на уровне команды (взаимодействие личностей)
  • исследование эффективности
    • процессов
    • используемых инструментов
    • определений готовности
  • коллективное обсуждение
    • проблем, которые встретились в течение спринта
    • первопричин проблем
    • способов их решения
  • приоритизация выявленных проблемных мест и требуемых изменений внутренних процессов разработки ПО
  • добавление соответствующих задач в следующий спринт

Ретроспектива завершает спринт, так что имеет смысл планировать её в последний день спринта.

Ретроспектива не должна длиться более трёх часов для месячного спринта.
Типичные ошибки

1. Не проводить совещание вовсе по разным причинам. Это противоречит целям, ценностям и столпам фреймворка и делает процесс чем-то иным, но не Scrum-ом.

2. Относится к мероприятию формально. Каждый раз когда не выполняется цель спринта, требуется провести анализ первопричин. Если более двух спринтов подряд не выполняются задачи и цели спринта, то команда обязана сделать полноценный глубокий анализ, выводы и применить их в следующем же спринте.

Бездумный перенос задач в следующий спринт противоречит всем принципам, столпам, ценностям и артефактам Scrum одновременно.


Удивительным образом во многих современных организациях процесс разработки живёт с полным отсутствием процесса постоянного улучшения качества, но при этом используется вся терминология и мероприятия Scrum, включая ретроспективу, которая проводится формально, потому что фреймворк этого требует. Однако, когда наступает планирование следующего спринта, всё что было озвучено на ретроспективе, пусть и формальной, забывается, как будто выходные, которые часто разделяют эти два мероприятия, обладают магическим эффектом наведения полного забвения.

Если применяются все мероприятия, используются все артефакты и роли Scrum, но отсутствует столп "приспособление/адаптация" со всеми вытекающими, то это не Scrum, а натягивание его терминологии на собственные закостенелые процессы.
Продукт в Scrum
Читайте также

Что такое продукт и что может им являться. Кратко опишем его жизненный цикл.

Дадим определения и расскажем зачем столько разных типов

Продуктовый Бэклог (Product backlog)
Что есть ваш продукт
Продуктовый Бэклог — упорядоченный список того, что требуется для развития продукта. Единый источник исполняемых работ Scrum-командой.

  • За продуктовым бэклогом требуется ухаживать (grooming):
  • размер и оценка элементов бэклога определяется разработчиками
  • владелец продукта помогает разработчикам понять контекст

Вопреки очень распространённому недопониманию бэклог не содержит задачи или работы. Это не Work Breakdown Structure из традиционной проектной деятельности. Однако бэклог содержит источник задач и работ.

Часто используемый тип описания бизнес-требований, так называемые пользовательские истории (user story), в своём классическом первоначальном смысле не являются задачами, но характеристикой ПО, функцией ПО или сценарием, вовлекающим множество функций или характеристик, или в простонародье "фичей" (feature), которую использует специфическая роль пользователя ПО.

Одна фича может породить и почти всегда порождает множество задач, таких как анализ и дизайн, разработка, установка и настройка на множество специализированных сред, тестирование разного рода (в зависимости от индустрии и режима работы ПО), верификация и валидация, приёмка, согласование комплаенсом и другими специализированными департаментами, если индустрия этого требует. Как несложно увидеть отношение пользовательской истории к задаче — один ко многим, и в редком частном случае — один к одному.

Вопреки другому расхожему мнению, Scrum не требует использования пользовательских историй и не обязывает работать с бизнес-требованиями с их помощью. Вы вольны писать классические спецификации, если так корректней в текущем контексте разработки.
Цель продукта (Product Goal)
Ради чего вы это делаете
Цель продукта описывает будущее состояние продукта, относительного которого нужно планировать. Цель продукта в Бэклоге продукта.

Бэклог продукта подлежит уходу, чтобы доопределить и детализировать, что именно будет удовлетворять Цели продукта и с какой последовательностью (то есть приоритетом).

Цель продукта долгосрочна по своей природе и обычно пересматривается редко. Типичные случаи пересмотра — радикальное изменение состояния рынка, конкурентов или стратегии организации.

Инкремент
Инкремент — расширение ПО или изменение существующих частей ПО, которое несёт ценность для пользователей этого ПО. Инкремент может состоять из бизнес-функции, нескольких бизнес-функций или реализовывать целый сценарий, который становится доступен пользователям ПО после релиза.

Свойства инкремента:
  • удовлетворяет цели продукта
  • не противоречит предыдущим инкрементам, а дополняет или изменяет
  • имеет ценность, только если им можно пользоваться
  • удовлетворяет определению готовности

В рамках одного спринта может быть рождено множество инкрементов. Инкремент рождается, когда элемент бэклога начинает удовлетворять определениям готовности.
Частые ошибки
Одна из хронических болезней многих организаций — это отсутствие цели. Наполнение бэклога всем подряд независимо от того, удовлетворяет ли элемент бэклога стратегии, целям организации, целям продукта (этого конкретного продукта, а не любого продукта организации) и ожиданиям заинтересованных сторон. Ещё реже проверяется непротиворечие бесцельной кучки пользовательских историй другим таким же других команд организации, из чего часто произрастают ситуации от смешных казусов до полных катастроф.

Иногда бэклог продукта используется как свалка идей любой степени безумия и актуальности: "появилась идея? заведи в бэклог продукта!". Из-за этого в бэклоге может лежать никому не нужный функционал — так называемая лазейка в скоупе (scope creep) , который никак не выделяется относительно других реальных обоснованных требований. Такой подход делает уход за продуктовым бэклогом долгим и сложным, а порой и совсем невозможным, если цели продукта как таковой нет.
Определение Готовности (Definition of Done)
Жарить до появления коричневой хрустящей корочки
Определение Готовности (DoD) — формальное описание соответствия состояния инкремента показателям качества, требуемым для продукта.

Свойства:
  • обеспечивает единое понимание масштаба работ, которые должны быть проделаны для производства инкремента
  • должно быть понятным и доступным всем заинтересованным сторонам
  • если элемент бэклога не удовлетворяет определениям готовности, то он
    • не может быть показан на Обзоре Спринта
    • не может быть выпущен в релиз
    • не является инкрементом

Фреймворк не регламентирует конкретный способ описания определений готовности, главное, чтобы они удовлетворяли свойствам, описанным выше.
Прослеживаемость требований
Как прямая, так и обратная
Как мы писали в статье прослеживаемость требований является важным результатом применения бизнес-анализа. Scrum реализует прозрачную понятную систему прослеживаемости требований своими обязательными артефактами:
  • Цель Продукта уточняет цели и задачи организации
  • Бэклог Продукта есть уточнение и декомпозиция Цели Продукта
  • Бэклог Спринта есть декомпозиция и уточнение элементов Бэклога Продукта
  • Определения готовности отражают требуемое качество инкремента, порождаемого из Беклога Спринта

В Scrum цепочка взаимосвязей и преобразования различных типов требований практически идентична традиционному жизненному циклу из Инжиниринга Систем, а значит как прямая, так и обратная прослеживаемость неразрывно впечатана в процесс разработки Scrum.
Вклад артефактов Scrum в измеримость процесса
Вы не управляете тем, что не можете измерить. Даже у поезда есть приборная доска, а он вообще едет по рельсам.
Кроме встраивания прослеживаемости, артефакты Scrum повышают прозрачность и измеримость процесса, реализуя взаимосвязи артефактов с их парами-метриками:
Команда
Каждая команда начинает матч с 15 полевыми и 7 запасными игроками. Состав команды включает восемь нападающих (англ. forwards) и семь защитников (англ. backs). Вики
Читайте также

Какая разница, распределены мы или нет?

"Сила команды в каждом отдельном ее члене. Сила каждого отдельного члена в команде" (Фил Джексон)

Не все конфликты одинаково вредны

Обязательные свойства:
Самоорганизация
Без самоорганизации петля постоянных улучшений становится слишком длинной или разрывается вовсе (когда предложение об оптимизации процесса попадает в долгий ящик начальника и так и остаётся нерассмотренным).

Самоорганизация так же означает, что команда решает кто, что, когда и почему делает — нет авторитарного органа принятия решений.

Такая абсолютная демократия призвана повысить вовлечённость и ответственность — между назначенной задачей и задачей, которую ты взял себе сам, существует огромная разница в части психологического оттенка восприятия.

Самоизмерение — обязательное свойство самоорганизующейся команды. Все члены команды должны понимать как измеряется производительность и почему именно так. Без конкретных метрик невозможно понять динамику производительности и эффективность принятых мер.
Кросс-функциональность
Команда обязана содержать все роли и навыки, необходимые для рождения работающего инкремента ПО, в рамках каждой итерации.

Требование к кросс-функциональности родилось из необходимости минимизировать количество простоев команды и специалистов, и нивелировать формальные передачи работ внутри итерации разработки инкремента, тем самым снизив количество документации.

Каждая внешняя относительно команды зависимость — вендор или специалист другого департамента — несёт риск простоя и несоблюдения сроков, она не контролируема и неуправляема изнутри команды.

Каждая формальная передача работы между командами и департаментами — отход производства, условно не добавляющий стоимости.
Простая плоская структура
В команде не должно быть никакой иерархии, не должно быть никаких внутренних команд или субокоманд.

Это необходимое условие равного распределения ответственности за результат. Все равны перед заказчиком. Все молодцы, если в рамках итерации разработана необходимая бизнес-функция, но также и все виноваты, если итерация неуспешна.

При разборе неудач равнораспределённая ответственность позволяет сосредоточиться на проблеме, а не искать виноватого, сосредоточится на процессе, который требует корректировки, а не индивидууме, который упустил все полимеры.
Небольшой размер
Руководство по Scrum рекомендует десять или менее человек. Если команда вырастает за пределы этого ограничения, рекомендуется реструктурировать одну команду в несколько команд, при этом у них должен быть:
Важно отметить, что это единственное упоминание о возможностях масштабировать фреймворк в официальном руководстве.

Такие скудные средства масштабирования явились причиной возникновения огромного количества современных фреймворков гибкой разработки, базирующихся на идеях Scrum и с разной степенью успеха решающих эту проблему.
— Мы американский международный разработчик ПО с советским прошлым, мы считаем, что используем Scrum, но состав функций к разработке зафиксирован при продаже проекта, а фазы, спринты и общий план-график спланированы пресейлами заранее до старта проекта, чтобы оценить общий срок проекта.
— Это не спринты и не Scrum, по определению. Самоорганизация команды — обязательное свойство для Scrum, а эмпирическое планирование крайне настойчиво рекомендуемый подход к моделированию итераций. Смоделировать план достаточной точности, чтобы смело продавать проект, можно только проделав глубокий предварительный анализ требований заказчика. У вас традиционный подход к проектному управлению и разработке, часто называемый также "водопад".
Scrum почти никогда не используется на стороне подрядчика, особенно с договорами с фиксированной стоимостью.

Фреймворк создавался для работы внутри компании и не обладает элементами, которые бы позволяли привлекать подрядчиков или тем более быть на стороне подрядчика.
Состав команды
Столб, отыгрывающий, замОк, фланкер, стягивающий, крыльевой, замыкающий... нет, не то
Роли, регламентируемые фреймворком:
  • Мастер по Scrum
  • Владелец продукта
  • Разработчики
Scrum умышленно не уточняет, что такое разработчик.
Кросс-функциональность команды подразумевает, что "разработчик" это собирательный образ всех необходимых специалистов для успешного решения поставленной задачи и неважно это группа узкоспециализированных профессионалов или пара мастеров на все руки.
Это важно:
Scrum обязывает команду содержать все навыки, требуемые для покрытия всех этапов разработки продукта начиная от взаимодействия с заинтересованными сторонами и верификации требований до экспериментов, исследований и в целом буквально всего чего угодно, что требуется для разработки инкремента за итерацию.
Важно заметить, что культура DevOPS, появилась сильно позже 1986 года, а интенсивно развиваться и распространятся начала после десятилетия популярности Scrum на западе.

Scrum команда могла не содержать отдельной роли релиз-инженера или её аналога и это могло приводить к заметным задержкам релизов инкремента. Это было не важно пока спринт длился от 3 до 6 месяцев.

Виталий Новиков
Гл.редактор
Разработчик (Developer)
Основная работа ложится на них
Основные обязанности:
  • планировать спринт
  • поддерживать качество ПО, удовлетворяя определениям готовности
  • корректировать и уточнять план каждый день для достижения Цели Спринта
  • требовать друг от друга профессиональной ответственности
  • непосредственно создавать продукт

В команде может быть один или несколько.
Владелец Продукта (Product Owner)
Не то чтобы это термин из регби. Ай-яй Джефф, Кен, ну что же вы! Cложно было найти подходящее название роли?
Владелец продукта (PO) — это единый голос заказчика и заинтересованных сторон.
"one voice of the stakeholder"
Владелец продукта несёт ответственность за максимизацию ценности продукта, полученного в результате работы Scrum-команды.
  • "Единый голос заинтересованных сторон" означает, что владелец продукта всегда только один на команду
  • Ответственный за работу с продуктовым бэклогом и уходом за ним:

Если посмотрите определение бизнес-анализа, то увидите как похоже звучит это определение на обязанности роли владельца продукта.

И владелец продукта и бизнес-аналитик выполняют бизнес-анализ, сфокусированы на продукте: требованиях к его функциям и характеристикам; их приоритетах; обеспечению понятности и прозрачности всей продуктовой информации для всех заинтересованных сторон на протяжении всего жизненного цикла продукта — для бизнес-аналитика и на протяжении разработки — для PO.

При этом ответственность не значит выполнение, любая описанная обязанность может быть делегирована.
Почему это важно
По той же причине, почему важен бизнес-анализ — кто-то должен выполнять эту функцию. Scrum выделяет её в правилах, которые нельзя нарушать. Это снижает риски недопонимания или расхождения мнений между участниками процесса, а значит, и вероятность траты времени команды на реализацию ненужных бизнес-функций ПО.

Наличие владельца продукта означает, что у вас не может быть бизнес-аналитика в команде, так как любой бизнес-анализ подразумевает плотное взаимодействие с заинтересованными сторонами (включая заказчиков) продукта и проекта. Выходом из этой ситуации служит назначение бизнес-аналитика владельцем продукта. Нельзя забывать, что даже с учётом масштабирования работы на несколько команд владелец продукта должен быть один.
Распространённые недопонимания:
Владелец продукта — это не менеджер или руководитель продукта, несмотря на схожесть названий.

Владелец продукта — это роль внутри Scrum и она не выходит за его пределы, а значит, и за пределы процесса разработки ПО. Если организация не применяет Scrum, то нет и этой роли.

Менеджер/руководитель продукта — роль независима от разработки (некоторые продукты вообще не требуют разработки программного обеспечения), которая занимается задачами всего жизненного цикла продукта, включая, но не ограничиваясь:
  • стратегией продукта и как она выровнена со стратегией предприятия;
  • маркетингом и позиционированием;
  • сочетаемостью с другими продуктами и сервисами организации, если они есть;
  • сбором метрик (например, удовлетворённость клиентов) и коррекцией продукта на их основе;
  • определением функций и характерных особенностей, которые укрепят положение продукта на рынке в будущем;
  • определением программы проектов или даже портфеля программ; организацией поддержки продукта.

В примере на диаграмме 1 гипотетический проект может быть одним из десятка проектов в портфеле продуктовика, которые он инициировал для реализации стратегии продукта и максимизации ценности, которую он несёт. Иными словами, владелец продукта и руководитель продукта оперируют на разных масштабах разными сущностями.

В организациях, где инициативы запускаются и финансируются не в проектном режиме, а в режиме потоков создания ценности (value stream) ситуация аналогичная — один руководитель продукта может заниматься несколькими потоками в общем случае, а владельцев продукта нет вовсе, если нет Scrum.
Мастер по Scrum (Scrum Master)
"Настоящий лидер", который служит Scrum-команде и организации
Scrum, несмотря на то что считается, что он исчерпывающе изложен на тринадцати страницах официального руководства, требует реализации набора практик, выходящих далеко за рамки информации, которая в нём изложена. Одна из них — это практика постоянного улучшения и контроля качества.

Руководство написано так, что может быть свободно и неверно интерпретировано, если не знать основополагающие принципы организации процессов производства, их оптимизации и контроля качества, включая обеспечение прозрачности, измерение производительности и измеримость в целом. Это одна из причин частых неумышленных нарушений обязательных элементов фреймворка.
Scrum мастер (далее СМ) ответственен:
  • за внедрение и использование Scrum, как определено в Руководстве по Scrum. Он помогает понять теорию и практику Scrum как внутри Scrum-команды, так и во всей организации;
  • за эффективность работы команды и наличие механизма постоянного улучшения качества процесса разработки ПО.
Это "настоящий лидер", который служит Scrum-команде:
  • Обучает членов команды навыкам самоуправления и кросс-функциональности;
  • Помогает команде сосредоточиться на создании инкрементов продукта, соответствующих Определению готовности;
  • Устраняет препятствия на пути прогресса команды;
  • Способствует тому, чтобы все мероприятия/артефакты проходили своевременно, результативно и эффективно, в том числе укладывались в установленные ограничения по времени.
СМ помогает Владельцу Продукта:
  • в поиске методов эффективного определения целей продукта и управления продуктовым бэклогом;
  • помогает команде осознать необходимость чётких, кратких и понятных элементов бэклога продукта;
  • помогает в разработке эмпирического (то есть основанного на опыте прошлых итераций) плана продукта в комплексной быстроизменяющейся среде;
  • способствует и культивирует сотрудничество заинтересованных сторон продукта по запросу или при необходимости.
СМ помогает организации:
  • обучает и приучает организацию и её сотрудников подходам и практикам Scrum;
  • планирует внедрение Scrum
  • и консультирует организацию по внедрению Scrum;
  • оказывает помощь заинтересованным сторонам в понимании и внедрении предписанного эмпирического подхода;
  • устраняет барьеры между заинтересованными сторонами и Scrum-командами.
СМ по определению это лидер-слуга (servant leader) кросс-функциональной команды без иерархии. Звучит противоречиво, но руководство по фреймворку пишет об этом не витиевато.

СМ — роль в рамках процесса Scrum. Если нет разработки ПО, нет и СМ.
Если в организации нет Scrum, соответственно, нет и мастера по данному фреймворку.
Почему это важно
Потому что Scrum обязывает обеспечить беспрекословное выполнение всех его предписанных составляющих. Для этого требуется надзиратель с соответствующим знанием.
— СМ это руководитель проектов? Как связаны эти две роли?
— Нет, но проектные менеджеры часто выступают лидерами-слугами (servant leadership) команд, особенно в небольших проектах. Если волею судеб, команда работает по фреймворку Scrum, то руководитель проекта может выступить СМ-ом.

СМ и руководитель проекта — это разные роли и даже разные специальности, требующие разного образования, опыта и склада ума, в основном потому, что роли оперируют совсем разными понятиями на разных масштабах и уровнях.

Если организация финансирует изменения не в проектном режиме, а потоками создания стоимости, то руководителя проектов может не быть вовсе, но будет СМ, если организация применяет Scrum.
Хотя вы можете видеть роли Scrum Master и Product Owner в качестве должностей в организациях, это никогда не подразумевалось фреймворком Scrum, и это есть результат двадцатипятилетнего накопления недопониманий фреймворка.

Scrum Master и Product Owner это обязанности, которые необходимы для функционирования Scrum, и их может взять на себя любой сотрудник с любой должностью.
Martin Hinshelwood, Lean-Agile & DevOps Futurist & Leader with 20+ years experience, Professional Scrum Trainer, Professional Kanban Trainer
Жизненный цикл
Выводы
Scrum сильно устарел, у него отсутствуют механизмы масштабирования и он является одним из самых негибких подходов к организации работы. Рост производительности, о котором заявляют продавцы Scrum в современном мире, наблюдается у единичных компаний, но выделить первопричину этого роста — нелёгкая задача, потому что изменения носят комплексный характер и какой конкретно вклад внёс фреймворк вычислить тяжело.

В России тяжело найти компанию, которая бы использовала Scrum, таким каким он предполагался. В половине случаев это из-за некомпетентности и разгильдяйства, а компании действительно могли бы оптимизировать своё производство, получив хотя бы часть обещанных ценностей фреймворка. В другой половине отхождение от обязательных элементов Scrum, неважно осознанное или нет, является необходимостью для достижения лучших результатов и оптимизации производства. Scrum всегда будет всего лишь субоптимальным из-за ограничений, которые вносит.

Если требуется достичь по-настоящему высоких результатов, вам потребуется вырваться из тюрьмы методики, применить настоящие "управления знаниями" и "культуру постоянных улучшений" с большей свободой выбора, которая, конечно, потребует большей компетентности и обяжет быть более ответственным.
Отдадим должное:
Это не единственный фреймворк, пропагандирующий прозрачность и измеримость процесса, но наряду с Lean и некоторыми другими он сделал общее дело и сместил парадигму производства ПО в сторону его современного более оптимального состояния. Если бы не Scrum и его активные продажи, мы могли бы вылезти из наших бункеров сильно позже, особенно на фоне того, как некоторые ИТ-специалисты любят окутывать свою работу священно-сакральным туманом наигранной тайны.

Scrum всего лишь один из фреймворков или методик, который обязал встроить практику постоянных улучшений в процесс разработки, но, к сожалению, в очень ограниченном виде и с полным запретом выходить за установленные рамки. Тем не менее эти ограничения не остановили многих вдумчивых руководителей и лидеров команд. Disciplined Agile заслуженно считает Scrum прекрасной отправной точкой, если в организации не запрещено начать нарушать его предписанные элементы по мере необходимости.

Третья веха — передача владения процессом и ответственности за его эффективность команде, которая непосредственно в нём работает. Лидеры команд и начальники отделов существовали и до этого, но Scrum обязал следить за производительностью на итеративной основе, в том числе чтобы это вошло в привычку, и вводить изменения в процесс, попутно измеряя их эффективность. На фоне стандартного решения любых проблем производительности "дайте больше сотрудников" это, можно смело заявить, революция.