It’s safe to say humans have been trying to be more efficient dating back to the dawn of time. If it were easy, we’d already be there. So when organizations approach the concept of more efficient engineering teams, there’s almost always trepidation or worse. Developers don’t want to be time-tracked, but the C-suite wants results, and let’s not even go into how demanding customers can be.
In many organizations, this debate settles around a single metric: flow efficiency. Part of the set of flow metrics, flow efficiency hones in on the ratio between how long it takes to start and finish a project compared to the amount of time it’s actively worked on. Or, to put it more simply, flow efficiency shines a spotlight on how much time teams spend waiting or not working on something. In theory, improved flow efficiency means engineering teams can get code out the door faster.
It’s a noble quest, even a doable one, provided organizations are willing to change metrics, processes, and culture. Here’s our best advice for boosting flow efficiency in enterprise engineering teams.
Understand flow efficiency and flow metrics
Flow efficiency is one of six data points that make up the system of flow metrics, which was created by Dr. Mik Kersten in 2018. Organizations turn to flow metrics to ensure engineering and business value and requirements are aligned… a big undertaking indeed. Six flow metrics – velocity, time, efficiency, load, distribution, and predictability – are mapped to four development stages (known as “flow items”).
Although improved efficiency is a recurring theme through all of the flow metrics, flow efficiency is the one most widely hailed as the way to actually *see* how teams are spending their time. Flow efficiency is also a key component of Lean software development.
To determine flow efficiency, it’s necessary to do a bit of math: take the amount of time actually working on a project (some call this the value-add time) and divide by the entire amount of time the project required (can be referred to as lead time), and then multiply that number by 100.
work time/lead time*100=the percentage of flow efficiency
The percentage answer to this equation is going to highlight how much time teams are spending waiting, aka not working, and that raises the question of, “What is making them wait?” The answer to that is exactly what flow efficiency is designed to uncover. Understanding the blockers is the single biggest step toward a more efficient engineering process.
Flow efficiency is another way to assess the pesky work-in-progress problem because teams can now see whether WIPs are actually “in progress” or simply sitting idle.
Is there an ideal flow efficiency percentage? The answer is… it depends. Experts say between 15% and 40% are “good” targets and anything above 40% is extraordinary. But take that with a healthy dose of skepticism: what matters most is that your organization is seeing regular increases in this percentage.
Take the time to measure
Any effort to improve productivity and efficiency must start with measuring — otherwise, it’s impossible to know exactly where a team is. The good news is flow metrics are just one of a number of metrics to choose from, and in most cases, they can be mixed and matched depending on an organization’s needs. Flow metrics, including flow efficiency, are key to understanding if teams are working on the projects that matter most to the business, but they’re certainly not the only way to improve productivity broadly. The DevOps Research Assessment, or DORA metrics, are an ideal way to understand how a software team compares to others using their five standards: deployment frequency, lead time for changes, change failure rate, and time to restore service and reliability. SPACE, on the other hand, is a series of performance indicators best used to look at individuals on a team.
Organizations are unlikely to suffer from over-measurement, but it’s always key to wrap metrics in context and to not measure individual performance. That being said, embrace the metrics and the opportunity to really understand where teams are blocked, what’s working well, where more resources may be needed, and, finally, where changes may be necessary. A thoughtful metrics program won’t just improve productivity but has the opportunity to boost productivity, morale, and alignment with business values.
Embrace the right tools for the job(s)
It’s impossible to talk about flow metrics and engineering efficiency without addressing the elephant in the room: does the team have the best tools for the work at hand? The answer matters because we know that a big source of developer frustration and unhappiness revolves around not having the right tools, and we also know that teams spend a lot of time waiting on people and machines, according to Retool’s 2022 State of Engineering Time Survey. Also, devs devote, on average, only 2.85 days a week to coding, and that percentage is headed in the wrong direction.
So while the right tools aren’t the only way to increase engineering efficiency, they’ll help, because happier developers really are more productive.
Address the blockers
Developers can’t be as productive as they like if they feel blocked, and while the flow efficiency metric can’t fix that problem, it can at least spotlight where the issues are. It can be helpful to have a visual representation of where the starts and stops happen and to consider other related flow metrics like load and distribution. Once the picture is complete there are specific areas to consider including:
- Does your team have too much work in progress? Too many projects can dilute forward momentum, cause confusion about priorities, and generally hinder the process. Limiting the WIPs can help solve this stalling point.
- What is making team members wait? Are there organizational barriers to sitting down and creating code like waiting for code reviews, or test automation, or business side review? Studies have shown developers can spend up to an hour a day waiting around for questions to be answered… yikes. Diving into the causes of waiting and doing the work necessary to remove those barriers can yield big improvements in engineering efficiency.
- Could less be more in your organization? Teams that may have difficulty managing work-in-progress projects could benefit from the concept of “single piece flow” which basically means putting more resources into fewer projects. Single flow can potentially increase focus and decrease context shifting with a side benefit of faster start to finish, but it may not be practical for all teams.
- Does pulling make more sense than pushing? For some teams, having customer demand (the “pull”) dictate the workflow can make them more focused and productive than just pushing out code that might or might not be what’s needed in the marketplace. A pull-request model can be a major change but might be worth experimenting with.
Create the culture
Although last on our list, creating a culture that supports improved efficiency should not be seen as least – in fact, this can be the trickiest bit to establish simply because developer productivity can be a difficult subject for management to tackle.
Engineering leaders need to walk a very fine line implementing metrics that don’t target individuals while at the same time moving the levers of efficiency in the right direction. It’s best to start by taking a few deep breaths, and then consider what might help bring everyone on board.
Regular transparent communication about the metrics, the business goals, and the outcomes should be established, of course, combined with regular check-ins with teams and individuals. It’s also vital that collaboration is both encouraged and celebrated; it’s widely known that collaboration can make the difference between good and great development teams.
And finally, remember this can’t happen overnight. Patience and practice can get teams moving in the right direction.
Flow efficiency can make the difference
While no single metric, or even set of metrics, can be all things to all teams, we strongly believe flow efficiency is the key for those wanting to improve engineering efficiency. Combined with a broader metrics measurement program, along with the right tools, culture, and problem-solving attitude, organizations will be able to streamline and refresh the processes, ending in greater efficiency and hopefully more successful (and satisfied) teams.