I will try to answer the title question in business language – I am not a lawyer and I do not want to delve into the aspects of civil law in the context of guarantees and warranty. I will focus on describing how Software Houses like us approach this matter.
What is a warranty?
The guarantee is a voluntary, free assurance that the software produced is of high quality. It boils down to the fact that during the warranty period, the supplier undertakes to remedy any defects in the software.
What is a warranty not?
The warranty is not a maintenance service. As part of the guarantee, you will not receive constant monitoring of your application, backups, handling requests from your users. You will not be given peace of mind to focus on your business goals.
Software Houses provide guarantees most often in projects settled on the Fixed Price basis and its cost is already included in the price of the project. In such a case, the warranty is granted for a period of 3 to 6 months and its purpose is to “warm up” the project, that is to catch any defects and errors that were not detected at the earlier stages of testing. During this period, the customer reports errors and they are successively repaired. There are no SLAs here and there is no constant monitoring of the system.
Only using the warranty makes sense when the software is ordered externally, but the final maintenance of the application is to be handled by an internal servicedesk. In this case, it is the internal structures that deal with all aspects of maintaining the application, handling requests, and backup plans. The supplier is only responsible for the implementation of actual errors that will be caught and screened out by the customer’s first line of support.
What does a service contract give you?
The service agreement, also known as the SLA (Service Level Agreement), is an agreement in which the supplier undertakes to take responsibility for the post-implementation stage of the application life cycle, which he has developed or only implemented. Under this agreement, no development work is carried out on the application and that is not what it serves.
It is a comprehensive solution that removes a few basic problems from the customer, which not everyone is aware of, and which must be absolutely taken care of when providing the service to the end user. The most common elements of a service contract include:
- A dedicated point of contact to which application users can submit any questions and comments that will competently solve the problem faced by the user.
- Implementation of an appropriate backup policy to ensure that the data collected in the application will be safe and even in the event of a major failure, the system can be quickly restored to operation.
- Monitoring the infrastructure and ensuring it runs continuously – nothing annoys users more than the fact that the software is down and nobody even noticed it.
- Monitoring the load and stability of the application in order to detect potential bottlenecks and problems – as the number of users and the amount of data increases, for example, performance problems that did not occur before.
- Security – keeping systems up-to-date in order to monitor potential holes in operating systems, web servers, etc.
- Problem management – maintenance services are most often carried out on the basis of appropriate ticket systems that store data on individual incidents and it is easy to identify the so-called problems, i.e. repeated incidents or user reports regarding, for example, the lack of intuitiveness of a given functionality – thanks to this, it is easier to adapt the application to the actual needs of the user.
All these tasks and many more should be performed continuously. Such a service also imposes something that cannot be found in a pure guarantee, namely specific working hours tailored to the business requirements of application users, as well as specific time regimes in which actions are taken regarding reported problems, as well as times of their resolution.
Regardless of whether you will maintain the application as part of your IT team or hire an external company for it, this is a cost that cannot be ignored and should be taken into account at the initial stage of planning the project budget.
Own IT or an external company?
The best answer to this question is: it depends, and it really depends on many factors, including:
- Who is the application for – the application for our employees requires a different level of support, and the application for our customers requires a different level
- What hours do users use the application – if it is an application for employees and they use it only during working hours, which are in line with the working hours of the IT department, then perhaps there is no need to involve anyone from the outside. If, on the other hand, the application targets several markets in different time zones, it requires 24/7 support.
- How many of these users are there and how crucial the application we offer is for them. If we have an application that supports several million users and, for example, our client’s profit depends on it, because we are an exchange broker, then we should definitely ensure the highest quality of support, because the first stumble and loss of credibility may be our last stumble in this business.
- Do we have the appropriate substantive background – if our company does not specialize in IT solutions, the creation of extensive IT departments is usually economically unjustified. It is better to focus on your core business than to build competences in which it will be difficult to match the companies that specialize in it.
- Do we have the right amount of IT staff – remember to provide the service during holidays, sick leaves, etc. Perhaps providing support during the hours eg 7-23 will require the employment of a few additional people.
It would seem that the best client for this type of service are companies that do not have their own IT departments and building them and acquiring appropriate competences is unprofitable, but paradoxically it is different – our experience shows that it is large companies that have a lot of large IT departments prefer to buy this type of services from companies that created the software. Taking another application into care is most often associated with the expansion of the department, employing more people, complicating the management structure, which leads to an even greater increase in costs. It is easier and cheaper to buy these services outside the organization.
The costs of such a service contract are usually from several to several dozen thousand zlotys a month, depending on the complexity of the solution, the number of users, support hours and other potential risks related to the software.
Each approach has its drawbacks and neither is the best solution. The choice between outsourcing the application maintenance to your own IT and an external company should result directly from the economic calculation supported by probable threats that may occur during the entire software life cycle. However, the most important thing is to choose one of the routes, and not leave the users alone.