Getty Images/iStockphoto

Tip

Applying Kanban principles to software development

Kanban was conceptualized in manufacturing and later adopted by software development teams, alongside other methodologies, such as Lean and Scrum. Learn to apply Kanban principles.

Though it was conceptualized outside of software development, Kanban has become the methodology of choice for many development teams today.

Kanban originated in the manufacturing world to streamline processes by focusing on just-in-time concepts. Small amounts of product were manufactured in a continuous flow. This reduced the costs associated with maintaining large inventories, reduced waste and improved quality.

These same concepts form the basis of Agile software development.

When the Agile Manifesto and its 12 principles were published in 2001, organizations used it to move away from inflexible, time-consuming methodologies, such as the Waterfall model, and toward Agile's iterative development methodologies, such as Scrum and Lean software development. These methodologies use small increments of development to enable the flexibility needed to incorporate changing priorities.

Lean vs. Scrum vs. Kanban

Scrum methodology uses a series of ceremonies, including backlog refinement, sprint planning, daily standup, and sprint review and retrospective. Work is pushed through the process. While this approach improves collaboration and velocity, it is difficult to make changes to the sprint commitment. Flexibility is limited.

Lean software development has a more direct connection to Kanban in the manufacturing space. Tom and Mary Poppendieck, in their 2003 book Lean Software Development: An Agile Toolkit, applied concepts such as mapping value streams, focusing on eliminating waste and implementing a pull approach to deliver as fast as possible. While Lean offers advantages, the decision-making process in Lean can be difficult.

Kanban as a software development methodology takes influence from the principles of Scrum and Lean and addresses some of the disadvantages of both.

Advantages of Kanban

Kanban, Scrum and Lean are not competing approaches -- they can be used alongside one another. Kanban improves Scrum and Lean approaches by visualizing the flow of work throughout the process on a Kanban board. This increases flexibility and eliminates the difficulties associated with the sprint commitment in Scrum. On a Kanban board, so-called swimlanes are added to help manage work in progress (WIP) more effectively. The lanes can be organized by team, client, tasks and so on. With a pull approach, or managing work based on client needs, work is streamlined, and waste is reduced.

Depiction of a Kanban board
In this Kanban board, the horizontal rows represent swimlanes, and the columns are the stage that each work item is in.

Microsoft was one of the first organizations to incorporate elements of both Scrum and Kanban by successfully implementing Scrumban in 2004. Apple uses the pull approach successfully by introducing a new product and then basing manufacturing on customer demand.

When Kanban is implemented with the core principles and practices in mind, it can be an effective, flexible and efficient software development methodology.

Applying Kanban's principles and core practices

Kanban is a pull system of organizing and managing work. It is built on four principles and six core practices. When Kanban is implemented with the core principles and practices in mind, it can be an effective, flexible and efficient software development methodology.

The four principles of Kanban are as follows:

  1. Start with what you do know. This principle recognizes that the team has valuable practices, and it states that change should be based on a review of these existing practices. This reduces unnecessary rework.
  2. Agree to pursue incremental change. This follows from the first principle and relies on the concept of continuous improvement. It also establishes the concept of flow and the understanding that change is a process.
  3. Respect current roles, responsibilities and titles. This positions Kanban as a collaborative effort based on changing only what is necessary for continuous improvement.
  4. Encourage acts of leadership at all levels of the organization. This enables team members to take responsibility for handling issues as they arise. This also promotes creativity and innovation.

The six core practices establish the pull process. In the pull process, work is not done unless there is a need for it. This requires a thorough understanding of the customers' needs.

The six core practices are as follows:

  1. Visualize workflow. This is about understanding the work at each stage in the process and the business risks involved. The Kanban board creates transparency into the process. It is important to design the Kanban board with swimlanes that make the most sense to the project and organization.
  2. Limit work in progress. WIP limits are crucial as they reduce waste. Reducing waste increases velocity and decreases costs. This is the basis of the pull system; work only on the tickets that are necessary. The Kanban board enables the team to manage WIP effectively.
  3. Manage the flow. Teams manage flow with the columns of the Kanban board. The columns represent the stages of work. Looking at the board, it is easy to see where the flow is getting blocked so that corrective actions can be taken in a timely manner.
  4. Make process policies explicit. Explicit policies are important for transparency. All policies and processes should be discussed and published. It is important for the team to have a shared understanding so that the process is kept in the forefront during all team discussions.
  5. Implement feedback loops. Fast feedback is the basis of continuous integration. Without fast feedback, the pull strategy and the flow do not work efficiently.
  6. Improve collaboratively, evolve experimentally. As the foundation of Kanban, this requires a shared understanding among team members. It is the key to continuous improvement.

Gerie Owen is lead quality engineer at ZS. She is a conference presenter and author on technology and testing topics, as well as a certified Scrum master.

Dig Deeper on Software development lifecycle