Blog
Speed vs quality in code: why you don't have to choose
How teams can move fast and write good code
Alex Mercer
You don't have to choose between speed and quality in code. DORA's research finds that delivery speed and stability move together for most teams, and its guide quotes Dave Farley's point that over time the real trade-off "is between better software faster and worse software slower."
The question usually comes up in sprint planning, when product wants new features and engineering asks for time to clean up existing code. Cutting corners can feel faster for a few weeks, but the time comes back as bug fixes, outages and rework.
TL;DR
The speed vs. quality tradeoff in code is largely a myth.
Research analyzing software teams reveals that developers waste 23% of their development time due to technical debt, more than a day per week.
CIOs surveyed by McKinsey estimated tech debt at 20 to 40 percent of the value of their entire technology estate.
High-quality code reduces bugs, speeds development, and improves developer morale.
Modern code quality tools and AI code review platforms reduce the need to trade speed for quality by flagging issues early, without slowing the workflow.
What the data says about speed and quality
DORA’s research “has repeatedly demonstrated that speed and stability are not tradeoffs.” Its five software delivery metrics are correlated for most teams, and top performers do well across all five.
The waste is measurable
In a 2018 longitudinal study, Besker, Martini and Bosch surveyed 43 software developers twice a week for seven weeks. They found that developers waste, on average, 23% of their development time due to technical debt.
That's over one full day per week spent dealing with the consequences of poor code quality.
The financial cost is significant
In a McKinsey survey of 50 CIOs at financial-services and technology companies with revenues over $1 billion, respondents estimated that tech debt amounts to 20 to 40 percent of the value of their technology estate. They also said 10 to 20 percent of the technology budget meant for new products goes to resolving issues related to tech debt.
Developers know it's a problem
In Stack Overflow's 2024 Developer Survey, 62% of professional developers picked the amount of technical debt as one of their top frustrations at work, more than any other option. It shows up daily and slows down almost everything.
When you implement features in a messy codebase, it takes longer than working in clean, well-structured code. The "speed" gained by cutting corners disappears within weeks, replaced by permanent drag on every future change.
Why cutting corners makes you slower
The problem isn't that teams lack discipline. It's that they misunderstand the economics of software development.
1. Context switching kills productivity
In a field study by Mark, Gonzalez and Harris, when people resumed interrupted work the same day, it took them about 25 minutes on average to get back to it.
When you ship buggy code, every production issue forces context switches. Your team abandons feature work to fight fires. Context switching is killing your team's velocity, and low-quality code multiplies these interruptions.
2. Technical debt compounds quickly
Cutting corners makes the next change harder. Do it repeatedly, and routine modifications start to feel risky. Soon you're spending more time working around problems than building features.
Besker, Martini and Bosch also found that on a quarter of the occasions when developers ran into technical debt, they were forced to add more of it. See how to measure technical debt and pay it down without stopping feature work.
3. Developers spend most time reading, not writing
Most of the work isn't writing code, it's figuring out what the code already does. In a field study of 78 professional developers over 3,148 working hours, Xia et al. found that developers spent about 58% of their time on program comprehension. When the codebase gets messy, that reading time balloons.
Bad code slows down everyone who touches it afterward. Onboarding takes longer, and even routine changes start to feel risky.
The false tradeoff explained
Many teams treat software like the project management triangle, where you pick two of fast, cheap and high quality.
But software development doesn't work like manufacturing.
1. Short-term gains, long-term pain
Teams can move faster for a bit by skipping tests, rushing reviews, and letting messy code slide. For a few weeks, it feels like you're shipping more. Then the cleanup work shows up.
Bugs start leaking into production. Small changes take hours because you're fighting the code. Onboarding gets slower. Every new feature feels like it might break something.
Complaints go up, support tickets pile up, and the team spends more time fixing issues than shipping.
2. The cycle
Once the codebase gets harder to work in, everything takes longer. Under pressure, teams cut more corners to keep up, which makes the codebase even harder to change. That's how you end up slower and lower quality at the same time.
How code quality tools change the equation
Modern development doesn't require choosing between speed and quality because the tools have evolved.
1. Automated code review flags issues early
AI-powered code review tools analyze pull requests in seconds, identifying bugs, security vulnerabilities, and maintainability issues before they reach production. The benefits and challenges of automated code review show up in practice: teams get fast feedback without slowing work, but still need human judgment to avoid noise.
Instead of waiting hours or days for human review, developers get actionable feedback quickly. Issues get fixed early, instead of piling up as technical debt.
2. Real-time quality gates
Code quality review tools integrate directly into your development workflow. They can block merges that fail defined checks, enforce team standards consistently, and provide specific guidance on fixes.
3. Language-agnostic analysis
Modern code review platforms support all major languages.
What high-performing teams do differently
Research on strong engineering teams shows a consistent pattern: they don’t trade quality for speed. They build habits that give them both.
1. Continuous quality feedback
The best teams bake quality checks into the work, not just “cleanup later.” They use:
Test-driven development for immediate feedback.
Automated testing that runs on every commit.
Code quality tools that provide real-time analysis.
Pull request automation that catches issues pre-merge.
The shorter the loop between writing code and finding out it's broken, the faster you can fix it.
2. Quality-first velocity
One option is to reserve a fixed share of each cycle for quality work, for example with a 70-20-10 split:
Development Capacity | Focus Area | Purpose |
|---|---|---|
70% | Planned Features | Core product development |
20% | Quality Assurance | Extended testing, reviews, and documentation |
10% | Technical Debt | Refactoring and architecture improvements |
This split helps keep tech debt from piling up without slowing feature delivery.
3. Proactive refactoring
Strong teams don't let messy areas pile up until they need a big rewrite. They refactor as they go, cleaning up code in the same PR where they're already making changes.
Practical steps to improve both speed and quality
Understanding the theory matters less than changing how your team works. Here's how to start.
1. Implement automated code review
Begin with automated tools that provide immediate feedback on pull requests. Configure them to catch obvious issues: security vulnerabilities, style violations, complexity warnings, and test coverage gaps.
This catches problems before human review begins, letting reviewers focus on architecture, business logic, and design decisions that genuinely need human judgment.
2. Establish quality baselines
Measure your current code quality using objective metrics. Track:
Defect density (bugs per thousand lines of code).
Percentage of development time spent on maintenance vs new features.
Mean time to resolution for production issues.
Developer-reported friction and satisfaction.
These baselines let you demonstrate improvement and justify continued investment in quality.
3. Create visibility for technical debt
Tech debt is invisible to most non-engineers until it turns into missed dates or incidents. Make it visible:
Tagging tickets related to technical debt.
Estimating the velocity impact of working in problematic areas.
Reporting on debt paydown progress alongside feature progress.
Connecting quality metrics to business outcomes.
When PMs can see that one part of the code takes 3x longer to change than another, it's easier to justify spending time on cleanup.
4. Adopt incremental improvement
Don’t refactor the entire codebase at once. Fix small issues as you work on the code. Add tests for whatever you change. Improve names and structure when it’s easy to do so.
These small improvements add up over time and keep the code healthy, without needing separate refactoring sprints.
How cubic helps teams achieve both
Speed and quality aren't opposing forces. They're complementary when you have the right tools.
cubic provides AI code review that flags issues in pull requests quickly without slowing development. The platform analyzes pull requests, identifies bugs that human reviewers miss, and enforces team standards consistently.
Engineers get feedback while the change is still fresh. Issues get fixed earlier in the process. Quality improves without sacrificing velocity.
To check both on your own repositories, cubic’s AI review analytics show how many of the issues cubic flagged were fixed in a later commit, and can compare your median time to merge with the 12 weeks before you installed cubic.
Try cubic for free and see how AI code review eliminates the false choice between speed and quality.

