CHTree All articles
Engineering Culture

The More You Know, the Worse You Guess: Why Senior Devs Can't Estimate Their Way Out of a Paper Bag

CHTree
The More You Know, the Worse You Guess: Why Senior Devs Can't Estimate Their Way Out of a Paper Bag

Here's a scenario that probably sounds familiar. Your most experienced engineer — the one who's been around since the codebase was a single-page app running on a shared server — looks at a ticket, nods confidently, and says, "Yeah, that's a two-day job." Two weeks later, the feature still isn't done, the sprint is a wreck, and everyone's quietly wondering what went wrong.

The instinct is to blame poor planning or shifting requirements. Sometimes that's fair. But there's another culprit that doesn't get nearly enough attention: expertise itself.

The better a developer knows a system, the worse they tend to be at predicting how long it'll take to change it. That's not a knock on senior engineers — it's a cognitive trap baked into how deep knowledge actually works. And until your team understands the mechanism, you'll keep watching your most seasoned people hand in estimates that fall apart in the real world.

Why Expertise Breaks the Estimation Brain

When a junior developer looks at a task, they see a wall. They don't know what's on the other side, so they hedge. Their estimates are often inflated and clumsy, but they at least leave room for the unexpected.

Senior developers don't see a wall. They see a door they've walked through dozens of times. The problem is, that familiarity creates a kind of mental shortcut — what psychologists call the curse of knowledge. Once you deeply understand something, it becomes genuinely difficult to remember what it felt like not to understand it. You stop accounting for the fog.

For engineers, this plays out in a specific way: when you know a system intimately, you mentally skip over all the small friction points that will absolutely slow you down in practice. You know how the authentication module should work, so you don't factor in the two hours you'll spend figuring out why it's behaving differently in the staging environment. You know the database schema by heart, so you forget to budget time for the migration edge case that always shows up.

You're not being lazy or careless. Your brain is just pattern-matching against a version of the work that doesn't include the mess.

The Complexity You Can Only See From Inside

There's a cruel irony here. The very experience that makes a senior developer aware of system complexity is the same experience that makes them underweight it during estimation.

A newer engineer might not know that the payment service has a quirky retry logic that interacts badly with certain database locks. A senior engineer knows it — intimately, probably because they've been burned by it before. But because they know it, they unconsciously file it under "handled" rather than "time cost."

This is sometimes called the expert blind spot, and it's well-documented outside of software too. Experienced surgeons underestimate procedure times. Veteran contractors lowball renovation budgets. The pattern is everywhere.

In software development, the stakes are particularly high because complexity compounds. One underestimated dependency leads to a delayed integration, which pushes back QA, which compresses the release window, which forces shortcuts that generate new technical debt. A two-day estimate that was really a five-day job doesn't just cost three days — it ripples.

What Teams Get Wrong When They Try to Fix This

The typical response is to tell senior developers to "pad their estimates." Just add a buffer, right? Thirty percent on top of whatever you think.

This doesn't work, and here's why: arbitrary padding doesn't address the source of the problem. If the original estimate is based on a mental model that's already skipping over the hard parts, adding thirty percent to a flawed number still gives you a flawed number. You're just wrong with more confidence.

Another common approach is historical velocity tracking — looking at how long similar tasks actually took in the past. This is better, but it still relies on the engineer accurately categorizing "similar," which is exactly the kind of judgment call that expertise distorts.

Frameworks That Actually Help

So what does work? A few approaches have shown real promise in engineering teams that take this problem seriously.

Pre-mortem estimation. Before committing to a timeline, ask the engineer to spend ten minutes imagining that the task took three times longer than expected — then work backward to explain why. What went wrong in that scenario? Forcing the brain into a failure narrative surfaces the risks that pattern-matching tends to suppress. You'll be surprised how quickly "I forgot about the cache invalidation issue" starts showing up.

Decomposition floors. Break every estimate down until no single subtask is larger than a few hours. When senior engineers are forced to enumerate every step at a granular level — including environment setup, code review cycles, deployment verification — the hidden time costs become impossible to ignore. The act of decomposition is itself a reality check.

Cross-level estimate pairing. Have a junior or mid-level developer independently estimate the same task, then compare notes before committing to a number. Junior engineers will often flag the friction points that senior engineers have learned to mentally filter out. This isn't about averaging the two estimates — it's about using the gap between them as a diagnostic.

Explicit unknown budgets. Instead of estimating the work you know, estimate the work you know plus a line item explicitly labeled "unknowns." Force yourself to quantify what you don't know you don't know yet. Even a rough number — say, twenty percent of total estimated time — creates accountability for the fog rather than pretending it doesn't exist.

The Culture Problem Underneath the Estimation Problem

Here's the part most teams don't want to sit with: bad estimates from senior developers often persist because there's social pressure to seem confident. Saying "I'm not sure, it could be two days or two weeks" doesn't feel authoritative. It feels like a cop-out, especially in organizations where estimation accuracy is tied to performance optics.

So experienced engineers give confident numbers because that's what the culture rewards — and then quietly scramble when reality diverges from the estimate. The team learns to expect slippage. The estimates stop meaning anything. And the cycle continues.

Building a culture where "I don't know yet, here's what I need to find out" is a legitimate and respected answer is harder than implementing a new estimation framework. But it's probably the more important fix.

Growing Past the Trap

None of this means your senior engineers are failing you. It means they're human, and they're subject to the same cognitive mechanics that affect every expert in every field. The developers who've grown the deepest roots in your codebase are still your most valuable people — their knowledge is real and it matters enormously.

But growing as an engineer means recognizing that expertise has edges. Knowing your system well enough to build fast also means knowing it well enough to be overconfident. The best senior developers aren't the ones who never miss estimates — they're the ones who've learned to distrust their own certainty just enough to ask better questions before they commit.

That's a harder skill to develop than any framework. But it's the one that actually moves the needle.

All Articles

Related Articles

The More You Know, the Harder It Gets to Teach: Breaking the Senior Developer's Communication Trap

The More You Know, the Harder It Gets to Teach: Breaking the Senior Developer's Communication Trap

Lost in the Thread: How Slack Is Quietly Burying Your Team's Smartest Ideas

Lost in the Thread: How Slack Is Quietly Burying Your Team's Smartest Ideas

Your Sprint Numbers Look Great — So Why Does Everything Feel Broken?

Your Sprint Numbers Look Great — So Why Does Everything Feel Broken?