Having inherited a bunch of products that were developed by outsourcing companies, at several different employers, I can safely say that outsourcing companies aren't going to replace the need for COMPETENT full-time employees.
I even spoke with several clients who switched from outsourcing in 3rd world countries back to hiring local developers. Wages are going up 10%-20%/year in the 3rd world countries while they stagnate in the USA, so there was no long-term economic benefit to outsourcing.
On each of those projects, the outsourcing company did the minimum effort to get paid, and left an unmaintainable mess.
Then the employer has two rough choices. Keep the outsourcing company on at inflated rates to support it, or hire full-time employees to do the support. Or find someone to rewrite it, they don't deliver, and now a couple years and a lot of money is down the drain.
The outsourcing company does not have the same incentive as a competent employee. An outsourcing company just wants to get paid, and technical debt doesn't matter. An incompetent employee will obfuscate things to protect his job security (or because he doesn't know better). A competent employee wants to eventually move to another project, so the incentive is more to do a good job so it can be handed off to someone else.