Kanban

| LimitedWIP Society  |   |   | Kanban dev | Personal Kanban | Kanban Worshop - Review - System |
| Team Agility: Scrum or Kanban | When will this be doneInfoQ: Kanban for Software Dev process
| Kanban Clinic | Common Myths | Kanban as an agent of Change | Kanbanimation | Jimdo video
| Kanban for Game Development | Applying Kanban to IT |
| Personal Kanban discussion group

Overview
Kanban is a way to visualise your working practices and help them evolved to become more effective.  Kanban is a low impact tool in terms of adoption as it can layered on top of your existing process without significant change.

Kanban has been used to great success in manufacturing, for example Toyta.  There are also great successes happening in health care, education and even the video games industry.


You start your Kanban journey by exposing your current working practices, good and bad, so that everyone can see the real situation.  Once you have got into the swing of visualising your practices, you can then make a more informed choice when you decide to evolve your process.

Kanban uses the following concepts to help your process evolve and start your continual process improvement
  • Visualise the Workflow
  • Limit Work-in-Progress
  • Measure and manage Flow
  • Make Process Policies Explicit
  • Use Models to Evaluate Improvement Opportunities
The team’s process for software development and project management will always be unique and over time will be tailored and optimized to the value-stream, risk profile, skills and capabilities of the team, customer demand, bottlenecks and sources of variability that affect the team.  The value of the Kanban approach should be a measure of whether a better economic and sociological outcome was affected.

A Kanban board
Kanban is the Japanese word for Signal.  A KanBan board is a visual way to manage activities by signalling the status of those activities in a highly visible way.

Kanban is especially useful when those activities are dependant on each other.  For example, in manufacturing this would be the assembly line and in software development this would be the development process (eg. the steps in an iteration: acceptance test, unit test, coding, integration tests, etc.)

A KanBan board will help you visualise the activities in your team and help identify where any problems may be (eg. if the tasks, stories are building up in one particular area such as integration testing or deployment).  The KanBan board should be a representation of the status of the teams work, therefore limiting meetings and progress reports required to a minimum.


Visualising the workflow
To get the most benefit from the Kanban technique you need to visualise your working practices accurately, showing all the steps involved where value is created.  All the valuable steps you undertake are placed on your kanban board to represent your current system.

A common workflow for software development is: analysis, design, develop, test, integration, deploy - although there are many nuances in every team that may change this workflow to greater or lesser extent.

Make Process Policies Explicit
A major tenet of Kanban is that you should have explicit policies that define your workflow. It has been demonstrated that doing this vastly increases learning by team members. Team learning occurs because team members actively discuss how they should be doing their work on a regular basis. Reviewing a Kanban board is like a mini-retrospection every day.

Simple board designs
You can create a simple 3 or 4 lane board using the following simple approaches:
  • Plan, Doing, Done   
  • Plan, Do, Check, Act
  • Research, Study, Review, Communicate - useful for personal Kanban - personal/team development

Advanced board designs: Value Stream Mapping
You can use value stream mapping to construct an end-to-end map of your process, whether your process be adhoc or tightly prescribed,  identifying those tasks in the process that provide real value.  The value tasks become lanes on your board.

Value stream mapping is best done with (representatives of) the whole team so that the full process is actually known.  Gaps in your process can be easily identified during value stream mapping, but these gaps can be addressed once they are discovered.

A basic value stream mapping approach is to note down (map) each step you normally take in your current practice to get work done.  Review these steps to see if there is any real value in each step.  For each step that adds value, add this as a vertical lane on your kanban board.  For each step that adds no value, discuss this step with the relevant stakeholders (in a retrospective if necessary) to see if there is an unperceived value, discarding the step from you board (and process) if no value is found.

Managing hand-over  
To manage the handover between each stage on your kanban, it is a very useful technique to split each lane and have a Ready to... lane in front of your doing lane, eg. Testing and split it into Ready to test and Testing.  This kind of split indicates what tasks are queueing up for the next stage and helps expose bottlenecks further.


Board design evolves
A KanBan board design will evolve over time as you understand your processes and drivers more clearly.  There is no value in trying to design the perfect board up front, as the board design will change as your practices evolve (you are also engaged in continuous improvement as a company, Kaizen)

Board Artefacts
A kanban board can easily give you the big picture of your work and how you get things done.  However much of the detail of what is being done for each task can be recorded on the individual cards on the board.  There are no rules as to what a card should look like, it is up to the team to think about what information they need to capture that will give them value, in terms of understanding what they do and feedback on actions they take to improve.

Card design
Cards typically have represented a user story or some task to be carried out, often with just the basic information needed.  However the card has plenty of room to capture all sorts of useful information in terms of metrics, statistics, status, etc

Information on cards can be represented as:
  • Simple text - the date the card was started, Stakeholder name.
  • Reference number - linking the card to the feature it is a part of, ticking in a tracking system   
  • Unary numeral system - to represent the number of times the card had to be manually tested or for each minor bug that was found.  
  • Symbols - show blocked cards, or where assistance is required
  • Avatars - who is currently working on the card
  • Coloured cards - types of work (tasks, stories, defects, housekeeping), classes of service

Interesting cases: High Priorities
Sometimes you will have a task this becomes a high priory (relevant to everything else that already high priority).  To manage this high priority you can either have a special card or symbol to mark it as the highest priority task.  Using avatars you can place all your people on this work to help get it done if appropriate, visualising that all other stories are blocked.

Interesting cases: Dependencies
Some times one card will depend on another card, or at least one card reaching a certain state.  If you already define your tasks with reference numbers, you can use those reference numbers on each card to show relationships.  This is the same kind of idea for showing which cards are supporting which features.

Team based indicators
As mentioned previously, Avatars can show what tasks people are currently working on and provide a real time status of the team.  You can show when people are pairing on work and when people are away from the team.

Some teams have taken the use of avatars further with the idea of a Mood indicator, instantly showing what sort of day (or week) someone is having, or what kind of environment they prefer to make them able to work well that day.  The mood indicator can help teams who are not great at picking up on body language or emotional state of their colleagues, encouraging each team member to think about how they relate to each other and hopefully building some emotional awareness.


Limit the Work In Progress
There are several benefits to limiting the amount of work you have in progress at any one time:
  • Reduce task switching to avoid reloading your brain multiple times
  • Attain a regular flow of work that is done so you can be more predictable in delivery
  • Measure the real amount of time tasks take to do and adjust sizing / estimation efforts
  • Keep your software inventory low to reduce cost of change and adaptation
  • Fast feedback to limit waste due to rework and incorrect assumptions
  • Enable a pull model where only as much work is done as can be consumed


Work In Progress Limits
If you are finding bottlenecks for your cards traversing the board, then you can establish work in progress limits to manage work and achieve a good flow of cards across the board.

Limits are often set based on the resources that carry out the specific lane task, eg. if you have 4 developers, then you can put a WIP limit of 4 on your development lane (WIP Limit of 3 or 2 if those developers occasionally pair)

Using Avatars to limit WIP
As well as putting a specific number on the lane, you can also use Avatars (a symbol to represent a specific person) to limit work in progress.  If you only have 1 avatar per person, then they can only work on one task at once.

Using avatar's also gives you a running indicator of status and capacity.  If someone is ill, on holiday or seconded away then by moving their avatar to an unavailable box your change in capacity is immediately visualised.

Measure and Manage Flow
It is important to focus on keeping work moving and using the need for flow as the driver for improvement.

By measuring how long cards take to move from one side of the kanban to the other, cycle time, you can attain a measure of predictability of the work and therefore have some measure on delivery times for major features.

The more statistics you capture, the greater detailed analysis you can delve into as to what is happening, hopefully giving you a clearer idea of why issues may be happening.

It is typical to record cycle time overall as well as the time each card spends in each activity. On a physical board this will be recorded in a common way on each card and fed into the statistics either at the end fo each stage or when the card is completed.

Be wary though, measurement gives you lots of data, but you need to understand the big picture if you want to turn that data into meaningful information.



Use Models to Evaluate Improvement Opportunities
Kanban is quantitative and takes a scientific approach to improvements. A common model to apply to Kanban to help improve the process is called The Theory of Constraints.

In the theory of constraints you identify the overriding bottleneck (constraint) in your process and manage your system around that bottleneck. As you seek to alleviate the main bottleneck to increase flow, you review your constraints to see if the original bottleneck is still the main constraint.


Personal Kanban

Kanban can be used for your own personal development and I have written a couple of small articles covering: Kanban to manage personal development and Kanban for Just-in-time skills development.

Kanban tools
Magic whiteboard - roll up paper whiteboard
Lean Kit Kanban - 1 kanban board free for up to 5 users
Virtual Kanban - simple html kanban board
Greenhopper - agile planning tool from Atlassian