Kanban is a method for managing the creation of products with an emphasis on continual delivery while not overburdening the development team. Like scrum, Kanban is a process designed to help teams work together more effectively.
Kanban is a lean approach to agile software development. Actually, Kanban means many things. Literally, Kanban is a Japanese word that means “visual card”. At Toyota, Kanban is the term used for the visual & physical signaling system that ties together the whole Lean Production system. Most agile m-ethods such as Scrum and XP are already well aligned with lean principles. In 2004, however,David Anderson pioneered a more direct implementation of Lean Thinking and Theory of Constraints to software development. Under the guidance of experts such as Don Reinertsen, this evolved into what David called a “Kanban system for software development”, and which most people now simply refer to as “Kanban”. ¬So while Kanban as applied to software development is new, Kanban as used in Lean Production is over a half century old.
How does Kanban work?
There are many flavors, but the core of Kanban means:
1. Visualize the workflow
• Split the work into pieces, write each item on a card and put on the wall.
• Use named columns to illustrate where each item is in the workflow.
2. Limit WIP (work in progress) – assign explicit limits to how many items may be in progress at each workflow state.
3. Measure the lead time (average time to complete one item, sometimes called “cycle time”), optimize the process to make lead time as small and predictable as possible.
This is a direct implementation of a lean pull scheduling system. Here’s an example of a simple Kanban board, with WIP limits in red.
What are the benefits of Kanban?
Some commonly observed benefits are:
• Bottlenecks become clearly visible in real-time. This leads people to collaborate to optimize the whole value chain rather than just their part.
• Provides a more gradual evolution path from waterfall to agile software development, thereby helping companies that previously have been unable or unwilling to try agile methods.
• Provides a way to do agile software development without necessarily having to use time-boxed fixed-commitment iterations such as Scrum sprints. Useful for situations where sprints don’t make much sense, such as operations and support teams with a high rate of uncertainty and variabilty.
• Tends to naturally spread throughout the organization to other departments such as HR and sales, thereby increasing visibility of everything that is going on at the company.