How to Make a Mess of Outsourcing
It is easy to “jump on the bandwagon” of outsourcing software development. Using external developers and outsourcing to places like India has become so common and prevalent that it’s easy to think that it is always a good idea in all cases for all projects. But this is not necessarily so. As with any big project management methodology, outsourcing the development has downsides and hidden perils that you must be aware of before getting into this unique approach to handing a large development workload. So it’s a good idea to discuss what can go wrong and what kinds of litmus tests you should use on a project by project basis to make sure you don’t make a mess of outsourcing.
One of the easiest ways to mess up software development outsourcing is to simply turn it over to an external agency and walk away with the expectation of returning to managing the project six months later to find a perfectly developed project. Outsourcing does not and should not mean”out of sight, out of mind”. To avoid the disasters that can occur if you just “cut loose” a contractor with nothing more than the initial specifications to go on, you must have a high level management person in IT or in the business to monitor the process on a routine basis.
As part of the initial contract, you will set up a communications protocol that your outsourcing developer will live up to scrupulously. This includes daily email updates, a weekly status report and a change management process that is systematic and thought out in advance when problems come up or changes need to be introduced to the project. By staying on top of the project from RFP through roll out, you are being a responsible business owner and you are retaining both the authority and the responsibility for the project turning out well.
Assuming that software development outsourcing is an automatic cost efficient alternative is not either prudent or efficient when filling the roll of IT management or project leadership. You should verify that on a project by project basis, outsourcing the development is the best cost conscious decision compared to developing the project in house. To be blunt, many times the temptation to outsource development comes from poor management of internal resources and the myth that any contractor will be easier to manage and be able to be the savior of an otherwise unproductive culture in your IT department.
Don’t let outsourcing be your methadone for the real work of turning around an unproductive corporate culture in the IT department, cleaning house and taking the management initiative to turn your internal development resources into a productive software development resource for the company. Simply outsourcing the work because you have trouble getting good work out of your on staff developers is lazy, bad management and will only lead to more costs for the company not less.
If it is verified that outsourcing the development is the efficient and cost conscious way to go, you must implement proactive communications systems with your contract workers on a regular basis. This is especially true if you are working with an outsourcing company over seas. Be sure that during the RFP process you confirm that the contractors who want your business are good communicators and will keep you informed every step of the way that the work is being done well. Then and only then can you be assured that the work is on target and that problems are surfaced early so they can be addressed before they serious threaten the project.
Do not assume that when you hand off a development step or even the whole project to a contractor that it immediately becomes “their problem”. The IT department are the ones who are responsible to management that the work gets done correctly. It will be you who gets the credit if the project goes well. But if the project goes badly, yes the developer may not get paid. But at the same time you will have a failed project on your department resume and that is a terrible price to pay for selecting the wrong contractor or for not managing the software development process aggressively.
