DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Enterprise AI Trend Report: Gain insights on ethical AI, MLOps, generative AI, large language models, and much more.

2024 Cloud survey: Share your insights on microservices, containers, K8s, CI/CD, and DevOps (+ enter a $750 raffle!) for our Trend Reports.

PostgreSQL: Learn about the open-source RDBMS' advanced capabilities, core components, common commands and functions, and general DBA tasks.

AI Automation Essentials. Check out the latest Refcard on all things AI automation, including model training, data security, and more.

Related

  • A Product-Management Approach to Platform Engineering
  • Embracing DevSecOps: An Approach to Enhance Software Security and Delivery
  • The Holy Grail of Agile-DevOps Value Stream Hunting: Actualizing DevOps Transition Purpose
  • Agile Best Practices, Values, and Principles for Effective Teams 2023

Trending

  • Long Tests: Saving All App’s Debug Logs and Writing Your Own Logs
  • AI and Rules for Agile Microservices in Minutes
  • Harmonizing AI: Crafting Personalized Song Suggestions
  • Deploying to Heroku With GitLab CI/CD
  1. DZone
  2. Culture and Methodologies
  3. Agile
  4. Why Are There So Many Definitions of Lead Time?

Why Are There So Many Definitions of Lead Time?

In this post, we'll look at why there are so many definitions of lead time and how you can put them to use.

By 
Steve Fenton user avatar
Steve Fenton
·
Sep. 25, 23 · Opinion
Like (5)
Save
Tweet
Share
3.7K Views

Join the DZone community and get the full member experience.

Join For Free

When someone mentions lead times in software delivery, it's often unclear whether they mean the definition of lead times from Lean Software Development, the one from DevOps, or something else entirely.

In this post, I look at why there are so many definitions of lead time and how you can put them to use.

Lead Time Definitions

The DevOps definition of lead time for changes is the time between a developer committing code into version control and someone deploying that change to the production environment. This definition covers a smaller part of the software delivery process than the Lean definition.

Mary and Tom Poppendieck created Lean Software Development based on the lean manufacturing movement, and they measured lead time from when you discover a requirement to when someone fulfills that requirement.

The Lean movement, based on the Toyota Production System, defines lead time as the time between a customer placing an order and receiving their car.

Lead Time Is a Customer Measurement

All these lead times represent a customer measurement. But they differ because the customer is different.

  • Toyota measured the system from the perspective of a car buyer.
  • The Poppendiecks measured the software development system as the users see it.
  • DevOps measures the deployment pipeline from the perspective of the developer as the customer.
Lead time Customer Start End
Toyota Production System Car Buyer Order Delivery
Lean Software Development User Requirement Working software
DevOps Developer Code commit Production deployment

The key to successful lead time measurement is representing how the customer views the elapsed time.

If you run a coffee shop, you might measure the time between a customer placing an order and handing them their coffee. You might consider a two-minute lead time to be good as your competitors take three minutes between the order and its fulfillment.

However, your competitor is using a whole-system lead time, which starts when the customer joins the queue. They added another barista and reduced the queue from 15 minutes to seven. Their customers get coffee in ten minutes, but your customers have to wait 17 minutes (and you're losing customers who leave when they see the queue)

Unless your lead time represents the customer's complete view of the system, you will likely optimize the wrong things.


Cycle Times

When you measure a part of the system, you're collecting a cycle time. In the car industry, it's useful to track how long it takes for a car to move along the production line. In software delivery, it's common to collect the cycle time from when a work item starts to when it's closed. This indicates the performance of software delivery without the varying wait times that can occur before work begins.

As the coffee shop example shows, your customer doesn't care about cycle times. While you can use cycle times to measure different parts of the system to identify bottlenecks constraining the flow of work, you should always keep the complete system in mind.

In software delivery, it's common to find a large proportion of elapsed time is due to work waiting in a queue. For example, a requirement that would take a few days to deliver might sit in a backlog for months, or a pull request may wait for approval for hours or even days. You can identify these delays by subdividing your system and measuring each part.

Lead times measure the real output of a system, but cycle times help you find the system's constraint.

All Measurements Are Useful

Lead time is valuable because it represents the customer's perception. Identifying your customer and tracking lead times as they see them ensures any improvements you make impact their experience.

If you make an improvement that doesn't reduce the lead time, you've optimized the wrong part of your system. In some cases, reducing the time for the wrong part of the system can even increase the overall lead time if it adds additional stress at the constraint.

A constraint is a bottleneck that limits the speed of flow for the whole system. Resolving a constraint causes the bottleneck to move, so the process of identifying and resolving constraints is continuous.

Software delivery represents a constraint to most organizations as technology is such a key competitive advantage. However, this isn't a granular enough identification to make improvements. You need to look at your software delivery value stream and make improvements where they increase the flow of work in the system.

The Theory of Constraints, created by Eli Goldratt, tells us there's always at least one constraint in a system. Optimizing anywhere other than the constraint will fail to improve the performance of the whole system.

Cycle times and other part-system timers help you work out where optimization is likely to reduce the overall lead time, so you can use cycle times and lead times together to assess the improvement.

Common Software Delivery Constraints

There are some common constraints in software delivery:

  • Working in large batches.
  • Pull request approval queues.
  • Having too many branches or branches that have existed for too long.
  • Manual testing
  • Policy constraints, such as unnecessary approvals.
  • Hand-offs between functional silos (such as development, testing, and operations.)

Some of these constraints are reflected in the Continuous Delivery commit cycle, which has the following recommended timings:

  • Commits every 15 minutes.
  • Initial build and test feedback in five minutes.
  • Any failures fixed or the change reverted after ten minutes.

The Continuous Delivery commit cycle

Conclusion

The different definitions of lead time reflect various customer perceptions of parts of the same process. You can use as many measurements of lead and cycle times as you need to find and resolve constraints in your system. You can track the lead times over the long term and use cycle times temporarily as part of a specific improvement exercise.

When you improve or optimize, lead time can help you understand if you're positively impacting the whole system.

Happy deployments!

Lean manufacturing Lean software development Software development Delivery (commerce) Lean (proof assistant) Measurement (journal)

Published at DZone with permission of Steve Fenton. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • A Product-Management Approach to Platform Engineering
  • Embracing DevSecOps: An Approach to Enhance Software Security and Delivery
  • The Holy Grail of Agile-DevOps Value Stream Hunting: Actualizing DevOps Transition Purpose
  • Agile Best Practices, Values, and Principles for Effective Teams 2023

Partner Resources


Comments

ABOUT US

  • About DZone
  • Send feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends: