Nafiz Anam.

All insights
Engineering#Software Strategy#Product#Discovery

Why Most Custom Software Projects Fail Before They Start

Most failed software projects don't fail in the code — they fail in the first two weeks, before a single line is written. Here's what actually predicts success.

NA
Nafiz Anam
Lead Software Engineer
January 12, 2024
10 min read
Why Most Custom Software Projects Fail Before They Start

Most post-mortems on a failed software project focus on the wrong phase. They look at the sprint where the deadline slipped, the release where the bugs piled up, or the month the budget ran out — and they diagnose the problem as "bad engineering" or "scope creep." But if you trace the failure backward far enough, it almost never starts there. It starts in the first two weeks, often before a single line of code is written, in a discovery process that was skipped, rushed, or treated as a formality instead of the highest-leverage work in the entire engagement.

I've scoped and built custom software for startups and growing companies for years, and the pattern is consistent enough that I can usually tell within the first conversation whether a project is set up to succeed. It has very little to do with the tech stack and almost everything to do with four things: what problem is actually being solved, who gets to decide, what "done" means, and whether anyone has stress-tested the plan against reality before committing real money to it.

Failure Doesn't Happen in Month Three. It's Decided in Week One.

By the time a project is visibly "over budget and behind schedule," everyone can see the symptoms — missed deadlines, growing scope, a team that seems to be working hard but shipping slowly. Those symptoms are real, but they're downstream of a decision made much earlier: the decision to start building before the problem, the constraints, and the definition of success were actually nailed down.

This is why rescuing a troubled project rarely starts with "write more tests" or "hire a better developer." It usually starts with going back to questions that should have been answered on day one: What are we actually trying to fix? Who is this for? What does success look like in numbers, not adjectives? If those answers don't exist — or worse, if different stakeholders would give different answers — no amount of engineering talent saves the timeline, because the team is optimizing for a target that was never clearly defined.

The Four Things That Actually Predict Success

Across dozens of custom software and SaaS engagements, the projects that shipped on time, on budget, and actually solved the business problem had four things in common before development started. The ones that didn't were almost always missing at least one.

1. A Written Problem Statement Everyone Agrees On

Not a feature list. Not a Notion doc with fifteen bullet points titled "requirements." A single paragraph that describes the problem in terms of what's broken today, who it affects, and why it matters enough to spend money fixing it. If the founder, the operations lead, and the engineering team would each describe the problem differently, you don't have alignment — you have three different projects wearing one budget.

The test I use: can everyone involved read the problem statement and say "yes, that's exactly it" without adding a clause? If someone needs to say "well, and also..." the statement isn't done yet, and starting development before it is just moves the disagreement from a cheap conversation now to an expensive rebuild later.

2. A Single Owner Who Can Say Yes or No on Scope

Every project collects new ideas once people start seeing it take shape — that's normal and often valuable. What kills timelines isn't new ideas; it's the absence of someone with the authority to decide whether a new idea belongs in this release, the next one, or never. Without a single decision-maker, every stakeholder's request becomes "in scope by default," because nobody has the standing to push back.

This doesn't need to be a formal governance structure. For a five-person startup it might just be the founder. For a larger company it might be a product owner with a clear mandate. What matters is that the engineering team knows exactly one person whose "no" ends a scope debate — and that person has actually been given that authority by everyone else in the room.

3. A Definition of Done Before the First Sprint

"Done" should be defined in terms that are checkable, not aspirational. "The checkout flow should be fast" is not a definition of done. "A user can go from cart to confirmed order in under 90 seconds on a 4G connection, with payment failures surfaced clearly and no duplicate charges" is. The second version can be tested. The first version can be argued about indefinitely, which is exactly what happens in week eleven when the deadline is looming and nobody agrees whether the feature actually qualifies as finished.

Defining done before writing code also forces the kind of early thinking that prevents expensive late-stage surprises — edge cases, error states, and performance requirements all get surfaced while they're still cheap to design around, instead of being discovered during QA when they're expensive to retrofit.

4. A Plan That's Been Pressure-Tested Against Reality

Most project plans look reasonable on a whiteboard. Few survive contact with actual constraints — the third-party API that doesn't do quite what the docs claim, the data migration that's messier than anyone estimated, the stakeholder who's unavailable for two of the six weeks the plan assumes they'll be reviewing work. A good discovery process spends real time asking "what could make this plan wrong" before committing to it, not after the first missed milestone.

Why Skipping Discovery Feels Like Saving Time

Almost nobody skips discovery because they don't value it. They skip it because every week spent clarifying the problem feels like a week not spent building — and when a client or founder is eager to see progress, "we're still scoping" can feel like stalling. This is the trap: discovery looks slow because its output is a document, not a feature. But a week spent getting the problem statement right can save six weeks of building the wrong thing, and that math almost never shows up until it's too late to undo.

The honest answer is that rushing discovery doesn't actually save time — it defers the cost and adds interest. The clarifying conversations still have to happen eventually; the only question is whether they happen before the code exists or after, when changing direction means rewriting instead of rethinking.

What This Looks Like in Practice

When I take on a new custom software or SaaS engagement, the first deliverable isn't a Figma file or a sprint plan — it's a short, specific document covering the problem statement, the scope boundary (what's explicitly out, not just what's in), the definition of done for the first milestone, and the biggest assumptions the plan depends on. It usually takes a few days, sometimes a week for something genuinely complex. That week consistently pays for itself by removing the single biggest cause of blown budgets: building the wrong thing well.

You can see what that looks like end to end in a real engagement — for example, how a clear scope turned into a working platform and dashboard for Digital Native. The exact discovery structure behind it is covered in how I structure discovery calls with new clients.

Frequently Asked Questions

How long should discovery actually take?

For a focused project — a single workflow, an internal tool, an MVP feature — a few days to a week is usually enough. For something with real complexity (multiple stakeholders, data migrations, regulatory constraints, or integration with legacy systems), two to three weeks is reasonable. The right length isn't fixed; it's "long enough that the four things above are genuinely settled," not a calendar target.

What if the client wants to start building immediately?

That urgency is usually a sign discovery is even more important, not less — teams under pressure to move fast are the ones most likely to build the wrong thing quickly. The honest move is to explain, in terms of money and time, what skipping discovery usually costs, and let the client make an informed decision rather than an impatient one.

Can discovery happen alongside early development?

For genuinely large projects, yes — you can start building the parts of the system that are well-understood (authentication, core data models) while discovery continues on the parts that aren't. What you shouldn't do is start building the uncertain, business-critical parts before they're actually understood, just to create a feeling of progress.

Starting a Custom Software Project?

If you're scoping a new build and want to avoid the discovery mistakes that quietly decide whether a project succeeds, I work with startups and growing companies on exactly this — getting the problem, scope, and definition of done right before a single sprint starts. Explore my Custom Software Development and Technical Consulting & Architecture services, or see the full list on my services page.

Book a free 30-minute technical consultation →

Work Together

Facing something similar in your product?

I help founders and technical teams design, build, and scale software products the right way. Let's talk about your specific challenges.