The pros of offshoring are:
- Cheaper - It's cheaper on a per headcount basis to hire someone in India or Russia.
- Can be started up quickly than hiring yourself - If you want to hire 3 developers it could take you a while, but offshore teams can in theory be spun up quickly.
- Coordination challenges - It's very hard to coordinate with developers you have not met, don't speak to more than once every couple of days. The timezone challenges makes it even harder to stay in sync.
- Talent level - Contrary to what any offshore provider will tell you - the talent level here locally far exceeds the talent there.
- By far the biggest is loss in productivity because you are not all talking to each other. For e.g. if you ask them to implement a facebook connect button, you have to say exactly what it is and if they run into any issues, they wait a day for you to get back. If you were all in the same room - you would have had a 5 minute conversation and made a decision. Especially in a startup, things are not defined well, and changes fairly rapidly.
In my opinion, the cons outweigh the pros especially when you are only hiring 2-3 developers offshore. One really sharp developer working with you locally in your team could easily do the same as 2 people there given the talent level difference, timezone challenges, and flux. Further coordinating with 2 people there will take up 1/2 of a person's time here. If you have a different day job and don't yet have a company in the US - you might find this an option.
If you decide to do this - here are some tips
- Do it selectively. For e.g. in the early days we had teams in India doing some content work, SEO work, image editing work, later we had some specific QA work etc.
- Do not offshore critical core components. Unless you know the folks/talent - For e.g. some of my friends from the US have started offshore services in India with specific product focus e.g. mobile and I know the team and the talent level. Or the team has a co-team in the US in your city you can interact with frequently.
- If you use a provider, talk to the people doing the work. See if you can get them to put 1/2 a project manager to manage the team directly there.
- In my experience - try to get a monthly cost for a developer, instead of time and material. Otherwise you will get inundated with change requests every day and you will be extremely frustrated.
- Push them to put shadow resources so you are not affected by attrition. Almost every provider esp. in India will tell you their attrition is better than average :) The reality is that you will lose people and the really talented developers are in product subsidiaries like Google's India center etc.
- Give requirements clearly and be prepared for a lot of late night calls. Lots of coordination required.
- In case you are wondering - you won't be able to hire anyone directly offshore unless you setup a subsidiary and that's a huge set of work. Don't go there unless you want to put 50 people in India. When we setup a subsidiary earlier, we knew we want to have a team of over 100 people and so it made sense to do that - since you can hire better developers etc.