The Lost Feed

🌐Old Internet

Software Estimation: Why It's So Hard, Explained

Estimating complex software projects is notoriously difficult. Discover the hidden 'laws' that make it challenging and how to approach them.

1 views·5 min read·Jun 18, 2026
“Laws” of software estimation for complex work (2021)

Ever wondered why software projects always seem to take longer than planned? It’s a puzzle that has baffled teams for years. The truth is, estimating work, especially in software, isn't like predicting the weather. It’s more like trying to guess the exact shape of a cloud a year from now.

This isn't about blaming developers or managers. It’s about understanding the *inherent difficulties

  • in predicting the future of creative, complex work. Let's look at some of the surprising reasons why getting software estimates right is such a tough game.

The

Illusion of Predictability

When we ask for an estimate, we often want a single, solid number. We want to know exactly how long something will take. But software development isn't a factory assembly line. Each piece of code, each feature, is often a unique creation.

This desire for a simple answer can lead us to believe that estimation is just a matter of counting tasks and multiplying by an average time. However, this ignores the *unforeseen challenges

  • that pop up constantly. These can range from tricky technical problems to changes in what the client actually wants.

Law 1: The More You Know, The Less You Know

This might sound backward, but it's a common experience in software. When you first start a project, you might have a general idea of what's needed. You can make a broad estimate.

But as you begin to work, you uncover details. You find hidden complexities, edge cases, and dependencies you didn't see before. The more you learn about the actual work, the more you realize how much you *don't

  • know. This deeper understanding often makes the task seem larger and more uncertain.

Law 2: The Expert's Curse

Experts are amazing at what they do. They can build complex systems quickly. But when an expert tries to estimate a task for someone less experienced, they often get it wrong.

Why? Because the expert has done so many similar things that they unconsciously skip steps. They forget how long it took them to learn those steps in the first place. Their own experience makes it hard to *relate to the learning curve

  • someone else might face.

Law 3: The

Cost of Changing Your Mind

In software, requirements can and do change. A client might see a prototype and realize they want something different. A team member might discover a better way to build a feature.

While changes can lead to better products, they also have a cost. Estimating the original work becomes less useful. Then, you have to re-estimate the new work, plus factor in the time it takes to switch gears. This is why flexibility is key, but it also makes fixed estimates fragile.

Law 4: The More You Try to Control, The Less You Control

Trying to force software development into a rigid, predictable box can backfire. If you set a deadline too early and try to stick to it no matter what, you might end up with poor quality code or unhappy customers.

"Trying to make software development predictable is like trying to nail jelly to a wall."

  • A common sentiment among developers.

*True control

  • in software comes from understanding the uncertainties and building in ways to adapt. This means embracing a certain level of unpredictability rather than fighting it.

Law 5: The Planning Fallacy

This is a well-known idea. It's our tendency to be overly optimistic about how long tasks will take. We often underestimate the time needed because we focus on the best-case scenario.

We forget about potential delays like:

  • Unexpected bugs

  • Team member sickness

  • Urgent support requests

  • Technical hurdles

This fallacy affects everyone, from individuals planning their day to companies planning multi-year projects. It’s a fundamental part of human psychology that makes accurate estimation a challenge.

Law 6: The Unknown Unknowns

We can plan for things we know might go wrong , these are the "known unknowns." For example, we know a new technology might have a learning curve. We can add extra time for that.

But there are also "unknown unknowns." These are problems we don't even know exist yet. They only appear when we run into them. These surprises can completely derail a project's timeline. There's no way to perfectly predict or plan for them, making them the ultimate estimation hurdle.

Law 7: The

Bigger the Team, The Slower It Gets (Sometimes)

Adding more people to a project doesn't always speed things up. In fact, it can sometimes slow things down. More people mean more communication is needed. More people mean more coordination.

Every new person added can increase the number of communication paths. This can lead to delays as everyone tries to stay on the same page. For certain types of tasks, *a smaller, focused team

  • is often more efficient.

How to Deal With These 'Laws'

So, if estimation is so hard, what can we do? Instead of aiming for perfect prediction, focus on managing uncertainty.

Here are a few approaches:

  • Use relative estimation: Instead of saying "this will take 3 days," say "this is twice as big as that other task we did." This is often easier and more consistent.

  • Break down tasks: Smaller tasks are easier to estimate than large ones. Aim for tasks that take a few hours to a couple of days.

  • Timeboxing: Set a fixed amount of time for a task and do as much as possible within that time. This focuses on getting work done rather than hitting an exact time target.

  • Regular check-ins: Frequent communication helps catch problems early before they become major delays.

  • Embrace iteration: Plan in short cycles. At the end of each cycle, you have a better understanding of what's left and can adjust future plans.

Understanding these 'laws' isn't about giving up on planning. It's about being realistic and adaptable. By acknowledging the difficulties, teams can develop better strategies for tackling complex software projects and deliver value more reliably, even when the future is uncertain.

How does this make you feel?

Comments

0/2000

Loading comments...