Visualizing the flow of work
Kanban originally is a logistic control system developed by japanese automotive manufacturer Toyota in the early 50s. It is a scheduling system for lean and just-in-time production that contorls the logistical chain from a production standpoint. Aimed at improving and maintaining a high level of production without causing bottlenecks to slow down the production process, kanban became an effective tool in a multitude of production systems.
Throughout the recent years the, kanban became a method that has been increasingly popular in the field of software development. Based on the idea of preventing bottlenecks, this method follows a work-in-progress limited pull system where team members pro-actively assign themselves open tasks from the backlog once they completed an ongoing task. This way, work is being distributed evenly without overloading the team members with work packages.
As defined by David J. Anderson, the kanban method has six core principles:
- Visualization: The workflow is visible to everyone involved, allowing everyone to understand the flow of work. This is based on the theory that necessary changes can only be made if the overall process is being understand. Visualization is mostly achieved by representing each task/work package by an index card that compiles all the task-related information.
- Limited work-in-progress: The pull system where team members assign themselves to tasks pro-actively choosing tasks from the backlog ensures a continuous and incremental workflow. Work is distributed evenly without overwhelming the individual team member.
- Manage the flow: The workflow through each state can be monitored and evaluated for its efficiency making sure that no open task is ignored.
- Explicit policies: Only if a process is explicitly described to all the team members can opportunities for improvement be discuessed on a rational and objective level. When everyone involved has the chance to comprehend why and where improvements are initiated, consensus can be reached much faster and acceptence amongst those involved is larger.
- Implement feedback loops: Processes can only be improved if the team who is working as part of the process on a daily basis has the opportunity to give feedback on the effectivness of the current flow of work.
- Collaborate and experiment: Real improvement comes from collaboration in the team and you can best develop an improved system when continuously experimenting with different options.
Source: <span class="reference-text" style="font-size: 0.8em;">Anderson, David (September 2003). <em>Agile Management for Software Engineering: Applying the Theory of Constraints for Business Results</em>. Prentice Hall. <a href="http://en.wikipedia.org/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <a href="http://en.wikipedia.org/wiki/Special:BookSources/0-13-142460-2" title="Special:BookSources/0-13-142460-2">0-13-142460-2</a>.</span>