To rescue a stalled software project, stop adding scope, secure the code and accounts, and get an independent audit of what actually exists. Then triage what works and what is broken, decide whether to fix, refactor or rebuild using clear criteria, and restart in short sprints with a working demo every week. In my experience, most can be saved.
Taking over stalled agency builds is one of the core situations I work in as a fractional CTO, and this is the order I follow. None of the steps is complicated. The discipline is doing them in order, because the instinct in a crisis is to jump straight to step five and start rebuilding.
How to tell a stalled software project from a slow one
Every project slows down sometimes. A stalled one has stopped converging on launch, even though everyone is still busy. Typical signs:
- “Almost done” has been the status for weeks or months
- Demos keep getting postponed or replaced by status reports
- Nothing new has reached an environment you can click through yourself
- Bugs you thought were fixed keep coming back
- Each estimate for the remaining work is bigger than the last
- Developers have changed, and the new ones are still “getting up to speed”
- Nobody can give you a straight answer to “what is left, and how long will it take?”
When several of these show up together, the problem is usually structural, not a bad couple of weeks. More effort from the same setup rarely fixes it. A change of approach does.
Step 1: freeze scope and stop the bleeding
Stop adding features. Every new request lands on top of an unknown amount of unfinished and broken work, which makes the real state of the project impossible to see. Tell the team that for the next few weeks the only jobs are finishing, fixing and explaining.
Look at the spending too. If you are paying a team by the hour on a project nobody can describe, slow the spend or pause non-essential work until you know more. This is not about blame. It is about not digging the hole deeper while you measure it.
Step 2: secure the code and the accounts
Before anything else changes, make sure your company controls what a rescue depends on: the code repository with its full history, the hosting account, the domain and DNS, the app store accounts, the third-party services, and a recent database backup stored outside the vendor's reach.
Do it calmly, and do it even if you hope to keep the current team. Rescues sometimes end with a change of vendor, and that conversation goes far better when you already hold the keys. If it does come to that, the guide to switching development agencies has the full handover checklist. If you are not sure what you legally own, check who owns the code before any difficult conversation.
Step 3: get an independent audit
You cannot plan a recovery from opinions. The current team will tell you it is nearly finished; a team pitching for the work may tell you it needs a rebuild. You need someone with no stake in either answer to look at the evidence: a senior engineer you trust, a fractional CTO or an independent reviewer. A useful audit covers four areas:
| Area | What the reviewer checks | A serious red flag |
|---|---|---|
| Code | Structure, readability, duplication, outdated dependencies | Nobody can explain how key parts work |
| Architecture | Data model, integrations, fit with the real product | A data model that contradicts the business |
| Tests and quality | Automated tests, QA process, bug history | No tests, and bugs that keep returning |
| Infrastructure | Hosting, deployment, backups, monitoring, security basics | Manual deployments from one person's laptop |
The output should be a short, plain-English report: what is sound, what is risky, what is missing, and a rough estimate for each way forward. For a small or medium product, expect roughly one to three weeks. If the reviewer cannot get the product to build and run from the repository, that is the most important finding of all.
Step 4: triage the product and the cause
What works, what is broken, what is missing
List every feature in the core user journey and give each one a status: works, works with bugs, broken, or not started. Do it by clicking through the product with the team, not by reading the task tracker. Trackers say “done” far more often than products do.
Expect a familiar pattern: the visible screens are mostly there and the hard parts are not. Payments, notifications, error handling, data migration and the route to production are where “90% done” projects hide their remaining work.
Then cut. Anything not needed for the first real launch moves to a later list. A rescue is the best chance you will get to shrink scope, and the techniques for scoping an MVP work just as well on a half-built product.
Why it stalled
The code tells you what is wrong with the product. It rarely tells you why the project stalled, and that cause will follow you into the recovery unless you name it. The usual suspects:
- Requirements that kept changing, or were never written down
- Nobody technical on the client side to make decisions and check the work
- A team missing the skills for one hard part, such as payments or real-time features
- Too little capacity, or developers rotated onto other projects
- Decisions waiting days for the founder
Be honest about the last one. Some of the cause often sits on the client side, and that part is usually the cheapest to fix.
Step 5: decide whether to fix, refactor or rebuild
This is the expensive decision, so make it with criteria rather than frustration.
| Option | Choose it when | Watch out for |
|---|---|---|
| Fix and finish | Architecture is sound; problems are bugs and gaps | Patching symptoms of a deeper cause |
| Refactor | The core works, but some parts are tangled | Endless cleanup with no visible progress |
| Partial rebuild | One module is beyond repair; the rest is fine | Old and new parts coexisting for too long |
| Full rebuild | Unsupported stack, broken data model, or impossible to deploy | Forgetting everything the old system quietly did |
A rebuild is tempting because it feels like a clean start. In practice it is usually the slowest and riskiest path: the new team has to rediscover every rule and edge case the old code handled while customers wait. I recommend one only when the audit gives a concrete reason, such as a framework that is no longer maintained, security problems built into the design, or a data model that contradicts how the business works.
Rule of thumb: if you cannot say in one sentence what a rebuild will do better, beyond “cleaner code,” you are not ready to rebuild.
Then decide who does the work. If the audit shows a capable team that lacked direction, adding technical leadership may be enough. If key skills are missing, reinforce the team or replace it. And if the answer is refactoring, it helps to understand technical debt in plain terms, because that is what you will be paying down.
Step 6: re-plan in short sprints with weekly demos
Throw away the old timeline; it has already proved wrong. Build a new plan from the triage list in one- or two-week sprints, with a first milestone small enough to ship within a few weeks. Its job is to prove the project can move again, not to finish it.
- Define done properly: a feature counts only when it works in a test environment you can use yourself.
- Demo every week: working software on screen, even when the progress is small.
- Re-estimate after two or three sprints, using the pace the team actually achieved.
- Keep one visible backlog, with priorities you set.
It is the same rhythm I use in every engagement: weekly sprints, working software every week and a demo every Friday. It feels slow for the first couple of weeks and fast after that, because nobody is guessing anymore.
Step 7: rebuild trust and prevent a repeat
A stalled project damages trust in every direction. You doubt the team, the team feels blamed, and investors or customers have heard “next month” too many times. Trust comes back through evidence: one honest status update with the new plan, weekly updates against it, a first milestone that is underpromised and then hit, and demos shared with anyone who has been waiting.
Then remove the conditions that caused the stall. The fixes are dull, and they work:
- Your company owns the repository and every account
- Each feature has written acceptance criteria before work starts
- Releases are small and frequent, not saved up for one big launch
- Someone technical reviews the work on your behalf
- Budget is tracked against delivered features, not just hours
- Founder decisions have a turnaround time the team can rely on
Most of these map directly onto the classic reasons outsourced projects fail, which is worth reading as a prevention list.
The bottom line
Rescuing a stalled software project looks like a technical job, but the way out is mostly process: stop, secure, look, decide, then move in small visible steps. Hold off on a rebuild until an independent audit gives you a reason, and fix the cause, not just the code. Do that, and a project that has been “almost done” for months can often start shipping again within weeks.
Frequently asked questions
How long does it take to rescue a software project?
It depends on the size of the product and the path you choose. Stabilizing, auditing and triaging often take two to four weeks. If the answer is to fix and finish, a small or medium product can often be ready to launch within one to three months. A rebuild takes considerably longer, which is one more reason to choose it only when an audit gives you a clear reason.
How much does it cost to rescue a stalled software project?
The audit is the predictable part. A focused review of a small product by a senior engineer or fractional CTO often costs somewhere in the low thousands of US dollars, though it varies a lot by market, seniority and system size. The recovery itself depends on what the audit finds. Fixing a sound codebase costs far less than rebuilding, so paying for a proper diagnosis first usually saves money.
Should I fire my development agency if the project has stalled?
Not as a first move. Stalls often have causes on both sides, such as shifting requirements, slow decisions or nobody technical on the client side, and a new agency inherits those problems if they stay. Secure your code and accounts, get an independent audit, then decide. Sometimes the existing team can finish well with better direction; sometimes a change really is the right call.
Can another developer take over a half-finished app?
Usually, yes, as long as you have the source code, access to the hosting and app store accounts, and the data. Expect the new developer to spend the first days or weeks reading the code and getting it running before shipping anything. Missing documentation slows this down, and a short paid handover with the original developers, if they are willing, can save a lot of time.