Sitemap
Thinking Out Loud

Thinking Out Loud

Why Software Projects Fail Before a Single Line of Code Is Written

3 min readJul 29, 2026

--

Press enter or click to view image in full size

Software projects rarely fail because developers can’t write code. They fail because the organization isn’t ready to deliver — long before development even begins.

I’ve worked on large-scale digital transformation programs: modern architectures, multiple engineering teams, serious budgets. One lesson keeps repeating itself — by the time the first sprint starts, you can usually already tell whether a project is going to struggle.

One program made this impossible to ignore.

The setup looked perfect

We were modernizing a traditional SAP-based e-commerce platform into a microservices and micro-front-end architecture, with minimal disruption to customers. Not a reinvention of the business — just a modernization of the technology behind it.

On paper, everything was in place. A System Integration partner was engaged. Principal Engineers, Solution Architects, Engineering Leads, Scrum Masters, Quality Managers — all onboard. A two-month discovery phase to finalize requirements, design the architecture, and produce a delivery plan.

Then Sprint 0 began.

Instead of building software, we spent hours answering questions that should already have been settled:

  • Who owns technical decisions?
  • Who owns delivery decisions?
  • Who creates and refines backlog items?
  • Which meetings actually need architects in the room?
  • How do teams collaborate across boundaries?
  • How are cross-team dependencies managed?

Meanwhile, delivery estimates were already slipping past the timelines we’d promised.

That’s when it clicked: the architecture had been designed. The delivery organization hadn’t.

The warning signs, in hindsight

Discovery focused on architecture, not delivery. Success was measured by finished technical designs — not by how clearly teams knew how to work together.

Get Thinking Out Loud’s stories in your inbox

Join Medium for free to get updates from this writer.

Documentation was mistaken for readiness. Finished documents feel like progress. But they don’t create alignment on ownership, workflows, or decision rights — and nobody had deliberately designed those; everyone just assumed they’d emerge once the technical design was done. They rarely do.

Too many senior people were in every decision. Expertise is most valuable when aimed at the right problem. When every discussion pulls in every lead, decisions slow to a crawl — adding expertise without defining boundaries just adds noise.

Accountability and authority were split. Technical ownership sat with architects and engineering leadership. Delivery ownership sat elsewhere. Senior leadership shaped delivery decisions through budgets, timelines, and KPIs. Teams were accountable for outcomes they didn’t have full authority to control — a rough position for anyone.

Sprint 0 became the real discovery phase. Two months of discovery, and it was Sprint 0 where governance and ways of working actually got discussed. That conversation needed to happen before delivery, not after.

Activity was mistaken for progress. Full calendars, workshops, polished decks — they create a feeling of momentum. Real progress is decisions made, risks removed, teams actually ready to deliver.

Every ceremony had too many people in it. Daily Scrum, Sprint Planning, Retros — these belong to the delivery team. Architects and senior technical leads add value when they’re needed, not by default attendance. Focused sessions (architecture workshops, Three Amigos) beat inviting everyone to everything.

Governance pointed upward instead of forward. As programs scale, governance tends to drift toward status reporting. It should be doing the opposite job: removing blockers and accelerating decisions for the teams doing the work.

What I’d do differently

If I were leading a similar program today, my first deliverable wouldn’t be an architecture diagram. It would be an operating model:

  • Who owns what?
  • Who makes which decisions?
  • How are disagreements resolved?
  • Which meetings are actually necessary?
  • How do teams collaborate?
  • How are dependencies managed?

Only once those questions have real answers would I call a program ready for development.

Final thought

Technology doesn’t usually kill software projects before they start. Neither do people. What kills them is an organization that hasn’t been designed to deliver — where architecture gets built, but nobody builds the operating model to match.

The best software projects don’t just invest in technology. They invest just as much in designing how people will work together.

Because before you write great software, you have to build a great delivery organization.

--

--