All Articles
Engineering LeadershipStrategyMetrics

"Why Is Engineering So Slow?" — The Honest Answer, With a Diagnosis Framework

Slow engineering has a small number of root causes. Here is how to diagnose which one you have — and what to do about it.

MGMohamed Ghassen BrahimApril 7, 20269 min read

Slow engineering has a small number of root causes. Most leadership teams are treating the symptom — pressure, process, headcount — while the actual cause sits untouched. Here is how to diagnose which one you have.

I've been asked this question in some form at almost every engagement: "Why is engineering so slow?" Sometimes it's a CEO asking with a mix of frustration and genuine confusion. Sometimes it's a board that's noticed the roadmap slipping for three quarters in a row. Sometimes it's a CTO who knows something is wrong but can't name it precisely enough to fix it.

The answer is almost never "we need more engineers." But it is almost always diagnosable.

5
Root causes account for
The vast majority of engineering slowness I've diagnosed
20–40%
Engineering capacity lost
To technical debt servicing in the average mid-stage company
~2x
Velocity difference
Between teams with clear priorities vs. teams without them
60%
Of slowness diagnoses
Point to organisational or process causes — not technical ones

Why "Slow Engineering" Is the Wrong Frame

Before the diagnosis, a clarification that matters. "Engineering is slow" is a perception, not a measurement. And the gap between perception and measurement is where a lot of failed remediation lives.

I've walked into situations where the CEO was convinced engineering was underperforming — and the data showed a team shipping more frequently than the industry median for their size, on a codebase with significant inherited debt, with a product backlog that had never been genuinely prioritised. The team wasn't slow. The expectations were miscalibrated and the input quality was poor.

I've also walked into the inverse: a team that felt fast from the inside — lots of activity, busy engineers, constant deployments — where the actual throughput of business value was near zero, because most of what was being shipped was internal tooling, rework, and features nobody had validated with customers.

The first step in any diagnosis is measurement. Before you can say engineering is slow, you need to establish what "slow" means against what baseline, and whether the slowness is in the engineering execution or upstream of it.

What You're MeasuringWhy It Matters
Deployment frequencyAre changes reaching production regularly, or batching into risky releases?
Lead time (commit to production)How long does a finished feature take to reach a user?
Change failure rateWhat fraction of releases require a rollback or hotfix?
Mean time to restore (MTTR)When something breaks, how long until it's fixed?
Feature cycle time (idea to shipped)This includes product, design, and approval — not just engineering

If you don't have these numbers, the first conversation should be about getting them — not about fixing a problem you haven't measured.

The 5 Root Causes

Once you have measurement, the diagnosis usually points to one or two of these causes. Rarely more.

Cause 1: Technical Debt Is Consuming the Team

This is the most common cause in companies that are three or more years old and have had at least one period of "ship fast, fix later." The debt has accumulated to the point where a substantial fraction of engineering capacity — often 25 to 40 percent — is going to maintenance, bug-fixing, dependency management, and working around known architectural problems.

The diagnostic question: "What percentage of last quarter's engineering time went to new functionality versus maintaining or fixing existing systems?"

If the engineering team can't answer this, that's itself a signal. Teams that are actively managing debt can give you a rough number. Teams that are drowning in it often can't, because the debt is so deeply embedded in every piece of work that it's invisible.

The treatment is not "pay down all the debt." That approach almost always fails — it's invisible to the business, it stalls value delivery, and it runs out of political capital before it's finished. The treatment is debt visibility and a sustained remediation rate: know what the debt costs per quarter in engineering capacity, and commit a fixed percentage (typically 20 percent) of every sprint to remediation as a non-negotiable line item.

⚠️

The debt that hides in estimates

When engineers estimate a feature at two weeks and it takes six, the extra four weeks is often undisclosed debt servicing — working around the fragile module, untangling the implicit dependency, fixing the test suite that breaks when you touch this area of code. Teams that track estimation accuracy versus actuals consistently find the gap is the debt tax. Make it visible.

Cause 2: Unclear or Constantly Shifting Priorities

This one is frequently misattributed to engineering. The real cause is upstream.

When a product or leadership team changes priorities frequently — more than once per sprint, or more than two or three times per quarter at the strategic level — the engineering organisation develops rational coping strategies that look, from the outside, like slowness. Work in progress accumulates because nothing is allowed to finish. Context switching between initiatives destroys throughput. Engineers stop investing in clean implementations because they expect the requirements to change before the feature ships.

The diagnostic question: "How many times in the last quarter did we start a significant piece of engineering work and then stop it before completion?"

If the answer is more than one or two, you likely have a priority instability problem, not an engineering execution problem. The fix is not engineering-side. It's a commitment to a planning process where priorities are set and held for a meaningful period, and changes require an explicit trade-off conversation, not an informal "can you just quickly pivot to X."

Cause 3: The Architecture Can't Accommodate the Rate of Change

This one takes longer to surface because it doesn't show up immediately. It shows up as a team that was productive in year one and is measurably slower in year three on a larger codebase.

The underlying cause is an architecture that was designed for one problem and is now being stretched to serve a different one — more customers, more features, more compliance surface, more integrations. The seams are showing. Every new feature requires touching three other systems that weren't designed to be touched. Test suites take 40 minutes to run. Deployments require coordination across four teams because the boundaries aren't clean.

The diagnostic question: "What's the blast radius of a typical code change? How many other systems or teams does it touch?"

High blast radius is the signature of architectural constraint. The treatment is targeted refactoring with a clear ownership model — not a big-bang rewrite, which almost never succeeds, but a deliberate programme of reducing coupling in the areas where it causes the most throughput damage.

Cause 4: Hiring Has Lagged Behind Scope

This one is straightforward but often politically uncomfortable to name. The company has grown. The product scope has expanded. The compliance requirements have increased. The engineering team has not kept pace.

When a team of 12 engineers is being asked to maintain and extend what a team of 30 would normally be responsible for, the output per person may be high — but the total output relative to expectations will look slow. This is not a performance problem. It is a resourcing problem.

The diagnostic question: "What is the ratio of engineers to active product surface area, and how has that ratio changed over the last 18 months?"

There's no universal answer to what the right ratio is — it varies significantly by product complexity and technical debt level. But the trend matters. If scope has grown 3x and engineering headcount has grown 1.5x, the resulting slowness is arithmetic, not a failure of execution.

🔍

When hiring is the answer — and when it isn't

Adding engineers is the right answer when the team is performing well and the problem is genuine capacity constraint. It is the wrong answer when the problem is architectural, process-related, or debt-driven — because adding engineers to a broken system typically makes it slower before it makes it faster. Diagnose before you hire.

Cause 5: The Engineering Organisation Lacks Operational Discipline

This is the hardest one to say and the one that leaders are most reluctant to raise. But it's real, and it's diagnosable.

Some engineering teams are slow because the operational fundamentals are absent: no agreed definition of "done," no deployment pipeline that makes shipping safe and fast, code review processes that take five days instead of four hours, on-call rotations that aren't defined so production issues get triaged by whoever is available, planning sessions that don't produce commitments anyone intends to keep.

The diagnostic question: "Walk me through what happens when an engineer finishes writing a feature — every step, from code complete to customer use."

If the answer involves manual steps, undefined ownership, long waits, or "it depends," the operational machinery is the problem. This is a fixable problem — but it requires someone with the mandate and the credibility to define the expected operating standard and hold the organisation to it.


The Diagnosis Framework in Practice

These five causes are not mutually exclusive. Most organisations have some degree of all of them. The question is which one dominates — because that's where the leverage is.

CauseKey Diagnostic QuestionTypical FixTime to Impact
Technical debtWhat % of time goes to maintenance vs. new work?Sustained 20% remediation rate + visibility2–4 quarters
Priority instabilityHow often do we stop work mid-stream?Commit to a planning cadence and hold it1–2 quarters
Architectural constraintWhat's the blast radius of a typical change?Targeted decoupling in highest-friction areas3–6 quarters
Resourcing gapHas scope grown faster than headcount?Structured hiring plan tied to scope2–4 quarters
Operational disciplineWhat does the delivery process look like end-to-end?Define and enforce a delivery standard1–3 quarters

Walking through the framework in sequence looks like this:

The most important thing I can tell you about this framework: most organisations discover that the primary cause is not the one leadership assumed going in. CEOs tend to believe the cause is engineering performance. CTOs tend to believe the cause is technical debt. Product leaders tend to believe it's someone else's problem. The diagnosis frequently surprises all three.

That's the value of the diagnostic process rather than pattern-matching from a prior assumption.

What Good Looks Like

Teams that have resolved their primary constraint share some common traits that are worth naming, because they provide a target.

Deployment frequency is at least weekly — ideally daily or more. Lead time from commit to production is measured in hours, not weeks. Engineers can name the team's top three priorities without checking a tool. Post-incident reviews happen after every significant outage, produce written output, and generate action items that actually close. Technical debt is tracked with a rough cost-in-engineering-capacity estimate, not just as a list of "things we know are messy."

None of this requires a particular stack, a particular methodology, or a particular size. I've seen it achieved on monoliths, on microservices, in Jira shops and in Notion shops, in teams of 8 and teams of 120. The common thread is operational clarity: the team knows what they're building, why it matters, what "done" means, and what the quality bar is.


Slow engineering is a solvable problem. But it's only solvable once you've diagnosed the actual cause — and that diagnosis almost always requires an external frame of reference, because the inside view has adapted to the dysfunction and stopped seeing it clearly.

If you're a CEO, board member, or CTO trying to understand why the engineering organisation isn't performing at the level the business needs, let's talk. I run structured engineering assessments as part of broader transformation engagements. Book a 30-minute discovery call and we can identify which of these causes is driving your situation — and what a realistic remediation looks like.

Ready to act

Ready to put this into practice?

I help companies implement the strategies discussed here. Book a free 30-minute discovery call.

Schedule a Free Call