Замеряем Cycle Time в команде дизайна или почему это не про «поругаться» на команду, чтобы работали быстрее?
Что такое Cycle Time в продуктовом дизайне, зачем он вообще нужен и почему это не про скорость сборки макетов. Рассказали лид продуктового веб-дизайна и менеджер-эксперт по развитию цифровых проектов T2.Digital.
Любая компания нацелена на то, чтобы выпускать свои крутые продукты на рынок как можно быстрее. И в этом деле важна скорость и производительность каждого этапа работы над продуктом. Сегодня расскажем про свой путь к замеру Cycle time команды продуктового дизайна, и про то, какие инсайты мы получили.
Немного про саму метрику и зачем ее считать
Cycle Time (далее по тексту CT) — это метрика, показывающая, сколько времени нужно кому-либо на решение задачи с момента ее появления до готовности. Иначе говоря, какова длина цикла работы над задачей.
Чем полезна метрика и цели ее измерения
- СТ показывает производительность команды и отдельных дизайнеров (смотрим также на расхождение плановых и фактических времязатрат на задачу, чтобы учиться точнее прогнозировать объем задачи и сроки ее решения, но это предельно простая вещь и сегодня не о ней);
- СТ и сопутствующие метрики позволяют находить зоны роста и узкие места;
- ретроспективные знания об СТ помогает эффективнее планировать время на задачи и управлять ожиданиями заказчиков.
Саму метрики мы считаем давно, но не всегда были в ней уверены, а еще у нас совсем не было автоматизации. Работая над автоматизацией измерения СТ и сопутствующих метрик, мы понимали, что будем искать в этих цифрах. Есть два варианта, чему может понадобиться лечение:
- несовершенство процессов;
- недостаток ресурсов.
Второе лечится одновременно сложно и просто: выделением доп. ресурса. А вот у первого есть много развилок, и вы сами определяете, что именно поможет конкретно в вашем кейсе:
- автоматизация процессов / более точная настройка используемых инструментов;
- улучшение процесса коммуникации и обмена информацией между участниками процесса работы;
- декомпозиция крупных задач;
- перестройка бизнес-процессов;
- как-то еще.
Конечно же, вы выбираете зону влияния, опираясь на проблему, которая у вас есть и которую вы обнаружили при анализе (об этом можно написать отдельную статью, но не сегодня).
Какие есть нюансы при расчете метрики
В конце прошлого года мы пошли на радикальные изменения в подходе к измерению СТ. Вот какие вопросы нам пришлось решить на «нулевом» шаге этого подхода:
1. Нужно четко договориться, что для вас «момент появления задачи», а что «готовность задачи». Для разных команд это могут быть разные отметки.
Например, для нас «момент появления задачи» — это время, когда заказчик принес задачу лиду дизайна на планирование. А «готовность задачи» — это время, когда она согласована по всем инстанциям и готова для передачи команде разработки.
2. Нужно быть технически готовыми к измерению СТ, иначе метрика будет грязной.
Например, если ваша команда все еще не вовремя двигает карточки в Jira, то у нас для вас плохие новости — ваш СТ может быть грязным и, как следствие, неправдивым. С таким СТ работать нет никакого смысла.
3. Нужно договориться, как вы будете считать и интерпретировать метрику, и какие у вас финальные цели измерения СТ.
Вы хотите просто сокращать СТ, чтобы делать больше, или у вас есть косвенные цели (например, быстрое прогнозирование сроков)? Вы будете считать метрику как среднее арифметическое или как-то иначе? Несложно догадаться, что от ответа на первый вопрос зависит ответ на второй.
Как мы считаем СТ
Формула измерения СТ для нас:
СТ = ПЕРЦЕНТИЛЬ([выборка]; 0,75)
Почему перцентиль, а не среднее арифметическое? Потому что это позволяет нам откинуть выбросы и с уверенностью интерпретировать метрику так: «задачи такого объема в 75% случаев мы делаем за n дней».
Итого, наша ключевая цель внедрения измерения СТ — это прозрачно управлять ожиданиями заказчика по срокам работы и знать, как его сократить.
Что делаем с этой цифрой дальше:
- декомпозируем СТ на более мелкие метрики, которые помогут нам разглядеть зоны роста;
- сегментируем задачи по размерности — определяем, что для нас маленькая задача, а что большая;
- для каждого сегмента отдельно считаем СТ и сопутствующие метрики — с этими метриками и работаем;
- для каждого сегмента определяем референсные значения СТ — это поможет нам ретроспективно сделать срез по тем задачам, в которых наблюдается отклонение, и поискать причины этих отклонений.
Как мы к этому пришли, и как это работает? Сейчас расскажем.
Шли, шли и дошли до измерения Cycle time
Крутая доска с кучей столбцов со статусами работы, которая как раз и позволяет декомпозировать СТ на четкие этапы, была у нас далеко не всегда. В этом разделе расскажем про свой путь к замеру метрики и ее анализу.
Примерно 3 года назад мы отмечали время по задачам в табличке Excel. Там мы описывали, сколько у нас займет задача. В столбцах у нас были даты спринта. Мы отмечали, сколько часов потратили в тот или иной день на задачу и писали комментарии, что было сделано. Это было не очень удобно, на каждый спринт была отдельная страничка. И в какой-то момент их стало слишком много — нам стало трудно ориентироваться. А если задача не закрывалась за спринт (а такое бывает, и это нормально), было неудобно переносить ее на другую страницу и переоценивать.
Позже у нас появилась доска в таск-трекере со статусами задач, но их было очень мало: бэклог, doing (активная работа над задачей), согласование и закрытие. В целом, для верхнеуровневой декомпозиции СТ по этапам этого достаточно. Но нам казалось, что на таком уровне декомпозиции «мы и сами знаем, что у нас хромает». На доске мы могли вписывать, сколько времени планируем потратить на задачу и сколько фактически затратили. При этом мы все равно продолжали параллельно пользоваться Excel, для нас это было удобнее, привычнее. На тот момент мы не видели пользы в таск-трекере по сравнению с Excel. А еще давайте признаем, что все новое и непонятное внедряется с большим трудом, и нам просто не хватило мотивации.
Около года назад команда дизайна пришла к проджект-менеджерам за помощью по доске и отслеживанию этого самого CT. Тогда мы всерьез взялись за дело, и вот, что внедрили:
- Детализированную структуру доски и процесс работы с ней.
- Систему оценки трудозатрат по задаче и процесс трека времени, потраченного на задачу фактически.
- Процесс планирования с использованием доски.
- Систему метрик, расчет которых стал возможен благодаря всем пунктам выше.
- Систему сегментов: разделение задач по размерности и определение референсных значений СТ для каждой группы. Так мы точечно работаем с выбросами в каждой из групп и ищем зоны роста не только на усредненных цифрах.
Первое, что нас порадовало после переезда на доску и внедрения процесса работы с ней, — это автоматические запросы из нашего таск-трекера. Например, один из них помогает в два клика получить выгрузку в формате таблицы со всеми закрытыми задачами за нужный период времени. У каждой задачи видно название, исполнителя, планируемые и затраченные часы. С помощью нехитрых манипуляций мы можем посчитать точность прогноза. Это уже позволило нам понять, насколько мы хорошо оцениваем трудозатратность задачи и прогнозируем загрузку (спойлер: и то, и другое мы делаем хорошо).
А полгода назад с помощью команды аналитиков мы собрали полноценный дашборд, в котором есть подробный отчет по CT. Можно смотреть на то, как меняется общий CT с течением времени, и на каком из этапов задачи проводили больше времени. Можно даже смотреть это по каждому стриму (продуктовой команде) по отдельности.
Это очень удобно и пол — мы регулярно собираемся, чтобы вместе поштормить над данными. В первых итерациях было очень интересно на цифрах увидеть то, что мы чувствовали интуитивно. У нас не сразу появилась декомпозиция СТ по этапам в дашборде. Вручную считать это было технически невозможно. Но нам сразу хотелось видеть, где еще задерживается задача, поэтому мы придумали хитрое решение. Мы внедрили регулярную активность в начале каждого месяца. Мы смотрим на СТ закрытых за прошлый месяц задач, по которым мы выбиваемся из референсного значения (и их, к сожалению, оказалось очень много). Как это было:
- Мы взяли выгрузки с закрытыми задачами за предыдущий период из нашего такс-трекера и рассчитали по каждой из них СТ.
- Определили референсные значения и сделали «срез» задач, которые в эти референсные значения не попадают.
- По задачам, которые попали в срез, провели анализ причин отклонений.
Немного про референсные значения
Во-первых, мы разделили задачи на 4 категории: s, m, l и xl. Категории присваивали задачам в соответствии с объемом списанного времени на них в часах. Категории в каждой компании (или даже каждой команде) могут быть свои. Вот, какие получились у нас:
Во-вторых, для каждой категории определили, сколько дней мы готовы сейчас заложить на задачу: от ее постановки заказчиком до финального согласования. Покрутив ретроспективные данные мы поняли, какие цифры для нас будут давать объективный срез. Важно, что те цифры, которые мы подобрали, были очень лояльными, потому что мы только делаем первый подход к этой активности. Вот, что мы взяли за основу:
- Считаем, что задача, на которую нужно потратить 10 часов ручной работы и меньше, должна быть сделана и согласована максимум за спринт (14 дней).
- Делаем поправку на 30% дней сверху на форс-мажоры.
И вот тут мы подбираемся к кульминации нашего рассказа.
Что мы сделали и поняли?
По очень многим задачам команда веба выбивалась из референсных значений CT. Первая мысль — значит, на нашем этапе мы задерживаем всю остальную работу, хотя точно можем быстрее и эффективнее. И, казалось бы, уже пора бежать к команде и говорить «работайте быстрее, цифры должны быть меньше». Но не тут-то было. Ко всему надо подходить осознанно. Что мы и сделали.
Напомним, что у нас не сразу была декомпозиция СТ по этапам. Внутреннее «путешествие» задачи по статусам и столбцам на доске оставалось только у дизайнеров и лидов в памяти. А это не самый надежный источник, если мы захотим вспомнить, что было несколько месяцев назад.
Мы продолжаем улучшать дашборд, и недавно смогли смотреть не на общий CT, а на то, сколько дней задача провела в бэклоге в активной работе, внутреннем согласовании с продакт-менеджером, согласовании с бизнесом и прочими ревью. Это дало нам почву для более глубокого анализа и позволило понять, на каком же статусе задачи проводят больше всего времени.
Покопавшись в данных, мы выявили несколько причин, по которым cycle time дизайна выходил за пределы референсных значений:
- Долгое ожидание графики. Мы часто ставим задачи нашим коллегам из коммуникационного дизайна, чтобы они отрисовали для наших интерфейсов графику. Сейчас у нас используется преимущественно 3D-стиль, и конечно же рендеринг всего этого дела занимает немало времени. Поскольку графика — часть интерфейса, время на ее подготовку тоже учитывается в нашем CT, ведь финальных макетов без графики быть не может.
Долгие согласования с заказчиками/бизнесом. Это тот самый этап, когда макеты подготовлены, внутри с продактом согласованы, и вот настает время показывать интерфейс бизнес-заказчикам. Нередко мы сталкиваемся с ситуацией, что коллеги долго оставляют комментарии, потому что собирают консолидированную обратную связь.
- Нахождение в бэклоге. Иногда продакт-менеджеры приносят за раз много задач, и не все они могут попасть в спринт из-за ресурсов или приоритизации. Поэтому бывает и такое, что CT растет из-за того, что какое-то время задача не берется в спринт, а просто «не влезает». Это подсвечивает ресурсную проблему, но не говорит о том, что команда работает медленно.
- Нахождение в холде. Может быть и такое, что задача на дизайн пришла, макеты подготовлены, но задача ставится на холд. Это может возникнуть, например, когда задачу забрали на исследование перед проработкой дизайна, в стриме/команде появились более приоритетные задачи, а работу над прошлой приостановили. Или захолдить задачу можно в самом начале пути, например, когда мы ждем от заказчиков или партнеров уточнений или ответов на вопросы. Это может занимать больше времени, чем кажется, а часики уже «тикают».
Все это значит, что Cycle time гораздо более обширное понятие, чем «быстрая работа дизайнеров». Он про полный цикл проектирования интерфейса, а не только про то, сколько дизайнер «рисует» интерфейс руками. Поэтому бежать к команде за тем, чтобы поторопить с проектированием и ускорить работу, не всегда правильная стратегия.
Конечно же, ближайшие шаги — это поработать с теми зонами роста, которые мы нашли в процессе анализа. Давайте по пунктам.
- Долгое ожидание графики. Мы сразу «оцифровали» это наблюдение и добавили отдельный столбец для отслеживания времени, сколько мы ждем графику.
Если вы переживаете за размер нашей доски, то не переживайте! Мы на том этапе, когда доска — наш подручный инструмент, и мы к нему уже привыкли.
Долгие согласования с заказчиками/бизнесом. Здесь мы идем в доработку процесса согласования макетов с заказчиком:
- Вместе с продактами команд говорим о том, кто принимает финальное решение в согласовании макетов (если заказчиков несколько) и как это происходит сейчас (сверяемся в понимании процесса As is).
- Фиксируем процесс согласования макетов на бумаге — кто, как и когда их согласовывает (рисуем процесс to be и внедряем его).
- Внедряем важное правило: никогда не уходим в бесконечное согласование в комментариях — проводим 1-2 встречи для согласования (две в случае большого количества комментариев, принятых к обработке).
- Нахождение в бэклоге. В нашем случае — ресурсная, а не процессуальная проблема. Здесь можно только подсветить вышестоящим руководителям на цифрах, что у нас не хватает ресурса охватить весь бэклог. Кстати, без цифр это было бы показать сложнее.
- Нахождение в холде. Холд — это вынужденное состояние задачи, от нас не зависящее. Но тут важно убедиться, что все одинаково понимают, что такое холд, и что туда задачи попадают справедливо.
А дальше что?
- Работаем над сокращением СТ.
У нас сейчас достаточно инструментов и данных, чтобы вовремя замечать узкие места. Делаем из референсных дат прогнозные и регулярно сокращаем это значение.
На текущей ступени эволюции (когда у нас не так много чистых ретроспективных данных) мы используем рефересные значения только для того, чтобы сделать срез задач, которым стоит уделить пристальное внимание. То есть сейчас для нас референс — это цифра, к которой мы стремимся, а не прогноз.
Чуть позже мы будем относиться к ним как к прогнозным значениям для разных групп задач. При этом важно понимать, что рефренс/прогноз не может быть константой — он зависит от текущей динамики СТ. В идеальном мире наш референс = нашему текущему СТ (0,75 перцентилю), а анализируем мы отклонения только у 25% задач, которые вышли за его рамки.