What is Kanban?

Kanban is a method for managing the creation of products with an emphasis on continual delivery while not overburdening the development team. the  technique emerges from Toyota’s “Just-In-Time”delivery process implemented for their production lines. Is Japanese kanban stands  for “visual signal” or “card.” Toyota line-workers used a kanban (an actual card) to signal steps in their manufacturing process. The system’s highly visual nature allowed teams to communicate more easily on what work needed to be done and when. It also standardized cues and refined processes, which helped to reduce waste and maximize value.

Applied in software development, Kanban retains the same philosophy, putting emphasis on the visual communication while consisting applying a set of basic principles.

Similar to manufacturing lines, a software development process can be thought of as a pipeline with feature requests entering one end and improved software emerging from the other end. Inside the pipeline, the process goes through a series of steps in order to transform the input into the expected output. For example, a simple development process could be: (1) analyse the requirements, (2) develop the code, and (3) test it works.

A bottleneck in a pipeline restricts flow. The throughput of the pipeline as a whole is limited to the throughput of the bottleneck.

Using the development pipeline previously mentioned: if the testers are only able to test 5 features per week whereas the developers and analysts have the capacity to produce 10 features per week, the throughput of the pipeline as a whole will only be 5 features per week because the testers are acting as a bottleneck.

If the analysts and developers aren't aware that the testers are the bottleneck, then a backlog of work will begin to pile up in front of the testers.

Kanban reveals bottlenecks dynamically. By consistently applying its principles, problems can be easily spotted and corrected: Visualise Work, Limit Work In Progress, Focus on the flow,  and Continuous Improvement

In its simplest form, a Kanban system consists of a big board on the wall with cards or sticky notes placed in columns with numbers at the top.

The cards represent work items as they flow through the development process represented by the columns. The numbers at the top of each column are limits on the number of cards allowed in each column. The limits are the critical difference between a kanban board and any other visual storyboard. Limiting the amount of work-in-progress (WIP), at each step in the process, prevents overproduction and reveals bottlenecks dynamically so that you can address them before they get out of hand.

There is also a subtle note: items are not pushed from one step to the other but pulled. For example, when a new feature is analyzed, is not pushed to the developer to implement it, but rather the development team will pull it into their own column once they are done with the current work.