In response to rising costs of maintaining their source code, many companies are making a move to outsource the development and maintenance of their legacy applications. In the climate of managers having to do more with less and trying to find ways to save money on the IT budget, the outsourcing solution can be a quick fix for a lack of legacy IT management skills. It looks like a good cost saving move initially since the cost of salaried developers along with benefits and office space required to house them is a substantial cost savings. However, with a little research into the application itself, you can find similar reductions in costs and address the substantial risks that may not be accounted for in outsourcing. Here is the question that you need to ask before making this decision:
Are the high costs of application maintenance and development due to inadequate documentation, poorly maintained code or poorly designed code?
Poor maintenance of even the best written code can be the cause of higher maintenance costs due to the ripple effect: when a change in one section of code causes a ripple effect and breaks other sections of code.
Another cause of high costs may be poor documentation on the design or operation of the application. A lack of understanding on how it was designed can lead maintenance programmers to hack in quick fixes rather than try to understand the code.
If the code is poorly designed and not modular, then maintenance costs will soar whenever changes are required because the code was not designed to handle it; sections of code may need refactoring, duplicate code to introduce new features or fix existing ones.
Can addressing these three areas significantly lower your maintenance costs? It should. In any event, all of these potential problems should be resolved before you take that step to outsource the application maintenance; this will make changes easier to integrate, ensure the existing system is properly documented and running within its current specs. The maintenance problem is only going to get worse if a disinterested party takes charge. If you don’t think there is a maintenance problem, then here are some questions you should also consider before outsourcing:
Does the outsourcing company provide the same service to your competitors?
- Is it is possible that your provider is outsourcing support of similar applications for your competitors? The knowledge they acquire from maintaining your application might provide an insight into refactoring a similar section of code for a competitor’s application.
How will your source code be maintained once it is out of your hands?
- Does the outsourcing company provide comparable security for your code in their possession as your company might employ? What about proper version control? How much training do they have in programming? Do they do code reviews? How many people have access to the code?
What is the quality of the workmanship provided by the outsourcing company?
- A modular design and the intelligent construction of the application are the most important factors in application maintenance cost. The question becomes whether or not your outsourcing company will use quality developers to maintain your code. Most importantly, the lack of vested interest in the application’s success carries even more risk. Having knowledgeable, expensive in-house developers may be a bargain if you consider what damage a neophyte can do to stable, running code. A lack of familiarity with the code and/or multi-tasked developers might result in hastily installed or poorly designed patches to the application, increasing maintenance costs and making the code harder to read or modify in the future. Outsourcing companies tend to have a high turnover rate and this correspondingly increases the risk of failure.
Outsourcing stifles innovation
The biggest loss to a company from outsourcing is the loss of innovation. As many computer systems managers will attest, innovation is often a by-product of maintaining a system, seeing problems that arise and resolving them. The process of discovery, investigation and resolution of a problem often leads to a better understanding of the cause and developing new technology to circumvent or prevent it, making the process more efficient. Assuming a comparable skill set between the in-house developer and the outsourced developer, both might run across this opportunity to improve the application. While your developer might inform his management or simply implement the improvement to see what affect it has, the outsourced developer has no incentive to do it. For the outsourced developer, improving the quality of the code is not usually included in the terms of the outsourcing contract. The outsourcing company’s goal is usually tied to closing as many problems as they can, as soon as possible; which in some cases leads to improper handling of bugs or problems. Improving the quality of the code or increasing performance will reduce the number of bugs and lessen maintenance requirements on the application – that might possibly reduce the scope (monetary compensation) of the outsourcing contract. Depending on the outsourcing agreement, that might lead to a reduction in the cost of the service. Most outsourcing companies are not interested in that.