Software is not unlike any other tool. The difference is only in the space where it operates. Because it is executed in digital circuits, it cannot be seen, felt or touched. Yet it is a very tangible element and software engineers can understand how it operates.
With this in mind, in this blog I will use a car analogy to illustrate why it is important to maintain your software tools, just like you maintain your car. Your car is a tool that allows you to move from one place to another - it must be reliable, safe and ergonomic. This is also true for the tools which your business depends on. So, what could go wrong?
It is easy to foresee how a car can cause you trouble, degrade, and become unsafe, and eventually - unusable. With computer applications, things aren’t always so obvious, especially for “non-techie” people.
Here are just a few of the biggest reasons to invest in the maintenance of your software.
Lowering the cost of adding new features
Let’s imagine your car has a sunroof. I have personally had huge issues with a leaking sunroof. If you don’t clean up the drainages early and fix the drainage as soon as possible, chances are you will end up with serious problems like rust and extensive damage to the chassis of your car. You may not notice the problem for a long time, but when you get a serious rust, it will cost you a lot of time and money to fix it, and you can’t modify anything else on a rusted chassis until it is properly handled. If you do regular maintenance, you can avoid spending too much on fixing a problem like this.
Investment in maintenance can also positively impact your further development. Whatever the function of your software is, it does not exist in a vacuum. It uses dependencies, libraries, and modules that can come from different locations. All these items can become outdated or stop being maintained, which will affect how your software runs. This happened to a client of mine.
This client didn’t want to spend money on software maintenance. One day he reached out to me needing a small feature to be added to his mobile application, which hadn’t been maintained in over a year - despite all my encouragement and advice. The change he wanted was small and could have been delivered in a day; however, while developing the new feature, we found out that the build tools were very outdated and had to be upgraded before we could move on to the other dependencies of the app. It ended up taking more than a week to complete the project and build a new version with the additional feature. In this case, the problem wasn’t even the money spent on the urgent maintenance, but the huge impact on the business having to wait for a week for a vital software update.
Computer memory is not a bottomless well - there’s limited space for data storage and processing, and the more data there is, the longer it takes to generate the output you need. While software should always run efficiently, regardless of how many records are in its database, there are a few things that could go wrong.
Maybe the architectural assumptions made when building the software were good, but over the years too much data has piled up. Quite often, there is a buildup of metadata or intermediate data that is no longer required but just sits there and slows down the system. Let’s go back to our car analogy - think about your car’s air or fuel filters. Even if the air is clean and you only use high quality petrol, the filters still require regular replacement. Similarly, database maintenance can keep your platform at peak performance and ensure there is no data inconsistency.
It may be news to some of you, but it’s true - software ages, just not in the same way as, for example, a car engine does. You may wonder how data can age, considering it’s just a piece of information. The thing is, it’s not the data that ages, but all the things that process it. As we already mentioned, programs are not running in an enclosed environment. There is a whole matrix of dependencies, even for software that is completely bespoke.
If we want to evolve, do things better and more quickly, we get new, better hardware. New hardware triggers a mandatory update of the operating systems that runs the existing programs. These programs must adopt and fulfill all the requirements of the operating system and obey new restrictions. It works a lot like a waterfall - one change at the “top” of the architecture will end up in tons of updates required at the bottom.
Think of how many of your mobile apps are updated when a new version of Android or iOS is being released. Apps that are not updated by their vendors will degrade and eventually fail to run in the latest version of the platforms, and this will result in their removal from the app stores.
There are just some examples of the horrible consequences that may happen if you neglect your software and don’t regularly maintain it.
In our next blog, we’ll discuss how you can avoid them.