Skip to content

Why Companies Will Never Learn (And Why They Think They’re Different)

After decades of repeated software failures, you’d think companies would have learned by now. You’d think that after reading The Mythical Man-Month (1975), Peopleware (1987), The Phoenix Project (2013), and countless other books dissecting why software projects fail, companies would start listening.

But they don’t.

Instead, businesses continue to throw good money after bad, repeat the same doomed strategies, and blame their engineers when things inevitably collapse.

Why?

Why won’t companies change? Why do they keep ignoring the obvious? Why do they think they are different, when they are walking straight into the same traps as everyone before them?

The answer lies in arrogance, broken incentives, and a deep-seated culture of exceptionalism that blinds companies to reality.


1. The Culture of “We’re Different” (Even Though They’re Not)

Every failed software project follows a pattern—unrealistic deadlines, bad architecture decisions, poor planning, and a refusal to listen to engineers. Yet, each company that embarks on a doomed project is convinced they will succeed where others have failed.

  • “We’re not like those other companies.” They assume past failures don’t apply to them because they have better people or better tools. (They don’t.)
  • “That won’t happen here.” They dismiss warnings from experienced engineers, believing that their project is special. (It isn’t.)
  • “We’ll just work harder.” When things start going wrong, they assume they can fix it by pushing teams harder and demanding more hours. (They can’t.)

Companies refuse to learn because they refuse to believe they are just like everyone else.


2. Management Doesn’t Listen (But Blames Engineers Anyway)

Most software failures are not engineering failures—they are management failures. But instead of admitting mistakes, managers double down, blame their teams, and insist the problem isn’t with their decisions, but with “underperforming” engineers.

  • Engineers warn about unrealistic deadlines. Management ignores them. Then when the project slips, the engineers get blamed.
  • Architects push for better technical solutions. Management refuses because they’re “too expensive” or “take too long.” Then when the system collapses, engineers are told they “designed it badly.”
  • Teams push back on adding more people. Management does it anyway, then acts shocked when productivity drops.

Managers won’t change because admitting failure means admitting they were wrong. And most would rather blame someone else than take responsibility.


3. The Incentives Are Broken

Most companies operate under perverse incentives that reward failure while punishing those who try to fix it.

  • Executives get promoted for launching big projects, not for making them sustainable. A doomed project that looks good on paper is better for a manager’s career than a quiet, well-run system.
  • Budgets are dictated by short-term goals. It’s easier to get funding for flashy, half-baked software than for critical refactors or technical debt reduction.
  • Failure is swept under the rug. Instead of acknowledging and learning from software disasters, companies rebrand them, rename the project, and start over—often with the same doomed approach.

The system is set up to repeat failure, not prevent it.


4. The Cult of Overconfidence (a.k.a. “Fake It ‘Til You Make It”)

Many managers, especially in large organisations, are promoted based on confidence, not competence. They have never written a line of code, but they know how to sound authoritative in meetings.

  • “This is a simple problem. We don’t need to overcomplicate it.” (Translation: I don’t understand the complexity, so I’m going to pretend it doesn’t exist.)
  • “Just work smarter, not harder.” (Translation: I have no idea how software actually works, but I’ll use management clichés to deflect responsibility.)
  • “Other teams are doing it. Why can’t we?” (Translation: I don’t care if their context is different—we should copy them anyway.)

Overconfidence leads to underestimating complexity, ignoring expert advice, and pushing through bad decisions that engineers have warned about from day one.


5. The Fear of Admitting Past Mistakes

Learning from failure requires admitting you were wrong—something most corporate leaders are unwilling to do.

  • If a company spent millions on a failed software platform, admitting it was a mistake could get people fired. So instead, they double down.
  • If a project is obviously failing, admitting it would damage reputations. So instead, deadlines get extended, scope gets cut, and blame is shifted to the team.
  • If an engineer warns that technical debt is spiralling out of control, management dismisses them as being “negative” or “not a team player.”

Rather than course-correcting, companies dig in deeper, making failures even worse.


6. The “Move Fast and Break Things” Delusion

Tech companies in particular have embraced a reckless attitude that prioritises speed over quality.

  • “Ship it now, fix it later.” (Except “later” never comes.)
  • “Minimum Viable Product” means “Barely Functional Garbage.”
  • Technical debt is seen as an “engineering problem” rather than a business risk.

This leads to a cycle of rushed development, half-baked releases, and ever-growing tech debt that eventually strangles the company.

Facebook, Uber, and others got away with “move fast and break things” because they had deep pockets to fix the mess afterward. Most companies don’t.


7. High Turnover Means No Institutional Memory

Even if engineers do learn from past failures, most won’t be around long enough to apply those lessons.

  • Developers quit after being burned out by bad decisions.
  • New hires don’t know about past mistakes and repeat them.
  • Executives cycle through companies, bringing bad ideas with them.

Without a culture of documenting failures and actually learning from them, history keeps repeating itself.


The Inevitable Conclusion: They Will Never Learn

Companies won’t change because:

  • ✅ They believe they are different (despite doing the same things as everyone else).
  • ✅ Management ignores engineers and blames them when things go wrong.
  • ✅ Executives are rewarded for failure, not long-term success.
  • ✅ Overconfidence leads to underestimating complexity.
  • ✅ Admitting mistakes is seen as weakness, so failures are buried.
  • ✅ A “speed over quality” mindset creates unmaintainable systems.
  • ✅ High turnover means past mistakes are forgotten, ensuring they are repeated.

How Do You Fix It?

Honestly? Most companies won’t.

For meaningful change to happen, businesses would need to:

  • ✔ Listen to engineers and involve them in decision-making.
  • ✔ Incentivise long-term thinking instead of rewarding reckless speed.
  • ✔ Admit when things are failing and learn from it.
  • ✔ Promote leaders based on competence, not confidence.
  • ✔ Understand that software is complex and cannot be managed like a factory.

But let’s be real—most companies won’t do this.

So if you’re an engineer stuck in a company that refuses to learn? Get out. Go somewhere that values good engineering, or better yet, start your own thing.

Because as long as businesses keep believing they are different, they will keep failing in the same ways.