When I tell people what I mean by “sustainable software”, more often than not, they tell me I’m using the wrong word, and that “sustainability” means solar panels and windmills.
If you can spare a minute, can you tell me what phrase you would use to describe the kind of software I’m talking about?
When I talk about sustainable software, I literally mean software that can be easily sustained or “maintained at length without interruption or weakening”.
When I talk about sustainable software, I mean software that’s not “dying as soon as it’s born”, doesn’t have “built-in obsolence”, isn’t “on borrowed time”, or “a ticking time-bomb”, or “a sinking ship”.
Specifically, there are 3 major areas I’m talking about:
Resistant to staff turnover
I mean software that is understood by more than one person. Not only what it does, but why it does it, and why it was built the way it was built, as opposed to other seemingly-obvious ways it could have been built.
I mean software that was built with mature, stable tools that are still maintained, that haven’t been deemed obsolete, or a “dead-end” by someone trying out a new “flavor-of-the-week”.
Financially sustainable
I mean software that creates more value than it costs to maintain, software that “deserves to exist”, not a zombie project nobody can be bothered to replace so they can pull the plug.
Sustainable from a mental health outlook
I mean software that gives the people maintaining it the confidence that their job is secure for obvious reasons: their work makes someone else’s work easier, or maybe even makes someone else’s job possible.
I mean software that isn’t ruining the lives of the people who keep it running, either through unrealistic deadlines constantly being met via personal sacrifice, or unreliable, inscrutable code that people resist changing for fear it will intrude on their personal life, or the associated unplanned outages that take time meant for family, hobbies, or rest.
Maintainable software can lend itself to being more sustainable, but I think sustainability goes beyond maintainability. For example, a team could inherit an unmaintainable codebase and decide to plan and budget for a sustainable pace of repair and improvement.
What phrase would you use to communicate these ideas concisely and unambiguously?