Over the last decade or so, I've either had direct or indirect experience with:
Dealing with different cultural expectations can be a huge challenge. Here are a few examples:
A big reason things worked so well with the Lahore team was they sent a Western-educated product manager to work in the principal's office in California; he managed the communications with Lahore and made sure cultural issues weren't a problem.
I wouldn't just blindly outsource anything business-critical to anybody, Asia or elsewhere, no matter how cheap it seemed. Instead, I'd research the business culture of anybody I was considering, check references, and start with a test project to see how things go.
I have experience in dealing with an off-shore development company - web designers in India.
The quality of the work was excellent, the price was ridiculously cheap in contrast to using local (US) developers, and they were very hungry for the work resulting in a quick turnaround and excellent maintenance. The firm was found after multiple references were obtained and after comparing several very similar firms - it took time and effort to find them.
But here's the kicker: that was five years ago.
In the last few years such firms have wildly proliferated throughout some Asian countries, including India. This has matched very strong economic development and a growing middle class, all of which means - to find someone good now will take effort; the firms are nowhere near as cheap as they used to be. In short: they no longer compare particularly favourably against young, keen, local developers for skill or cost.
I think there was a window of several years where this was a no-brainer, but it's hard to continue justifying it. Many of the sites around now are referrers (not the guys doing the work but an agent) or template-mills (your site will look like a million other sites). And for what it's worth, we no longer outsource, we always use local.
I have been involved with outsourcing in several projects. The results have varied from great to unmitigated disaster. Let me repeat my answer to a related question. The points are re-arranged and edited to better answer this question. I have repeatably been able to get great results from outsourcing. However, there is an art to it, so expect to burn some time and money while you fine tune your process.
Build explicit feedback loops into the system. This is the number one mistake people make. Every email or work item needs to be peer reviewed before it goes over the fence in either direction. If you want a suite of tests run, send a small subset to be run on the first day and carefully review the work to make sure there is a strong understanding of the problem and the results. You might send the team off for a week to provide performance benchmarks only to find the report you get back doesn't answer any of the questions you need it to. Document procedures (wiki's are great for this) and get feedback on them before the team starts the task. Monitor results and provide a constant stream of feedback. Don't just "throw it over the wall." Build in a lot of feedback loops.
Leave your work culture assumptions at the door. In many U.S. based companies you are expected to say no to your boss, but hit your deadlines. In other countries the default expectation is that you never say no to your boss, but deadlines are the bosses problem to closely monitor. Imagine that you sent a batch of work over the wall with an agreement it would be done by Friday. If you overloaded the team, they may not tell you. Worse, they may not complain or give any status updates up to the due date. It's not that the team didn't work hard, they just didn't understand the assumptions you had that were different. On day one I tell a new team about my assumptions and make it someones job to catch me when I make mistakes and warn me when projects have gone off the rails. It helps if you have a person with a cultural background to understand both cultures and appoint them as the gatekeeper. You can get away without this if you are vigilant about spotting cultural differences and calling them out on both sides and finding a way to correct for them.
Simple or repetitive tasks require lots of supervision, but can be cost effective. You can probably pay on the lower end of the scale if you just need grunt work taken care of. It's critical that you package up the work into bite size verifiable chunks. A good example might be an API you want to have tested. You can easily measure code coverage and pay to automate testing to 100% coverage. Make sure you carefully review everything you get back. The opportunities for misunderstanding are magnified. There are lots of examples of these mechanical tasks and outsourcing can be a cost effective way to free up the home team to work on the hard stuff. Expect to have one full time employee on the home team with a primary job to manage the outsource team. That person will likely need to shift office hours to spend quality time in each time zone.
Complex tasks and problem solving command a premium. Imagine you hire a recent college graduate to work in your building. They are smart, but lack context and experience. It's not a big problem because you and other mentors can check in and answer questions very quickly. Now imagine they are working on an island and only get Internet access after 10:00 pm. Suddenly that smart college graduate doesn't look like such a good bet! When you outsource cycle time is often increased from minutes to days. This is incredibly dangerous. If you need to outsource thinking, be sure to carve off big enough chunks and set clear enough goals that the team can work independently. Then be prepared to pay up and be sure to insist on senior workers who are on the hook for delivering the results you want.
Outsourcing is often a tradeoff of time for money. Having teams in remote location slows your cycle time. Even just having them across town hurts, and across the globe magnifies the problem. If you can afford to develop your idea slowly (say you are using your income from a full time job to fund development) outsourcing can be workable. If you need to nail your idea and keep ahead of your competitors, it's probably not cost effective to outsource everything. However it can do wonders for freeing up your A players on the home team from drudge tasks that would otherwise drown them.
We have successful outsourced coding to a firm in Romania who has written practically our entire system. We kept the system architecture work in house though.
I really think it depends how much experience in the area you have yourself. If you know about IT then you can probably project manage effectively and make sure the code is up to scratch. If not, there are a lot of risks and problems you are exposed to that you won't recognise and are probably better going local.
My experience in using overseas developers has been mostly successful. When looking for a software development powerhouse I tend to use sites where reputation determines your work quality. Getafreelancer and Elance are my two biggest sources for overseas developers. Elance has a more uniform feedback system and you can see if a development house is good or bad.
You get what you pay for really. Although the price you're paying which you might think is cheap is actually quite a lot of money in some parts of India. My advice is to make sure the people you're about to send work off overseas too have a reputation, a good reputation.
You may also want to check out web development firms in Poland. The prices are competitive and the quality is excellent from what I gather.
For our start up, like Susan Jones, we also intend to keep our system architecture and design in house while looking for overseas (Eastern Europe and Asian) developers to follow our instruction.
I also agree with some other posters and the old adage: you get what you pay for.
I think if it is a matter of trust, you can trust the ones which have a good reputation. As far as actually using them in a startup setting, very likely not. Engineering must unequivocally be part of the co-founding nucleus team - not outsourced.
Why would you trust a software developer down the road? You still need to assess them for the exact same things.
If you can back-load your payments, that is probably a good idea, as always, but moreso given the ability for them to batten down their hatches and avoid you if they really want.
I don't have any experience and information with them. But if you want to work with a company like that you should be careful about some points.
India is OK, China you have to worry about intellectual property and other countries in Asia are an unknown. Why not consider nearshore firms such as Jamaica or Trinidad? More importantly, there are firms such as HP that can not only aid you in the software development component but other aspects required to be successful...