Read my book

I wrote books about Webpack and React. Check them out!

Sunday, April 25, 2010

Kanban - Just In Time Development

What is kanban? Wikipedia characterizes it is a signaling system to trigger action. It is a part of lean software development methodologies.

Kanban provides a few simple rules based on which to structure development. Kniberg and Skarin list them as follows:
  1. Visualize the workflow
  2. Limit Work In Progress
  3. Measure the Lead Time

Visualizing the workflow


In order to achieve 1. they suggest that work should be split into pieces that are to be put on the wall. For this purpose a special kanban board may be used.

The board should contain a view on the development process. The process may be visualized on columns such as TODO, ongoing, done. It is important to note that the columns may be customized to suit the need.

Limiting Work In Progress


2. refers to the amount of items each column may contain at given time. Even though simple, this rule is extremely important. If there is a blocking issue on a later stage that needs to be resolved, this rule forces effort to be spent there.

Measuring the Lead Time


In 3. the idea is that measuring the time spent on completion of each piece helps to optimize it and to make it as predictable as possible.

I think this concept is may be referred as kaizen, another lean methodology that encapsulates the idea of continuous improvement.

Summary


Even though there are just three simple rules to follow, they manage to drive development towards self-organization. The concept of a kanban board makes it possible to see the progress in a concrete way. This has possibly motivational benefits as well.

As it might not be always possible to come up with a real kanban board, it appears that there are virtual alternatives such as Simple-Kanban.

If someone has actually used kanban in practice, I would be interested in hearing about your experiences. :)