DISCLOSURE: I am from India and I run a company with more than half revenues coming from outsourcing model.

The level of threats/attacks from the said man are alarming and completely un ethical, but there are really good companies also who care about their clients. But, I have had the (dis)pleasure of knowing companies/people who are doing activities like putting in kill switches and backdoors for the rainy days.

Outsourcing can work. It is a good model. Here are a few alarm flags that should be kept in mind before choosing outsourcing. I have seen these to work very well over past few years.

Flag 1) No in house tech team:-
Hire at least 1 very good developer/engineer in house, who can actually the verify that credentials of the remote team.

Flag 2) "Oh we charge only $5 an hour":-
Work force in India is cheaper than but c'mon it's not that cheap. Good(not great) developers won't cost less than $20 - $25. And you can get a really good guys at $35 - $40. The really great developers won't cost you any less than US/Europe here.

Flag 3) "Oh Oh! PHP, .NET, Rails, J2EE, Drupal, Joomla, Wordpress, Blah, Blah, This and That? We got it all!":-
Stay away from such companies. Look for small companies/teams with the niche expertize in the field of your requirements. If you require Drupal expertize, look for companies that specialize in Drupal solutions, If you need Ruby on Rails expertize look for a Ruby on Rails company and if you need Django expertize, look for a Django company. Give them a unpaid timed assignment if they do not posses any demonstrable project.

Flag 4) Need more developers on the team:-
Never agree and never push to add more developers to a late project. Sometimes vendors push for it because of selfish reasons and some times clients push for it for a false sense of speed. If you absolutely and unavoidably have to add people to the team, add testers not developers.

Flag 5) Oh! We don't have/need testers or developers should do testing:-
Never ever agree to working with out professionally experienced tester on the team. It will save you a hell lot of money in the long run. If company does not have a proper tester, don't hire them.

Flag 6) Daily so called "15 min" remote scrum meetings:-
This does not work in Out sourcing. I have seen these scrum meetings go on and on for hours. I have personally sat in daily 3 hr long skype conversations. This leaves very less time to work and developers keeps worrying about what to report in tomorrow's meeting than concentrate on work.

Here is what I have seen to work. In a any work week:

* Monday: Specs and week goals meeting - max 2 hrs - whole team participation compulsory.

* Wednesday: Mid Week report - 30 min max - as many team members as practically possible.

* Friday: End of week report - 30 min max - as many team members as practically possible.

Flag 7) Tracker? What's that? Spreadsheets rule:-
Use a tracker religiously. 99% of communication should happen trough issue tracker. things tend to get lost over emails. Use trackers for smallest of things. And do not accept any project related request over email(this goes for both clients as well as vendors)

Flag 8) No Time logs:-
Ask your vendor to maintain time logs. If necessary, threaten non-payment for the week if time logs are not finalized and locked by Saturday. Review time logs every week to avoid any end of month invoicing disputes. Disputes waste time. Don't use spreadsheets for time logs, modern trackers have a decent time logging capabilities.

Flag 9) Outsourcing just to save money:-
This is a bad idea. Outsourcing to a good team/company will probably save 30% money but that should not be the main reason to outsource. One of the biggest benefits of outsourcing is that works getting done while you sleep.

Flag 10) Not paying on time:-
Clear invoices as soon as possible. I am not saying this happens always, but sometimes payments get delayed for reasons like confusion over banking details, payment methods etc. Set these things straight at the start of the project. Delayed payment means lost interest. I know great companies/teams here who are exceptional in work but operate on a hair line budget. For them delay payment means delayed salaries for their employees. And I don't have tell you what delayed salaries mean...

Flag 11) I am the project manager, talk to me:-
These are the companies that are most likely to take you for a ride. Insist every developer on the project be present in all the meetings. Every developer be present on the project mailing list. Now there are many companies in India that won't allow this. They are scared that developers will steal away the projects if they came in contact with clients and don't trust the developers, but then again you do not want to work with such people.

Finally, always remember, a common India developer(who is employed by an outsourcing company) is shit scared of the client paying in dollars. They will say yes to almost anything. They don't want to offend clients and in turn their bosses. So get to know your developer team. Talk to them during meetings. A small amount casual talk will go a long way toward building the mutual trust and increase comfort level.

These where just my two cents.