What is the Kanban Software Development Process?
In the early days of software development, many teams relied on Scrum - a method that uses timeboxing, rules, and strict role assignments - to help them deliver batches of work on schedule. But as flexibility and adaptability have become increasingly important elements of the development process, teams have been searching for a workflow management method that allows for both the structure to keep progress moving and the flexibility to adapt to market changes. Using a Kanban software development process can help teams strike a balance between discipline and adaptability, allowing them to effectively meet market demands.
What is Kanban?
Before we discuss how Kanban can be applied to the software development process, let’s refresh our understanding of the methodology itself.
The driving concepts of Kanban were first developed on the shop floor of Toyota, right after World War II. The Japanese manufacturer was desperate to compete with Western companies in the midst of an economic downturn. In order to reduce operating costs, they began experimenting with a system that processed small amounts of raw inventory quickly - a system that came to be known as just in time manufacturing.
A disciplined emphasis on small batch sizes, continuous flow, and eliminating waste helped Toyota outperform its competitors and establish a sustained advantage for decades to come. The practices and principles Toyota used came to be known as the Toyota Production System - a system that was used by Western manufacturers, and later, companies from all industries, to reduce waste and improve sustainability and profitability.
Kanban shares many common concepts with TPS, such as:
- An emphasis on eliminating waste in processes and practices
- A deliberate practice of limiting work in process (WIP)
- An emphasis on optimizing flow
- A disciplined approach to teamwork, collaboration, and leadership
- The use of a clearly defined process with distinct steps
Modern Kanban implementations, specifically those in software development, look quite different from the physical assembly lines of Toyota. The primary difference is that the product, the value, that teams are working with isn’t a physical product. Its parts aren’t raw materials, but the knowledge inside the minds of developers. Visualization of the process of value creation is an essential part of Kanban. This is easy to do on an assembly line, but harder to do in software development. To get around this, most software development teams (and teams in other fields of knowledge work) using Kanban choose to visualize their process on a digital Kanban board. In the next section, you’ll learn the basic elements of any Kanban software development process.
Basics of Kanban Software Development
1. Visualize Work
Creating a Kanban board is the first step towards visualizing your software development process. By creating a visual model of your work and workflow, you can observe the flow of work moving through your Kanban system.
The first step towards visualizing your work is to understand the distinct steps your work goes through as it moves from “To Do” to “Done.” These will become the lanes on your Kanban board. Most software development teams follow some version of the following process: Gather Requirements > Design > Implementation > QA > Deploy > Maintain. We recommend undergoing a value stream mapping exercise (outlined in the Kanban Roadmap) to identify your team’s unique process steps.
Visualizing work in Kanban means not only visualizing the process - but visualizing each piece of work (represented by a Kanban card) as it moves through that process. Teams find that making the work visible—along with blockers, bottlenecks and queues—instantly leads to increased communication and collaboration.
Visualizing all work across the team also helps establish accountability and transparency across the team. This is invaluable, especially for software development teams which require coordinated efforts to get their work done efficiently.
2. Limit Work in Process
Software development teams can easily get overwhelmed with their long list of to-dos - between new features, bug fixes, maintenance work, and other project work, teams often struggle to prioritize work in a disciplined, methodical way.
An important concept in the Kanban software development process, then, is limiting work in process, or WIP. By limiting how much unfinished work is in process, you can reduce the time it takes an item to travel through the Kanban system. You can also avoid problems caused by task switching and reduce the need to constantly re-prioritize items.
Limiting WIP at both the personal and team levels can help software development teams move faster, reduce error, and collaborate more effectively. You can learn more about the benefits of limiting WIP here.
3. Focus on Flow
A deliberate emphasis on optimizing for flow is a critical element of any Kanban software development process.
Flow describes the way work moves through your Kanban system. Good flow means that work moves in a fairly linear path, from one step to another with little delay between them. Bad flow happens when work stops and starts abruptly, spends lots of time in wait states, or moves between different steps without making significant progress.
Using WIP limits is great first step towards optimizing for flow. By limiting WIP, you limit one of the biggest obstacles to good flow: an excess of active work. But this is not all - you must, as a team, work to keep each piece of work moving forward. Many teams discuss ways to improve flow at a daily standup, where they ask questions such as:
- What can we do to move existing cards off the board?
- Is there anything we can help to finish before we pull next work?
- Has anything been waiting in the same place for more than a day? What can we do to get it moving again?
You can also use process policies to maintain consistently good flow, by creating rules that all cards (and therefore, all team members) must follow. These might include:
- WIP limits on each lane, to prevent bottlenecks
- A policy on how to handle blockers
- A policy that dictates conditions that must be met before a new card can be pulled into an active lane
- A policy for “stale” work - work that has been sitting for a period that is longer than usual
Focusing on optimizing for flow can help software development teams stay productive, efficient, and ever-evolving on their path of continuous improvement.
4. Continuous Improvement
Kanban is a system of evolution, not revolution - it is not meant to force your team to completely change everything it does. A Kanban system is most effective when it reflects reality - which is why we always recommend that teams start by designing a board that accurately reflects their existing process. From there, you can thoughtfully, carefully practice continuous improvement - a perpetual process of making small, meaningful changes that help your team perform more efficiently and effectively.
As you use your Kanban board, you’ll notice opportunities for practicing continuous improvement. Implement these changes one at a time, and measure their impact so you can maximize your learning. Follow these four basic elements of the Kanban software development process consistently, and you’ll find the balance between discipline and flexibility that your team needs to succeed.
Kanban Software Development Process
You now know the basic elements of the Kanban software development process - but there is so much more to learn! If you’d like more in-depth instructions for getting started with Kanban, we highly recommend downloading our Kanban Roadmap. You can see examples of how real teams use a Kanban software process to manage their work with efficiency and speed here.