High-growth companies often collapse under the weight of their own legacies. Modern technology organizations suffer from an addiction to addition. Success is measured by velocity, shipping is celebrated and bonuses are tied to release dates. In this environment, subtraction almost never gets rewarded. This cultural bias toward velocity theater creates a compounding weight that eventually stalls the very innovation it was meant to accelerate.
This blind spot is expensive. I recently audited a software platform where the engineering team was burned out and the roadmap was stalled. The problem wasn’t what they were building; it was what they were keeping. 40 percent of their engineering capacity was consumed by zombie features, legacy assets used by fewer than 5 percent of customers.
They’re paying a complexity tax. Every line of code shipped becomes a long term liability. It requires testing, security patching, documentation and ongoing cognitive load. It lives on the balance sheet as an operating expense, even if no one values it anymore. When teams fail to audit and deprecate these assets, the tax compounds until innovation slows to a crawl. At that point, the company stops behaving like a software business and starts acting like a museum curator.
What Are Zombie Assets? How Can You Eliminate Them?
Zombie assets are legacy features of a product or codebase that very few customers currently use. Their upkeep costs more than they generate in revenue. To eliminate them, conduct an analysis. If fewer than 10 percent of customers use a feature, you can consider eliminating it. Then try hiding access behind a gate. If few customers complain, prepare for deprecation. Finally, explain to any upset customers what they stand to gain from the focus on more important features.
The Financial Reality of Zombie Assets
Fixing this problem requires a shift in language. Leaders must stop talking about code hygiene and start talking about capital efficiency. When I advise executive teams, I don’t bring a backlog; I bring a P and L impact analysis.
In one case, a 40 percent maintenance drag was costing a company roughly $2.5 million per year in fully loaded engineering salaries. I presented a simple asset versus liability view to the leadership team.
Asset A, the core platform, was quite popular. More than 90 percent of customers used it, and it had a relatively low maintenance cost. The decision was to protect it. Conversely, only three customers used Asset B, a legacy module, that carried a high ongoing maintenance burden. The decision was to divest.
The company was spending $200,000 per year to support a feature that only generated $15,000 in combined annual revenue. They were effectively paying customers to use their software. The decision took five minutes. The company retired the feature, the three customers churned and the engineers were reassigned to a mobile initiative that generated $2 million in new annual recurring revenue the following year.
That outcome was not cleanup; it was capital reallocation. Just as important, morale shifted almost overnight. The team stopped maintaining dead weight and started building toward growth again.
Why Deleting Code Increases Product Velocity
Leaders often resist deletion because they believe it will slow teams down. Removing features feels risky. In reality, the opposite is true.
Bloated systems reduce velocity by increasing coordination costs. Engineers spend more time navigating dependencies, testing edge cases and understanding legacy behavior before making changes. Release cycles slow, confidence drops and small updates carry outsized risk. What appears to be speed on a roadmap often masks fragility underneath.
Deleting low-value code simplifies the system and restores momentum. Smaller codebases reduce cognitive load, shorten feedback loops and improve reliability. Teams ship faster not because they work harder, but because the system stops working against them. Deletion is not reduction; it’s optimization.
The Invisible Barriers to Deletion
Even when the math is clear, deleting code is rarely easy. Resistance emerges from every corner of the organization. Sales teams worry that removing features will hurt deals, and support teams fear angry users. Leadership hesitates, afraid of making irreversible mistakes.
The most dangerous resistance comes from the loud minority: a single enterprise customer who insists on keeping a legacy feature they barely use, simply because it exists. This psychological pressure creates paralysis. Zombie assets remain alive out of fear rather than utility. Breaking this pattern requires reframing deletion as a strategic investment in future speed.
The Sunset Protocol: A 3-Step Governance Habit
To manage risk, teams need a recurring operational habit. I call this the sunset protocol.
Evidence-Based Audit
First, conduct an evidence-based audit. Ignore qualitative requests and rely on usage data. Apply the 90/10 rule. If at least 90 percent of customers don’t use a feature, it becomes a candidate for deprecation.
Fake Door Test
Second, run a fake door test. Before removing code, hide the entry point behind secondary navigation or remove it from primary workflows. If nothing happens, the feature has no real value. If support tickets spike, a migration path may be required. This creates a safe way to test assumptions without deploying new code.
Reframe the Narrative
Third, reframe the narrative. Don’t apologize for removing features. Explain the tradeoff. Instead of saying you’re deleting a report to save money, explain that you’re retiring it to focus all your resources on a faster, more accurate analytics experience.
Moving From Builder to Asset Manager
The zero-interest-rate era rewarded growth at all costs. In the current economy, the goal is efficient growth. Technical leaders must evolve. Being a great builder is no longer enough; you must become a disciplined asset manager.
If your roadmap is purely additive, you are building a product that will eventually collapse under its own weight. Audit your portfolio. Identify the liabilities. Then do the most profitable thing you can do for your company: select all and delete.
