Так увидела суть моей статьи нейросеть Midjourney
Так увидела суть моей статьи нейросеть Midjourney

Привет, Хабр! Меня зовут Артур Темиров, я 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‑проектах команд, а что происходило у других команд...

  • Невозможно было ответить бизнесу на вопрос: «Когда будет готово?», т. к. оценка давалась каждой командой отдельно и не учитывала «передачу работы» из команды в команду.

  • Задачи брались в работу одной командой, после чего «вставали на холд», т. к. оказывалось, что для дальнейшей работы была нужна другая команда, которая не планировала эти работы.

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

  • Для бизнеса отсутствовала прозрачность взятия в работу новых задач.

Визуализация, с которой работали команды
Визуализация, с которой работали команды

Первые шаги

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

Визуализация в miro
Визуализация в Miro

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

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

Дополнительно руками начали собирать «сырые» данные по задачам с целью дальнейшего построения метрик производства, а именно: накопительную диаграмму потока, спектральную диаграмму, контрольную диаграмму и пропускную способность. В конце статьи поделюсь шаблоном в Google Sheets — возможно, кому‑нибудь пригодится.

Про ошибки

Первые эмоции
Первые эмоции

Однако, всё было не так радужно, как может показаться. Поэтому считаю правильным поделиться и ошибками, которые допускались в процессе достижения цели. Основной ошибкой было то, как именно создавалась доска. Часть этапов на визуализации — мои галлюцинации. В продукте не было таких процессов, но на тот момент они казались такими нужными, и я не смог удержаться от искушения и не «запихнуть» их — ведь всем от этого будет лучше, да? НЕТ! Именно поэтому достаточно длительное время к доске не было эмпатии, у неё даже было имя «доска Артура» — думаю, это о многом говорит:‑) Да и в целом у людей не было понимания, для чего всё это делается.

Чтобы такого не возникло, правильным решением, я считаю, нужно проводить STATIK. Подробнее о нём написано: тут и тут. В нашем случае понимание ценности от такого решения пришло спустя примерно три месяца.

Следующий шаг

Дальше в нашей жизни появился Kaiten (не реклама, но если мне заплатят, я не против), в который мы перенесли все наши задачи.

Пример визуализации карточки в Kaiten
Пример визуализации карточки в Kaiten

Какое‑то время мы работали над улучшением визуализации нашего рабочего процесса:

  • Улучшали визуализацию карточек рабочих элементов. Цель улучшений — прозрачность всего пути создания ценности. В карточке хранятся: связи с дочерними элементами (те самые задачи в командах), бриф с этапа дискавери, бизнес‑требования, User Story (пишутся после БТ в некоторых командах), плановый и фактический срок реализации, метки, показывающие как системы, в которых идёт разработка, так и другую полезную для участников процесса информацию.

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

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

Что дальше

Начинаем работать с метриками системы производства
Начинаем работать с метриками системы производства

Появившаяся визуализация послужила драйвером для дальнейших улучшений самого процесса.

  1. Встречи по пополнению сначала проходили в формате «берём в работу задачи тех, кто громче кричит». Думаю, не стоит говорить о том, чем плох такой подход. Поэтому у нас появился скоринг задач по RICE и задачи на встрече по пополнению стали брать в работу, ориентируясь, в первую очередь, на скоринг.

  2. Бизнесом регулярно стал подниматься вопрос: «Когда будет готово?». На тот момент мы не понимали реальных возможностей нашей системы, и давать сроки, ориентируясь на статистику, ещё не могли. В итоге мы решили в качестве эксперимента давать экспертные сроки. Результат: большая часть задач была просрочена, что подтвердило озвученное ранее — экспертные сроки не работают, т. к. не учитываются риски.

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

Ответ на извечный вопрос был дан, но вот люди восприняли его по‑своему. С первого раза (да и со второго тоже) не удалось объяснить, что есть определённая вероятность времени выполнения задач и мы даём оценку, ориентируясь на эту вероятность. В нашем случае 85-й процентиль составлял 130 дней, которые трактовались так, что все задачи будут сделаны за 130 дней — не больше и не меньше. И это вносило свои сложности в коммуникацию.

Не могу сказать, что сейчас все одинаково понимают, что означает 85-й процентиль, но мы регулярно на «Обзорах сервиса поставки» проводим просветительскую работу. Хочется верить, что тот нарратив, который создаётся на встречах, сможет нам помочь прийти к одинаковому пониманию подхода к статистической оценке сроков.

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

Улучшение процесса за счёт работы с блокерами

Отдельно хочется рассказать про то, как мы выстроили процесс работы с блокерами. К сожалению, тут нас Kaiten подвёл: его функционал отчётности не смог предоставить нужные разрезы данных, поэтому мы самостоятельно руками готовим отчёт по блокерам в Google Sheets, а потом отдаём файл в BI.

Отчет в BI по блокерам
Отчёт в BI по блокерам

В отчёте можно увидеть топ по количеству блокеров. Но, помимо количества, мы смотрим на сумму потраченного времени по этим кластерам, чтобы иметь более взвешенную картину.

Что мы получили от работы с блокерами

На примере блокера «Нет рук» мы договорились о внедрении WIP-лимитов (ранее их не было).

Узнать, что такое WIP-лимиты можно из этого видео:

Обоснование необходимости ограничить производство послужило два графика: количество блокеров «Нет рук» и сумма потраченного на него времени.

Количество блокеров и сумма потраченного времени
Количество блокеров и сумма потраченного времени

Можно проследить зависимость роста WIP и увеличения количества блокеров до ноября, с дальнейшим сокращением WIP после введения WIP-лимита:

Накопительная диаграмма потока
Накопительная диаграмма потока

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

Отчетность по блокеру "Нет рук" с 12.22
Отчётность по блокеру "Нет рук" с декабря 2022г.

Второй по популярности блокер – «Зависимость от другой задачи». Это ситуация, когда задача взята в разработку, но конфликтует с другой задачей, т. к. в процессе разработки затрагивается один функционал и параллельная разработка невозможна.

Статистика блокера "Зависимость от другой задачи"
Статистика блокера "Зависимость от другой задачи"

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

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

В качестве заключения

В статье я умышленно не упоминал Kanban‑метод, практиками и принципами которого я руководствовался в своей работе. Но, наверное, в заключение можно сказать спасибо методу и процитировать @pimenaus: что Kanban‑доски — это не только доски и стикеры, а значительное большее. Kanban‑доски дают нам визуализацию процесса работы, которая начинает показывать проблемные места, благодаря чему можно строить системную работу по эволюционным изменениям наших процессов.

Как и обещал, прикладываю ссылку на шаблон в Google Sheets.

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


  1. reinmaker1990
    01.06.2023 15:12

    Спасибо за статью, пара вопросов

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

    • Между дискавери процессом и деливери есть какие-то договорённости относительно подготовки требований или все собирают аналитики для команды, может есть общая сессия PBR с представителями бизнеса

    • Заметил большое количество тегов у задачи кто их поставляет?)


    1. neonox Автор
      01.06.2023 15:12

      Спасибо за вопросы. Отвечу по пунктам

      • Конкретно у меня пул работ достаточно обширный:

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

        • Я являюсь деливери в одной из команд. Тут, помимо процессной части, идет непосредственная работа с командой, с людьми в команде, решение проблем с инфраструктурой, душевные диалоги с ИБ и т.п.

        • Также "подрабатываю" OKR-коучем в продукте. Тут на мне ведение всего процесса OKR: ретроспективы, формирование OKR, синхронизация и выравнивание OKR и т.п.

      • Сейчас у нас достаточно простой flow. Т.к. команда одна, то и люди в двух процессах участвуют практически одни и те же. На данный момент задача discovery — сократить уровень неопределенности и понять возможные риски. На этом этапе мы подготавливаем верхнеуровневое описание требований, смотрим на них с архитектором, понимаем, какие могут быть зависимости и как задача может декомпозироваться. После чего обсуждаем с РО и заказчиками дальнейшую судьбу инициативы. Либо она отменяется (понимаем, что делать не надо), либо принимается решение, что делать надо и тогда инициатива попадает в бэклог деливери. Тут еще можно рассказать про роль OKR во всем этом процессе, но это на отдельную статью выйдет))

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


      1. reinmaker1990
        01.06.2023 15:12

        Ответ №2, т.е команда с PO не обсуждает задачи? Если остаются вопросы на этапе планирования их закрывает БА?


        1. neonox Автор
          01.06.2023 15:12

          Зависит от контекста задачи. Можем привлекать лидов направлений (разработки, QA, etc), а не всю команду. Открытые вопросы могут закрывать различные роли: БА, СА, РО, деливери или любой другой член команды, который может помочь