I have programming work done regularly by freelancers.
US-based programmers are overpriced and do incomplete work, on balance. My direct experience is that a domestic programmer is an underachiever, who will deliver an even amount of results and excuses.
I have hired programmers in India, Pakistan, and Nigeria - all did outstanding, complete work quickly. No excuses from them. My direct experience has been excellent. I use them more consistently - and reliably - than any US based programmer.
How much leeway did they have? As in, did you give them a complete set of specifications, outputs, etc etc and say "write this"? Or, were they encouraged to "think outside of the box"?
I likely wasn't very clear in my post - my primary complaint with any outsourced work, regardless of the company, nationality, etc - has been an inability to improvise. That's a problem with me; frequently the very clients that I'm working with do not know what they themselves want.
So, to be specific, in my experience the statement, "I want X Y and Z, nothing more, nothing less.", works very well with outsourced employees.
However, if I say "I'd like something sort of like - but not exactly like - this, with a few changes to be determined later." ....forget it.