Оборачиваемость бэклога :)

Оборачиваемость бэклога :)

25 Августа 2023 | Василий Савунов для канала "Данные в ДейSTвии"

🎓 Обратился давний клиент с запросом: 

- Как бы нам срок оборачиваемости бэклога посчитать?
- Что, говорю посчитать? Оборачиваемость?! Это в каком это смысле?
- Да вот, генеральный посмотрел твои видео "Канбан-просто" и придумал такую метрику. Типа - вот у нас есть входящий бэклог работ, и надо сделать прогноз, за какой срок команда его сделает.
- А зачем это надо? - спрашиваю
- Бизнес свои планы долгосрочные может делать на основе этой метрики. Ну и эта метрика покажет, нужно ли еще ресурсов добавить.

🤔 И тут я задумался...

👉 С одной стороны, как ресурсов ни пихай, а Теорию Ограничений не обойти - надо узкое место сперва расшить, потом уже ресурсы туда добавлять. 

👈 А с другой стороны, клиент-то уже обученный, метриками свой рабочий процесс давно обложил, и считает все что может считать. И узкие места своего процесса он тоже знает.

Вполне может получиться интересный дашборд для бизнеса

Вопрос на засыпку

Относительно чего эту оборачиваемость бэклога расчитывать? 

🧠 Здравый смысл нам говорит - относительно пропускной способности процесса. 

Хорошо. А процесс у вас устоявшийся? Стабильный? Если да - то все прекрасно, потому что значение пропускной способности будет более-менее постоянным значением в этом случае. Можно поделить размер бэклога на пропускную способность - вот вам и срок оборачиваемости бэклога

🤘 Круто да? 

Да, но так бывает в редких случаях

Потому что жизнь штука непредсказуемая. Все время как-нибудь гадость случается, то разработчик заболел, то СВО санкции, то срочный контракт на 100500 миллиардов. Расчитывать на постоянство пропускной способности - очень наивно. 

🤷‍♂ Как быть?

Давайте рассуждать логически. "Срок оборачиваемости бэклога" это по сути, суммарный Backlog Lead Time (BLT) всех задач в бэклоге на текущий момент.

Если бы мы могли каким-то образом смоделировать разные реалистичные сценарии реализации этого бэклога, то получили бы ряд вероятных значений этого самого BLT. Затем можно построить диаграмму распределения BLT, и выделить наиболее вероятное значение. 

Вот только как такое моделирование сделать?

Моделирование

Ответ на самом деле есть, но он не так прост в реализации, как хотелось бы.

❓Чем один сценарий реализации бэклога будет отличаться от другого? Разными событиями, которые могут влиять на скорость "съедания" этого бэклога. Скорость "съедания" бэклога - это пропускная способность нашей команды.

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

Шаг 1️⃣
Берем исторические данные о пропускной способности рабочего процесса за какой-то значительный период - 10, 15, 20 недель.

Почему именно недель, а не дней? Ну во-первых, пропускная способность по дням даст множество точечных искажений - выходные, праздники, просто дни когда ни одной задачи не был выпущено. Мы получим много "шума" в данных.

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

Собранные нами исторические данные о пропускной способности по неделям могут выглядеть вот так:

Исторические данные о пропускной способности в неделю (задач в неделю)

Шаг 2️⃣

Для простоты примем, что у нас в бэклоге лежит 1000 задач.

Воспользуемся методом Монте-Карло для вероятностного моделирования времени за которое эти 1000 задач будут сделаны.

Метод Монте-Карло, это численный метод для изучения случайных процессов.

🎰🎲♠ Свое название метод получил в честь города Монте-Карло - района Монако, где находится много казино с рулеткой. Рулетка является самым известным генератором случайных чисел, поэтому этот метод назвали в честь места, где этих генераторов ну очень много :)

Результаты расчета по методу Монте-Карло не будут идеально и математически точными, но их уже будет достаточно, чтобы с ними полноценно работать. Для долгосрочного прогноза, который может поменяться, это проще и быстрее, чем считать всё по точным формулам.

📈 Алгоритм моделирования выглядит следующим образом: представляем, что наш бэклог - это столбик, составленный из задач. И этот столбик, по частям каждую неделю съедает мистер Пакмэн. Каждую неделю у него разный аппетит и он съедает разное количество задач из этого столбика.

😋 Аппетит мистера Пакмана - это значение пропускной способности из нашей статистики. Каждую неделю мы будем брать случайное значение из статистики пропускной способности, и уменьшать наш столбик на это значение.

🍽 Когда мистер Пакман "доест" бэклог мы подсчитаем какое количество недель у него это заняло, и запишем это значение. Это будет наше первое значение Backlog Lead Time (BLT).

Чтобы построить частотную диаграмму BLT и найти вероятное значение нам нужно много раз провести такую симуляцию. Поэтому рекомендуемое количество симуляций по методу Монте-Карло равно 10 тысячам.

Для проведение моделирования можно воспользоваться аддоном для Excel, либо написать алгоритм на Python

А если вам будет интересно, я позже расскажу как можно облегчить себе задачу, используя ChatGPT для расчетов

Итог

Проведя 10 тысяч симуляций, мы получим ряд значения Backlog Lead Time (BLT), сможем нарисовать частотную диаграмму и определить вероятное значение Backlog Lead Time

В нашем случае для 1000 задач прогнозируемое время с вероятностью 90% составит 107 дней

Частотный график времени завершения 1000 задач

P.S.

Клиент оказался очень заинтересованным в результате. Его не отпугнул метод Монте-Карло, так что он реализовал его на своих мощностях, и теперь наслаждается дашбордом, который показывает ему прогноз по времени для текущего бэклога.

А дальше нам предстоит оптимизационная задача поиска и управления узким местом.

Но об этом - в следующий раз на канале "Данные в ДейSTвии"

Задать вопрос автору можно в личку

Report Page