There are very competent developers in out sourced companies, but their primary role is to front each new contract and move on to the next, leaving you with the far less competent ones.
We had a great developer come over from India to do a proof of concept for a contact that would involve one on site role and a team off shore. He was as sharp as a knife and exceeded expectations. After they were awarded the contract, we we told this developer would not be available for on site due to family commitments back home, but would be leading the off shore team. Which he did for about a week, after which he would still answer questions on the phone, but had had been moved on to the next project and the one after.
What were left with was another on site guy who had to clear every breath he took with the out sourcing company manager, so preferred not talk to anyone. The off shore team produced very poor quality cut and paste code, the company was only interested in ticking the boxes on a spreadsheet, and not delivering anything close to a useable product.
Luckily we only wasted 3 months of money before pulling the plug.