Documentation for remote teams, not just those outsourced and offshored, is often more than you would expect for co-located teams.
I have seen people collaborate effectively across multiple time zones, but this requires asynchronous communication and a shift to mostly written forms of communication. Importantly, both onshore and offshore staff need to communicate clearly and effectively.
Jeff Sutherland gives an excellent example of this in “The Scrum Papers: Nut, Bolts, and Origins of an Agile Framework”, namely:
“St. Petersburg staff likes a detailed description because the system is a comprehensive and complex system designed for specialized librarians. As a result, there is a lot of knowledge that needs to be embedded in the product specification.”
However, even well-documented requirements cause problems due to misinterpretation, ambiguity, or incorrect assumptions. Sutherland goes on to say:
“A lot of questions result after receiving the document in St. Petersburg which are resolved by in daily Scrum meetings, instant messaging, or email.”
This is why I’m a massive advocate of user story refinement, particularly ahead of stories being picked up by a developer. Devoting time to this crucial activity means you stand more chance of building what is required and less chance of re-working it later on.
If you are unhappy with your development team, they may need more detailed guidance.
Clear and effective software requirements can help with this.