Начнем с экспозиции. В нашей компании продуктовая структура представляет из себя 9 продуктовых end-to-end команд общей численностью ~130 человек, работающих над развитием одного продукта.

Каждая из команд укомплектована всеми необходимыми компетенциями. Все они живут в одном релизном процессе, делают задачи из одного бэклога (и проекта в Jira), и следят за одним набором метрик в Amplitude.

В условиях такого тесного взаимодействия естественным образом возникает вопрос: А как оценивать их эффективность? Об этом мы и поговорим.

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

Эффективная продуктовая команда — та, которая выпускает классные (коммерчески успешные) продукты. Чтобы сделать классный продукт, нужно быстро поставлять качественные решения пользователям. То есть эффективность продуктовой структуры или команды можно оценить по двум факторам:

  1. Как быстро бежит команда? (Time to market)

  2. А туда ли она бежит? (Value)

Скорость команды

Для начала нужно понять, а что, собственно, мы хотим измерить в скорости работы команды. Время от идеи до релиза? Время от "взяли в работу" до "выпустили"? Давайте разложим основные этапы разработки любой крупной задачи на временную шкалу:

  • Генерация идеи — кто-то придумал что нужно сделать классную фичу.

  • Создана задача — об этой классной фиче впервые появился цифровой след, ее завели в Jira, Kaiten или Trello.

  • Взята в работу — та самая точка взятия обязательств командой. До этого момента работа над классной фичей по сути не велась.

  • Разработка закончена (Ready for Release) — все работы сделаны, фича готова к выпуску.

  • Релиз — релиз.

  • Аналитика & Обратная связь - этап, о котором многие забывают или игнорируют. Мало просто выпустить классную фичу, нужно обязательно собрать аналитику/данные/метрики и ответить на вопрос "а что она нам дала?". Может, вы ее зря делали :)

Теперь пойдем от обратного и поговорим о метриках на основе этой шкалы:

  • Dev Time — самая базовая единица измерения в нашей шкале. Показывает, сколько времени уходит на разработку/тестирование и подготовку фичи к релизу. Это самая честная и понятная метрика для команды, т.к. она на 100% находится в зоне ее влияния.

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

  • Cycle Time — от "взяли в работу" до "выпустили в прод". Первая из перечисленных метрик, которую можно ставить в KPI команды и мониторить ее на дашбордах. По ней видно, как быстро работает каждая из ваших команд.

Начинаем усложнять. Допустим с метрикой Cycle Time вы разобрались и даже улучшили до нужных значений.

  • Lead Time — следующий уровень. Сколько времени проходит от того, как мы завели задачу в бэклог до ее фактического выпуска? По опыту, Lead Time обычно кратно больше Cycle Time. И причина этому — долгое время ожидания очереди в бэклоге.

  • Time to Market — та самая фраза, которую вы слышите на митапах и конференциях. Научиться ее измерять — дело уже высшего пилотажа, и мало кому действительно удается. Вся сложность кроется в измерении самого первого этапа — генерации идеи. Как оцифровать тот самый момент, когда вы на совещании или по пути на работу придумали классную фичу и решили ее делать? Сколько дней или недель прошло до того момента, как эта фича появилась в бэклоге в Jira?

  • Time to Learn — сколько времени проходит от момента, когда классную фичу кто-то придумал до момента, когда по ней появились цифры в амплитуде. Показатель в большей степени характеризует с какой скоростью работает ваш бизнес/продукт в целом. Как быстро вы выпускаете новые продукты или проводите эксперименты?. Как быстро вы обрабатываете результаты этих запусков и делаете из них выводы? Как быстро вы потом можете обновить свои приоритеты и поменять свой курс? Этот показатель комплексно отвечает на вопрос "как быстро работает ваша компания". И разумеется, тот, кто работает быстрее — тот обычно и побеждает.

Справедливости ради отмечу, когда мы начинаем внедрять оценку эффективности команд в организации, то первым делом определяем приоритетные метрики. В нашем случае это — Lead Time, Cycle Time и Release Frequency. Мы сразу и честно себе признаем, что все что больше этого (Time to Market, Time To Learn), мы нормально посчитать сейчас не сможем, да и вряд ли сможем на них в ближайшей перспективе повлиять. Поэтому сразу убираем их из фокуса.

Далее, как технически измерить эти показатели? Очень просто — timestamp в Jira. Для того, чтобы собрать статистику по всем нашим командам, нам достаточно настроить автоматическую выгрузку из Jira нескольких временных кодов:

  • Дата создания задачи. Автоматически создается Jira в любой задаче.

  • Дата перевода задачи в статус In Progress. Также автоматически создается самой Jira.

  • Дата выпуска задачи в релиз. Сильно зависит от вашего релизного процесса. В нашем случае — в каждую задачу проставляется fix version. По нему определяем дату релиза и проставляем ее в выгрузке.

  • Тип задачи. Важно не забывать разделять метрики по типам задач и следить за ними отдельно. Ведь Cycle Time по багу нельзя сравнивать с Cycle Time новой фичи.

Итого, если настроить автоматическую выгрузку по всем этим параметрам и положить в простенький дашборд в том же Powerbi, то получаем простой, но результативный инструмент по отслеживанию эффективности ваших команд:

Скорость сжигания бэклога

Если возиться с Jira и считать метрики не хочется или не можется — есть альтернативный вариант. Считаем скорость сжигания бэклога продуктовыми командами. Метод до жути простой, но рабочий. Как говорится — "keep it simple, stupid" (принцип дизайн проектирования, принятый ВМС США).

Что делаем:

  1. Вводим в командах любую систему оценки задач. В сторипоинтах, в часах, в штуках — как вам нравится.

  2. В конце каждого спринта/итерации/месяца собираем два показателя: сколько планировали единиц в работу, сколько по факту выполнили. Строим из этих данных несложную таблицу или дашборд.

  3. Наглядно видим слабые места в системе, получаем массу фактуры для работы над улучшениями.

В нашем примере мы собираем статистику по закрытым сторипоинтам в спринт каждой команды. "Сжигаются" сторипоинты в момент, когда задача доезжает до статуса Ready for Release, то есть она оттестирована и готова, осталось только выложить в прод.

Здесь важно сказать, что любую систему можно довольно таки легко обмануть. И история с оценкой метрик не является исключением. Рано или поздно ваши команды найдут способ читерить с оценками, это неизбежно. Но. Как правило, первыми способами обойти систему будут положительные под предлогами — "а давайте нарезать таски на более мелкие", "а давайте меньше брать в спринт", "а давайте оставлять временной резерв на непредвиденные задачи и вбросы". Это приводит к положительному эффекту процесса разработки. Ведь действительно, нужно лучше декомпозировать задачи, не брать в работу то, что "не лезет", и оставлять время на исправление багов.

Вывод

В первой части мы разобрались с вопросом «как быстро мы бежим?». А это - только вершина айсберга. Можно бежать очень быстро, но бежать не туда или вообще бежать в стену. 

Во второй части расскажу как оценивать качество того, что создают продуктовые команды (и ответить на вопрос "а куда мы бежим?"), как правильно мотивировать их на достижение коммерчески успешных результатов в продукте.

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


  1. DrinkFromTheCup
    18.08.2022 16:17
    +8

    Эффективная продуктовая команда — та, которая выпускает классные (коммерчески успешные) продукты. 

    Эффективная продуктовая команда - та, которая справляется с поставленной перед ней задачей.
    В общем случае задача - обеспечить прибыль компании.
    Команда при этом может работать "в минус", может не поставлять вообще ничего, может поставлять некачественные (с точки зрения компании, не пользователя) решения раз в год от силы.
    Если от этого у компании в целом прирастает прибыль - продуктовая команда справилась со своей частью задачи.

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

    А вот и он, featurebloat driven development. Давно не виделись, здравствуй...
    "Классный продукт" - это такой продукт, который за разумную цену делает свой факинг джоб.
    "Быстрой поставке качественных решений" тут не место.
    Например, потому, что "быстро" - это иллюзия и чистый вред. Для пользователя. А значит, продукт уже не будет "классным".

    Мало просто выпустить классную фичу, нужно обязательно собрать аналитику/данные/метрики и ответить на вопрос "а что она нам дала?". Может, вы ее зря делали :)

    "Давно не виделись, здравствуй..." х2.

    Т. е. оценки потенциальной прибыльности ЗАРАНЕЕ - НЕ ПРОИЗВОДИТСЯ.

    При адекватном планировании этот этап идёт вторым пунктом, а не самым последним, когда претензии предъявлять уже не к кому.

    Дальше читать не стал. Статья смердит чайкингом и скрипом уключин.


  1. tt0uchq
    18.08.2022 16:40

    Тут еще вопрос "производственного процесса", выбранного командами в Jira, который определяет этапы в процессе перевода фич/эпиков/задач из одного состояния в другой, вплоть до Ready for release. У вас единые требования здесь? Одна методология для всех? Ведь где-то могут вводить апрувы или код ревью в процесс, где-то нет, в зависимости от зрелости команды, ее квалификации. И такой момент, можно делать быстро, но не качественно, как-то оцениваете качество?


    1. teplovden Автор
      18.08.2022 17:15
      +1

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


  1. funca
    19.08.2022 08:52

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

    Выигрывая в управляемости, снижается общая производительность.

    У задач есть ненулевые накладные расходы. Все это кратко растет с ростом их количества и количества контуров обратной связи.

    Команды со временем учатся торговаться и попадать в оценки (ага, полезный скилл), а эффективные менеджеры - получать бонусы за удержание проекта в зелёной зоне. Цена - сдвиг time to market далеко вправо. Впрочем, вы предлагаете его игнорировать, что оставляет наблюдать кругом лишь положительные, с точки зрения данной методологии, эффекты.