Кластеризация зависимостей - обо что спотыкается ваше delivery — презентация
logo
Кластеризация зависимостей - обо что спотыкается ваше delivery
  • Кластеризация зависимостей - обо что спотыкается ваше delivery
  • Ура, я опять выступаю
  • Нафига вам этот доклад?
  • TL&DR
  • Что такое зависимость?
  • Зависимость (в потоке поставки ценности) - Это препятствие, решение которого блокирует движение рабочего элемента по потоку поставки.
  • Кластеризация зависимостей - обо что спотыкается ваше delivery
  • Особенности в интеллектуальном труде
  • В чём отличие физического труда/производства от интеллектуального?
  • Какие бывают зависимости ч1?
  • Какие бывают зависимости ч2?
  • Как работать с зависимостями?
  • Выявляем: самый лучший вопрос на Daily
  • Фиксируем
  • Визуализируем
  • Обозреваем: лучший вопрос на SDR
  • Анализ зависимостей
  • А нализ зависимостей 1 - База
  • А нализ зависимостей 2 - Динамика
  • А нализ зависимостей 3 - Кроличья нора
  • Как мы поменяли процесс работы с зависимостями
  • Что было
  • As Is
  • Почему меняли
  • Что сделали
  • Новая точка входа
  • Форма при блокировке
  • Автоматизация под капотом
  • Новая точка выхода
  • Форма при разблокировке
  • Что получили
  • Нормальные данные
  • Удобство
  • Планы
  • Оставьте вашу ОС И задавайте вопросы
1/35

Первый слайд презентации

Кластеризация зависимостей - обо что спотыкается ваше delivery

Изображение слайда

Слайд 2: Ура, я опять выступаю

https://t.me/LeninKerrigan Илья Смирнов В hh отвечаю за эффективность поставки соискательских продуктов. Сайт hh.ru и мобильные приложения “hh работа”, маркетплейс экспертов и Карьерную Платформу (career.ru). А также занимаюсь системными процессами в Product & Tech департаменте. Delivery Lead в HeadHunter Организатор сообщества Delivery менеджеров в СПб. Приходите на наши митапы - https://t.me/delivery_community_spb Delivery Community SPB

Изображение слайда

Слайд 3: Нафига вам этот доклад?

Изображение слайда

Слайд 4: TL&DR

Ключевая мысль. Системное управление зависимостями - один из ключевых процессов(!) повышения эффективности поставки ценности. Теория. Расскажу, что такое зависимости, как с ними работать, визуализировать и анализировать. Коротко, что будет в этом докладе и зачем вам его слушать. Практическая реализация. Поделюсь как мы обновили процесс работы с зависимостями в Jira и что нам это дало. З.Ы. На слайдах будет много текста. Можете не читать, самое главное я скажу словами, он нужен, чтобы все эти знания можно было получить только по презентации, без моего голоса. Презентацию я выложу в открытый доступ после митапа.

Изображение слайда

Слайд 5: Что такое зависимость?

Изображение слайда

Слайд 6: Зависимость (в потоке поставки ценности) - Это препятствие, решение которого блокирует движение рабочего элемента по потоку поставки

© Илья Смирнов

Изображение слайда

Слайд 7

UpStream DownStream Точка принятия обязательств Problem Discovery Solution Discovery Solution Delivery Post Production Опцион Коммитмент Feature Feature Feature Feature Feature Feature Feature Feature Feature

Изображение слайда

Слайд 8: Особенности в интеллектуальном труде

Изображение слайда

Слайд 9: В чём отличие физического труда/производства от интеллектуального?

Разный контекст. В интеллектуальном труде поставка каждого рабочего элемента происходит в отличном контексте, стек, legacy, экспертиза… Разные зависимости. В процессе работы над задачами сервисы будут сталкиваться с разными проблемами, которые будут блокировать их работу. Коротко - в интеллектуальном труде нет двух одинаковых работ. Разное время поставки. В конечном счёте, это будет приводить к тому, что все задачи решаются за очень разное время, которое может отличаться в разы, а не в пределах некоей небольшой погрешности в несколько процентов. Это делает невозможным аналоговое и параметрическое прогнозирование времени поставки готовой для клиента ценности.

Изображение слайда

Слайд 10: Какие бывают зависимости ч1?

Внутренние зависимости. То, что находиться в зоне влияния сервиса и может быть решено им самостоятельно и независимо от других сервисов. Типичные примеры: Отпуска, DayOff, больничные, праздники Переключения на более важные работы Узкое горлышко внутри сервиса (Ждём своего QA) Внешние зависимости. То, что находится за пределами влияния сервиса и не может быть решено самостоятельно. Типичные примеры: Функции - Юристы, Служба безопасности, бухгалтерия Сервисы - Другая команда внутри общей бизнес-линии Организации - Подрядчики, контрагенты, поставщики Заказчик… Все зависимости с которыми сталкиваются сервисы поставки делятся на два типа “по принадлежности” :

Изображение слайда

Слайд 11: Какие бывают зависимости ч2?

FS (Finish -> Start). Пока не будет устранено препятствие - невозможно начать работы, перевести задачу из буфера на следующий этап. FF (Finish -> Finish). Пока не будет устранено препятствие - невозможно закончить работы, перевести задачу из активного статуса в буфер. Также зависимости деляться по тому блокируют они начало работ или окончание работ : Solution Delivery Solution Discovery Discovery :: In Progress Discovery :: Done Delivery :: In Progress Delivery :: Done FS FF

Изображение слайда

Слайд 12: Как работать с зависимостями?

Изображение слайда

Слайд 13: Выявляем: самый лучший вопрос на Daily

Позволяет выявлять зависимости. Обычно вы будете слышать - “Ничего, мы работаем”. Но если это любой другой ответ, это потенциальная зависимость. В фокусе поставка - а не загрузка людей. Мы не концентрируемся не на том, кто чем занят, не утилизируем ресурс. Мы фокусируем команду на поставке ценности по конкретной задаче. “ Что нам мешает подвинуть эту задачу правее? ” © Джейсон Стэтхэм

Изображение слайда

Слайд 14: Фиксируем

В виде связи. Если препятствием является уже существующая в вашей система задача (редкий кейс) - эти работы нужно связать через связь с типом “блокирует”. В виде блокера. Если препятствие не является уже существующей задачей - рекомендуем вам создать отдельный проект “Blockers” в вашем таск трекере и заводить туда “Блокеры” о которые спотыкаются ваши задачи. Чтобы визуализировать факт зависимости, её сначала нужно зафиксировать

Изображение слайда

Слайд 15: Визуализируем

На доске. Даже беглый взгляд на доску должен давать понять, что та или иная работа - заблокирована. Физ доска - повесьте красный стикер поверх Jira - “Поставьте задачу на флаг” Другой таск трекер - покрасьте стикер в красный Уведомления. Если у вас есть стейкхолдеры, заказчики или иные лица которым важны эти работы - пришлите им автоматическое уведомления о блокировке в том формате, который будет им удобне. Теперь, все вокруг должны узнать, что ваша работа заблокирована

Изображение слайда

Слайд 16: Обозреваем: лучший вопрос на SDR

No Blame. Принимаем препятствие с которым столкнулись как данность, никого в этом не обвиняем. Пытаемся изменять систему, чтобы в ней больше не было таких проблем. Локус контроля. Отталкиваемся от возможностей нашего сервиса, нашей команды, что можем сделать мы. Внутренние зависимости - сами меняем правила своей работы. Внешние зависимости - эскалируем. “ Что мы можем сделать, чтобы больше не сталкиваться с такими препятствиями? ” Выделение типов. Наиболее частые причины блокировок стоит выделять в “типы” и присваивать их на обзоре сервиса поставки. Чтобы в последствии мы могли проводить анализ на их основе.

Изображение слайда

Слайд 17: Анализ зависимостей

Изображение слайда

Слайд 18: А нализ зависимостей 1 - База

Локальные оптимумы. Есть ли “низко висящие фрукты” в сервисах или пора задумываться о системных изменениях? “ Соотношение количества внутренних и внешних зависимостей ” поможет ответить на этот вопрос. Условно, если 75+% зависимостей - внутренние, наверное рано говорить про локальные оптимумы… Проблемные этапы. У нас проблемы с Discovery или Delivery? Метрики: “ Соотношение кол-ва блокировок по этапам ” “ Соотношение длительности блокировок по этапам ” Помогут ответить на этот вопрос с помощью данных, а не ощущений. По мере работы с зависимостями начнёт копиться статистика, её анализ позволит найти системные проблемы и точки роста. Узкие горлышки. Какие самые проблемные точки в нашей системе? “ Соотношение блокировок по типам ” которые мы выявляли на обзоре сервиса поставки - поможет с ответом на этот вопрос. Это и есть, “та самая” кластеризация.

Изображение слайда

Слайд 19: А нализ зависимостей 2 - Динамика

Время блокировок. А как много времени вообще задачи ждут в блоке ? Вы точно столкнётесь с таким вопросом. Метрики: “ Общая длительность блокировок за период ” “ Средняя длительность блокировки ” помогут в этом разобраться. Эти показатели хорошо бы отслеживать в динамике. Частота блокировок. Общее количество блокировок мало о чём говорит, этот показатель надо смотреть как “ Соотношение пропускной способности и кол-ва блокировок ” Например 25% от всех задач - имели зависимости, это - понятный ответ. Важно не только проводить анализ системы за некий выбранный период, но и следить за динамикой во времени. Хорошая динамика : Средняя длительность блокировок снижается, частота блокировок снижается, становиться больше внешних зависимостей. Ну и наоборот Плохая динамика : Средняя длительность растёт, частота растёт, становится больше внутренних зависимостей.

Изображение слайда

Слайд 20: А нализ зависимостей 3 - Кроличья нора

Типы внутри этапов. Выделите отдельные типы блокировок для каждого этапа поставки и работайте над эффективностью поставки каждого этапа независимо. Общее / частное. Частностность типов можно разложить по сервисам поставки. Например, что этот тип зависимостей встречается только в 20% сервисов, а другой в 90% и возможно, это общая для системы проблема, которую нужно решать сообща. Упороться в анализ блокировок можно очень глубоко, чаще у вас будут более очевидные источники проблем, но если вы их всё же исчерпали, то: Антирейтинги и SLE. СПОРНО. Вы можете выявить сервисы и команды, у которых частотность и длительность блокировок значительно выше, чем у других и поработать над этим.

Изображение слайда

Слайд 21: Как мы поменяли процесс работы с зависимостями

Изображение слайда

Слайд 22: Что было

Изображение слайда

Слайд 23: As Is

Флаг. Задача считается заблокированной, если она “поставлена на флаг”. Флаг ставится прямо с доски через контекстное меню по клику ПКМ на карточку задачи. Автоматизация блокировки. На триггер постановки флага в проекте с продуктовыми фичами завязана автоматизация, которая создаёт задачу в проекте “Blocker” и линкует её с заблокированной. Как работал наш процесс в Jira раньше: Автоматизация разблокировки. По клику на “Remove Flag”, триггерится автоматизация которая ищет связанную задача в проекте Blocker в активном статусе и двигает её в Done. Рассчёт времени. Время блокировки считается как время задачи “блокера” в активном статусе.

Изображение слайда

Слайд 24: Почему меняли

Типизация не ведётся. У задач типа “блокер” есть типизация, но её заполняются в 0,2% случаев заведения блокеров. “Просто добавить” поле на экран установки флага - нельзя. Задачу закрыли - блокер нет. Блокировка не имеет никаких ограничений на передвижение задачи по статусам. По этому регулярны случаи, когда фича уже закрыта, а её блокер все ещё не нет. Начали более плотно заниматься Data Driven и поняли, что с данными беда… Не метчится с реальностью. Блокировки заводили не в момент появления зависимости, а в момент “Когда менеджер спросил”. Между этими временными точками иногда разница в пару часов, а иногда узнаём о том, что блокер вообще был постфактум, на обзоре сервиса или Operations Review…

Изображение слайда

Слайд 25: Что сделали

Изображение слайда

Слайд 26: Новая точка входа

Самое главное что нам было нужно - это получить 100% заполняемость типа блокировки. Для этого это поле нужно было сделать обязательным. А это можно сделать, если его заполнять при передвижение (transition) задачи. Благо, в Jira появились переводы, которые не изменяют статус. Мы добавили перевод “Блокер”

Изображение слайда

Слайд 27: Форма при блокировке

При использовании этого перевода появляется форма в которой “Тип блокировки” - это обязательное для заполнение поле.

Изображение слайда

Слайд 28: Автоматизация под капотом

После того как форма заполнена, происходит следующая магия: Создаётся задача. В проекте Blocker c выбранным типом блокировки и привязывается к заблокированной Устанавливается флаг. Чтобы заблокированная задача выделялась на доске Пишется комментарий. Чтобы все причастные получили уведомление Признак блокировки. Скрытое не редактируемое людьми поле “Is_Blocked”. На него делается проверка по доступности передвижения Копируется дата. Если дата начала была не заполнена - устанавливается now(). Если дата начала > now() - признак не ставится Если дата окончания < now() - блокер закрывается и признак не ставится CRON. Раз в сутки мы проходимся по не закрытым блокерам, и если у них дата начала блокировки = today() - то автоматически блокируем связанную задачу.

Изображение слайда

Слайд 29: Новая точка выхода

Теперь когда задача заблокирована, её обязательно придётся вручную разблокировать чтобы закрыть. Чтобы снять блокировку тоже отдельный переход.

Изображение слайда

Слайд 30: Форма при разблокировке

В этот момент также появляется форма с аналогичным набором полей. Если в ней ничего не выбирать, то в блокере всё останется как есть, но можно перезаписать прежние значения, может мы синкаемся и снимаем блокер сейчас, а фактически над фичёй возобновили работу несколько дней назад?

Изображение слайда

Слайд 31: Что получили

Изображение слайда

Слайд 32: Нормальные данные

Типы указываются. Повысили конверсию заполнения поля “Тип блокировки” с 0,2% до 100%. Теперь начинаем понимать, с какими проблемами системно сталкиваемся в поставке. Сначала закрыли блокер. А только потом что-то там делаем с задачей. Больше нет брошенных блокеров которые копят время бесконечно. Ожидаемые бенефиты по корректным данным Метч с реальностью. В зависимости фиксируется реальный промежуток времени, когда поставка была заблокирована.

Изображение слайда

Слайд 33: Удобство

Блокеры в будущем. Команда едет на конференцию? Супер, как только узнали, можно заранее поставить блокеры, что с такого по такое число над задачей работать не будут. При наступление даты задача автоматически заблочится. Блокеры в прошлом. Вспомнили о конференции только на обзоре сервиса поставки? Не проблема, можно поставить блокер “постфактум”. Дополнительные бенефиты за счёт этого изменения: Прозрачность. Из автоматического комментария к задаче всем сразу понятно, что произошло с задачей, на что заблочилась, когда ожидать разблокировки… Простота анализа. Не требуется плагин Time in Status или аналог для анализа. Делается обычная выгрузка в csv с полями начала и окончания блокировки, из даты окончания вычитается дата начала, вуаля. Можно автоматизировать и считать в отдельное поле при закрытие блокера.

Изображение слайда

Слайд 34: Планы

Этот процесс можно дальше развивать, мы выделили следующие идеи Связь с другими работами. При блокировке добавим в форму поле для явного указания, на какую задачу которая уже есть в Jira заблочились. Можно будет смотреть, на эффективность потока работы с блокерами - соотносить время блокировки и время решения зависимой задачи. Масштабирование. На другие типы задач и функции департамента. Дополнительная коммуникация. “Эта задача заблокирована уже более 3 недель, может пора уже что-то с этим сделать?”... З.Ы. Ну и поделиться с вами ценными изменениями которые мы за счёт работы с зависимостями нашли.

Изображение слайда

Последний слайд презентации: Кластеризация зависимостей - обо что спотыкается ваше delivery: Оставьте вашу ОС И задавайте вопросы

Изображение слайда

Похожие презентации

Ничего не найдено