Many cases of outsourcing are a "smell" because it means that implementation is a far larger chunk of labor than specification, or at least it is assumed to be such. If you are using sufficiently powerful tools, then most of the effort evolves around translating domain knowledge into something that the computer can process/understand. This usually requires a domain expert or at least a domain semi-expert who also knows how to interact with the computer via programming languages or whatnot. (This assumes the outsource team is not very familiar with the domain at hand.) If the implementation is the bottleneck and not requirements analysis, then outsourcing may be effective, but at the same time its also is a signal that your tools are not powerful enough such that the project is spending most of the time on implementation. Your tools are not close enough to the domain abstractions such that you are making screws from scratch.