CTO Compass series
- Welcome to The CTO Compass
- Solving Problems with Precision: The Science of Structured Thinking
- Are you response-able?
- Keep Score and Watch Your Performance Soar
- The Importance of Software Maintenance For Successful Software
- How To Make Good Contracts With Yourself
- Does your business have an operating system?
- 🧹 Messy Code, Messy Kitchen – It’s time to do the washing up
- How to be 37 times better by this time next year
- Good Timber Does Not Grow With Ease
- Create a compelling vision for your organisation
- Why embracing Tsundoku will make you more insightful and a more interesting person
- The Maintenance Burden: What You Don’t See When Adding New Features
- 8 tips for improving your decision-making
- How to fix your time and attention leaks
- Faking It Until You Make It: Why You Don’t Have to Automate Everything (Yet)
- How to turn Positive Thinking into Positive Action
- How to take advantage of alignable differences to make change more acceptable
- Your chair may be trying to kill you – and what to do about it
- How to craft your day for maximum focus
- 1000 seconds to boost your focus, energy and well-being
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.
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?