4 Key Flow Metrics for Agile Teams
This post shows how to make software delivery faster, smoother, and more reliable with a flow engineering metrics approach.
Join the DZone community and get the full member experience.Join For Free
What Is Flow Engineering and Why Does It Matter for Software Delivery?
Flow Engineering is the science of creating, visualizing, and optimizing the flow of value from your company to the customers. It addresses the million-dollar (likely more) challenge of most product companies is: How do we create value in the form of products and services and ship this value to our customers as quickly, sustainably and frictionless as possible.
From a product management point of view, we might look at how quickly we can achieve customer adoption and satisfaction. From an engineering platform point of view, we might look at DevOps metrics such as DORA, which have a similar aim. And from a software development point of view, we might look at code quality and the number of features shipped. All these different viewpoints have something in common: we want to measure and optimize the flow from our ideas to implementation and product delivery.
Flow Engineering is a modern approach to seeing value delivery as a flow from inception to the outcome. The goal is to have the flow be as wide and unobstructed as possible for it to deliver the maximum value.
4 Key Flow Metrics for Agile Teams
To optimize the flow, it helps to visualize our internal engineering and delivery flow. On top of that, we like to understand our current capabilities to see where the bottlenecks are and where we can make cost-effective improvement
For measuring software delivery capabilities, it helps to focus on a few North Star metrics, that capture our capabilities as well as impediments. These flow metrics are:
The speed at which we are delivering. How quickly can we ship a feature? How long is our so-called cycle or lead time from start to finish? The shorter our lead time, the faster is our delivery (Learn more about cycle time).
The amount of work that can get done. How many features do we ship in a quarter? How many releases do we do in a week? How many tickets can we resolve? Throughput signifies our current rhythm in terms of delivery and its capacity; the maximum number of items we can get done in the current setting.
How much waste or friction do we encounter? For instance, how much-unplanned work are we doing? How many bugs do we have to resolve due to poor quality? How often does the released product need patching and how quickly can we do this? How often do we bypass approval processes or skip expected reviews?
What are impediments to delivering smoothly? Do we plan more items than our capacity allows? Do we overload teams? Do we have process hiccups leading to delays? Do we have too many context switches reducing the overall effectiveness? Do we do too much-unplanned work leading to frustration and confusion?
Flow engineering can be compared to a stream of water from its source (us) to the ocean (the customer). We prefer a wide, fast-flowing, unobstructed and clear stream that provides a clear passageway from the source to the ocean.
How to Measure Flow Metrics
For us to improve the flow of software delivery to the customer, we not only need to align engineering with the business, but we also need to reduce friction within our own systems. We can only do that if we can measure our current state. Fortunately, in modern software organizations there a many data points that can be captured automatically to generate a holistic picture.
Most companies run some form of agile software delivery process. This might be running agile Scrum teams, having a Kanban process, or running agile at scale using SAFe. Typically, this is underpinned by DevOps infrastructure that handles our feature planning, software development, and build processes as well as our test and release tools.
All this generates large amounts of information. For instance, each code change tells a story about what changed, where something changed, how long the change took, and who was involved in each step. The metadata of the change includes details of whether that code change was reviewed, who was involved in reviewing it, and how many iterations it took for it to be approved and merged. Additionally, we easily get supplementary DevOps information: the duration and success of a build; the corresponding test coverage details; and the resolution times of feature or bug tickets.
Most organizations already have valuable data coming from:
- Feature planning and ticket systems such as Jira, Monday, or Shortcut.
- Software repositories with their associated metadata from GitHub, GitLab, or Bitbucket.
- Build and release automation infrastructure including GitHub Actions, GitLab Pipelines or CircleCI.
The key to success is to extract that data from the different engineering tools and silos, fuse the data and apply smart domain-specific analytics to generate flow insights to optimize and manage the end-to-end delivery process.
Implementing Engineering Management With Flow Metrics
Logilica helps engineering managers to get insights for decision-making by connecting to many of the data sources seen above, fusing the data, and computing metrics and insights automatically. Those metrics can then be sliced and diced by engineering leaders and drilled down into evidence. This enables an open, data-driven team culture for making more informed and collaborative decisions.
Example of Jira flow throughput tracked in Logilica
- Speed of delivery: How much and how quickly can we ship?
- Quality of delivery: Do we follow processes and meet our quality goals?
- Team sustainability: Do we ensure to stay within our capacity and avoid burning out our engineers?
Centering flow metrics around the core pillars ensures the ability for a balanced approach that does not favor one-sided extremes, such as focusing excessively on delivery cycle times, resulting in neglecting the process and the burnout of team members.
Matching the three core pillars with the flow metrics provides a consistent and flexible mental model across the engineering organization and beyond.
Software delivery is a complex journey and some metrics are essential to keep tracking and optimizing the process. However, no single metric will solve it all, and it is much better to center metrics around the right concepts than single values.
Flow Engineering is a thriving discipline that focuses and velocity, throughput, and risks to rally everyone’s thoughts around smooth, fast, and reliable delivery.
Published at DZone with permission of Ralf Huuck. See the original article here.
Opinions expressed by DZone contributors are their own.