Long-term system maintenance is a service that many IT companies really don’t like to offer to their clients. Why is that? What is the importance of system maintenance? Find answers to these questions and learn how to look for a proper software vendor.
It may not always be apparent when you’re just at the beginning of a project, but creating software isn’t the end of the road – far from it, in fact. Most systems require constant post-production maintenance to function properly. It usually has to do with keeping the software running without problems in the everchanging technological landscape and dealing with various problems that may arise because of the changes.
Having someone who takes care of such long-term maintenance is key from the perspective of most companies, and the best scenario is probably for that “someone” to be the same vendor who created the system in the first place. These are the people who know this solution in and out. If they take care of the maintenance, you can concentrate on your business without having to either look for someone else to provide that service, or build your own, in-house IT team – which can be very costly and time-consuming.
However, the fact is that while there are many IT companies that are willing to create software for you, a far lower number will offer long-term maintenance as part of the service. Why? You’ll find an answer to this question in this article – but first, let’s define system maintenance itself in more detail so that we know what we’re talking about.
System maintenance – the scope and nature of the job
No matter how well-made a piece of software is, there’ll always be some unexpected problems that can come up after launching version 1.0. Sometimes it has to do with a rare, fringe use case that the developers didn’t account for, other times it’s caused by changing technologies – or simply your business adapting to the changes in the market. Around 60% of the life cycle costs of software come from maintaining or improving the solution down the line – most of it has to do with changing requirements, but costs generated by bug fixing are still substantial.
System maintenance is the process of making sure that the software runs as smoothly as it possibly can. Usually, when a problem arises, the client (i.e., you) reports it using the means and communication channels that are defined in the contract (phone, e-mail, Jira, etc.). Then, the task is carried out by the maintenance team. In most companies, especially large ones, there are typically three levels of IT support, and each of them is reponsible for taking care of increasingly difficult problems. First level support deals with the easiests of tasks. Second level specialists fix more complex issues. Finally, the last level of IT support is reserved for really big problems that seem impossible to deal with.
The important thing to remember here is that system maintenance only refers to the system itself, the parts of which should be clearly defined in the contract (so-called SLA – Service Level Agreement). The company that provides the service shouldn’t be held responsible for problems caused by factors outside its purview – such as other systems that the software is integrated with.
Another important detail is that the responsibility of the service provider is limited to specific hours defined in the contract – it’s a guarantee that the system will work in these hours. There are also other things that should be included in the SLA, such as the reaction time, the way the software is monitored, accepted resolutions and consequences of failure (in case the specialists aren’t able to fix the issue, despite trying).
Types of system maintenance
The system maintenance that I define in this article is sometimes categorized as “corrective maintenance” by experts. It should be noted, however, that there are several other types of such services. In my personal experience, some of these theoretical definitions cover activities that don’t always get recognized as “maintenance” in practice, but they’re still worth mentioning for the sake of being thorough. Here’s the general categorization:
- Corrective maintenance – This is what I’ve already described and what usually gets recognized as maintenance, i.e. correcting problems and taking care of various issues that arise and bug the software out.
- Adaptive maintenance – This includes making changes to the software, hardware, updating documentation and even organizational policies to make the system work better. It’s a scenario that can happen when the environment your system runs in – or at least an important part of it, like an operating system or a cloud storage service – changes in considerable ways.
- Perfective maintenance – It’s all about making modifications, updating and evolving the features of your system. At Pretius, we usually don’t associate this type of service with maintenance. Instead, we call it “continuous development” (and we’re not the only ones who do that). However, there’s no debate that improving the software and/or technology behind it can reduce the number of problems that the users encounter.
- Preventive maintenance – These are changes and adaptations that allow the system to work for a longer time than it normally would because of software limitations, technological debt, and general deterioration – in this case, we’re kind of trying to foresee the future.
Problematic maintenance – the job (almost) nobody wants
One of the things that software companies dislike about maintenance is that it’s quite hard to find competent developers interested in such a job. On one hand, it requires the cold steel nerves and the ability to work under pressure – in most cases, you can’t work comfortably from 9 to 5, you have to be ready to fix an unspecified problem, even when it occurs at a late hour. You also can’t afford to make too many mistakes, since everything you do will directly affect the time the problem persists – and the aim is to get rid of it as soon as possible.
Another flaw of working on system maintenance is the fact that big companies often base their software on legacy (i.e., outdated) technologies – software that developers passionate about their job just don’t like to work with. Using such tech in one project might be okay for them, but making it the centerpiece of their job for a longer period of time usually isn’t. This is why you often need more experienced developers for such tasks – but also ones who don’t mind working odd hours, and possibly in stress. It’s a tough combination.
And there’s also the simple fact that very often maintenance just isn’t a job that’s particularly exciting – you don’t create new things, you don’t make them better. However, at the same time, it’s also a field that will always surprise you in one way or another – it’s not uncommon for problems to require the mobilization of whole groups of specialists who need to exchange ideas and share their knowledge in order to get rid of the problem quickly.
All of this makes maintenance a troublesome service, especially for smaller software houses.
How we do it at Pretius
I’ve said that many companies don’t want to take care of system maintenance, but that doesn’t mean that there are no vendors who can and will do that. At Pretius, we’re proud to be long-term software partners of a good number of market-leading companies – with some of them, we’ve been working for over 15 years. So, you can say that we really take care of the solutions that we make. Part of that is continuous development, updates, improvements and so on – but another part is maintenance.
We have the necessary workforce and expertise to provide such maintenance, we know how to do it efficiently and effectively, and we know why it is important. We believe in offering our clients the full range of products and services, providing them with everything they need – and not just things that are convenient for us to offer.
Pretius usually takes care of the third level of IT support – we deal with the biggest, most problematic and/or hardest to fix issues, that the client’s people can’t take care of by themselves. However, we also help make the other support levels better and more efficient. We take maintenance into account when we start working on a software solution, and we work closely with the client during the analysis, design and testing phases to make sure potential problems are rooted out. We also teach the client’s people (business users, administrators, in-house IT teams) everything they need to know to deal with smaller problems by themselves, and offer them tools (logs, monitoring – ELK, Grafana, etc.) that help them do it easier and faster.
Our developers working on maintenance get paid differently for “stand-by” hours, and differently for the time that they spend on solving the actual problem. These details are stated in the individual contracts signed with each employee. We also make sure one person doesn’t get stuck on maintenance for too long, because for most people that would be a clear path to career burnout. In our non-Scrum teams, development and maintenance tasks are interwoven – no one works only on one or the other. When it comes to projects managed in accordance with the Scrum framework, we always make sure some of the team’s capacity is reserved for bug fixing during a sprint, because only critical problems get fixed as part of the provided maintenance service. Issues that can wait are simply corrected by the development team, during subsequent sprints.
There’s a scenario I like to mention that speaks to the quality of our services. We have a client who has his own, in-house team that takes care of some maintenance issues. However, they have a large number of systems, so they’ve decided to hire us to take some of the burdens off. We did the job so well that nowadays our people do most of the maintenance work, whereas the aforementioned in-house team became something like a hub that helps with communication and collects problems to be solved.
Software maintenance – A thankless but required job
Maintenance can be a hard and thankless job, but it is and will (probably) be required, for as long as your software exists. While it may sometimes look that way, things don’t run by themselves – they have to be maintained and taken care of to keep functioning properly. Choosing the right people for the job is very important, and it’s a good idea to find partners who’re willing to do this part of the work too, and not just bask in the “glory” of a shiny new system or application.
Are you looking for a long-term software partner?
Pretius believes in consistency and loyalty, and we strive to offer our clients a stable partnership for years, instead of creating something fast to forget about it a moment later. If you think our values might be aligned, be sure to drop us a message at firstname.lastname@example.org and tell us what you need. We’ll respond within 48 hours.