Every organization needs to be responsive to changing business needs and market dynamics. While we have seen agile adoption resulting in higher development velocity, it has often resulted in too little business value due to other constraints in the form of bottlenecks.
The adoption of agile practices and the initiative to increase development velocity while enabling faster feedback loops reminds me that addressing the development backlog often increases the flow only to bottleneck the next phase of your process rather than your overall flow from inception to production.
Wherever we make improvements in the flow of our software development and delivery lifecycle, we must acknowledge that if we need to understand the next most limiting bottleneck, we may be investing time and resources that becomes wasted. Identifying and addressing the next most limiting bottleneck almost always exposes the next one, so our approach must continuously improve our processes and practices at every phase. I’ve witnessed and experienced multiple bottlenecks in my career, working and servicing organizations worldwide and modernizing their practices and processes across all software development and delivery stages.
When I see a well-maintained prioritized backlog, I view any identified bottlenecks as skittles that need to be knocked down. This has been, and for many continues to be, a challenge among highly regulated large enterprises that have historically been waterfall, maintain functional silos, and a mix of traditional and modern applications, services, and environments. If only it were so easy!
1: Identify your next priority bottleneck
Review your flow from inception to delivery to identify the slowest phase, as that will form your next priority bottleneck. I don’t advocate improving phases that are not the primary bottleneck, as that will typically realize localized gains but won’t optimize the business value.
Identifying your next priority bottleneck can readily be achieved by asking the team and, if necessary, applying cycle time analysis or visualizing work.
With cycle time analysis, we track the time it takes to turn an idea into working software, paying particular attention to the time work items spend waiting in queues. These are typically the longest before the bottleneck.
Using a Kanban Board, we can visualize the flow of work, setting up the phases in your process as columns and showing the items being worked on and those that are ready for the next phase. Doing so makes it easy to visualize the size of the queues and identify the bottleneck where the most significant queue exists.
Here are some choices in terms of process improvement approaches that I have both witnessed and engaged in to increase development release velocity:
2: Optimize the efficiency and effectiveness of each identified bottleneck phase
While historically, we may have just added capacity to address the bottleneck, we now look to optimize the usage of resources in that step in the process. Examples include dedicated testers to one project at a time or assigning development and QA resources to be present when software is deployed. Typically, this will map to a group of people or possibly a specific individual with a unique skill. The goal is to minimize detractions and optimize skilled resources.
Align and synchronize around maximum cadence for the bottleneck
As we focus on increasing the release cadence, the rest of the organization could synchronize to match the cadence of the production flow, optimizing business value.
Examples include synchronizing the entire process around the rate at which software can be deployed or adopted or limiting the inception of new projects to the rate at which the environments can be provisioned.
3: Eliminate the bottleneck
While this can be as simple as adding resources to work on the phase, it is often an opportunity to adopt more efficient and automated practices. Modernizing practices can be significant and introduce disruptive changes, which is why I strongly believe in ensuring modernized practices become good habits.
Examples include adopting agile practices, shifting left with continuous inspection, and managing environments with automation tools that maintain configuration and releases consistently.
Where are your bottlenecks? Which skittles do you still have standing?