Congratulations on your new software platform going live. You have just survived an endeavor that has an unusually high probability of failure. You can breathe a sigh of relief — you have successfully completed half of your journey. The second half is preserving your software through maintenance and support in order to protect the substantial investment of time and money you've just made.
Here are the 5 most important things you need to know about properly caring for software.
1 — Your Software Is Built on Other Software
Just like all software ever created, your software relies on other software to work properly. From websites to mobile phones to operating systems, from small companies to the largest in the world, all software relies on other software. Many companies maintain public lists of the software they use to power their own. Examples include:
- Apple – http://www.apple.com/opensource/
- Facebook – https://code.facebook.com/projects/
- Twitter – https://engineering.twitter.com/opensource/projects
- Instagram – https://instagram.com/about/legal/libraries/?hl=en
- Dropbox – https://www.dropbox.com/help/1366
Your software has a similar list, both in the number of other products it uses and in the products themselves – sometimes even down to the same version number. As these underlying products are updated, everyone in the food chain also must update or they quickly find themselves left behind. If you want the protection of the herd, you must keep up.
2 — Your Software Has Bugs
Like every other piece of software in the world, your software has bugs. Not only does your software have bugs, the software your software is built on has bugs. Have you ever wondered why your phone, computer, and tablet are always chirping at you to be updated? If you pay close attention to the release notes, you will notice these updates are usually more about bug fixes than feature releases.
Software bugs are discovered as users interact with the system over time. Because there are an almost infinite number of ways to interact with a system (think about the order in which a user completes a task, the amount of information they submit, the device they use, the browser they use, etc.), it is impossible to plan for every scenario ahead of time. Most users do not expect bug free software, but they do expect that when bugs are discovered, they will be quickly resolved.
3 — Your Software Will Degrade Over Time
We have all heard the phrases “An ounce of prevention is worth a pound of cure” and “Prevention is the best medicine,” when it comes to caring for ourselves and our possessions. Houses need fixing, cleaning, painting, and landscaping. Cars need tire rotation, oil changing, and exterior washing. Our bodies need food, clothing, washing, rest, and exercise. As you might have guessed, it's the same for software.
Software is exposed to the "elements" 24 hours a day and 7 days a week — users adding, deleting, clicking, browsing, saving, forwarding, and interacting with the system in ways never expected. Bots are crawling, hard drives are filling, processors are computing, traffic is spinning, power is cycling, and everything is evolving. Over time, unless it is regularly and proactively maintained, it will begin to degrade and show signs of wear.
4 — Your Software Needs Monitoring
All web-based software requires an infrastructure layer — a layer responsible for storing, distributing, communicating, and interacting with users everywhere. Without this layer, software is nothing more than digital files on a storage device. The infrastructure layer is what makes the software available for others to use.
Support and maintenance on the infrastructure side is handled by ensuring backups are captured daily, uptime is monitored by the minute, and log files are reviewed. Backups provide the ability to rebuild in the event of a catastrophic failure. Uptime monitoring ensures your site remains highly available and alerts the development team the minute something goes wrong. And a periodic review of your application’s log files provides insight into its internal health — an MRI of the digital world, if you will.
5 — Your Software Needs People
Perhaps the most important thing in owning custom software is keeping multiple people familiar with the code base. There is a high cost involved when new programmers have to be trained on a system they did not originally build. One of the best ways to ensure multiple people remain familiar with your software is to keep programmers active. If they update a few things about the software each month (or quarter), this keeps the stakes low and allows them to train others on tasks that are not large and complex.
After building software for the past 15 years, we recognize that the probability of staff turnover is 100%. No one stays forever and when they go, they take with them extremely valuable domain knowledge. Keeping a platform active is a hedge against that knowledge leaving and becoming stale.
We Can Help
If you're slightly overwhelmed after reading the list, fear not — we're here to help. We've designed our managed-support offering to take care of all the behind-the-scenes work required to keep your software in top shape.
Most of our platforms are built to last for many years with proper maintenance, allowing individual components to be upgraded or replaced along the way. In contrast, software that is not properly maintained has a much shorter shelf life before it becomes generally unstable and difficult to support.
We typically advise clients to budget 15%-25% annually (of their initial build costs) for maintenance and support.