Outsourcing only works...
If you understand the small print.
I used to work at a national telecomms company which had a major drive to reduce overheads by outsourcing everything it could.
First was the DBA support, which was handled by TUPE'ing staff over to a major international IT company. After which, while we were dealing with /the exact same people/, things took a noticable turn for the worst, as they rigidly stuck to the letter of the contract.
Database performance problems? We can kill the queries, but we can't comment on what's causing the performance issues. Not in our job spec, guv.
Roll a patch out of hours? Not in our job spec, guv.
And so on. Some of this was driven by people being jobsworths, or by people upset about the forced transfer. But most of it was due to the simple fact that anything not in the job spec could be charged for, and their new employer wanted to maximise revenue.
At the same time, increasing amounts of system support was being handed over to outsourced ownership - generally offshore suppliers with one or two heads onshore. In the short term, support quality absolutely nosedived, not least because the supplier was again looking for ways to maximise revenue.
We need to reduce the number of processes? Well, you're using a spreadsheet to track X: let's ban use of that spreadsheet and call it a process so it counts towards our SLA.
In the end, people spent more time arguing about the letter and spirit of the contract than anything else.
I'd like to say that quality improved as the outsourcers gained experience, but truth be told, that's where the other issue with outsourcing comes in: the people doing the work have no reason to be "loyal" to your company, and can often get a better paid job once they've built up a bit of experience.
So you get into a cycle of training people up, building relationships and then having to start again from scratch.
And let's not get started on the joys of relying on outsourced teams for software development...