Working in a software team is easy — The business gives you a specification on what to build, the developers build it, the testers test it and then you deploy it somewhere for people to use it.
But what happens when those individuals don’t work in sync and the team is building the software faster than it can be deployed, the developers churn out work faster than it can be tested, or the business can’t feed the team with specifications and decisions? — You get bottlenecks.
Bottlenecks are constraints in a flow and if a team are using a more Lean orientated software development approach then removing these bottlenecks is the key to not only meeting deadlines, but also helping the business realise the agility that such an approach is meant to give them.
How to spot bottlenecks
If there are bottlenecks in your process it’s likely the team already has a good idea of where they sit, but spotting less-prominent or emerging bottlenecks will only be achievable via monitoring the flow of work through the team.
In order to monitor the flow you first need to map out the stages in your workflow. If you’re using some form of agile methodology it’s likely you’ve already done this, but in order to make things easier to track you should look to add input queues to your stages such as ‘ready for test’ or ‘ready for deployment’ in order to track items and see how long they take to be picked up.
The number of items in an input queue and the amount of time each item spends in that input queue will allow you to visualise where work is getting stuck in your workflow, while the amount of time the item spends in the stage gives you an indication of the how long it takes to complete the work.
A helpful visualisation technique to help spot bottlenecks is the Cumulative Flow diagram where the number of items in the workflow stages is plotted over time. Bottlenecks are visible as wide ‘areas’ and vertical ‘cliffs’, where there are more items in that stage’s input queue over time as the work gets stuck due to constraints in that stage.
An example of a cumulative flow diagram generated by Jira, you can see in progress area get wider and disappear as it hits the cliff of the items being moved into done
You can temporarily relieve a bottleneck by ‘swarming’ on the problematic stage, but without taking the time to understand the flow the frequency of having to swarm will increase.
In order to understand how to remove a bottleneck it’s worth holding a root cause analysis session in order to understand why the team is having issues at that stage and what may be causing them.
Potential causes may be:
**There aren’t enough people working in that stage and the team(s) before it are working faster than they can work
**This issue can be fixed by getting more resources to help out on that stage but it’s not going to be an overnight fix. New team members need to be on-boarded and the work may be hard to parallelise, so it’s important to take these into consideration.
**There are issues further down the workflow that are making it take longer for work items to clear that stage
**In order to fix this you’ll need to look beyond the initial team and hold a further-reaching root cause that encompasses all stages up to the product getting into the user’s hands, as there may be blockers all the way up to this point which have an impact further up the workflow.
**The work involved in the stage involves more work and thus things take longer
**This issue is probably the easiest to fix but requires the most discipline from not only the team, but the business. As the work takes that long in that stage, you’ll need to adjust all stages prior to it to work at a speed that means work doesn’t back up whilst waiting to be worked on.
Sticking to it
Once you have identified the bottleneck and decided how you’re going to prevent it from disrupting your flow you’ll likely to hit the hardest part of the process — instilling discipline.
It may be relatively simple to ensure the team are working together and to the pace agreed to stop the bottlenecks happening, but the team don’t exist in a silo and there will be others who will need to show restraint.
There’s no silver bullet to influencing these outside actors, but explaining the need to slow down the work entering the workflow and showing that relieving the bottleneck actually increases output are tools you can utilise.
If there’s one phrase that will help people get on board with your efforts to fix the workflow it’ll be ‘Stop Starting, Start Finishing’ — a mantra that embodies the need to stop picking up new work and focus on getting the work in the workflow through to being released.