Not that you intimated this, but I don't know that it's necessarily a problem with the people writing the code. What I've seen is that organizations that try to save money by offshoring are not providing adequate domain knowledge or usable requirements to the developers.
Throw in a massive timezone difference and every misunderstanding winds up living in your system.