Третья Канбан-метрика - 1. Scatterplot

Третья Канбан-метрика - 1. Scatterplot

Канбан-метод позволяет делать прогнозы сроков выполнения задач с вероятностью 80-90%. Но можем ли мы быть уверены в этих прогнозах? И какие метрики* подскажут нам правильный ответ?

Официальный Kanban Guide от Kanban University описывает 3 основные метрики для улучшения рабочих процессов: Lead Time Distribution Chart, Cumulative Flow Diagram, Run Chart

Давайте вспомним, для чего предназначена каждая метрика.

Первая метрика, Lead Time Distribution Chart дает нам возможность прогнозировать с 85%-й вероятностью время выполнения задач в нашей рабочей системе. Это работает даже для команд, которые работают по Scrum, и оценивают задачи в Story Points

Вторая метрика, Cumulative Flow Diagram - покажет как менялись во времени характеристики нашей рабочей системы.

Эти две метрики дают нам возможность прогнозировать работу системы. Но всегда остаётся вопрос: а насколько надёжны эти прогнозы в долгосрочной перспективе?

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

Возможно, третья Канбан-метрика, Run Chart - позволит нам ответить на вопрос предсказуемости системы?

Надо в этом разобраться.

Но есть затруднение: если по Lead Time Distribution Chart и Cumulative Flow Diagram написано множество статей, и есть подробное описание в разных книгах, то вот по Run Chart информации в книгах гораздо меньше, а та информация которая есть, содержит, порой, противоречивые сведения.

Перед тем как написать эту статью, я провел опрос среди подписчиков своего Телеграмм-канала: “Что вы знаете о Run Chart?”. И был очень удивлён тому, что даже опытные канбанисты отвечали “ничего не знаю про эту метрику”, а некоторые утверждали, что никакого Run Chart нет, а есть только Control Chart.

Что же это за метрика такая - Run Chart? Почему ее все время путают с другой метрикой - Control Chart? И при чем тут диаграмма Scatterplot, упоминавшаяся в ранних книгах по Канбан-методу?

Давайте разбираться.

Если посмотреть, как описан Run Chart в Official Kanban Guide от Kanban University, то мы увидим вот что:

Скриншот Official Kanban Guide про Run Chart
Скриншот Official Kanban Guide про Run Chart

Переведя на русский это значит, что

На этом графике представлено время выполнения завершенных задач, расположенные последовательно на временной шкале. Этот график полезен для обнаружение трендов времени выполнения
Описание Run Chart из Official Kanban Guide

Не густо информации. И никаких подробностей.

В русскоязычной версии Official Kanban Guide этот график называют “Временным рядом времени выполнения”:

Русский перевод той же диаграммы
Русский перевод той же диаграммы

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

В глоссарии на сайте Kanban University про Run Chart написано:

Выдержка из The Kanban Method Glossary от KU
Выдержка из The Kanban Method Glossary от KU

Что можно перевести как:

Диаграмма, которая показывает наблюдаемый показатель во временной последовательности. Обычно используется для визуализации прошлых времён выполнения (Lead Time) или темпов доставки (Delivery Rate). Одним из основных преимуществ Run Chart является возможность увидеть любой тренд в данных. Обычный вопрос для обсуждения: "Увеличиваются или уменьшаются времена выполнения (Lead Time), или находятся ли они в пределах ожидаемого разброса?
Описание Run Chart из Kanban Glossary Kanban University

И это все что мы можем найти на сайте Kanban University.

Однако…

Однако если попробовать поискать больше информации о Run Chart в литературе по Канбан-методу, нас ждёт разочарование.

У Дэвида Андерсона в классической “голубой книге” про Канбан графика Run Chart вообще нет.

Даниэль Ваканти в “Actionable Agile Metrics For Predictability” говорит только про Cycle Time Scatterplot, и отвергает Run Chart.

В “Essential Kanban Condensed” тоже упоминается только Lead Time Scatterplot, а не Run Chart.

И только Майк Барроуз в своей книге “Kanban from Inside” приводит график Run Chart, но не объясняет как им пользоваться.

Итого, мы имеем три метрики, которые в разное время применялись разными авторами для оценки предсказуемости системы:

  • Scatterplot,
  • Control Chart
  • Run Chart

Сперва давайте подробнее остановимся на Scatterplot, как на метрике, которая упоминается раньше других в книгах по Канбан-методу, и описана лучше всего. Разберем, какие характеристики нашего рабочего процесса она помогает увидеть, и как помогает оценить степень предсказуемости системы.

Scatterplot

Обычно график Scatterplot используется для поиска взаимосвязей между двумя переменными. Для построения Scatterplot можно взять любые две переменные и используя их в качестве осей координат, построить график свойств какого-нибудь объекта, или явления.

В поисках интересного примера, я нашел исследование свойств личности разных супергероев Marvel и DC Comics. Исследователи попарно сравнивали показатели двух свойств, и пытались найти между ними корреляцию. Главный вывод способен вызвать улыбку: не найдено значительной корреляции между уровнем интеллекта супергероя и его достижениями. То есть умный супергерой - не обязательно успешный.
Вот такие они, американские супергерои 🙂

Третья Канбан-метрика - 1. Scatterplot

Поиграться с интерактивной версией графика можно по ссылке

Более сложные Scatterplot

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

Например, можно взять статистику частоты рождений в год, и частоты смертей в год, и по этим двум осям построить Scatterplot, который покажет как соотносятся эти данные между собой для разных стран. Диаметр точки показывает относительный размер населения этой страны - чем больше диаметр, тем больше население. А цвет указывает на регион к которому относится страна (Азия, Европа, Африка и т.д.)

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

Статистика смертей и рождений по странам. Размер точки означает общее население страны, цвет - географический регион.
Статистика смертей и рождений по странам. Размер точки означает общее население страны, цвет - географический регион.

С интерактивной версией этого графика можно поиграться по ссылке

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

Что еще позволяет делать Scatterplot?

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

Корреляции

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

Разная степень проявленности линейной корреляции
Разная степень проявленности линейной корреляции

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

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

Например, Scatterplot в котором осями являются “продажи мороженого”, и “количество нападений с оружием” в месяц.

 По горизонтали продажи мороженого, а по вертикали - количество нападений с оружием
 По горизонтали продажи мороженого, а по вертикали - количество нападений с оружием

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

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

Кластеры

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

На графике хорошо видно два кластера данных
На графике хорошо видно два кластера данных

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

Однако, нас интересует анализ данных по Lead Time, поэтому давайте разберемся как использовать Scatterplot для анализа этой метрик

Lead Time Scatterplot

Чтобы построить Lead Time Scatterplot, нам нужно на оси X отобразить ось времени - в днях, неделях или месяцах, а по оси Y - Lead Time - в часах, днях, неделях или других единицах времени.

И для каждую дату мы будем точкой отмечать Lead Time задач, которые были завершены в эту дату.

Пример Lead Time Scatterplot
Пример Lead Time Scatterplot

Наиболее подробно применение Lead Time Scatterplot для анализа рабочего процесса описал Даниэль Ваканти в своей замечательной книжке “Actionable Agile Metrics”. В книге есть терминологическая особенность, так как автор предпочитает вместо термина Lead Time использовать термин Cycle Time, и соответственно диаграмму называет Cycle Time Scatterplot. Но сути это не меняет, поэтому в дальнейшем мы будем называть этот график Lead Time Scatterplot.

Для анализа рабочего процесса Ваканти предлагает нанести на Scatterplot линии перцентилей, которые соответствуют 50%, 85% и 95%-перцентилям. То есть под линией 50% перцентиля расположена половина точек данных, под линией 85%-перцентиля расположено 85% точек данных и так далее.

Lead Time Scatterplot с линиями 50%, 85% и 95% перцентилей
Lead Time Scatterplot с линиями 50%, 85% и 95% перцентилей

Теперь глядя на график видно, что если новая задача поступает в обработку, то у нее есть 85%-вероятность быть выполненной в течении 181 дня.

А еще на графике можно увидеть всякие фигуры, которые могут давать важные сигналы о трендах, и паттернах поведения системы.

Но прежде чем мы перейдем к их рассмотрению, я бы хотел привести фразу, из книги Даниэля Ваканти:

Правила формируют ваши данные, а ваши данные формируют ваши правила
Даниэль Ваканти "Actionable Agile Metrics"

То есть большинство ситуаций, которые будут изображены ниже, обусловлены правилами работы вашей рабочей системы. Если вы заметили, что в ваших данных появилось аномальных значения, то вы должны спросить себя:

Какие правила (явные или неявные) управляющие поведением нашей системы, приводят к появлению таких данных?

Итак, давайте рассмотрим фигуры которые можно увидеть на Lead Time Scatterplot.

Треугольник

Третья Канбан-метрика - 1. Scatterplot

Глядя на этот Lead Time Scatterplot можно увидеть, что точки выстраиваются в фигуру похожую на треугольник. То есть тренд идет на постоянное увеличение Lead Time.

Какие правила, обычаи, нормы в вашей системе приводят к этому? Может быть, частота поступления новых задач превышает возможности вашей команды обработать этот входящий поток? Для проверки, стоит посмотреть на Cumulative Flow Diagram. Возможно вы увидите как линия прибытия и линия убытия задач расходятся между собой, что подтверждает вывод о постепенной деградации возможностей обработки новых задач.

Пробелы

Пробелы в данных на вашем Scatterplot означают, что ни одна задача не была завершена в этот период. Например, если за день не завершилось ни одной задачи, то в этот день на Lead Time Scatterplot будет пустое место, без единой точки.

На графике ниже желтым обозначены пробелы - дни и периоды, когда ни одной задачи выпущено не было

Желтые вертикальные линии подчеркивают пробелы в данных
Желтые вертикальные линии подчеркивают пробелы в данных

Регулярные пробелы

Регулярно повторяющиеся пробелы на Lead Time Scatterplot означает пакетную поставку. То есть мы копим к какой-то дате задачи, а потом пакетом их поставляем, и закрываем. Часто такое можно наблюдать при работе по Scrum

На графике видны регулярные пробелы в данных
На графике видны регулярные пробелы в данных

Группы точек, которые вы видите на этом графике, находятся на границах спринтов, когда происходит лихорадочная попытка завершить рабочие элементы. Но обратите внимание, как данные разрежаются между этими скоплениями. Это хорошо или плохо? Какое влияние это оказывает на нашу предсказуемость? Если вы считаете, что это плохо, что вы можете сделать, чтобы изменить это?

Выбросы (аномалии)

Lead Time Scatterplot выглядит как случайный набор точек на графике. Причина этого заключается в вариабельности, существующей в вашем рабочем процессе. Первое, что нужно знать о вариабельности, — она всегда будет существовать, потому что большинство задач в IT уникально, и одну и ту же задачу разные люди будут делать по разному, и разное время.

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

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

Вариабельность точек на Scatterplot тоже не одинакова по своему характеру.

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

Третья Канбан-метрика - 1. Scatterplot

Но если задача выскочила за предел 95%, или даже превысила его многократно - это выброс, аномалия. Скорее всего, причина такого выброса в том, что задача была не полностью в зоне контроля команды, и на ее реализацию влияли какие-то внешние силы и факторы. Например - зависимость от других команд. Или смена приоритета менеджером. Или что-то еще. В любом случае, заметив такую точку на графике, стоит исследовать причины, по которым она вылетела так высоко, и поработать над тем, чтобы такого не могло повториться.

Кстати говоря, именно такие выплески формируют “длинный хвост” у распределения времени выполнения (Lead Time Distribution). И если вспомнить книги Нассима Талеба, то можно вспомнить, что “длинный хвост” предупреждает нас, что вероятность таких аномальных значений не так мала, как кажется. И нас ждёт повторение их в будущем. Потому что есть не проявленные причины, по которым некоторые задачи делаются чрезмерно долго. Если мы не разберемся в этих причинах, и не возьмем их под контроль, то нас будут поджидать неприятные сюрпризы в будущем.

Подводя итог рассказу про Lead Time Scatterplot можно сказать, что этот график позволяет быстро оценить степень вариативности рабочей системы, увидеть некоторые закономерности, и в целом, это довольно удобный инструмент, чтобы мониторить непредсказуемость нашего рабочего процесса. Однако, это не единственная метрика, которая помогает лучше понять, что происходит с системой, и увидеть в ней закономерности.

Мы много времени уделили Scatterplot, и пора бы наконец разобраться с Run Chart, как я и обещал в начале. Но вы читаете уже 1988-е слово, и мой редактор говорит, что это слишком много для одного раза :) Поэтому продолжение в следующей статье, которая выйдет очень скоро.

Если у вас остались вопросы, задайте их автору комментарием в канале "Данные в дейSTвии"

PS Перепечатка даннной статьи или ее части возможна только с согласия автора

Примечание

* Слово "метрики" для диаграмм и графиков применять не совсем правильно. Правильно было бы написать "визуализация метрик на диаграмме или графике" - 4-5 слов. Довольно длинно. Для простоты автор решил использовать слово "метрики", подразумевая под ним и визуализацию метрик и сами метрики.

44
Начать дискуссию