Привет, Хабр! Меня зовут Артур Темиров, я delivery‑менеджер в одном из продуктов X5 (о нём дальше в тексте). Над его созданием у нас трудятся 5 технических команд — в общей сложности это более 60 человек. В статье рассказываю о том, как визуализация является отправной точкой для эволюционного развития процессов, а также об ошибках, которые могут допускаться на этом пути.
Я не ставлю перед собой цели рассказать про успешное внедрение чего бы то ни было, про лучшие практики, которые всем подойдут и надо использовать именно их. Я вообще буду стараться не давать какие‑либо советы и, скорее, даже настаиваю на том, что это мой личный опыт и любое его повторение может (и будет) развиваться по другому сценарию. Заваривайте чай, наливайте свежесваренный кофе, готовьте смузи, устраивайтесь поудобнее, мы начинаем.
Контекст
Контекст очень важен, потому что он помогает понять, что может для вас сработать, а что — нет.
Мы создаём сложный IT‑продукт, под капотом которого находится достаточно большой пласт логики и данных. С помощью него бизнес‑пользователи могут сегментировать клиентскую базу, формировать и отправлять персональные предложения покупателям торговой сети «Пятёрочка», а также реализовывать различные механики по этим предложениям. На выходе благодаря нашему продукту покупатель получает наиболее интересное и выгодное предложение, а торговая сеть и поставщики — свои финансовые и маркетинговые эффекты. Команда продукта географически распределена и люди практически не пересекаются в оффлайне.
Для понимания привёл список ролей, задействованных в разработке продукта:
Роль |
Количество сотрудников |
---|---|
Бизнес-анализ |
5 |
Разработка front-end |
4 |
DevOps |
1 |
Системный анализ |
3 |
Тестирование |
6 |
Разработка back-end |
8 |
Delivery Manager |
3 |
Архитектор |
1 |
UX/UI |
2 |
Data Quality |
4 |
Data Engineering |
3 |
Data Science |
11 |
Data Analytics |
10 |
С чего всё начиналось
Ко мне обратилось руководство продукта, описав несколько проблем, с которыми они столкнулись на тот момент. Процитирую их:
У нас уходит единая точка входа в IT, нам нужна замена.
Одна из команд берёт в спринт задачи, но спустя две недели завершает 10-20% из взятых.
В целом нам не понятно, что происходит в части IT-разработки.
У бизнес-команд некому проводить ретроспективу.
Погрузившись в работу коллег, стало понятно, что между командами практически отсутствовала синхронизация. Все существовали только в рамках своих функциональных задач и не видели общую картину происходящего. Визуализация потока создания ценности отсутствовала как таковая.
Отсюда вытекало множество проблем:
Не было прозрачности взаимодействия между разными командами — визуализация заканчивалась задачами в Jira‑проектах команд, а что происходило у других команд...
Невозможно было ответить бизнесу на вопрос: «Когда будет готово?», т. к. оценка давалась каждой командой отдельно и не учитывала «передачу работы» из команды в команду.
Задачи брались в работу одной командой, после чего «вставали на холд», т. к. оказывалось, что для дальнейшей работы была нужна другая команда, которая не планировала эти работы.
Периодически происходили ситуации, когда одна команда что‑то разработала, выпустила в прод, а остальные узнавали об этом, когда от новой фичи ломался другой функционал.
Для бизнеса отсутствовала прозрачность взятия в работу новых задач.
Первые шаги
Я поставил перед собой главную цель – выстроить такую модель работы, когда общая визуализация процесса является не только единым местом правды и местом для синхронизации команд, но и источником данных, которые будут драйвером дальнейших изменений.
Оранжевые стикеры визуализировали ту самую ценность, которая была понятна бизнесу, а жёлтые стикеры показывали задачи, которые надо сделать в команде или командах для реализации этой ценности.
Визуализировав таким образом нашу работу, мы поставили еженедельные встречи, в ходе которых мы синхронизировались по задачам, находящимся в работе.
Дополнительно руками начали собирать «сырые» данные по задачам с целью дальнейшего построения метрик производства, а именно: накопительную диаграмму потока, спектральную диаграмму, контрольную диаграмму и пропускную способность. В конце статьи поделюсь шаблоном в Google Sheets — возможно, кому‑нибудь пригодится.
Про ошибки
Однако, всё было не так радужно, как может показаться. Поэтому считаю правильным поделиться и ошибками, которые допускались в процессе достижения цели. Основной ошибкой было то, как именно создавалась доска. Часть этапов на визуализации — мои галлюцинации. В продукте не было таких процессов, но на тот момент они казались такими нужными, и я не смог удержаться от искушения и не «запихнуть» их — ведь всем от этого будет лучше, да? НЕТ! Именно поэтому достаточно длительное время к доске не было эмпатии, у неё даже было имя «доска Артура» — думаю, это о многом говорит:‑) Да и в целом у людей не было понимания, для чего всё это делается.
Чтобы такого не возникло, правильным решением, я считаю, нужно проводить STATIK. Подробнее о нём написано: тут и тут. В нашем случае понимание ценности от такого решения пришло спустя примерно три месяца.
Следующий шаг
Дальше в нашей жизни появился Kaiten (не реклама, но если мне заплатят, я не против), в который мы перенесли все наши задачи.
Какое‑то время мы работали над улучшением визуализации нашего рабочего процесса:
Улучшали визуализацию карточек рабочих элементов. Цель улучшений — прозрачность всего пути создания ценности. В карточке хранятся: связи с дочерними элементами (те самые задачи в командах), бриф с этапа дискавери, бизнес‑требования, User Story (пишутся после БТ в некоторых командах), плановый и фактический срок реализации, метки, показывающие как системы, в которых идёт разработка, так и другую полезную для участников процесса информацию.
Убирали лишние этапы. Сделали процесс больше похожим на то, как он выглядит в реальности — без галлюцинаций.
Появилась встреча по пополнению системы. На этой встрече в присутствии всех заинтересованных принимается решение о том, какие задачи будут взяты в производство следующими. Деливери‑менеджер в начале встречи говорит, сколько задач можем взять в работу, а далее всеми заинтересованными принимается решение, что брать следующим. Это даёт прозрачность как бизнесу, так и представителям технических команд — можно лучше планировать свою работу.
Что дальше
Появившаяся визуализация послужила драйвером для дальнейших улучшений самого процесса.
Встречи по пополнению сначала проходили в формате «берём в работу задачи тех, кто громче кричит». Думаю, не стоит говорить о том, чем плох такой подход. Поэтому у нас появился скоринг задач по RICE и задачи на встрече по пополнению стали брать в работу, ориентируясь, в первую очередь, на скоринг.
Бизнесом регулярно стал подниматься вопрос: «Когда будет готово?». На тот момент мы не понимали реальных возможностей нашей системы, и давать сроки, ориентируясь на статистику, ещё не могли. В итоге мы решили в качестве эксперимента давать экспертные сроки. Результат: большая часть задач была просрочена, что подтвердило озвученное ранее — экспертные сроки не работают, т. к. не учитываются риски.
Пока шёл эксперимент с экспертной оценкой, у нас накопилось достаточно статистики и появилась новая встреча «Обзор сервиса поставки» — встреча, на которой мы все вместе смотрим на метрики производства, чтобы понять текущие возможности нашей системы и обсудить изменения в процессах или правилах. После серии таких встреч мы договорились перейти от экспертной оценки сроков к статистической, ориентируясь на 85-й процентиль.
Ответ на извечный вопрос был дан, но вот люди восприняли его по‑своему. С первого раза (да и со второго тоже) не удалось объяснить, что есть определённая вероятность времени выполнения задач и мы даём оценку, ориентируясь на эту вероятность. В нашем случае 85-й процентиль составлял 130 дней, которые трактовались так, что все задачи будут сделаны за 130 дней — не больше и не меньше. И это вносило свои сложности в коммуникацию.
Не могу сказать, что сейчас все одинаково понимают, что означает 85-й процентиль, но мы регулярно на «Обзорах сервиса поставки» проводим просветительскую работу. Хочется верить, что тот нарратив, который создаётся на встречах, сможет нам помочь прийти к одинаковому пониманию подхода к статистической оценке сроков.
Читателю готов предложить погрузиться в мир статистической оценки сроков, посмотрев эти видео:
Улучшение процесса за счёт работы с блокерами
Отдельно хочется рассказать про то, как мы выстроили процесс работы с блокерами. К сожалению, тут нас Kaiten подвёл: его функционал отчётности не смог предоставить нужные разрезы данных, поэтому мы самостоятельно руками готовим отчёт по блокерам в Google Sheets, а потом отдаём файл в BI.
В отчёте можно увидеть топ по количеству блокеров. Но, помимо количества, мы смотрим на сумму потраченного времени по этим кластерам, чтобы иметь более взвешенную картину.
Что мы получили от работы с блокерами
На примере блокера «Нет рук» мы договорились о внедрении WIP-лимитов (ранее их не было).
Узнать, что такое WIP-лимиты можно из этого видео:
Обоснование необходимости ограничить производство послужило два графика: количество блокеров «Нет рук» и сумма потраченного на него времени.
Можно проследить зависимость роста WIP и увеличения количества блокеров до ноября, с дальнейшим сокращением WIP после введения WIP-лимита:
Приведу отчётность по блокерам после ноября. Тут достаточно интересная ситуация. Видно, что картина по блокерам у нас ухудшилась и кажется, что принятые меры не помогли. Но реальность оказалась другой. Увидев пользу от блокеров и возможность обсудить возникающие проблемы, началась более ответственная фиксация блокеров, т. е. качество собираемых нами данными тоже начало расти со всеми вытекающими.
Второй по популярности блокер – «Зависимость от другой задачи». Это ситуация, когда задача взята в разработку, но конфликтует с другой задачей, т. к. в процессе разработки затрагивается один функционал и параллельная разработка невозможна.
В данном случае мы договорились об улучшении этапа дискавери, где по результату мы понимаем возможное влияние на микросервисы и при пополнении delivery‑системы учитываем эти нюансы перед взятием задач в работу. Кстати, описанная проблема обозначила нам точки роста для оптимизации в архитектуре нашего приложения.
И опять статистика после изменений показывает, что цифры не сильно изменились. Тут уже двоякая ситуация. Во‑первых, это улучшение качества фиксации блокеров. Во‑вторых, мы ещё находимся в процессе выстраивания Discovery и нам явно есть куда расти.
В качестве заключения
В статье я умышленно не упоминал Kanban‑метод, практиками и принципами которого я руководствовался в своей работе. Но, наверное, в заключение можно сказать спасибо методу и процитировать @pimenaus: что Kanban‑доски — это не только доски и стикеры, а значительное большее. Kanban‑доски дают нам визуализацию процесса работы, которая начинает показывать проблемные места, благодаря чему можно строить системную работу по эволюционным изменениям наших процессов.
Как и обещал, прикладываю ссылку на шаблон в Google Sheets.
reinmaker1990
Спасибо за статью, пара вопросов
Каковы твои обязанности как делевери, только работа с процессом и его улучшение, можешь более подробно описать свой пул работ(просто интересно)
Между дискавери процессом и деливери есть какие-то договорённости относительно подготовки требований или все собирают аналитики для команды, может есть общая сессия PBR с представителями бизнеса
Заметил большое количество тегов у задачи кто их поставляет?)
neonox Автор
Спасибо за вопросы. Отвечу по пунктам
Конкретно у меня пул работ достаточно обширный:
Я являюсь деливери лидом в рамках "большого продукта". Тут больше идет именно процессная работа. Дополнительно - работа с деливери, работающими в командах и решение различных проблем, которые мешают движению задач дальше по потоку.
Я являюсь деливери в одной из команд. Тут, помимо процессной части, идет непосредственная работа с командой, с людьми в команде, решение проблем с инфраструктурой, душевные диалоги с ИБ и т.п.
Также "подрабатываю" OKR-коучем в продукте. Тут на мне ведение всего процесса OKR: ретроспективы, формирование OKR, синхронизация и выравнивание OKR и т.п.
Сейчас у нас достаточно простой flow. Т.к. команда одна, то и люди в двух процессах участвуют практически одни и те же. На данный момент задача discovery — сократить уровень неопределенности и понять возможные риски. На этом этапе мы подготавливаем верхнеуровневое описание требований, смотрим на них с архитектором, понимаем, какие могут быть зависимости и как задача может декомпозироваться. После чего обсуждаем с РО и заказчиками дальнейшую судьбу инициативы. Либо она отменяется (понимаем, что делать не надо), либо принимается решение, что делать надо и тогда инициатива попадает в бэклог деливери. Тут еще можно рассказать про роль OKR во всем этом процессе, но это на отдельную статью выйдет))
Все, кому хочется))) Выставление тегов не регламентировано, поэтому в реальности добавить какие-то свои теги могут любые заинтересованные. Нам, как деливери, важно отслеживать теги, которые показывают систему/команду, в которой должна быть реализована задача. И для некоторых задач еще выставляем тег типа, к которому относится рабочий элемент, чтобы более точно давать оценки сроков, а не причесывать все задачи под одну гребенку.
reinmaker1990
Ответ №2, т.е команда с PO не обсуждает задачи? Если остаются вопросы на этапе планирования их закрывает БА?
neonox Автор
Зависит от контекста задачи. Можем привлекать лидов направлений (разработки, QA, etc), а не всю команду. Открытые вопросы могут закрывать различные роли: БА, СА, РО, деливери или любой другой член команды, который может помочь