We outsource successfully. But we have a 1 on 1 relationship with each developer outside our company. So no fooling us about whom it is doing the work.
It takes real work to manage any developer. Its an illusion to think outsourcing solve all the problems. We think of it as simply a recruitment tool really. Not that we hire all the developers we work with. But the outsourcing company is only there to bring in talent as needed. That talent still needs to be managed.