Wanted to add, for every dollar an Indian firm makes, the average developer gets probably around 8-10 cents or less. When you are at a subsistence level like that, it's difficult to ask questions. You focus on the insecurity instead.
This was something we covered in some detail in our talk at Rubyconf last year. Here's the link FWIW: http://speakerrate.com/talks/5120-india-ruby
When people are told for a couple of generations that they should shut their mouths and look down if they don't want their families hurt. They tend to obey.
My experience was that I was development lead of a project that had development outsourced to a former Yugoslav republic. We had clear agreement (on all levels) that we shall use direct communication on appropriate levels. But what happened in reality was that every memo or inquiry I did - the local development lead would not respond to me directly in a timely fashion. Instead the information would be passed up to the CEO of the company who would then proceed to send this information to my Executive Director who would then send it to me (in an understandably untimely fashion). Needles to say we had to break the effort and search for local developers.
And further east you go more of this effect you see - people refuse to convey information that is clearly in their jurisdiction, because their boss might not agree with everything.
A fucking nightmare.
I actually began writing about it, but then decided I shouldn't generalize about all of Eastern Europe from just my experience.
Management tends to be poor to atrocious, effective management is seriously lacking through all industries there. Add to that resource constraints and competitive pressure you have in outsourcing shops, and it multiplies many-fold.
Many people won't go to them because they are not cheap.
If you spend time in terms of vetting the team for people you are comfortable with, take the time to be as clear and detailed as possible with the requirements, have a good continuous build system so that you can see the software being developed daily, and have direct, continuous communication channels to the coders, one would have a far better experience.
If you're not looking for an overtly complicated project, try hiring undergraduate students. Not from any university though. Try the students IIT's and BITS Pilani. These are the foremost technical institute in the country. So, how do get in contact with them? Visit their Computer Science Association websites, contact their student president to help you out. More often than not, you will find brilliant programming talent this way. Some of them will value a letter of recommendation (that may help in their MS or PhD) very highly.
If not that way, always insist on seeing the portfolio/previous work of the guy you'll be outsourcing too. Else chances are you might end up outsourcing, say a e-commerce implementation, to someone just learnt how to echo in php.