Home/Guides/Signs a project is failing

// Guide

Signs your software project is failing, and five tests you can run without reading code

The clearest signs your software project is failing are dates that slip without a new plan, months without working software you can log into, bugs arriving faster than features go out, and code or hosting accounts that sit in someone else’s name. You don’t need to read code to check: ask for a demo on a staging copy, administrator access in your company’s name and a list of what reached production in the last 30 days. If the answers are vague, treat the project as at risk and get a second opinion before you pay more.

“We’re paying for a software project and can’t tell if it’s going well.” If you lead an operations team, a plant or a contractor network and you’re paying for a portal, a scheduling tool or a replacement for an old internal system, you likely get status reports you can’t verify. This guide covers the red flags in a software development project a non-technical owner can spot, five tests to run this week and how to decide what to do next.

The short answer: judge outcomes, not status reports

Status reports describe effort: hours logged, percent complete, “almost done.” Outcomes are things you can check yourself: a feature you can click through, a release your team actually uses, a bug that stayed fixed. A project can report steady progress for months and produce almost none.

The classic version is a project stuck at “90% done.” The last stretch holds the work that’s hardest to estimate: connecting to other systems, moving real data, handling the odd cases and deploying. If every report is about effort, start asking for outcomes instead.

When the status report says…
Ask to see this instead
“The scheduling feature is 80% done.”
That feature on a staging copy, where you complete one real task with realistic data.
“We’re on track for launch.”
The written list of what’s left, who owns each item and what could move the date.
“We fixed the login bug.”
The fix running on staging, and whether it stayed fixed after the next release.
“We’ve been busy with backend work.”
What that work lets users do now that they couldn’t do last month.
“Testing is going well.”
The number of open bugs this week compared with a month ago.

Example (hypothetical): the work-order app

A facilities director gets a weekly email for four months saying the new work-order app is “in final testing.” She asks for a login so she can open, assign and close one work order herself. The developer needs two more weeks just to set up a test copy. That single request told her more than sixteen status emails. Not client data.

Schedule and communication warning signs

A late project isn’t automatically a failing one. Scope changes and surprises happen on healthy projects too. The warning sign is lateness nobody saw coming and nobody can explain.

  • The date moves and the plan doesn’t. A new launch date arrives with no new list of what’s left. If nothing about the plan changed, the new date is a guess too.
  • The reasons stay vague. “It’s more complicated than we thought” is fair once. The second time, ask which part, and what the team learned.
  • Updates get shorter, then rarer. Weekly calls turn into occasional emails, and the emails stop naming specific features.
  • You never hear from the people writing the code. Every question goes away to be checked and comes back days later as a summary, so you can’t ask a follow-up.
  • Invoices keep arriving for work you can’t see. Month after month of “refactoring,” “infrastructure” or “setup,” with nothing you can try.
  • The people keep changing. The developer who knew your project moved on, and the replacement is still getting up to speed weeks later.

What a healthy answer sounds like

Ask three questions: what’s done, what’s left and what could move the date? A healthy team answers with specifics: named features, a short list of open items and the one or two risks it’s watching. A fresh estimate with no list behind it is a warning sign.

Quality warning signs: bugs outpacing features, fear of releasing

These show up in the software itself, and your users will report them long before a status email does.

  • Bugs come in faster than features go out. The open-bug list grows each month while the list of new features shrinks.
  • Fixes don’t stay fixed. A bug that was closed last month is back this month.
  • Every fix breaks something else. That often means there’s little or no automated testing (code that checks the software before each release) to catch side effects.
  • Releases are rare, big and stressful. Changes pile up for a large release every few months, scheduled late at night with everyone on standby.
  • Only one person can deploy. Releases depend on one laptop or one person’s memory.
  • Your team works around the software. Spreadsheets on the side, double entry and notes that say “don’t click that button.”
  • It slows down as real data arrives. Screens that were quick in the demo crawl once real records are loaded.

Fear of releasing is the sign to watch

When a team is nervous about releasing its own software, small fixes wait for big releases, big releases carry more risk, and the gap keeps widening. Ask two questions: how does a change get from a developer’s machine to production, and how would you undo a bad release? If nobody can explain the undo, you have your answer.

Access and ownership warning signs (the ones owners miss)

These signs don’t appear in status reports or in the software. They appear the day you need to change developers, which is when they’re hardest to fix. Check them while the relationship still works.

Ask
Healthy answer
Warning sign
Where does the code live?
A repository (GitHub, GitLab or Bitbucket) in your company’s organization, with someone from your company as an administrator
The developer’s personal account, “on our servers” or “we’ll send you a zip file”
Whose name are the hosting and cloud accounts in?
Your company’s, on a company card, with a company administrator login
The agency’s account, billed back to you
Who controls the domain and DNS?
Your company’s registrar account, under a company email address
The developer registered it for you “to save time”
Where are the passwords and API keys?
A password manager your company controls
Someone’s notes, an email thread or typed into the code
Who can reach the database and backups?
A company administrator login, and a backup someone has actually restored
Only the developer
Who holds the Apple and Google developer accounts (if there’s a mobile app)?
Your company
The agency, under its own name
What does the contract say about the code?
A clear assignment of the code to your company, checked by your attorney
Nothing, or nobody has read that clause

Being able to log in isn’t the same as owning. Collaborator access can be removed at any time, and an account in a developer’s name renews on their card. If any row lands in the right-hand column, fix it now. Our guide to what to do when your developer disappears covers the contract questions in more detail. Ownership is a legal question, so ask your attorney.

Five tests you can run this week without reading code

Each test is one request you can put in an email today. You’re not checking the code; you’re checking whether the project is visible, transferable and moving. A healthy team answers all five without much fuss. A team that resists all five is telling you something.

1. Ask for a working demo on a staging copy

A staging copy is a separate copy of the system for trying changes without touching the live one. Ask for your own login, then complete one real task from start to finish with realistic data. Pass: you log in and finish the task yourself. Warning sign: screenshots, a recorded video, or a demo that only runs on the developer’s screen.

2. Ask for repository and hosting access in your company’s name

Ask to be added as an administrator on the code repository and the hosting account, or better, ask for both to move into accounts your company owns. On GitHub, only someone with administrator access to a repository can transfer it, and the commit history comes with it, according to GitHub’s documentation on transferring a repository. In practice the current developer has to start the transfer, which is why you ask while they’re cooperating. Pass: you have administrator access by the end of the week. Warning sign: delays, conditions or “we don’t usually do that.”

3. Ask whether anyone else could deploy it

Ask for the written deployment steps: how a change gets from code to production, and how to roll it back. Then ask directly: “If you were unavailable tomorrow, could another developer release a fix from these notes?” Pass: a written runbook, or an automated release process, that someone other than its author has used. Warning sign: “It’s easier if I just do it.”

4. Ask for the bug-trend list

Ask for bug counts for each of the last three months: how many were opened, how many were closed and how many came back after being fixed. You’re not judging the total, since every system has bugs. You’re judging the direction. Pass: numbers from a bug tracker, flat or falling. Warning sign: no tracker, or bugs that live in email threads.

Example (hypothetical, not client data)
Opened
Closed
Reopened
Month 1
12
10
1
Month 2
18
9
3
Month 3
25
8
6

Here the team closes fewer bugs each month while more arrive and more come back. That’s “bugs outpacing features” on paper, and it won’t fix itself.

5. Ask what shipped in the last 30 days

Ask for a list of what reached production, meaning live for real users, in the last 30 days. Not what was worked on: what shipped. Then find each item yourself. Pass: specific changes you can find and use. Warning sign: an empty list, or one made of “progress on,” “refactoring” and “setup.” A quiet month can be legitimate, such as a large data move, but the team should be able to say what that work makes possible.

Put your answers in one place

The software project health check asks plain-language questions like these and shows your risk areas, red flags and the questions to ask your developer this week. Nothing you type is sent anywhere unless you choose to send it to us.

Got answers you didn’t like?

Your first call is with an engineer. Bring the status reports, the contract and whatever access you have, and we’ll talk through what the answers mean and what to do first. NDAs welcome.

Talk to an engineer about your stalled project

Course-correct, get a second opinion, or rescue: how to decide

Your answers point to one of three paths. Two questions decide which: do you control access, and can the current team still deliver working software?

Path
When it fits
What to do first
Course-correct with the current team
The team responds, access is in your company’s name and the problems are about planning or communication
Agree on a short list of outcomes, a standing demo on staging and a written list of what’s left
Get a second opinion
Answers are vague, quality signs are piling up, or you can’t tell whether the problems are fixable
Have an independent engineer review the code, hosting and deployment, and tell you what’s sound and what’s risky
Rescue or stop
The team has gone quiet, can’t deploy or won’t give you access, or a review says the project won’t recover in its current hands
Secure access first, then bring in a team to take over

A second opinion doesn’t have to mean firing anyone. A confident team has little reason to object to a review of its work. If you do decide to switch, our guide to switching software developers mid-project walks through the handover from your side.

What not to do

  • Don’t pay a large final invoice before you have access. Once the last payment clears, you have less leverage to get the code, the accounts and the deployment steps. Where you can, tie remaining payments to the handover, and take legal advice on your contract before you withhold anything.
  • Don’t start a rewrite out of frustration. Starting over throws away the parts that work, along with the business rules buried in them. Get a review first.
  • Don’t add developers to a late project before you know why it’s late. New people need someone to bring them up to speed, and that someone is the team that’s already behind.
  • Don’t announce a switch before the accounts are in your name. Account transfers go far more smoothly while the relationship is still cooperative.

What the start of a rescue looks like

A rescue starts with access and understanding, not new code. These are the steps we plan for when we take over a codebase someone else wrote, and they’re a fair standard to hold any new team to.

  1. Secure access in your company’s name. Code repository, hosting, domain, database, app store accounts and the keys for outside services. The software handover checklist turns this into a request list for the outgoing developer.
  2. Run it from a fresh copy. The new team pulls the code onto a clean machine and gets it running. Anything that only exists on the old developer’s laptop surfaces here.
  3. Review what exists. Architecture, security and stored secrets, outdated dependencies, backups and deployability, with a recommendation for each part: keep it, harden it or rebuild that piece.
  4. Set up a staging copy and write down how it works. Setup, deployment steps, integrations and business rules get documented, so the knowledge stays with your company.
  5. Ship one small change all the way to production. A low-risk fix your users have been asking for goes through code, review, staging and release. It proves someone new can change and release the system.
  6. Agree on priorities. Then pick up what the original project never delivered, in the order the business needs it.

How long each step takes depends on what the review finds, so ask for the review before you ask for a date.

When we take on a rescue, you talk directly to the U.S.-based engineers reading and changing your code, and the same engineers stay on to maintain the system once it’s stable. Our software project rescue page explains how we work, and our guides cover more of the software operations teams run on.

// FAQ

Signs your software project is failing: common questions

What are the early warning signs of a failing software project?

Dates slip without a new plan, you rarely see working software you can log into, bugs grow faster than features, and you don’t control the code or hosting accounts. One of these is worth a conversation; several together mean the project is at risk.

How can I tell if my software project is failing if I’m not technical?

Ask for five things: a demo on a staging copy, administrator access in your company’s name, written deployment steps, the bug trend for the last three months and a list of what shipped in the last 30 days. The software project health check walks you through similar questions.

Should we stop paying the current developer?

Get access to the code and accounts in your company’s name before you pay any large remaining invoice, and take legal advice on your contract before you withhold payment. This isn’t legal advice.

Can a new team take over a half-finished project?

Usually, if you can get the code and accounts. A review of what exists comes first, then a recommendation on what to keep, harden or rebuild. Our software project rescue page explains the process.

Is a missed deadline a sign the project is failing?

Not on its own. A missed date that comes with a clear explanation and an updated list of remaining work is normal. Repeated misses with vague reasons and no new plan are the warning sign.

// Bring us in

Tell us about the software your business runs on.

A new build, a system that’s hard to use, a stuck project or a prototype that needs to go live. An engineer, not a salesperson, will get back to you.

202-88-MAGIC · or email info@effortlesspresence.com