Kanban for Software Teams

Summary

  • A Kanban System can act as an accelerator for software delivery.
  • Building a Kanban System is achieved via 3 basic steps:
    • Defining & Visualizing the Workflow.
    • Actively managing the flow of work through the system – through the use of WIP limits and Kanban signaling.
    • Working to continuously improve the performance of the system.
  • A Kanban System is framework-agnostic, and can be used either stand-alone or to supplement other frameworks like Scrum.

Lean Principles

Implementation of a Kanban System can be an effective strategy for accelerating the flow of value through a software delivery system and improving the economics of product development. Lean provides the overarching set of principles on which the Kanban method is based:

  • Customer Centricity: Define Value from the Customer’s Perspective.
  • Identify and Map the Value Stream: Visualize the sequence of steps used to create value for the customer.
  • Create Flow: Work items should move through the workflow without delays, such as waiting for approvals or resolving dependencies. Proactively manage the flow by identifying and acting on delays, bottlenecks and blocked work items. Avoid multi-tasking: finish work on existing in-process items before starting new ones. 
  • Establish Pull: Tasks are started in response to actual customer needs or business priorities, not speculative planning. Upstream supplier processes only create work when the downstream process signals a need – implemented through the use of WIP limits
  • Pursue Perfection: Continuous Improvement through Kaizen.

For example, a development team might use pull principles to manage tasks through a Kanban board, ensuring no one takes on more work than they can handle. Simultaneously, they optimize flow by reducing handoff delays, automating testing, addressing bottlenecks and blocked work items.

By combining Flow and Pull, software teams can achieve faster delivery of high-quality products while remaining adaptable to changing priorities.

  Flow Pull
Focus Smooth, uninterrupted progression of work items Initiating work based on demand and capacity
Goal Minimize delays and bottlenecks Avoid overproduction and maintain focus
Process Continuous workflow optimization Regulate the start of tasks based on readiness and capacity
Tools/Practices Kanban Boards, Stand-ups, Continuous Integration, CD pipelines, Continuous Improvement/Kaizen Kanban, WIP limits, Backlog prioritization
Metrics Cycle Time WIP

Eliminating waste and improving flow are the primary focus of the Lean continuous improvement methodology, both of which significantly enhance customer value by reducing delays, improving quality, and lowering costs. 

Although Kanban Systems have their roots in manufacturing, and are often adopted by product support teams, there is increasing interest within software development teams seeking delivery methods with less overhead than Scrum, or, by teams looking to supplement Scrum and other frameworks with additional techniques to accelerate the flow of value through their delivery processes. Kanban is a visual, WIP-constrained pull system. A Pull System enables teams to start new work when they have capacity instead of work being pushed onto them regardless of their current workload. The goal of Kanban is to achieve balance between demand and capacity, and in doing so, to to deliver a continuous flow of value with greater predictability. The heart of Kanban is visualization of the delivery system workflow so it can be proactively managed and improved to achieve optimal cycle times. When used a stand-alone delivery system for software development, Kanban is frequently supplemented with additional practices borrowed from agile frameworks like Scrum, such as stand-ups, intake refinement meetings and retrospectives. Likewise, Scrum teams can take advantage of Kanban concepts such as improved visualization and the application of WIP limits as a way to improve transparency, and boost throughput.

Kanban provides a  system for flow-based software development. It seeks to achieve delivery of maximum business value in minimum cycle time. It pursues this goal by operating a visual,  work-in-progress limited pull system.

Kanban Implementation Strategy

Kanban adoption requires no major disruption to existing delivery processes or organizational structures. Kanban is framework-agnostic. The transition can be evolutionary and self-directed. Here is a summary of the basic steps for setting up and operating a Kanban system for software development:

Step 1: Define your workflow.

Every business has a set of processes that are used to bring a product or service to their customers. A workflow is the series of processing steps necessary to transform a customer request into a deliverable item of value. For software, a typical sequence includes steps like: Analysis, Development, Testing, and Acceptance. The individual steps in the workflow are represented by columns on a board (either physical or electronic). The details of work items are captured on cards which are then placed in the column representing their current state. For software development, cards typically represent User Stories, though other artifacts such as Features or entire initiatives (Epics). Bringing clarity and transparency to how the work gets done is a prerequisite for problem-solving and meaningful change – you can’t fix problems that you can’t see. Transparency promotes a common understanding of the work between members of a delivery team, and establishes an objective basis for enacting change.

Step 1: Visualize The Workflow
Visualize The Workflow

Split each state in the workflow (except the end states), into a Doing and Done state. The Done state acts as a buffer state for completed work to wait until capacity is available in the next workflow state. This step is important because it makes it possible to identify and react to emerging congestion within the system. This makes idle work visible, and enables rapid diagnosis of flow-related problems. 

A Development Workflow
A Development Workflow

This also makes it easier to measure and focus on flow efficiency, that is, the relative amount of time work spends waiting to be processed vs. actually being worked on. Buffer states are considered Non-Value-Added states, which means they increase the Work In Progress (WIP) of your flow – each extra item of WIP carries a penalty in terms of cycle time (per Little’s Law). A Kanban Team should always be concerned with improving their flow efficiency. Think of a workflow as a pipeline that produces value. Anything that slows down the pipeline is waste. The goal to is to increase value and reduce waste by continuously improving the workflow.

Buffers are used throughout the theory of constraints. They often result as part of the exploit and subordinate steps of the five focusing steps. Buffers are placed before the governing constraint (processing step), thus ensuring that the constraint is never starved,  and are used to protect the constraint from variations in the rest of the system.
Step 2: Apply WIP limits to each step of the workflow.

WIP-limited pull is the central flow-control mechanism in Kanban. WIP Limits are used to ensure that any processing step in a workflow is not being overwhelmed by consuming more work than it has the capacity to process. This prevents queues of work from building up between steps , keeps the cycle time for each step to a minimum, and improves overall flow efficiency – that is, ensures more time is spent actively processing a work item vs. waiting in the system. (This is similar to the ‘Window Flow Control’ mechanism used in data communications networks and refers to a credit-based flow control mechanism where a traffic source is permitted to transmit data only when there is available buffer space in the downstream node. In this way a network of systems with widely varying data transmission rates can interact reliably).

When WIP within each process step is minimized, end-to-end cycle time (and processing cost) is minimized. This relationship is enshrined in Little’s Law:

Little's Law
Little’s Law

This may seem like common sense, viz. the time to get a work item through a process is the amount of work waiting to be processed divided by the processing rate per item. The amount of WIP between each step in a workflow is effectively a queue. The longer the queue the longer an item must wait to be processed, directly causing longer cycle times (and increased processing costs) per Little’s Law.

Each extra item of WIP carries a Cycle Time penalty.

The end-to-end Cycle Time through the entire system is the sum of the individual process cycle times. To achieve our goal of minimizing Cycle Time per backlog item, we constrain the length of the queues between processing steps by applying WIP limits. Members of delivery teams can help achieve this goal by committing to finishing work in progress over starting new work. In an ideal system, work items arriving in the ‘Done’ buffer state of each process step would be consumed immediately by the next state with zero or minimum wait time.  The result is that work flows smoothly through the system, improving end-to-end performance.

Development Workflow with WIP Limits
Development Workflow with Buffer States and WIP Limits
Push vs. Pull 
In a push-based system each workflow stage pushes work onwards to the next processing step as soon as it is done. This can result in work piling up at the next stage if there is insufficient capacity. In a pull-based system, each stage pulls in new work only when it has the capacity to process it. One way to implement this is to split each state in the workflow (except the end states), into a Doing and Done state. The Done state acts as a buffer state for completed work to wait until capacity is available in the next workflow state. This prevents an unlimited amount of work from being pushed into the next state. A team member would only pull in new work if there was capacity to process it. This step is important because it makes it possible to identify and react to emerging congestion within the system. This makes idle work visible and enables rapid diagnosis of flow-related problems.  In a Kanban system, WIP Limits are used to control the amount of work that is admitted into each processing state. WIP-limited pull is the central mechanism in Kanban to ensure that each processing step is not overwhelmed by consuming more work than it has the capacity to process.

The optimum WIP level for any processing step is a reflection of that step’s capacity to process work. We neither want to overload it’s capacity or starve it of work either. WIP limits should be set to some initial values (say based on the number of team members within each processing step) and then refined or adjusted over time. Ultimately we want to achieve a balance in the flow between adjacent processes where the average rate of output from one process matches the average rate at which the adjacent downstream process can consume that work. In a manufacturing environment where the product being produced has little variation (unlike software), these limits can be calculated mathematically to achieve balance between processing steps. For software development where every new feature or user story is unique, this problem must be solved empirically. WIP constraints are the most effective way to achieve rate-matching between adjacent processes.

A common starting point for a WIP limit is to limit the number of work items in any process to the number of team members plus one. For example, if your team has five members, you could start with a WIP limit of six. This means that each team member can only work on one work item at a time and must finish it before starting new work. 

Remember, the more work we start the less we finish. Pushing more work into the system without completing any work dilutes our ability to get things done. More unfinished work in the system means more context switching, and more administration overhead, all of which slows down our speed of delivery. This is the purpose of WIP limits.

Also worth emphasizing:

  • Without WIP limits, you will not have a stable, predictable delivery system
  • Without WIP limits, you do not have a Kanban system
Step 3: Define ‘done’ for each step in the process.

Being clear and explicit about what ‘done’ means for each step of the workflow further enhances overall transparency about how the system operates, and provides a foundation for how to improve it. A transparent definition of done brings predictability and ensures quality. Making the exit criteria explicit means that the work for each step is done in a consistent and repeatable way, and that the work item is in a known state when done.

One of the core concepts in Lean Manufacturing is Standard Work. The idea is that we get consistent results from a process that is applied consistently. This may seem anathema for knowledge workers who are motivated by autonomy. The idea isn’t to use the standards as a way to limit the team. Rather, the standard is to be used a baseline for continuous improvement.  It is only possible to evaluate improvements objectively when existing workflow procedures are ‘standardized’. As standards improve, the new standard becomes the basis for further improvements: improving standardized work is a never-ending process.

Workflow Policies
Make Workflow Policies Explicit

Now our pull system is constrained by 2 things: only pull an item when there is capacity to work on it (WIP constraint), and when the item meets the definition of done for the last step in the workflow (workflow policy constraint).

Step 4: Proactively Manage the Flow and Deal with Congestion

Meet daily to identify bottlenecks, emergent queues and other impediments or delays to the flow of work. In particular, check if any step is overloaded or if any step is starved of work, or if any items are stuck in a step well beyond their normal cycle times. For the latter issue some tools will display the age of the item in that state. Stand-ups should be focused on maintaining the flow of work (congestion control). What items are late (beyond their expected cycle time), or at risk of being late? Priority should always be given to finishing work versus starting work. If necessary make adjustments to improve the flow.

Manage The Flow
Manage The Flow

Maintaining the flow means actively managing all work items in progress between the Backlog and Done states. A Kanban development team should meet on a regular cadence (for example, conduct a Daily Stand-up) to review their board and agree what adjustments need to be made to address issues of flow control and congestion. In the above example what action should the team take?

WIP limits are fundamentally capacity limits. The WIP limit for a specific column on a board is the maximum number of work items that can be processed without multi-tasking or having items sitting idle. Teams should experiment to find a good working WIP limit.

Managing the Flow: The Kanban Standup

A Daily Stand-Up for a Kanban team is the event where a team actively manages the flow of work items in their system. The event takes place around the Kanban Board and seeks to identify steps in the workflow that are overloaded, starved of work, and on what actions the team can take to recover the flow.

Active management of items in a workflow can include:

  • Controlling WIP: limiting the number of items that are being worked on simultaneously – don’t pull any new work into a processing step when WIP reaches its upper limit. (Send items back that breached a WIP limit, and focus on getting items done before starting new ones).
  • Address work items are not aging beyond expected Cycle Times, and preventing work items piling up in any part of the workflow – each of these items should have a specific owner and action plan.
  • Unblocking blocked work (taking action, including escalation beyond the team when necessary).

Overall, we want to minimize the amount of time an item spends in the system – Cycle Time. A Kanban Standup takes the form of Walking The Board vs. the usual round-robin status-taking. In Walking The Board, the board is reviewed one column at a time, from right to left, along the workflow. In progress items in the state closest to the done state are reviewed first – these represent items with shortest path to done, and hence of the highest economic opportunity. Items in each column can be reviewed in order of item age. This approach also has the benefit of freeing up slots for upstream work items.

The Daily Standup can be driven from a Work Item Age Chart, where the age of each in progress work item is shown versus workflow state and also versus the team’s historical expected time in progress. For example:

Work Item Age Chart
Work Item Age Chart

A team’s SLE is based on historical cycle time performance data, an example of which might be: 85% of work items are done in 15 days or less.

With this approach, where the focus is on delayed items or at risk items,  we can get through a standup more quickly and effectively.

Measure and Improve Relentlessly: Kaizen

While the Daily Standup event is focused on making tactical adjustments to maintain the flow on a day-to-day basis, more systemic improvements of the overall workflow need a broader perspective on how the system is performing. Continuous measurement and improvement of the development workflow is necessary to improve lead times and reduce costs.  Teams must continually improve their processes by eliminating non-value adding tasks and by investing in training, better tools, and automation.

In Kanban, a small number of process metrics is sufficient to evaluate the performance of core delivery processes, and to point at where improvement is needed. Since the focus of Kanban is the reduction of Cycle Time by improving the flow of work through a system, the metrics used to measure flow performance are flow metrics, Specifically, Cycle Time, Throughput and WIP.

Flow Metrics

  • Cycle Time: Measures the time from when work actually begins on an item until it is completed (typically measured from the In Progress state to the Done state). Cycle Time can also be measured for any individual process step within the workflow.
  • Throughput. The number of work items completed per unit of time.
  • Work In Progress (WIP). The number of work items in progress between the To Do and Done states of a system. WIP is also measured at individual process step in the workflow.

The relationship between these metrics is described by Little’s Law, and the Continuous Flow Diagram (CFD) is a good way to visualize these relationships. The CFD Diagram is one of the primary artifacts of the Kanban Method, and is used to measure flow performance, identify bottlenecks in the process, and to help identify opportunities for improvement. The CFD shows the distribution of work in each of the workflow states and how that distribution is trending over time. Each band in the diagram shows the number of work items in each state of the workflow.

Cumulative Flow Diagram
Cumulative Flow Diagram

Reading a CFD can provide us with each of the fundamental measurements of flow, namely Cycle Time, Throughput and WIP. One can see from the above example CFD chart that after day 7 the work arrival rate has increased while throughput has been unable to keep up. This has caused an increase in WIP, and a consequent increase in Cycle Time. Anytime the arrival rate exceeds the departure rate (or throughput – the processing rate per item), WIP will accumulate and Cycle Times will increase per Little’s Law. The CFD is a powerful tool for diagnosing problems in a system. This data provides the team with the data needed to decide what actions are needed to improve Cycle Time. The relative priority of all proposed improvement initiatives should be directly proportional to their impact on reducing Cycle Time.

Another useful tool in bringing focus to Cycle Time improvement is the Cycle Time Histogram. This is a chart showing the distribution of delivery cycle times (for example for User Story cycle time in days) by frequency. Cycle Time is the time from development starts to done.

Lead Time Histogram
Lead Time Histogram

This is useful (and actionable) data for a team that has a goals like:

  • deliver majority (>50%) of user stories in 2 days or less, and,
  • deliver 95% of all stories in under 10 days.

More on Flow Metrics here.

Conclusions

The Kanban Method brings strong focus on accelerating delivery cycle times. It can be used as a standalone method or complement other agile frameworks like Scrum:

  • Visualize your workflow in a way that enables diagnosis of flow-related problems.
  • Limit the amount of work pulled into each processing step to minimize queues and delays.
  • Continuously measure and improve.

Like Scrum, the Kanban Method is intended to be a team sport, and improvement is best achieved through inspection and adaptation based on transparency and collaboration. Some Scrum teams may wish to relinquish their fixed time-boxes and try a continuous flow type development model. They should by all means give it a try.

Scroll to Top