KANBAN

March 27, 2012

What is Kanban?

Kanban is a new technique for managing a software development process in a highly efficient way. Kanban underpins Toyota’s "just-in-time" (JIT) production system.

A Kanban is a signaling device (usually a physical card in a clear plastic envelope) that instructs the moving or creating of parts in a "pull" production system, invented and developed as part of the Toyota Production System.

"Pull" means that the downstream workers (customers/retailers/users) withdraw or "pull" the parts they need from the upstream (Production system) process.

To prevent overproduction, the upstream doesn’t "push" finished parts to the downstream, but instead it is the downstream that actively "pulls" the parts from the upstream.

Toyota’s six rules of Kanban.

1. Customer (Downstream) processes withdraw items in the precise amounts specified on the Kanban.
2. Supplier (Upstream) produces items in the precise amounts and sequences specified by the Kanban
3. No items are made or moved without a Kanban.
4. A Kanban should accompany each item, every time.
5. Defects and incorrect amounts are never sent to the next downstream process.
6. The number of Kanbans is reduced carefully to lower inventories and to reveal problems.

The store works as a queue of parts, the pallets work as a carrier of parts, and the Kanban cards work as a carrier of customer-need information. They make it a "pull" system, creating a balance between sustaining "continuous flows" (eliminating the waste of waiting) and "ionizing WIP" (eliminating the waste of overproduction). This mechanism of managing the "right" amount of WIP in the flow between buying-in and selling-out is exactly what happens in a supermarket, and doing it well is the key to the profitability of the store.

KANBAN FOR SOFTWARE DEVELOPMENT

Why KANBAN?

Kanban takes an organization’s current development process and provides greater visibility into the status of the work and how it is proceeding. Kanban provides a method to continually adapt in order to smooth out kinks in the arrival of new development work. In this way, it allows the organization to avoid crises and respond more quickly and easily to issues that do arise.

Kanban also gives more precise direction on how to invest development energy into only the most valuable work. The end result is a development pipeline that is predictably and efficiently delivering high value work.

The Kanban Method reduces risk and increases flexibility, resulting in a more resilient development cycle.

The KANBAN Method

The five core principles enable the Kanban Method are:

1. Visualize the Workflow
—Represent the work items and the workflow on a card wall or electronic board.
2. Limit Work-in-Progress (WIP)
—Set agreed upon limits to how many work items are in progress at a time.
3. Measure & Manage Flow
—Track work items to see if they are proceeding at a steady, even pace.
4. Make Process Policies Explicit
—Agree upon and post policies about how work will be handled.
5. Use Models to Evaluate Improvement Opportunities
—-Adapt the process using ideas from Systems Thinking, W. E. Deming, etc

When these 5 conditions are present, a Lean software development method will emerge over time.

Sustaining Kanban

A Kanban system is used in a traditional waterfall development model but with a flow. This project has separate and serial processes which they call "design", "development", "validation" etc., and the Kanban cards move between processes.

Note that this is not a classic waterfall process, where all the requirements are "designed" at one time, "developed", and "validated" at another time, which would cause all the cards to move in a group. Instead, the cards move one by one, like the one-piece-flow of manufacturing.

Agile Kanban

WIP can be limited by defining the size of each area. To make this a pull system, it needs a mechanism allowing the downstream process to somehow signal the upstream process to start working. Making a rule that only the downstream can move the DONE cards to signal the upstream is one option. Having "Iteration Meetings" periodically is another option which synchronizes the teams and the transportation (communication) of the information among the teams.

Conclusion
Kanban systems are used in order to achieve:

1. Better process control — they keep continuous flow while limiting WIP
2. Better process improvement — they make the flow visible.

"Agile Kanban" focuses on #2, while "Sustaining Kanban" focuses on #1.

References:

http://www.infoq.com/articles/hiranabe-lean-agile-kanban
http://www.kanbanblog.com/explained/index.html

Thanks,
Sudheer Amireddy

Advertisements

One Response to “KANBAN”

  1. Vishnu said

    Good post, great job putting all the information together.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: