It's Not Broken, But It May Be Costing You: Honestly Evaluating Legacy Software
Legacy software rarely fails outright — it instead taxes your business through workarounds, manual re-entry, and reporting it can't quite do. But "it's not broken" isn't the same as "it's worth keeping." This guide walks through how to evaluate an aging platform on cost and risk, not attachment.
Do you ever look at your internal system and ask, "why are we using a platform that's set the bar this low?" You're sure that if you add one more workaround, one more troubleshooting step, the whole thing implodes. And yet, your organization has held onto this software for years, and every time modernization comes up, it somehow survives the conversation. That's the strange part: the tools we complain about most are often the ones we defend hardest. Status quo and emotional attachment quietly outweigh the objective data. So how do you run an evaluation that accounts for both the feelings in the room and the facts on the page and still reaches a clear-eyed decision?
"It works” is why you’re still here
Some platforms are easy to push toward modernization. The team feels the pain, agrees it's time, and the conversation moves. Other times, a vendor plans to retire a platform you've leaned on for years, and you have no choice but to modernize. And then there are the ones that run until the wheels fall off. That's because the system has met a critical yet simple metric: it works. Not optimally but minimally.
When you first brought the system on, "it works" was a fair verdict. It was doing the job you bought it for. The trouble is that verdict never gets revisited. The problems compound, but they keep getting judged against that original low bar, with "it works" now functioning as a shield against every concern. The daily workaround? It works. The report nobody can pull? It works. The thing only one person knows how to fix? It still works. "It works" gets entangled with everything people already feel about the system, the years they've spent with it, the effort it took to learn, and it becomes the rose-tinted lens that colors every other objection.
Here's where it gets complicated. Not every attachment is irrational. Sometimes the threshold of just working is all a platform needs to earn its stay. The tool really might be cheaper than anything comparable. It really might do something no competitor does. The people defending it might be protecting a workflow that genuinely works, not just one they're used to. The hard part is that in the room, earned loyalty and pure habit sound exactly alike. So the best approach to evaluation isn't to disregard every emotional objection, but to weigh each one properly.
Attachment isn't always wrong — sometimes it knows something you don't
It's tempting to wave off objections when a system gets frustrating enough. Once you've decided "it works" has been hiding real problems, the instinct is to swing hard the other way. Walk in, catalog every failure, and treat every bit of resistance as people being stubborn. That feels like rigor. It's actually the same mistake in reverse, and it's just as expensive.
Steamroll the attachment and you pay for it at adoption. Think about a team pushed onto a new platform because the choice got made above them. On paper the new tool may have scored higher. In practice they spent months grieving what the old system did better: the mapping, the routing, the reporting they'd built the week around. Those were real capabilities the evaluation waved off as sentiment, and the resentment showed up later as a team that dragged its feet on a tool it never agreed to. A decision made over people's objections instead of through them doesn't stick. No matter how good a tool looks, it's adoption that determines its usefulness.
The other consequence of this approach is that you may be creating a team that actively works against you. The moment you brand a platform a disaster in front of the people who chose it or run it every day, you force them to defend it instead of honestly evaluate it. Signal that their objections won't get a fair hearing and they'll fight for the system just to keep their voices in the room. Worse, they stop being forthright about its real shortcomings. And once that happens you haven't just lost the team, you've lost the people who know where the bodies are buried.
Just because an objection is emotional doesn't mean it's wrong. Don't strip the emotion out or defer to it. Dissect it. Separate the part of the objection that's habit from the part that's a genuine need in disguise. You can only do that against something neutral, where every objection, the emotional ones and the measured ones alike, has to say what it's actually protecting.
The 4 common objections and what’s below the surface
You've probably heard a variation of at least one of these. What's harder to hear is the concern hiding underneath it. Before you can figure out how to weigh and address each one, you need to uncover the actual problem it's revealing.
"It still does everything we need"
This is the low bar said out loud, and it's often a cost-benefit analysis that already happened in someone's head. They've weighed changing platforms against staying, and whether through hard experience or untested assumption, they've decided the switch isn't worth it. That verdict might be exactly right. But a decision made privately, on gut, is the one thing you can't build a modernization case around. Formalizing it is the only way to know if it holds.
"This is how we've always done it"
Often this isn't a defense of the platform at all. It's a defense of the process, or a signal that the culture itself resists change. That distinction decides everything about your next move. If the real objection is cultural, a better platform won't resolve it. You'll migrate the resistance right along with the data, and six months later the new system is the one nobody wants to touch. Diagnose whether you're fighting the software or the appetite for change, because they don't have the same fix.
"If it ain't broke, don't fix it"
This is the secret threshold a system has to cross before anyone will replace it, and yet no one actually wants to wait until a critical system is completely non-functional to act. The signs of breaking show up in a lot of ways that may not seem serious enough on their own. Manual entry of things that should be automated. A second copy of the data managed outside the system because it's just easier that way. That's the moment to explore change: when the system can't function the way the organization needs it to, not the moment it finally stops turning on.
"Nobody else really understands it"
Maybe a vendor oversold the system and left no support behind. Maybe the one super-user who understood it walked out the door. Either way, the organization no longer knows what it actually needs from its next platform, because you can't spec a replacement for a system nobody fully understands. This is the objection to act on first, and not necessarily by buying anything. Even if you keep the current system, you audit what it does and write down the SOPs, so the knowledge lives in the organization instead of in one person's head.
Build a scorecard, like you'd evaluate an employee
Here's the mental model that makes this work: evaluate a legacy system the way you'd evaluate an employee.
You don't decide someone's future off a single conversation. You review them against a consistent set of expectations, you write it down, and you keep the record whether or not you act on it that day. A good review isn't a verdict. It's a piece of evidence you reach for later, when a real decision is actually on the table.
A legacy system deserves the same treatment, and the analogy fixes the emotional problem at the center of this whole thing. You can value an employee and still evaluate them honestly. The two aren't in conflict. The same is true of software. Fondness for a platform, years of history with it, the effort everyone spent learning it, none of that has to be denied. It just doesn't get to skip the review.
So you build a scorecard. You rate the system on a fixed set of axes, you document what you find, and you file it, either to act on now or to save into the system's record for later. And critically, you gather everything alongside it: the bug reports, the incident logs, the failure tickets, the workaround complaints. That's what turns "it works" from an opinion into a claim that has to sit next to a folder of evidence. One evaluation rarely makes the decision. A dated, documented pattern over time does.
Score every core system this way and the scorecard stops being a one-time exercise you run when something's already on fire. It becomes a standing read on your whole stack, so the next decision starts from evidence you already have instead of a scramble you start from scratch.
Business Criticality
How much does the business actually depend on this?
Map the workflows it runs, the integrations hanging off it, the data it maintains, who touches it and how often. You're not judging quality here. You're establishing weight: how much of daily operations would seize up if this platform stopped tomorrow. This is also where the "nobody else understands it" problem gets recorded, because a system only one person can operate isn't just critical, it's fragile, and both belong on the page.
Delivery Requirements
What is this platform supposed to do?
This is the yardstick, and it gets written once. Fill out every in-depth function the platform is meant to fulfill, in detail, for every system you evaluate. Then leave it alone. It only changes when something major does, when you expand the system's scope or start pushing new workflows through it. A stable requirements doc is what makes every future evaluation comparable, because you're always measuring against the same expectations instead of a moving target.
Delivery Success
How well is it actually doing each of those things?
This is the recurring one, the review you run often against the requirements that don't move. Go requirement by requirement, and give each one at least a line: is it delivered, degraded, or failing? This is where all those bug fixes and incident reports earn their place, they're the evidence behind each line. A requirements doc says the platform is supposed to sync inventory in real time. The success evaluation, backed by four sync-failure tickets from last quarter, says how well it really does.
Team Usage & Adoption
Are people actually using it, and do they trust it?
What percentage of the intended users are genuinely on the platform, versus working around it? When did meaningful training last happen? This is where you capture the human signal, the feedback, the complaints, the private spreadsheets people keep because the real system is harder. High capability with low adoption is still a failing system, and this is the axis that catches it before a migration repeats the same mistake.
Risk Exposure
What could go wrong, and how exposed are we?
Date this one, because it ages faster than any other axis. It captures security and support status, is it still patched, still supported, still standing while the rest of your stack moves, along with single-point-of-failure and key-person risk. What's acceptable today may be a live vulnerability in six months as new technology and new threats develop around a system that isn't keeping up. A risk read is only true as of the day you took it, so stamp it and revisit it.
Cost Analysis
What does this truly cost us, all in?
Direct figures first, licenses, hosting, support contracts. Then the costs that never make the invoice: the hours lost to manual workarounds, the extra software bought to patch the gaps, the productivity drag, and the potential reputational cost when a breach or a failure lands. The goal is the most honest accounting you can produce, because the sticker price of a legacy system is almost never its real price.
So what do you do with this?
The scorecard won't tell you what to do, and that's by design. There's no threshold that says cross this line and you must replace it. What it gives you is an honest, current, documented picture of where a system actually stands, stripped of who's attached to it and who wants it gone.
The decision still comes from you. Only your business context can turn that picture into a move, tell you which weak spots you can live with and which ones you can't afford to. But that's exactly the position you wanted to be in. Not choosing between the loudest voice and the status quo, but weighing real evidence against real priorities.
That's the whole point. The goal was never to strip the emotion out of the room. It was to give the emotion and the facts the same fair hearing, so the platform you keep is one you chose on purpose, and the one you replace is one you can walk away from without second-guessing. You don't have to silence the attachment. You just have to make sure it doesn't get to decide alone.
Legacy software evaluation FAQs
How do you evaluate legacy software objectively?
Evaluate it the way you'd evaluate an employee: against a fixed set of categories, written down and saved over time. Score the system on business criticality, what it's required to do, how well it delivers, team adoption, risk exposure, and true cost, backing each with evidence like incident reports and bug tickets. A single review rarely decides anything. A documented pattern across dated evaluations is what turns "it works" into an honest picture you can actually act on.
Why is it so hard to replace software that still works?
Because "it works" clears a low bar that then shields the system from real scrutiny. Once a platform meets the minimum threshold of functioning, its daily costs, workarounds, and risks get waved off with the same two words, and years of familiarity make people defend the tool they complain about most. The system isn't broken enough to force a decision, so it survives every modernization conversation by default.
How do you separate emotional attachment from real objections?
You don't strip the emotion out or defer to it, you dissect it. Every objection, emotional or measured, gets held against a neutral scorecard and made to say what it's actually protecting, which separates the part that's habit from the part that's a genuine requirement. Some attachments turn out to be backed by real data, and the only way to tell earned loyalty from pure habit is to test both the same way.
If our legacy software is causing problems, should we automatically replace it?
Not necessarily. A replacement is expensive, disruptive, and carries its own risks, so it's worth separating the platform's problems into categories and evaluating them objectively before assuming replacement is the answer. For some platforms, the threshold for exploring a replacement is high — because of the cost to switch, the disruption it would cause, and the difficulty of finding a valid alternative that matches what the current system uniquely provides. The red flags that would justify crossing that threshold tend to surface only in an objective assessment: one that weighs what's genuinely worth fixing against what's simply worth tolerating. And even when problems are real, full replacement isn't the only path — middleware or process improvements can often close the gap without swapping the platform out.
What are the signs it's time to replace a system?
They rarely look like total failure. More often they look like manual entry of things that could be automated, a second copy of the data kept outside the system because it's easier, low adoption, unpatched security gaps, or knowledge that lives in one person's head. That said, none of these mean replacement on their own. They're better read as prompts to look closer than as verdicts. The real question is whether the system can still function the way the organization needs it to, and that's usually a judgment call worth making deliberately rather than the moment it finally stops turning on.
What should you do if only one person understands your software?
Treat it as the objection to act on first, and start with an audit, not a purchase. Document what the system does and write down the standard operating procedures, so the knowledge lives in the organization instead of walking out the door with one person. You can't even spec a replacement for a system nobody fully understands, so this step comes before any decision to switch.
Does a scorecard tell you whether to replace your software?
No, and that's by design. The scorecard gives you an honest, documented picture of where a system stands, but there's no threshold that says cross this line and you must replace it. Only your business context turns that picture into a decision about whether to keep, upgrade, replace, or explore something new, this evidence just makes sure you decide on facts instead of on who argued hardest.