Tuesday, May 22, 2012

The Rhythm of the Board


Look at this short video:




You can see and hear the rhythm of a Kanban board.
Let's see how it has been created.

During these last months I started doing some experiments in visualizing how lively is a Kanban board.
I am trying to figure out ways to visualize the age of items in each column and to show how many items are entering and leaving each column per unit of time, that is the rhythm of the board.

A typical way to represent what's going on in a board is to use a Cumulative Flow Diagram (CFD).
Unfortunately CFDs are not so useful in visualizing age and rhythm.

Let's take a simple board like this:



and let's assume that each item spends 3 days in each of the Analysis, Code & Test columns. Throughput is one task per day (every day a task reaches the Done column) and the cycle time equals 9 days.

The resulting CFD looks like this:



Now suppose that task E gets stuck. It spends 7 additional days in Code and then it also spend 3 extra days in Test. Cycle time for task E equals 19 days. All other tasks run smoothly across the board, but due to WIP limits some take a bit longer to complete.


This is the corresponding CFD:


It doesn't tell too much, does it?
There is no way we can infer that a task got stuck and it took 19 days to complete.

If we look at the control chart it does not tell us too much either:

We realize that there's a problem only when it's too late. This is no surprise, a control chart is not supposed to be used as a leading indicator. 

Let's go back to our goals: (1) visualize the age of items in the board (2) visualize liveliness of the board: items entering and leaving each column per unit of time.

Let's start from the latter.

Actually a CFD does represent inflow and outflow, but in a way that is not easy to understand.

Let's take our previous CFD. Each colored area in a CFD represent a column of the board. Let's focus on the Test column, the red area in the CFD:
















We will now use a bar chart to represent how many items are in the Test column each day.



This is much easier to understand.
However we still can't see how many items are entering and leaving the column each day.
To do this let's superimpose colored bars: red bars for inflowing items, yellow bars for outflowing ones.



This starts to tell us something about the rhythm of the board.
We see that on day 2 the total number of items in the column dropped from 3 to 2 because no items came in and one item left the column.
On day 9 two items came in and one item left so the total went back to 3.

We can also use this chart to compare between two boards, like this:



The number of items per day is the same, but the bottom column is obviously less lively than the top one.

This chart helps us in understanding the liveliness of a board but it does not show any information related to the age of items.

To focus on that we switch to Google Spreadsheet and its Motion Chart widget.
It's a free widget that can create charts to show how our data evolve in time.
[For an explanation about how to use Motion Charts check this link: Motion Charts in Google Spreadhseet]

Let's use Moving Bars to show (a) number of items in each column (b) maximum age of items in each column.
In the following video the column height represent the number of items, while the column color represent age of items. Red color = old item.
In this video look at column 3 (Code):



It gets red because of our stuck item spends 10 days in the Code column.

Nice, but this chart helps us only with our first goal as it shows item aging but it tells nothing about rhythm.

Is there a way to visualize both kind of info in a single chart?

Sure there is! We can use the Bubble Chart.

Let's focus again on the Test Column.
In a Bubble Chart we can show (a) number of items (b) maximum age of items and (c) number of inflowing items.
We use again height and color for the first two parameters while we use bubble size to represent how many items are entering the column. Here is our resulting chart:



Now this is starting to rock :)
And to make it rock even more we can add another dimension to it: sound!
Mapping a different drum sound to the number of items entering and leaving the column we get this result:





We can do the same using multiple columns. In this case we see the evolution of the Code and ToDo columns:



This definitely rocks :)

So that's it. I just wanted to throw around some ideas.
This result is interesting but further work is needed.


Note: I presented this work in a Lightning Talk at LSSC12 in Boston.



If any reader is interested in further details please write me and I will be happy to provide them.

The document containing the sample data can be found here
The Rhythm of the Board doc
Unfortunately you need to specify from scratch settings for the Motion Chart:
1- Select the Bubble Chart tabs in the upper right tabs
2- select tot for Y Axis
3- select time for X Axis
4- select max age for color
5- select in for size
6- check the trails box
You are done!


Here is a short explanation about how sound has been added to the charts:
Basically there is a mapping between drum sounds and number of items inflowing and outflowing:
i.e. 1 item in - low conga, 2 items in - hi conga. 1 item out - low bongo, etc.
Each sound has also a different position in the measure.
Drums sounds editing has been done manually using GuitarBand
This could be automated creating a MIDI file from board data