Monday, March 31, 2014

Kanban

In previous posts, we have discussed about scrum, lean software development system. Let us discuss about KANBAN in this post.

Roots of KANBAN:
The word Kanban is a Japanese word meaning “Kan” means “card” whereas “ban” means “signal”. This card signalling concept is used to prompt “action”. For information on the origins of the term KANBAN, please check this link

Kanban concept is related to TPS (Toyota Production System) lean manufacturing and Just-In-Time (JIT) production.

JIT means making only
What is needed,
When it is needed,
And the amount needed.

By following JIT plan, process eliminates waste, inconsistencies and work on un-necessary requirements resulting in productivity improvement.


History of KANBAN:
Late 1940’s: Taiichi Ohno (a former Toyota vice president) developed a “kanban” system to implement a “just-in-time” process. Ohno described the concept as follows: “It should be possible to organize the flow of materials in production, according to the principle of a supermarket; the consumer takes a certain amount of off the shelf product, and noticed the gap is immediately replenished”.

The kanban system is also called as "Supermarket method" as the idea behind it was borrowed from supermarkets.

Kanban today is because of Ohno, TPS and other influencers. Out of other influencers William Edwards Deming and Eliyahu Moshe Goldratt has done extensive work which has guided Kanban change agents worldwide

2004: The first kanban software implementation with Goldratt’s influence. His Theory of Constraints was successfully applied in this

2006-2007: There has been lot of research after the first Kanban software implementation. In this period Donald Reinertsen has influenced Kanban implementation. He had been researching about product development flow from many years before. This work has been continued by Peter Drucker

David J.Anderson wrote a book titled “Lessons in Agile Management”. Hw wrote about many topics in this book .i.e. Leadership, Management, Peter Drucker, Theory of Constraints and Eli Goldratt, W. Edwards Deming, Human Resource Departments and Policies, Agile, Lean and Leading Change Initiatives.

Post 2007: Through continuous improvements, the kanban method has evolved and it’s been applied in variety of fields. the Cynefin framework developed by  Dave Snowden and the research on behavioural economics by Daniel Kahneman answered many of the questions on applicability of Kanban in different contexts.

Now, we know how Kanban has evolved. Let us discuss more about Kanban with respect to software development.

KANBAN in Software Development:
Kanban is one of the agile methodologies which manages creation of software products and emphasizes on continuous delivery without overburdening any of the team members. Kanban uses work-in-progress (WIP) limited pull system as its main focus is to uncover process problems and improve it.

In Kanban, the tasks are represented by cards (Post-It Notes) which are pasted on a board called Kanban board. These cards are grouped based on their status in the flow i.e. To Do, Doing/In Progress and Done. Kanban board gives information about team’s activities, their status and next activities for the team. This helps in reducing dependency and make the team self-directing.


Out of agile methodologies scrum is simple and Kanban is simpler, it helps teams to work together more effectively. Kanban has 3 basic principles and 5 core practices

Kanban Principles:
1.       Start with What you know
2.       Agree to pursue incremental, evolutionary change
3.       Initially respect current process, roles, responsibilities and job titles

Kanban Core practices:
1.       Visualize
2.       Limiting work in progress (WIP)
3.       Manage flow
4.       Make management policies
5.       Improve collaboratively using ‘Safe to fail’ experiments

Let’s discuss these principles and core practices one by one.

Principles of Kanban

Start with what you know:
Kanban doesn’t prescribe certain setup to start with. Go with the process your team is following and evolve your current process. It makes Kanban implementation easy as you do not have to make more changes to current process. Kanban properties can be placed on top of your current process to make team self-directing over time.

Agree to pursue incremental, evolutionary change:
Don’t try to get change in process over night. If you do it, it will fail because of increased resistance from team/team members due to fear of uncertainty. Start to change the current process with baby steps. A slow, incremental and evolutionary approach is the right way to implement Kanban initiative. In David J. Anderson’s words it is called as “baby steps to awesomeness!”

Initially respect current process, roles, responsibilities and job titles:
Kanban values the value in existing process, roles, responsibilities and titles which in turn gains broader support for Kanban initiative. Every process has something worth preserving, preserve those elements which are working good for the team and respect them. Focus more on elements which are not creating value in the flow. Kanban neither stops the change nor prescribes the change. Even if you do some changes to the existing process, Kanban encourages incremental change as it creates less fear to team members when compared with other implementations which sweeps in changes overnight

Core practices of Kanban

Visualize: Visualizing the workflow
Understand the end to end workflow to optimize any step of the workflow. For example: In software development process, end to end is from requirement collection to shippable product increment. Main objective of the Kanban is to make positive changes in the system leading to workflow optimization. It is possible only after understanding how each step in the workflow functions.

The common way of visualizing workflow is through Kanban board with cards and columns. Each column in the board represents one step in the workflow. Keep your focus on incoming work which will give you more ideas on executing the same work in different workflows. There is no one specific right workflow to execute one task.
Never ever try to implement changes without understanding the end to end workflow as it is useless to the system and harmful too.

Limiting work in progress (WIP):
Limiting WIP is nothing but identifying the critical elements/steps which are in progress in the workflow and limiting it to some number based on past performance. In other words, the number of work items can be in each stage of the workflow at a given time. New work is pulled only when there is available capacity within the decided WIP limit.

Limiting WIP indicates that we have implemented pull system through out the workflow. For example in below picture, analysis can be done only for 3 tasks maximum. You will take another task for analysis only after moving one task for development.

If any of the stage is blocked, it holds up the entire workflow. WIP limiting identifies problem areas in the workflow quickly, thus team can work collaboratively and resolve them leads to faster completion and great focus. Limiting WIP and pull system of tasks are highlights of Kanban. 


Manage flow:
Always remember, implementing new process is a journey. It takes time to see the results. Main objective behind implementing Kanban is to bring positive change in the workflow. You need to have knowledge on value flow through out the workflow to identify where value is getting hindered and implement the change for fast, smooth value flow. After implementing the change, review the impact of the implementation whether it has created positive or negative effect on the workflow. Keep going, take feedback continuously and improve. 

Make Management Policies:
No body can improve something which they don’t understand. The process which you are following needs to be defined and published to leadership & team very clearly and concisely. You need to make policy makers understand how things work and how the work is actually done by using this process. Without this understanding any discussion of problems might tend to emotional, unreliable and subjective.


When everybody in the discussion understands what you are doing and your goals, then you can make change decisions which will move team in positive direction. The choices now will be more balanced, practical and to the point. Good understanding facilitates consensus around improvements/changes.

Improve collaboratively using ‘Safe to fail’ experiments: (using models/scientific method)
It is the WIP limit which exposes problems early and encourages discussions around solving them. After discussions, team has many options i.e. Break the WIP limit, ignore the problem and continue work, face up the issue, suggest a change or solution. Team needs common understanding of the workflow to choose the right option.


When all team members are in same pace with respect to understanding of the work, workflow, risks and process, then they understand problem in more or less similar manner and reach consensus in suggesting improvement actions.
You might have heard about the word Kaizen while reading about Kanban. Kaizen is a Japanese word meaning "improvement" or "change for the best” refers to practices that focus upon continuous improvement of process. Kaizen is key part of Kanban. The Kanban method suggests using scientific approach to implement continuous, incremental and evolutionary changes.


Scientific approach is nothing but predicting the outcome using a model and comparing actual and predicted results. Scientific approach always provides learning at individual and organization level. There are some existing models which can be used for these

1.    The Theory of Constraints (the study of bottlenecks)
2.    The System of Profound Knowledge (a study of variation and how it affects processes)
3.    Lean Economic Model (based on the concepts of “waste” ; discussed in Lean post)


Irrespective of the models you use, team needs to have regular feedback loops, where you get feedback and measure pros and cons of process changes. Feedback can be anything which gives input on how your process is performing. Keep improving and performing…


With this we came to conclusion of our discussion of Kanban principles and core practices. There is major difference between ‘doing agile’ and ‘being agile’. Always be in ‘Being agile’, get started



Hope you got an idea of Kanban, Kanban – Principles and Kanban – Core practices. Thank you for stopping by and reading my blog, it means a lot to me. Help me to improve by giving your feedback. I appreciate it very much! Please feel free to reach out to me


-Balaji Sathram