In most professions, it’s good to have stability in the things you work with. With software, stability is good, but often we confuse static with stable. They are not the same.
Static software decays and becomes useless.
In a previous article, Why does it cost so much to maintain systems? I explained how software updates are critical to keep it alive:
Software by its nature is constantly evolving. Not only do users ask for new and modified features, but the systems on which the software runs keep changing, so the software has to be modified to fit new environments. These factors guarantee that updates have to be released several times a year to keep things current.
Here are some indicators that software is stable:
• Updates are regular but not urgent
• The list of bug fixes in each release is not excessively long
• You don’t experience crashes & freezes on the system
• The software “plays well with others” – there are no negative interactions with other software packages
• It scales up smoothly – there are no abrupt limits as the data size or workload increases, only a gradual slowing of response time
• The vendor’s support is consistently accessible and useful
On the other hand, static software is an entirely different thing. If software is static it means that there are no updates, changes or evolutionary steps being taken to keep the software current. As a result, some or all of the following will happen:
• The software will not run in new environments, such as latest release of the operating system
• The files being used with the software do not evolve with changing data formats, file systems and storage media. Compatibility is lost with other software that begin using new data and file formats. Old backup copies of data may not be readable on new storage devices.
• The software will not communicate using new network interfaces. When it does communicate, it may be using old protocols that slow down the speed of transfers and do not use new features available in the network.
• The software may not be able to interact with cloud-based applications and databases that have been added since the software was released.
Stable software requires constant attention by the people who are maintaining it. They should be in regular dialogue with the users of the software, have a list of issues they are investigating and correcting, and be using a set of maintenance tools that allow consistent and stable releases.
Strive to have stable, but not static software.