Outsourcing can be a good option to achieve certain activities of your business tasks. However when you outsource certain aspects because you are incompetent in that area, you are on a slippery slope. If you can’t manage the specific business activity, you also won’t be able to manage your vendor.
Outsourcing can be good option, specifically if the certain business activity has become a commodity; if it is a very well defined process or you have a very well defined outcome and there are multiple vendors that all provide comparable services. Catering or cleaning are typical aspects that you can easily outsource. When it comes down to IT services, you need to be more careful.
If you have problems managing system development and you think that outsourcing is an option, your run a very high risk that you will pay an unnecessary high price. Say you contract a vendor to provide you with system development and maintenance services for a period of 3 years. Before you contracted this vendor, you went out to market and selected the vendor that provided the best value for money. But once the contract is in place, you will ask to vendor to deliver a certain piece of work. The vendor will give you a quote on this, however you have no way to vet whether the vendor is overcharging you or not. Simply because you do not have the skills in house.
It means, that if you want to outsource unique services of which you cannot simply compare the product or service with what is provided by other vendors, you must maintain a certain level of knowledge in house in order to manage the vendor and its services.
The problem occurs actually already earlier. You would have problems defining clear requirements for your services and selecting the best vendor.
If you are incompetent in a certain business activity and outsource this activity, you will simply have outsourced your incompetency. You will not have made much progress. Maybe you have simplified the problem, resolved some headaches, but you will pay a good price for it.
Usually when you are unable to manage the activity, you will also find that you will have problems assessing the quality of the outcome. And if this is the case, you have even more problems. Your business outcome relies on an intermediate outcome of which you cannot control the quality. Therefore you have a serious business problem.
The only way to resolve this is to assure you develop the skills and capability in house in order to manage this business activity. Once you have achieved this, you can then identify whether you want to outsource the activity or keep it in house. When you outsource the activity, then you still need to remain a skeleton staff in house with the relevant management skills in order to manage the vendor, monitor the quality of outcome and assure that the processes of the vendor and your own are well integrated.
These days we are close to calling data centres commodity services. However I still would assure to have sufficient skills in house to manage the externally hosted services. When it comes down to application development and maintenance, I certainly would keep a good team in house. Definitely because I would really hesitate to outsource the requirements development and testing stages. But there is so much more to it. Much can seem all fine on the surface for quite a while but you have no insight in the risks looming inside the application. In order to control the architecture and associated business risks, the amount of effort and staff required to control the outsourced vendor can become significant. I feel that it would be just as easy to keep the development and maintenance in house unless you already have the required team in place for other purposes.