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
Please enter at least three characters to search
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

Because the DevOps movement has redefined engineering responsibilities, SREs now have to become stewards of observability strategy.

Apache Cassandra combines the benefits of major NoSQL databases to support data management needs not covered by traditional RDBMS vendors.

The software you build is only as secure as the code that powers it. Learn how malicious code creeps into your software supply chain.

Generative AI has transformed nearly every industry. How can you leverage GenAI to improve your productivity and efficiency?

Related

  • The Art of the Bug Fix: Boosting Software Quality Through Effective Git Commits
  • Black Hat 2024, Day 2: Charting the Future of Cybersecurity
  • Shifting Left: How Modern DevOps Is Changing the Software Development Landscape
  • Why Is Automation Testing Required for an Application? Know About Advantages of Automation Testing

Trending

  • How Large Tech Companies Architect Resilient Systems for Millions of Users
  • How to Introduce a New API Quickly Using Micronaut
  • Data Lake vs. Warehouse vs. Lakehouse vs. Mart: Choosing the Right Architecture for Your Business
  • The Perfection Trap: Rethinking Parkinson's Law for Modern Engineering Teams
  1. DZone
  2. Testing, Deployment, and Maintenance
  3. Deployment
  4. Software Development Cycle Time: A Deep Dive

Software Development Cycle Time: A Deep Dive

High cycle time could indicate code quality, delivery, and developer experience risks. Discover the causes and impact of high cycle time.

By 
Naomi Chopra user avatar
Naomi Chopra
·
Jan. 03, 23 · Analysis
Likes (2)
Comment
Save
Tweet
Share
2.6K Views

Join the DZone community and get the full member experience.

Join For Free

What Is Software Development Cycle Time?

Software development cycle time refers to the period from an engineer's first commitment to code deployment. Some teams also refer to this period as lead time. Cycle time or lead time indicates the time taken to complete a particular dev task. 

Cycle time is often used to infer a dev team's process speed. It measures a dev team's efficiency and ability to deliver working software within a defined time frame.

Measuring cycle time for teams helps leaders get visibility into the speed of each team, the time taken to complete particular projects, and the overall performance of teams compared to each other and against the rest of the organization. Additionally, optimizing cycle time can help leaders build a positive team culture and boost engineering teams' innovation and creativity. However, cycle time is a lagging indicator, a metric that confirms patterns that are in progress. This means that cycle time isn't a productivity measurement tool; instead, it can be used as a signal of underlying issues in a team. 

Since cycle time refers to the speed of team performance, most teams strive to attain a low cycle time within which their teams can achieve optimum efficiency. For example, the Accelerate State of DevOps Report research of 500 engineering teams suggests that the top 25% of successful engineering teams achieve a cycle time of 1.8 days, while the industry-wide median is 3.4 days, and the bottom 25% of teams have a cycle time of 6.2 days. 

State of devops report

The Impact of High Cycle Time

Risk to Code Quality

When cycle time is high, a natural eventuality is for more work to remain in a work-in-progress status. As sprints close and deadlines loom, engineers end up juggling between several unfinished tasks, increasing the risks of errors and writing buggy code. At the same time, the longer it takes to merge code, the more context is lost by authors. These incidents impact code quality and increase the chances of missing edge cases. This is a vicious cycle; when it takes longer for engineers to revisit the code after review, the longer it takes to fix the code, in turn increasing cycle time.

Risks to Delivery

Increased cycle time inevitably leads to tasks overflowing sprints that delay delivery. As sprints remain open over time, it leads to several critical tasks remaining unfinished, impacting the team's delivery speed. Furthermore, the effort to review and rewrite incorrect or inefficient architecture or poor code, the loss in context due to long gaps to pick up reviews, and the context switch between WIP tasks caused as a result of high cycle time severely impact the productivity of the entire team and the quality of the code.

Bad Employee Experience

As code stays in WIP status, engineers shift between several tasks, increasing context switches and the associated lull in productivity. As the habit stretches, engineers find themselves context-switching between different git branches and pull requests while working under the pressure of delivery timelines from the product team. 

In most teams, cycle time increases are attributed to the bottleneck caused by reviewers. However, as more review requests pile up, it adds to the pitfalls of context switches and poor workload management and threatens well-being. These circumstances compound into individuals feeling increased stress, anxiety, exhaustion, and eventually burnout. 

When engineers and their teams work under such pressure, within a matter of time, they begin missing schedules and deadlines, often delivering code that underperforms. This leads to team members feeling unsatisfied, often impacting engagement and morale. 

Why Should You Be Wary of Very Low Cycle Time?

Though a cursory glance at a very low cycle time metric for a team might be an initial reason to be buoyant of the team's performance, managers and leaders must pay attention to such instances. In almost every case of very low cycle time, which is lower than industry averages, we see that the time to review is considerably low. For engineering leaders, this is a potential "gotcha" moment since very low cycle time could be a possible signal of low-quality code reviews. Therefore, managers must implement checks and workflows that ensure thoughtful and detailed reviews for all PRs.  

What Causes High Cycle Time?

While managers and leaders are cognizant of the importance of cycle time, they aren't always equipped with data for visibility into why their team's cycle time might be higher or lower than optimum. Understanding the processes that constitute cycle time and delving into the components that make up cycle time can help leaders make decisions that positively affect developer happiness, productivity, and overall team performance.

Dev cycle time distribution

Large PRs

Large-sized PRs take longer to code; hence, they go unopened for too long, increasing the time to open a PR. For instance, most teams target PR sizes to be under 300 changes, and when this threshold increases, the time to open the PR becomes longer. Even when large PRs get opened, they get stuck without being pushed to the review stage since most reviewers are apprehensive about reviewing large PRs for two reasons: 

  1. A large PR signifies a large effort on the part of the reviewer. It requires heavy and intense work for which the reviewer has to plan and reorganize their existing workload substantially to accommodate a large PR review. 
  2. Large PRs are infamous for their ability to introduce several new bugs. Hence reviewers view them as high-risk tasks. 

Low Seniority or Expertise

High coding time and high time to review are often signals of low expertise within a team. When teams lack expert engineers or when junior engineers are not onboarded with a thorough orientation, learning, and development process, it reflects on the cycle time of the team. Most junior engineers or engineers with low domain expertise take longer to create a PR and have to go through multiple back-and-forth reviews, leading to a high number of edits, rework, and increased time to merge.

When a team lacks senior engineers and experts capable of complex reviews, the pickup time suffers. Reviewers without the necessary expertise take longer to open PRs and longer to review. This adds to a reviewer's workload and becomes a bottleneck to the team. 

Lack of Documentation

Documentation in code and coding guidelines like code comments are great practice that is unfortunately overlooked too often. Documentation can help reviewers and future collaborators review and work on code faster and better, reducing pickup time and rework time. Coding guidelines help authors to have the pull requests in a better state from the get-go. They also help reviewers avoid multiple back-and-forths on basic guidelines and workflows. This documentation is especially helpful in cross-team collaboration or cross-functional collaboration on code owned by other teams. Different teams follow different patterns of code, and documentation helps maintain consistency. A readme specific to a codebase about coding patterns or supporting items like how to and where to add logs, and emit metrics, approval criteria, etc., can go a long way in helping teams optimize pickup time and review time. 

Low Involvement and Low Responsiveness

When reviewers lack engagement and involvement, they tend not to review code despite having enough time and resources. Similarly, when engineers are disengaged and slow to respond to comments, it increases the time a PR takes to go through a complete review. 

High Workload

An unmanaged and high workload can lead to engineers struggling with several WIP PRs, inevitably reporting a long time to code and rework. For reviewers, the volume of review requests piles up towards the end of a sprint rather than a gradual inflow of PRs, leading to them getting overwhelmed. This constrains reviewers' own coding time and also leads to a high number of PRs being merged without review, thereby risking code quality. 

As reviewers struggle with completing their own code, the reviews, and the rework, the team suffers a high cycle time. 

Unreviewed PRs merged

High CI/CD Time

Engineers might be waiting on builds to be complete and tests to pass before the PR is ready for review, thus leading to an increase in cycle time. The process becomes even more inefficient when engineers have to make changes after every review and wait for a drawn-out and slow CI/CD that prolongs the time to merge. Not only does this increase the cycle time, but it also leads to feelings of frustration in contributors. 

Lack of Pre-Commit Sanity Checks

When teams do not implement simple sanity checks before creating PRs (like linting and test code coverage), they lead to avoidable nit pics during code reviews  (where the reviewer may have to spend time pointing out formatting errors or test coverage thresholds that should have been covered by the author by default). 

How Can Managers Combat High Cycle Time? 

PR Size Matters

The first step to reducing cycle time is addressing the issue of large PR sizes as a team. Equipped with quantitative metrics about batch sizes, leaders can initiate open feedback conversations and retros to discuss issues such as breaking down PR sizes that enable teams to merge code at a consistent pace. In addition, team leads can ensure that PR sizes do not grow large due to expanding the scope of work. 

The team can also come together to acknowledge the complexity of new work, potential risks, and instances of rework. This can help team leads and managers to optimize processes and workloads for better performance. When leaders notice individual developers with high levels of context-switching, they can address issues and inefficiencies in data-driven 1:1 meetings.

Better Workforce Planning 

Team leads must ensure that junior engineers are onboarded, adequately trained, and equipped with the right tools and resources so that they can contribute to the team's performance quickly. Leaders must also ensure that teams are composed of a balance of junior and senior staff to create an efficient work environment and foster a culture of learning and growth.

Incentivize Reviews 

By keeping PR sizes small, managers can ensure that peers pick up review work without fearing the usage of large periods of time. Managers can also distribute review workload fairly using quantitative input into existing workload management. Emphasizing code reviews across the team and rewarding a culture of code reviews can help more hesitant peers to pick up review work alongside their coding. Better training and better tools can also help developers to become confident in their reviews, helping them become more enthusiastic about review work.  

Better Workflows

Deployments should be consistent, reliable, and optimized for smooth operations. In order to achieve such a cadence, managers must ensure that their teams are provisioned with the right tools, communicate regularly with their teams regarding processes and bottlenecks, and create team environments that promote learning and development to strengthen the review process. 

How Optimal Cycle Time Impacts Individuals, Teams, and Businesses 

Impact on Developers

An optimal cycle time directly impacts developer happiness and satisfaction. Several engineers and managers often report their experience of feeling a sense of achievement, satisfaction, and purpose after completing projects and pushing code to merge. In addition, when engineers can merge more code because of efficient practices, it allows more time to work on innovation and newer projects. All these lead to better individual satisfaction and happiness. 

Impact on Teams

Measuring cycle time can help understand a team's delivery cadence and help maintain stable efficiency metrics. When leaders strive to optimize cycle time, they can rebuild tooling resources and processes to adequately provision their teams. When cycle time climbs upward, team leads can pre-empt threats to productivity by reorganizing their teams and workload to optimize performance. These preemptive steps can lead to a team succeeding in achieving its goals. 

Impact on Businesses

Business leaders can use the cycle time metric to align larger business requirements with engineering capabilities. When business goals include shipping more products or faster updates, studying the cycle time of existing teams helps leaders strategize resource needs and allocation. This encourages better, faster, and more data-driven decisions. Optimizing cycle time can help businesses complete more projects and resolve issues faster. This makes businesses faster to market, leaving their customers and stakeholders happier and more satisfied.

Marc Andreessen on Cycle time

Cycle time as a stand-alone metric offers immense insights into team performance, individual productivity, and business success. However, when cycle time is studied within the constellation of other metrics, the potential of engineering practice is greatly amplified because of the possibilities of optimization, alignment, and engagement. Modern engineering teams must adopt a practical and systematic approach to measuring team performance using a framework of metrics that are aligned with business goals. When this data-driven view is combined with qualitative input from good communication practices, the potential of engineering teams can skyrocket.

Git Software development Software quality dev

Published at DZone with permission of Naomi Chopra. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • The Art of the Bug Fix: Boosting Software Quality Through Effective Git Commits
  • Black Hat 2024, Day 2: Charting the Future of Cybersecurity
  • Shifting Left: How Modern DevOps Is Changing the Software Development Landscape
  • Why Is Automation Testing Required for an Application? Know About Advantages of Automation Testing

Partner Resources

×

Comments
Oops! Something Went Wrong

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and 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:

Likes
There are no likes...yet! 👀
Be the first to like this post!
It looks like you're not logged in.
Sign in to see who liked this post!