How to read a cumulative flow diagram
Adopting Kanban ways of working can help to enhance your Scrum. If you want to learn more about Scrum with Kanban, a great place to start is by reading Scrum.org’s recommended reading list for their Professional Scrum with Kanban training.
One of the benefits of flow-based systems is the real-time data and metrics on performance. Moving away from burndown charts towards flow metrics gives a team more transparency about what is going on. It will also help you to forecast more effectively — by moving from deterministic to probabalistic mindset and ways of working.
One of my favourite tools is ActionableAgile, which I use as a Microsoft Azure DevOps plugin. This plugin gives rich data insights on a range of flow metrics. For our purposes here, I’ll show you some of the metrics we get straight out of DevOps without ActionableAgile.
A cumulative flow diagram (CFD) is a visual representation of how healthy your flow is. It can tell you much about how a team is performing — if you know what to look for. It can be a powerful topic for a team retrospective. A CFD also brings together all the essential flow metrics into one place: cycle time, throughput, work in progress and work item age.
When a team is performing well, the ideal CFD shows you a steady growth of completed work. A CFD will give you good retrospective insights for the team to discuss flow. When problems start to arise, you can begin to spot them. A team can then start to have the right conversations and work to resolve them in a retrospective. For Scrum teams, a CFD only really works for a retrospective as it only looks back. Therefore it’s not a useful tool for sprint planning.
This graph is a CFD from my current team. The x-axis is time, and the y-axis is each product backlog item (PBI). I’ve annotated the metrics to look out for, which I have explained in a bit more detail below. There are a few important things to understand here, particularly how ActionableAgile works.
- A CFD shows when a PBI enters a state in your workflow. It counts as an arrival, rather than a departure into that point in your process. This makes most sense if you think about the end of your workflow or the done state. As a PBI will never leave done, we’re counting the arrival into that point.
- I’ve not wanted to make the chart below too wordy. Technically, wherever you see the word ‘average’ you should read ‘approximate average’. I’m not going to go into why here, though chapters 4 and 5 in Daniel Vacanti’s excellent Actionable Agile Metrics for Predictability explains it better than I ever could.
The top band in the graph shows new work coming into the system. The bottom band shows closed work leaving the system. Each band in between shows the different states or columns on the Kanban board. When someone pulls a PBI into a column from the queue, it enters an active state, and it remains active until it is done or closed.
With all these metrics, the overall goal is to limit your WIP, which should then help to reduce cycle times. In Scrum terms, this will help you achieve your sprint backlog, or throughput.
Kanban is counterintuitive that way — limiting your WIP and working in smaller batches will mean your team can do more while delivering results faster. The pennies game shows this concept well and is an good aid as a game to play with your team if they are sceptical about WIP limits.
There are three key metrics we can understand from this chart. For our purposes, I’m not going to explain how to work these out manually. If you use DevOps or a similar system, the tool will work this out for you. However, a word of caution here. Inbuilt reports are either poorly setup or communicate entirely wrong thing. Jira is notorious for this. For all my metrics, I exclusively use ActionableAgile and would highly recommend you do the same.
A few reflections on flow metrics and CFDs.
Throughput
Throughput is the number of PBIs delivered over a set period. As a Scrum team working on sprints, we use a throughput metric to review how much work we delivered in a sprint. This helps us have some of the right expectations on committing to work in the future. I wouldn’t use a CFD to try to calculate throughput in the future — I’m not actually sure you could do that. Remember a CFD is used to look backwards, not forwards. You could use a CFD to try to see why your throughput has fallen. If you’re looking forward, aMonte Carlo Simulation is a useful tool to help answer the question around how many items can be done in a given time period, like a sprint.
Work in progress (WIP)
WIP shows the number of PBIs active in your system. To help maintain a healthy flow, Kanban uses WIP limits as a cap for the number of PBIs in your system. WIP limits help regulate the flow, by forcing the team focus on a few items at a time. If you use separate WIP limits for different stages in your flow, the total WIP should be the same as all your individual WIP limits combined.
When looking at a CFD, you want your arrival rate to run parallel with your departure rate. This will show you that work is entering your system at roughly the same rate as it is leaving. In our case, this is the number of items actively being worked on vs actively leaving. We don’t have a WIP limit for our backlog. This is because our backlog is the step before we have committed to any work, before our start point.
If the lines widen over time, it could indicate too much work is entering the system and breaking your WIP limits. There is a risk of your throughput will drop as the flow starts to become less controlled, making your system less stable.
When to use your CFD
As a ‘live’ chart, a Scrum team can use a CFD as a mirror to check team performance at any point. As a tool to diagnose operational problems, it can be invaluable.
These metrics the most useful (maybe really only useful) in a sprint retrospective. It can be a great starting point to discuss performance over the sprint and what the team can do to improve the performance. Reviewing a CFD together in a retrospective and pinpointing issues can be a good tool as a conversation starter.
Overall, a CFD will show the how healthy your flow is and therefore, the overall stability of the system. We want stable systems as we want to use metrics to forecast. A predictable system means better quality data and therefore gives you the ability to forecast within an agreed framework of risk.