What is Kanban
Kanban is a Japanese term meaning signboard or billboard. An industrial engineer named Taiichi Ohno is credited with having developed Kanban at Toyota Motor Corporation to improve manufacturing efficiency.
Kanban for software development teams
While Kanban was created to help with manufacturing, software development teams share many of the same goals, including wanting to increase their flow and throughput. Using some of the guiding principles of Kanban, teams can improve their efficiency and deliver value to their users faster.
Key Kanban principles
Adopting Kanban requires adhering to some fundamental ideas that may vary from a team's previous approach.
Software development teams historically have had work pushed on them as stakeholders request more functionality. This is often accompanied by tight deadlines. A common side effect of this behavior is that quality suffers as the team is forced to take shortcuts necessary to deliver the functionality within the timeframe.
Kanban helps teams focus on maintaining an agreed-upon level of quality. This measure must be met before a team can claim a piece of work is done. To support this model, stakeholders do not push work upon teams that are alredy working at capacity. Instead, they add requests to a backlog that the team "pulls" into their workflow as capacity becomes available.
Understanding the status of a software development team in terms of both process and progress can be challenging. It is easier to understand the current state of work when progress is presented visually, as opposed to as a long list of work items or as a document.
Visualization of work is a key Kanban principle primarily addressed through the use of Kanban boards. These boards employ the use of cards that are organized by progress in order to communicate overall status.
Visualizing the work to be done as cards on a board, in different states, allows you to easily see the "big picture" of where the project currently stands, as well as identify potential bottlenecks that could affect productivity.
Limit work in progress
Teams that try to work on too many things often suffer from reduced productivity due to frequent and costly context switching. The team is busy but work just doesn't seem to be getting done resulting in unacceptably high lead times. To address this, limiting the number of backlog items a team is working on at any given time helps increase focus while reducing context switching. The items currently being worked on by the team are known as work in progress (WIP).
The maximum number of items a team decides to work on at any point in time is known as the WIP limit. A well-disciplined team will work to ensure they are not exceeding their WIP limit. Should this occur, the team will investigate the reason, and work to solve the root cause for the issue.
For software development teams to continuously improve, they need ways to measure their team's effectiveness and throughput. Kanban, through the use of the Kanban board, provides a dynamic view of the state of work in a workflow. This allows the team to experiment with different processes and evaluate the impact on the flow of work more easily. Teams that practice Kanban often utilize measurements such as lead times and cycle times and generally embrace the benefits offered for continuous improvement.
A Kanban board is just one of many tools teams use to implement Kanban practices in a team. A Kanban board can be a physical board or a software application that shows cards arranged into columns. Typical column names include To-do, Doing, and Done, but teams can customize this to suit the states in their workflow. For example, a team may prefer New, Development, Testing, UAT, and Done.
Software-based Kanban boards display cards corresponding to product backlog items. They include links to other items, such as tasks and test cases. Teams generally customize the cards to include information relevant to their process.
On a Kanban board, the WIP limit is applied to all "in-progress" columns. The first and last columns on a Kanban board do not have WIP limits as they represent work that has either not yet begun or has already been completed. Kanban boards help teams stay within WIP limits by drawing attention to columns that exceed their WIP limits. Once identified, teams can determine an appropriate course of action to remove the bottleneck.
Cumulative flow diagrams
A common addition to software-based Kanban boards is a chart called a cumulative flow diagram (CFD). This chart illustrates the number of items in each state over time, typically across multiple months. The horizontal axis shows the timeline while the vertical axis shows the number of product backlog items. Colors are used to indicate the state (or column) the cards are currently in.
This chart is particularly useful for identifying trends over time, including bottlenecks and other disruptions to progress velocity. An example of a good CFD would show a consistent upward trend while the team is working on the project. The various "stripes" across the top of the chart area should be roughly parallel if the team is working within their WIP limits.
Should one or more of the stripes show a bulge, this is usually a clear indicator of a bottleneck or impediment in the team's flow. In the CFD shown below, the completed work (green) is flat while the previous state, Testing, is growing due to a likely bottleneck.
Agile, Scrum, and Kanban
- Scrum focuses on fixed length sprints where Kanban is more of a continuous flow model.
- Scrum has defined roles where Kanban does not define any specific roles for the team.
- Scrum uses velocity as a key metric where Kanban champions the use of cycle time.
In calling out the differences in the previous paragraph, it is also common for teams to adopt aspects of both Scrum and Kanban to help them work most effectively. Remember, regardless of which characteristics chosen, teams can always review and adapt until they find the best fit. Start simple and don't lose sight of the most important thing: delivering value regularly to users!
Kanban with GitHub
Developers using GitHub will find a great Kanban experience through project boards. These boards help you organize and prioritize work for specific feature development, comprehensive roadmaps, or even release checklists. You can further automate project boards to keep the status of cards in sync with associated issues and pull requests.
Looking for some hands-on experience with Kanban on GitHub? Learn to create a release-based workflow using GitHub projects.
Kanban with Azure DevOps
For developers working with Azure DevOps, Azure Boards provides a comprehensive Kanban solution for DevOps planning. In addition to deep integration across Azure DevOps, Azure Boards can also be used in as part of a GitHub-centric DevOps experience.
Looking for some hands-on experience with Kanban on Azure DevOps? Learn to choose an Agile approach to software development.