What are Flow Metrics, and how do you use them?

Taylor Bruneaux

Analyst

Flow Metrics are a concept originally derived from Lean manufacturing. In software development, flow refers to the movement of work from conception to production deployment. Flow metrics can help evaluate the development team’s efficiency, establish a performance baseline, and identify areas for improvement in delivering value to end-users.

In this article, we’ll discuss Flow Metrics, how to measure them, and how they compare to other frameworks for measuring software development productivity.

What are Flow Metrics?

Flow Metrics captures the state of a software development process across its end-to-end value streams. Software development teams can use Flow Metrics to accelerate the speed with which they deliver new features to their end-users. In turn, speed drives revenue by providing more functionality in a shorter period while decreasing the costs associated with churn.

Flow Metrics are a component of the Flow Framework created by Dr. Mik Kersten, in which Kersten aimed to create an approach to managing software projects based onValue Stream Management (VSM). VSM focuses on ways teams can improve the delivery of high-value customer experiences. The Flow Framework prioritizes software by emphasizing product delivery over the process itself.

Flow Metrics are separate fromthe concept of “flow” in the sense of deep or focused work, which represents the feeling a person has when they’re fully absorbed in their current task.

The five key Flow Metrics

The Flow Framework tracks four flow-based items: features, defects, risks, and debt (a.k.a.technical debt). It measures each of these items using five metrics:

  • Flow Time
  • Flow Velocity
  • Flow Efficiency
  • Flow Load
  • Flow Distribution

Once gathered, these metrics create a baseline against which you can assess how well your teams are performing relative to your goals and one another. You can use these metrics to guide improvements and surface to senior leadership to show how investments in the software development process connect to tangible business outcomes.

Flow Time

Flow Time measures how fast a team is delivering business value. It answers the question: Is our time to market for each flow item getting shorter?

In the Flow Framework, a flow item can be in a waiting or active state. A waiting state awaits triage, development completion, or deployment approval. An active state is in development or QA.

Flow Time measures how long a flow item is in both the waiting and active states. Measurement starts when stakeholders approve items, and work starts until they are generally available in production. The focus on measuring delivery to the end user sets Flow Time apart from more developer-oriented metrics, such as lead time, which only measure progress on the dev team side.

Flow Time is similar tocycle time in broad strokes. Both metrics measure the time it takes to deliver value to end users in the software development process. However, they differ in their focus:

  • Cycle time measures the average time and identifies inefficiencies in specific stages of the DevOps process, such as pickup time, lead time, and deployment time. It is more developer-centric.
  • Flow Time focuses on the overall time taken to deliver a unit of value from start to finish. It is a foundational metric that aligns both development and business teams.

Flow Time is one of the three “money metrics” in Flow Metrics. It’s one of the primary metrics that gives you an instant read on your software development process’s overall speed and quality. A shorter flow time indicates that teams are shortening handoff delays and making dev/QA cycles more efficient, delivering more value to the end user in less time.

Flow Velocity

Another money metric is Flow Velocity, which measures how much a team has produced in a given time interval. It answers the question: are you accelerating value delivery to the end user?

Flow Velocity is the second “money metric” in the Flow Framework. It’s similar to Agile metrics that measure how many work units you deliver in a two—or four-week sprint. However, it differs because it doesn’t factor in a flow item’s size (assessed in story points, t-shirt size, etc.) or priority.

Flow Velocity is related to Flow Time in that a large Flow Time will result in a low Flow Velocity. If your Flow Velocity is low, you can look at Flow Time to see where bottlenecks exist and take corrective action. For example, you may spend too much time in the QA phase because your testing process is highly manual, which you can resolve by implementingtest automation.

Flow Efficiency

Flow Efficiency, a derivative of Flow Time, measures how much your teams are actively working on in a given period. It can tell you, at a glance, if wait times and wasteful processes prevent engineers from moving flow items quickly through the pipeline.

To calculate Flow Efficiency, you take work items completed in a given period and divide the time spent in an active state (design, dev, QA, release) by the time spent in a waiting state (PR lead time, pending QA, etc.). For example, if you spent ten days in the active but 40 days in the waiting state, your Flow Time will be low - 10 / 40, or 25%., which indicates that your engineers are waiting too long to get unstuck somewhere in the dev process.

Flow Efficiency is a crucial metric for understanding developer productivity. It measures the ratio of active work time to total time spent on tasks. However, it only provides a partial picture of developer productivity. To truly understand and optimize productivity, organizations must also consider developer experience.

Developer experience encompasses factors such as tool quality, clarity of requirements, autonomy, growth opportunities, and team dynamics. A positive developer experience leads to motivated, engaged, and productive developers, while a poor experience can result in frustration, burnout, and decreased productivity.

Organizations should combine Flow Efficiency with developer experience metrics like satisfaction surveys, feedback sessions, and engagement scores to gain a comprehensive understanding of developer productivity.

Flow Load

Flow Load refers to the number of items your team works on within its value stream, also known as Work In Progress (WIP). It helps answer the question: How much work is the team managing at any given time?

Managing WIP (Work In Progress) ensures optimal developer productivity. The higher the amount of WIP a team has, the more likely they will engage in context-switching. This interruption in the workflow can lead to decreased productivity and even burnout in the long run. Thus, keeping the Flow Load low is critical for maintaining team morale and achieving desired results.

What’s the best WIP to maximize Flow Load? There won’t be a single answer for any team, but you can find your ideal Flow Load by finding the amount of WIP that maximizes Flow Velocity and minimizes Flow Time.

Flow Distribution

Finally, Flow Distribution is the proportion of the flow items currently in process—features, defects, risks, and debts. It answers the question: Are development efforts in line with business objectives?

Flow distribution ensures you’re not sacrificing one area of focus over the others. For many development teams, there’s a lot of pressure to ship new features to drive new revenue. However, a failure to manage defects, risks, and debts can negatively impact revenue in the long run:

  • A large number of unaddressed defects can negatively impact end-user satisfaction as well as user acquisition and retention.
  • Unsecured Personally Identifiable Information (PII) can lead to costly data breaches and regulatory penalties.
  • Technical debt can make it harder to change the code base, which will delay shipping new features.

Flow Distribution is a tool that allows you to quickly see how much time your focus teams spend on feature work instead of addressing other issues that affect the overall quality and security of your applications. Using these metrics, you can adjust your team’s workload and align them to joint initiatives, such as transitioning from on-premise to the cloud (debt) or enabling cross-team focus on security (risk).

Benefits of using Flow Metrics

Flow metrics provide valuable insights into the efficiency and performance of your software delivery process. Flow metrics help identify bottlenecks, reduce waste, and optimize the flow of value to customers by measuring critical indicators at each stage of the delivery pipeline. Here are some of the benefits of measuring Flow Metrics:

  • Increased visibility: Flow metrics provide end-to-end visibility into your delivery pipeline, enabling you to track work from ideation to deployment and monitor key health indicators at each stage.
  • Identification of bottlenecks and inefficiencies: By measuring cycle times, work in progress, throughput, and other key flow metrics, you can pinpoint bottlenecks, constraints, and sources of waste in your process, allowing you to target improvements with the most significant impact.
  • Improved predictability and forecasting: Tracking flow metrics over time provides historical data to establish reliable throughput and cycle time benchmarks for different work items, improving forecasting accuracy and sprint planning.
  • Optimized for value delivery: Flow metrics help quantify and maximize the flow of value to customers. Metrics like flow velocity measure the rate at which the team delivers business value. This focus on customer value helps align process optimization efforts with business objectives.

How Flow Metrics relate to other developer productivity metrics frameworks

Flow Metrics provides one view of the software development process. How do they work with other measurement frameworks in this space?

DORA

DORA, or DevOps Research and Assessment, is a set of four metrics - deployment frequency, lead time for changes, change failure rate, and mean time to recover (MTTR). These metrics primarily capture throughput (delivery speed) and stability (reliability in production).

DORA and Flow Metrics are different but complementary measurements. DORA focuses primarily on developer productivity, whereas Flow Metrics focuses on value delivered to the end-user. That means DORA can pinpoint DevOps-specific issues - such as a lack of testing or instability in a release pipeline - that may only appear in the aggregate in Flow Metrics.

SPACE

SPACE is a similar framework to DORA that tracks developer productivity across five dimensions: Satisfaction and Well-Being, Performance, Activity, Communication and collaboration, and Efficiency and flow. It’s less of a set of concrete metrics and more of a recommendation for the categories of metrics to which teams should pay attention.

SPACE is closer to DORA than to Flow Metrics in that it focuses on developer activities, with an added emphasis ondeveloper experience. However, like DORA, SPACE can complement Flow Metrics by adding perceptual and workflow metrics that capture developer concerns around DevOps tools and processes.

DevEx

Flow Metrics and the developer experience (DevEx) metrics framework are complementary approaches to understanding and improving software development productivity. Flow Metrics, part of the Flow Framework, measure the speed and efficiency of value delivery to end-users, while the DevEx metrics framework focuses on developers’ lived experiences and the factors affecting their satisfaction, productivity, and performance.

The interconnection between Flow Metrics and DevEx metrics drives overall productivity as they focus on different aspects of the development process. Flow Efficiency, a Flow Metric, measures the ratio of active work time to total time spent on tasks but doesn’t provide a complete picture of developer productivity without considering the developer experience.

In the DevEx metrics framework, Flow Efficiency falls under the “Flow State” dimension, measuring the time developers spend actively working on tasks compared to the total time spent. However, the DevEx framework also considers cognitive load and feedback loops, which Flow Metrics does not directly capture.

Organizations should use Flow Metrics to optimize productivity to track value delivery efficiency while simultaneously measuring developer experience through the DevEx metrics framework. This holistic approach ensures that improvements in the development process also contribute to a positive and engaging developer experience.


Flow Metrics takes a customer-centric approach to measure how quickly your software development team delivers value and moves work through their queues. Used well (and in conjunction with more dev-centric frameworks), they can offer insight into process bottlenecks and work allocation, ultimately increasing delivery time and achieving better resource prioritization.

 

Published
May 10, 2024