My experience with outsourcing (not specifically Java) is that the difficulty revolves around knowledge of the problem domain. Outsourcers say something like "give us a sufficiently detailed...