Companies like Google have Engineering Productivity (EngProd) teams, other companies like Netflix refer to these as Developer Productivity (DevProd) teams. Regardless, what these teams do matters far more than what they're called.
Sooner, Safer, Happier
When pressure builds for more work, engineering leaders often feel conflicted between speed, reliability and developer happiness. Engineering Managers will often reach the false conclusion that to ship more work, they must sacrifice employee well-being and reliability.
A recent study we conducted found that 83% of developers suffer from burnout. This worsened during the COVID-19 pandemic, with the main reason cited by developers being "increased workload".
"Project Micromanagement" tools have recently emerged, these tools allow engineering leaders to scale the micromanagement of their staff - thus allowing these poor management practices to be adopted systematically. We recently wrote a blog post exploring the harmful nature of Project Micromanagement tools, and how their approaches stand in conflict with large-scale studies on effective Agile and DevOps best practice.
So, how do elite EngProd teams boost software delivery times and reliability all whilst reducing developer burnout?
Focus on Flow
The secret to driving engineering productivity rests in over 100 years of industrial research. These findings were summarised and developed in Eliyahu Goldratt's book "The Goal". Amazon founder Jeff Bezos thinks so highly of the book's findings that he makes all his senior executives read the book.
The book focuses on identifying a systematic way to identify the constraint of a system and to alleviate it. This is done by focusing on increasing the rate of flow and decreasing Work In Progress.
The benefits of focusing on flow in the software engineering context are numerous. The obvious benefits are firstly that there is less task switching due to there being less Work In Progress, thus increasing productivity. Studies have also shown that smaller projects are far less likely to fail than grand ones. Additionally, by shipping work in smaller increments, you are able to drive software reliability by ensuring each change is well understood.
Critically (but less obviously), shipping smaller allows you to get feedback from customers quicker and test business ideas in production faster. This allows Product Managers to rapidly focus their requests for work on the most profitable areas of work. (See Ship Software Smaller, Deliver Better Product to learn more of the benefits of shipping smaller.)
Measure Flow with Cycle Time
In the software engineering world, Cycle Time is a key metric to measure flow. Cycle Time measures the time it takes for a software developer to start working on an idea and complete all the steps required to deploy it into production (development, code review, test time, rework, deployment, etc).
Once you have an end-to-end picture of Cycle Time, you can drill into the constraint areas (for example Review Time) and then keep drilling down until you identify what the bottleneck is.
For example; in the chart below, you can see that when we drill-in to Review time the bottleneck is Rework Time. By reviewing outlier Pull Requests we can identify that perhaps the root cause - though this is different for every case.
For further information on how to drill-in to Cycle Time see: "Drilling into Cycle Time: The Secret Weapon of Efficient Engineering Teams".
Cycle Time cannot be taken in isolation though. For example; to ensure you keep shipping reliable software, it is important to look at the Time To Recovery for bugs. Engineering Managers also need visibility into risks before they materialise into metrics; for example, by using alerts to detect potential burnout or code being merged without review.
EngProd is More Than Tools
To resolve Engineering Productivity challenges, you can't simply look to introduce new tools. You need to take a holistic view of the Software Development Lifecycle (SDLC); involving process, people and leadership.
In other words, to be effective at EngProd, you must be at the intersection of Agile software delivery and DevOps whilst supporting Engineering Management.
It all starts with being data-driven and focusing in on the areas which are bottlenecks. It also isn't enough to wait for issues to turn into data points, it's important to be proactive with real-time alerts.
In this blog post we've discussed how Engineering Productivity (EngProd) teams help drive elite engineering teams. By using Cycle Time, they are able to use a data driven approach to identify and alleviate constraints in an engineering team. This involves looking holistically at the Software Development Lifecycle (SDLC) and sitting at the intersection of Agile delivery, DevOps and Engineering Management.