“Change and evolution are permanent.” Everything around us is changing and evolving over time and so is the case with the technology, the market and in fact the client’s needs as well. As we all know the journey of building a software project does not end at the delivery of the finished product to the client, rather there are a lot of tasks and assistance associated with the post-delivery of the product such as software update, compatibility issues with the hardware, issues due to technology change, demand of new features in the software, occurrence of error due to any other software updates, increase in number of users, etc., which is compiled in a term called Support and Maintenance of the software. To be more specific “Software maintenance is the process of modifying a software system or component after delivery to correct faults, improve performance, or adapt to a changed environment” – The Institute of Electrical and Electronics Engineers (IEEE). Maintenance and support prove to be an extremely critical task for the lifecycle of a product, hence it needs to be handled with complete dedication and attention.
Advantage of Support and Maintenance of the software at the client end:
A Software cannot be bug-free forever. Bugs can arise at any stage, be it after the delivery of the software. However, before the delivery of the final product, it is tried and tested by the support and maintenance team in order to discover all the possibilities of bugs in the software. Even after the delivery, the company declares a warranty period for the software, within which they fix the bugs for free.
Adaptability to the environment change:
A lot of issues can be generated due to changes in the execution environment for example when a new iPhone is launched by Apple with the changed interface, the software and applications need to be modified for the expected behavior. And this change request is brought to the support and maintenance team, in order to be served.
Prevent malware attacks:
This team also helps the clients to get rid of the threats of malware attacks and website hacking and even prevent their occurrence by regularly updating and upgrading the software or the website. Basically this type of maintenance comes under the category of preventive maintenance.
A well-maintained software performs better which is the target of every company/client. The better the performance, the higher the revenue. Like hardware requires servicing and overhauling periodically to function properly, so is the case with the software, a software also needs servicing and maintenance periodically to function appropriately.
A developing company never remains stagnant, and hence it always keeps a watch on market trends with a vigilant eye. The company actually keeps re-engineering its products to stay in the market and meet the client’s needs. Product re-engineering is no less than the original product development task, including all the phases such as designing, coding, testing etc. And to do this, the support and maintenance team comes into action and predicts the upcoming technology so that the product-related decisions can be made accordingly and re-engineering of the product can be done effectively.
This was just a glimpse of the potential of the maintenance and support team, there is a lot more that can be discussed. We have discussed the benefits to the clients, however, the presence of support and maintenance team is beneficial and interpretative for the company as well. Well, to realize and understand this aspect, first of all, we need to understand the problem which is addressed by the team. Now the problem is very clear from Gartner statement that – from the total time spent on development of a project, 80-85% of the time is spent on the maintenance of the project, which clearly depicts that a very small fraction of time remains for a developer to do the various essential tasks associated with the development of a software. Working in this fashion, holds the developers back from exploring their talent, gaining expertise in technologies, proper documentation, making effective strategies in the company’s interest, etc. However, if the company hires the right people for their support and maintenance team, then the maintenance related work can be done by this team and so the developers need not get bothered about the maintenance of the product and rather they can focus on other important work related to the new developments.
Another point of concern regarding this style of working is that the developers should also provide a way to the support team so that it could be easier for the team to understand their piece of work. The developers should always develop maintainable software which means that the software should be easy to upgrade, update, debug and modify. “Good programmers write code that humans can understand” –a well said quote by Martin Fowler, a British developer and author of the book called “Refactoring: Improving the Design of Existing Code”. It’s the duty of a developer to develop a code that is readable, refactorable as well as properly documented with all the nitty-gritty kept in mind, closely observed and taken care of. And lastly, the communication between both the teams is also very crucial which builds the understanding and smoothens the functionality, as being their own creation, the developers are aware of each and every line of code as well as areas of vulnerability, which they can communicate to the team through the document and reports or so depending on the criticality of the problem. This, in turn, results in greater efficiency of the teams.
By far it’s quite clear that, though few companies work on the agenda that developer should do both developments as well as maintenance single-handedly, however in my perspective separating the teams would be a better option and none of them are replaceable i.e. maintenance of software is equally important as its development, and the reason can be easily interpreted by this article. Ace has experience in handling a lot of Support and Maintenance projects and it has successfully executed many in the past with commendable results.