Современные парадигмы разработки ПО всегда являются итерационными. В методологии Scrum такими итерациями являются спринты, в классической версии Scrum каждый спринт начинается с планирования и завершается демо, ретроспективой и «инженерным» днем. Оценка успешности каждого спринта – это довольно субъективная вещь, формализация которой важна и может быть реализована с помощью следующих стандартных действий:

  • Определить достижение целей спринта;

  • Оценить краткосрочное влияние разработки ПО на удовлетворённость заказчиков и пользователей в развитии продуктов;

  • Провести формализацию и учет параметров спринтов.

Определять для каждого спринта собственные цели несложно: необходимо сопрягать довольно точно измеряемые и формулируемые сущности:

  1. Бизнес-цели разрабатываемых продуктов;

  2. Приоритет функциональных и нефункциональных требований в беклогах различного уровня;

  3. Логическую очередность этапов развития софтверных проектов.

Идеальная формулировка целей спринта должна быть в формате SMART, где буква «M» означает Measurable – т.е. измеримость цели. Такая измеримость довольно часто выражена в цифрах, а удачной формулировкой цели спринта может быть следующая: «Достигнуть максимального времени завершения каждой транзакции в системе для пользователей в любой роли менее 1 секунды вне зависимости от времени суток». Данная цель вполне конкретна, уместна и измерима, а срок ее достижения понятен – продолжительность спринта. Обычно спринт имеет 1-2 основные цели, если, конечно, речь не идет о разработке сложных экосистем в форматах Scrum of Scrum и Scaled Agile Framework.

Оценка краткосрочного влияния разработки ПО на удовлетворённость бизнес-заказчиков и пользователей тоже определить довольно легко: от субъективных оценок Product Manager до пользовательских фокус-групп и бета-тестирований. В данном случае краткосрочного такого влияния компенсирует математическую неточность методов оценки удовлетворенности пользователей и бизнес-заказчиков. Основное правило одно: постоянно собирать формализованную обратную связь на всех уровнях и анализировать ее в разрезе производственных проблем, выявляемых в спринте и подробно обсуждаемых на ретроспективах.

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

  1. Необходимо ускорить и формализовать разработку;

  2. Необходимо приспособиться к быстро меняющимся требованиям и к реалиям бизнеса (классический случай для развития стартапов и всяких форексов);

  3. Наши бизнес-заказчики, пользователи и разработчики должны стать ближе друг к другу (и использовать полученный синергетический эффект в развитии бизнеса).

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

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

Причина \ бизнес-потребность

Параметры в данной группе

1

Ускорение и формализация разработки

1)  Отклонения реального списания поинтов от «идеальной траектории» на диаграмме сгорания в ключевых точках спринта;

2)  Вектор ускорения работы каждой команды (при стабильности ее состава) в списанных поинтах или завершенных историях;

3)  Вектор роста капасити команды на стадии планирования (при стабильности ее состава) в поинтах или историях;

4) Вектор исчезновения историй и тасков, которые были внесены в спринт, но не реализованы в силу слабой формализации и неясности требований;

2

Быстрое приспособление к меняющимся требованиям

1) Вектор исчезновения историй и тасков, которые были внесены в спринт, но не реализованы в силу потери актуальности;

2) Количество тасков с наивысшим приоритетом, реализованных в спринте при общем сохранении принципа Парето в расстановке приоритетов;

3) Постоянный баланс между количеством тасков и историй по трем категориям: А) «срочных» с высоких приоритетом, Б) технических и инфраструктурных (включая QA и CI\CD), В) выводимых в продуктивную среду на срок более полугода;

3

Сближение заказчиков, пользователей, разработчиков в развитии бизнеса компании

1) Вектор роста количества продуктовых гипотез, прошедших все стадии разработки и находящихся в промышленной эксплуатации;

2) Вектор исчезновения историй и тасков, которые были удалены из промышленной эксплуатации из-за негативного фидбека пользователей;

3) Рост капасити команды в поинтах и тасках;

4) Постоянный баланс между количеством тасков и историй по трем категориям: А) «срочных» с высоких приоритетом, Б) технических и инфраструктурных (включая QA и CI\CD), В) выводимых в продуктивную среду на срок более полугода;

Рассмотрим некоторые примеры из практики консультантов SSC, иллюстрирующие применение формализованных параметров спринтов в разработки ПО и их влияние на бизнес-параметры в развитии софтверных продуктов.  Один из самых редких, но потенциально эффективных параметров спринта – это максимальные отклонения реального списания поинтов от «идеальной» диаграммы сгорания. Конечно, следует сразу условиться: полное следование «идеальной» траектории – это вредная утопия, отказ от следования ей – низкий уровень управленческой зрелости команды разработки. Важным является учет и анализ причин максимальных отклонений в ключевых точках. Так, например, в проекте внедрения Scrum методологии в российско-китайской IT-компании в 2018 году в практике одного из консультантов SSC такие отклонения считались по 7 спринтам в двух ключевых точках: по завершению каждого спринта и в середине его календарного срока. Отклонения считались в процентах (составили от 2 до 43%) и позволили сделать бесценные выводы как о скорости внедрения Scrum, так и о потенциале команд и оптимальной скорости разработки. Именно анализ данного параметра позволил сформировать индивидуальные капасити команд и тим лидов, скорректировать этап планирования тасков, внести эффективные изменения в процесс стабилизации качества функционала, вводимого в эксплуатацию.

Другой пример эффективного использования параметров в спринте описывается из практики испанской софтверной компании SlavaSoft. На протяжении трех лет развития мобильного продукта для профессионалов настольного тенниса в парадигме разработки Scrum отслеживались и анализировались все параметры из третьей группы приведенной выше таблицы:

  • Рост закрепленных в промышленной эксплуатации продуктовых гипотез приблизился к 90%;

  • Были практически искоренены обратные откаты в функциональности из-за негативного фидбека конечных пользователей – тренеров и профессиональных игроков в настольный теннис;

  • В течение первого года наблюдался значительный рост капасити команды;

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

Бизнес-заказчики данного мобильного продукта отмечали высокий уровень сближения команды разработки с конечными пользователями, что безусловно шло на пользу развитию продукта и бизнеса SlavaSoft.

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

Комментарии (6)


  1. x0rHamster
    28.08.2022 09:46
    +1

    1. Что делать с метриками, опирающимися только на количество продуктовых гипотез (или функциональности, соответствующей INVEST; например, параметр 3.1 из вашей таблички), при сильной волатильности *емкости последних? Скажем, cycle time одной истории - один день от взятия в работу до релиза на продакшне, другой - три спринта по две недели (иначе потеряем valuable и testable - не получим адекватную ОС и не провалидируем, что сделанное реально закрывает потребности), и так постоянно в течение нескольких лет. Переводить такие метрики на стори-поинты, как это сделано в соседях? (например, параметр 1.2)

    2. Каким параметром можно проконтролировать "инфляцию стори-поинтов/историй"? Скажем, команда неосознанно начала резать бизнес-хотелки на истории поменьше (например, договорившись, что "влезает в один спринт" важнее "функциональность реализована end-to-end, пусть и без множества деталей, и ее можно не только деплоить, но и релизить - включать для пользователей"), назначать им стори-поинтов побольше ("в прошлый раз были подводные камни, давайте с запасом", и так каждый спринт), и делать их настолько медленней, чтобы burnout как поинтов, так и историй таки продолжал расти, но на субъективном уровне чувствовалось, что происходит что-то не то


    1. ssconsulting Автор
      29.08.2022 14:50

      Добрый день! Спасибо за хорошие вопросы. Навскидку ответы такие:

      1) да, переводить метрики в более простой, но управляемый вид.

      2) популярная проблема, и кажется даже шире, чем в вопросе. Бороться с этим нужно и на двух уровнях: а) на уровне стандарта разработки - что такое поинт и история, чтобы они были формализованы в проекте (если не в компании вообще); б) увеличивать спринт под истории, а не истории уменьшать над спринты, но постоянно разговаривать с аналитиком и лидом разработки про риски "инфляции". Они реальные и несут сложности всем участникам процесса в конечном итоге, а не только бизнес-заказчикам.


  1. DrinkFromTheCup
    28.08.2022 10:51

    Необходимо приспособиться к быстро меняющимся требованиям и к реалиям бизнеса (классический случай для развития стартапов и всяких форексов);

    Форексы. Мгм. Допустим. С двойной натяжкой, но допустим.

    Где ещё требования И реалии могут меняться быстро?

    (может, если требования меняются быстро, чего вообще-то быть не должно, а реалии меняются часто, чего тоже быть не должно, нужнее дрючить не команду, а капитана этой маркитанской лодки?)


    1. ssconsulting Автор
      29.08.2022 14:56

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


      1. DrinkFromTheCup
        29.08.2022 15:05

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

        Сервис проката самокатов - ПДД, регламентирующие обращение с транспортом, каждый день меняются, что ли? Конструкция самокатов?

        ИБ для колёсного беспилотника - стандарты связи И обеспечения безопасности связи кто-то ежедневно штормит?

        Платилка - no comments. Если бизнесмен выбрал coinкойн, в котором стандарты и методологии меняются как перчатки, - он, наверное, знает, что делает (а если не знает - может, туда ему и дорога?)
        И это скорее исключение, чем правило. Да и то, 90% сюрпризов будут скорее со стороны регулирующего государства, чем от coinкойна. Сюрпризы предсказуемые, если при наполнении первоначального бэклога хоть немного думать наперёд.


  1. varanio
    29.08.2022 21:47

    Необходимо ускорить и формализовать разработку;

    Необходимо приспособиться к быстро меняющимся требованиям и к реалиям бизнеса (классический случай для развития стартапов и всяких форексов);

    В обоих случаях скрам только мешает.

    тратится слишком много времени на оценку сроков и анализ того, а почему же сроки все равно продолбаны, несмотря на 100500 метрик и телодвижений

    Планирование раз в 2 недели - это очень далеко от гибкости. Гораздо эффективнее брать самую важную на данный конкретный день задачу