The Importance of Software Maintenance For Successful Software
Abraham Maslow’s hierarchy of needs is one of the most significant contributions to psychology. Just as people have needs that must be met to survive and thrive, software does too.
Software’s Hierarchy of Needs
While Maslow himself never actually visualised it as a pyramid, thinking of it as a series of levels to ascend through is helpful.
The model emphasises two fundamental premises: 1. the disregard or struggle with higher-level needs when lower-level needs are lacking, and 2. the point of diminishing returns when a need at a particular level is satisfied.
In an article in 2012, Gojko Adzic reimagined it in the context of software.
Effective maintenance is essential
Adzic’s pyramid is a perfect frame to view the work of a development team and helps to demonstrate why, in our work, we place such importance on the need for both software maintenance and product management.
At the base lie the fundamental needs of software, where it must be functionally sound and deployable. Failing to meet these needs can jeopardise the survival of a business relying on bespoke software. To ascend to the next level of the pyramid, the software must also fulfil safety needs by being performant and secure, capable of withstanding attacks and providing reliable performance.
Software maintenance seeks to satisfy the needs of the software at the lower layers of the pyramid, enabling development delivery teams to allocate more time and resources to fulfilling the higher-level needs of usable and useful. Additionally, to achieve the pinnacle of the pyramid, software’s equivalent of “self-actualisation”, requires a clear vision for the system and effective product management to define and measure success.
In reality, we can’t draw a neat line across a software project that perfectly aligns with the pyramid’s levels. Still, the metaphor remains helpful in managing the tension between the competing concerns for the budget. For instance, viewed through the lens of usefulness, maintenance time is well-spent proactively removing features that no longer meet the needs of the business. Less code to maintain is always better.
However, it’s crucial to strike a balance and avoid excessive time and cost in maintenance activities. Finding the “Goldilocks ratio” ensures that resources are not wasted on unnecessary optimisations.
Your attention to software maintenance directly influences your chance of success. By proactively meeting the fundamental needs of your software and ensuring its stability, you’ll enable your development team to dedicate their time and efforts to creating a truly successful piece of software instead of fighting a dysfunctional mess.
⚡️ Thinking Time ⚡️
If you have bespoke software in your organisation, consider where on the hierarchy it lies. You can even use these questions to help evaluate purchasing an off-the-shelf software package or SaaS.
- Is it deployable, and functionally ok?
- Is it performant and secure?
- Is it usable?
- Is it useful?
- Is it successful?