How fast can you go?

Here’s a simple experiment: consider how long it takes your team to make and deploy a tiny change into production. For instance, what if you only need to change one word of text? From the time you know to change it to when it goes live, how long would that take? Even when you make it the top priority (but don’t cut corners).

If your code is already released with people using it, the answer is likely at least several minutes. For many teams with larger teams or heavier process, it might take more than a day. Regardless if you use an issue tracking system, you’ll usually have to…

  • pull down the most recent copy of the code,
  • name or establish a branch,
  • determine what the request is asking for,
  • find where to change the text in the code,
  • update any automated tests that depend on it,
  • change the actual code itself,
  • iterate running tests and fixing until it works,
  • do any other checks like linting,
  • push the branch up,
  • prepare the pull request,
  • wait for any CI/CD actions to run (and repeating steps if it doesn’t), and
  • wait the PR to be reviewed.

If you’re not in a shop where changes need to go through User Acceptance Testing (UAT) or deployed to staging first, you’ll then…

  • merge the change to the main branch,
  • wait for the production CI/CD process to deploy it, and
  • (finally!) review it live in production.

To be fair, many of those steps are usually pretty quick, especially if it’s just a word of text that needs changing. Still they’re steps you can’t bypass without often risking quality.

Minimum turnaround time

Because we made the code change in this experiment trivial, it shows the fastest a change can be. Yes, you might skip steps if it’s an emergency bug fix, but that’s not normal. With someone waiting to immediately review, it still takes several minutes at least. And most teams can’t have someone standing by to review every change.

Unlike most velocity metrics, this approach is easy to measure. Look for the most trivial issue in your queue that needs work and see how long until it’s deployed. If you make it top priority, how long does it take to be live from when the person assigns themself to it? Whatever the answer is, that’s your Minimum Turnaround Time.

We can talk about other process delays preceding the steps in our experiment that have to do with scheduling and prioritization, but we’ll set that aside as out of scope for the moment.

To be fair, often developers can grab another ticket to work on while waiting for a PR review. But then they have to remember to check back, likely the next day. Meanwhile, users have to wait longer while the change sits idle.

Using MTT

Once you’ve measured it, you have a good lower bound on what any request will take. You can see how much wait time or context switching might be imposed on developers.

If you’re under an hour, that’s usually pretty good. That is what DORA (below) suggests for “lead time for changes”. You can quickly knock out small tasks and injecting a couple into a sprint normally won’t be a problem.

If you’re beyond an hour or whatever you’d like as your Minimum Turnaround Time, you now have a feedback metric. You can redo the quick experiment each month or quarter to see if you can adjust your processes and reduce it. You don’t have to make a huge jump at once: any gain helps on every issue and helps your team be more nimble.

And this is easy to explain to non-developers. “Once we start, the minimum turnaround time we need to make just a small text change and get it live is X.”

It’s clear, quick to measure, and affects every code change.

DORA, SPACE, and Lean

If you’re interested in thinking about process this way, there are other models. DORA is a pretty well-known one and often comes up for DevOps folks. It has four metrics:

  • Lead Time for Changes: time from commit to production
  • Deployment Frequency: how often deployments occur
  • Change Failure Rate: percent of deployments that cause an incident
  • Mean Time to Recovery (MTTR): time to restore service after a downtime incident

Lead Time for Changes is the closest to what we described as Minimum Turnaround Time. There is one important problem though: how should one interpret “commit”?

If you define “commit” as the first commit in a branch, then it might be pretty close to Minimum Turnaround Time, but could be a little trickier to capture.

Often though with a DevOps focus, you’re far more concerned with the actual CI/CD run time. It’s typically counted from the final-PR-merge-to-main-branch event instead. Doing that bypasses most delays in code construction, review, and testing, except for the final review. That can be deceptively shorter than Minimum Turnaround Time.

SPACE is another, more broad software engineering model with five main dimensions:

  • Satisfaction and well-being: developer fulfillment, health
  • Performance: outcomes (e.g., customer satisfaction) not outputs
  • Activity: countable actions
  • Communication and collaboration: team dynamics, knowledge sharing
  • Efficiency and flow: ability to work without minimal interruptions

The “E” in SPACE is the closest in concept, but it’s a substantially broader treatment and not as easy to capture.

Lean production has two similar terms, Cycle Time and Lead Time, but those have crucial distinctions.

  • Cycle Time is the time to complete “one unit” once work has begun (e.g.,making a widget, handling a customer support call). However, it’s the the average time, not the minimum time. It’s found by taking a interval of time and dividing by the number of units completed. In practice, this metric is most telling when there’s low variability between units in production.
  • Lead Time entails everything from when the request was first made (i.e., customer ordering) until delivery. Changes to software often involve planning roadmaps, gathering requirements, and prioritizing features. This can be wildly different than what we’re calling turnaround time here. This can be interesting, especially for the minimum case, but it’s also often not completely within developers’ control.

There are interesting and useful concepts in all the metrics above, but they also involve more attention and dedication to apply.

We’re happy to help you speed your software development. The minimum turnaround time to start using Minimum Turnaround Time need only be as long as it takes you to change the words from “slow” to “fast”.

About thoughtbot

We've been helping engineering teams deliver exceptional products for over 20 years. Our designers, developers, and product managers work closely with teams to solve your toughest software challenges through collaborative design and development. Learn more about us.