6 Truths About Software Every Business Leader Should Know

8 min read

It’s a common scene in business: after months of development, a new software application launches. The team celebrates, executives breathe a sigh of relief, and the project is considered "done." There's a prevailing belief that once the software is deployed, the major costs and efforts are over.

This is the Launch Day Fallacy.

In reality, the initial development cost is just the down payment. The true, often surprising, realities of software ownership begin after the product goes live. The ongoing lifecycle of a software application is a strategic investment in your company's future velocity, its ability to innovate and move quickly. The following truths reveal why managing this lifecycle is a critical leadership function.


1. Your Biggest Software Bill Arrives After It's Built

The most jarring financial reality of software is that the initial build is rarely the largest expense. Post-deployment maintenance typically accounts for 50% to 80% of a software asset's total lifetime expenditure, with some studies showing it can exceed 90%.

For budgeting purposes, the most impactful rule of thumb is this: plan for total maintenance costs to accrue to 2 to 4 times the initial development budget over the software’s lifetime.

These costs aren't static; they escalate as the software ages. In its early years, annual maintenance might cost 10-25% of the original development budget. As the software enters its mature phase, those annual costs can rise to 20-40%. Unbudgeted, these expenses don't just drain cash; they steal from the innovation budget, slowing future growth. As a leader, you must close this critical blind spot by mandating Total Cost of Ownership (TCO) analysis for all new software initiatives.

The Leader's Question: Does my budget treat software maintenance as a recurring operational cost, or is it a surprise every time a bill arrives?


2. ‘Maintenance’ Is a Misnomer; It's Really ‘Evolution’

When leaders hear "software maintenance," they typically think of one thing: fixing bugs. This is a fundamental misunderstanding of where the time and money actually go. The work is better understood as continuous evolution, broken down into four distinct categories: Corrective, Adaptive, Perfective, and Preventive.

The real surprise is the distribution of effort across these types:

  • Perfective Maintenance (50-60%): Enhancing features, improving performance, and refining the user experience based on feedback and new business needs. This is the work of staying competitive.
  • Adaptive Maintenance (18-25%): Updating the software to remain compatible with changing environments like new operating systems or third-party APIs.
  • Corrective Maintenance (17-21%): The classic definition of "bug fixing": addressing defects and errors discovered after launch.
  • Preventive Maintenance (4-6%): Proactively improving code and architecture to reduce long-term costs and prevent future issues.

This breakdown reveals that reactive bug fixing consumes only about a fifth of the total effort. The vast majority of "maintenance" is dedicated to evolving the product to add value. An analysis published by technology publisher O'Reilly highlights this with its "60/60 rule":

According to O'Reilly's 60/60 rule, 60% of a software product's lifecycle expenses go toward maintenance. Notably, of this software maintenance cost percentage, an impressive 60% focuses on enhancements rather than just bug fixing.

This shifts the entire perspective. Maintenance isn't a reactive cost center spent on fixing mistakes; it's the primary engine for driving sustained product value and competitive relevance.


3. Your Code Is Quietly Accumulating Debt (And Charging You Interest)

To explain the long-term consequences of prioritizing speed over quality, Agile pioneer Ward Cunningham created a powerful metaphor: Technical Debt. Taking shortcuts to deliver a feature faster is like taking out a financial loan.

The suboptimal code or design decision is the "principal." The "interest" is the lost productivity and extra effort required for all future work: a direct tax on your future development velocity. Addressing this debt through refactoring and architectural improvements is a form of Preventive Maintenance, or "repaying the principal."

In a 1992 paper for the OOPSLA conference, Ward Cunningham explained the compounding cost of this interest:

“Every minute spent on code that is not quite right for the programming task of the moment counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unfactored implementation...”

This concept is powerful because it provides a clear business language for justifying non-feature work. Investing in code quality isn't just "housekeeping"; it's a strategic decision to lower the interest rate on future development, protecting your ability to innovate quickly and mitigating the business risks of reduced agility and higher operational costs.


4. Perfectly Good Software 'Rots' From the Outside In

It seems impossible, but software can become obsolete even if its own code is flawless and unchanged. This phenomenon is known as Software Entropy: the natural tendency for a system to degrade because the external technological environment it depends on is in a constant state of flux.

The software itself doesn't decay, but its foundation does. The work to combat this is Adaptive Maintenance.

While the bits in your software don’t literally rot, the platforms, libraries, and standards it was built upon will evolve. If not consistently maintained, your software will belong to the past and not endure in the present.

These external changes are often mandatory and unavoidable, such as operating system updates, new hardware standards, or critical security patches for third-party dependencies. Ignoring them can lead to a loss of market viability, security vulnerabilities, and eventual system failure. Software is not a static asset but a living system that requires constant adaptation to survive.

Strategic Takeaway: Your software's survival depends on a dedicated budget for adaptation. This isn't scope creep; it's the cost of staying relevant in a changing ecosystem.


5. The Unspoken Rule for Quality: The Builders Must Own Their Mess

One of the most effective strategies for ensuring long-term software quality is an organizational one: the people who build the software should be responsible for maintaining it. Separating the "build team" from the "maintenance team" creates a moral hazard where developers have little incentive to write clean, simple, and well-documented code.

When the same team is responsible for the full lifecycle, they are incentivized to build for the long term, protecting future velocity from the start.

...folks on the original implementation team should expect to be the people who maintain the system until it reaches its end of life. This will motivate the team to take more care with their work because they know they’ll be on the hook to ensure it holds up.

This principle creates a natural accountability loop. It drives higher-quality initial development, which directly reduces technical debt and lowers the Total Cost of Ownership (TCO) over the product's entire life.

The Leader's Playbook: Ensure your engineering culture and contracts reinforce that the team responsible for building a system is also responsible for its long-term health and maintenance.


6. The True Goal of Maintenance Is Future Speed

Finally, it's crucial to reframe the ultimate objective of maintenance. The goal isn't merely to preserve the current state of the software. It's to ensure the organization can continue to innovate at speed. By strategically prioritizing proactive work, Perfective and Preventive Maintenance, over being perpetually stuck in a reactive cycle of Corrective Maintenance, you are making a direct investment in future agility.

Clean, well-documented, and modern code is easier, faster, and safer to change. The strategic goal of maintenance can be defined with a simple, powerful statement:

The goal of all maintenance work should be to make the next batch of feature work or issue resolution fast, easy, and safe.

Viewing maintenance through this lens transforms it from a burdensome operational cost into a strategic enabler. It is the work that sustains a digital asset and protects a company's capacity to adapt and compete.


Conclusion: Treat Your Software Like a Financial Portfolio, Not a One-Time Purchase

The core message is clear: software is not a one-time project to be built and forgotten. It is a high-yield asset that requires continuous, strategic investment to deliver long-term returns. Treating it as a "finished" product is like buying stock and never checking it again, allowing its value to erode from market changes and neglect.

Effective software maintenance is savvy portfolio management. It involves making strategic investments (Perfective Maintenance) to increase the asset's value, paying down principal (Preventive Maintenance) to lower future interest payments, and making mandatory adjustments (Adaptive Maintenance) to protect it from market volatility. This disciplined approach ensures your technology investments continue to generate returns in the form of speed, innovation, and competitive relevance.

This raises a final, critical question for every leader: Are you budgeting for your software's entire lifecycle, or are you just planning for its launch day?

Continue Reading

Next Article

The Right to Be Wrong

If mistakes are inevitable, the real ethical question isn’t whether we err; but what we owe others (and ourselves) after we do. This essay defends a social and personal “right to be wrong,” paired with obligations: to revise, to repair, and to learn.

September 15, 2025

Stay Informed About New Work

Subscribe to receive updates when new projects, photographs, music, or writing are released.

You can unsubscribe at any time. Your information will never be shared.