I find this is a question that comes up very quickly to business owners looking to hire a developer/freelancer. Why would you hire a developer from North America when you can outsource to someone in India or China? I briefly touched upon this in a previous post about things you should know about freelancing, and I will explain this a bit more in detail based on my experiences.
Time differences
For starters, let’s say you’re in San Francisco and your work hours are 9~5. There is a 12.5 hour difference between you and your developer if you were to outsource. This is ignoring the fact that many freelance workers can work obscure hours, including myself. However, more often than not, you will find that nearly all of your communication with an outsourced developer will be via asynchronous communication, which can be extremely problematic when tackling projects of higher complexity. It also means that any urgent issues will take at least 24 hours to resolve (if you’re asleep and your SaaS comes back online, it’s not completely the same as you seeing it come online and getting a chance to make sure everything is in order).
Cultural differences
Before I continue, I’d like to point out that I have worked with freelancers in India and China both directly (hired by myself), and indirectly (hired by my clients). Not everyone is aware that there are significant cultural differences between North America and India. One of the most notable ones I like to use as an example is that developers in India tend to be “yes (wo)men”.
There are many times where project requirements can be vague, the developer may be having issues, but these things will not be clarified/communicated with the client. Throughout the project, you will often get the impression that everything is sailing smoothly, and it won’t be until the project is coming to a wrap, or when you get a demo of the project at regular intervals (you should be asking for this) that find you out a lot of things may not have turned out as you expected/imagined. Of course this varies from person to person and happens in North America too, and I’m not sure why this seems to be more prevalent in freelancers from India. Perhaps it’s because they consider asking questions and bringing up technical challenges a sign of incompetence.
Communication challenges
This is actually not as big of an issue if you can find a developer with a good grasp of the English language. Though most freelancers in India are knowledgeable of English to some degree, more often than not, the challenges with communication begin to surface as you get into more detailed parts of the project. This, combined with the 2 points above, make it very difficult to move a project along and adapt to changes smoothly/efficiently.
Maintenance and code quality
Okay, this one is highly subjective and really happens within North America too. Often times, you will find that the code delivered by an outsourced developer works. Maybe you find a few bugs, and they get fixed. Great, right? The challenge is not actually getting everything to work. A huge issue that clients don’t consider when choosing to outsource is code maintainability. You might say, “I don’t understand code, and I don’t write code, so why should I care?”. Really, you should care a lot. Many times, instead of working with the client through technical challenges and pointing out that the deadline may be too rushed, outsourced developers will come up with “hacks”, and many of these combined end up making the product extremely brittle and prone to breakage. Breakage aside, any developer who has to work on this product further down the line will have to battle themselves whether to retroactively clean up those “hacks” and risk breaking things that appear to be working, or just building on top of the technical debt that has already been accrued. As the technical debt builds up, you will find changes taking more time, and (seemingly randomly) breaking other unrelated parts of the product. A quick hack can cause many headaches and become very expensive in the (near) future.
Cost
By and far the number one reason to justify outsourcing overseas is the cost savings. Many small business owners who are not technical and have not had prior experience outsourcing projects overseas are not aware of the risks and headaches that come with outsourcing. It’s not uncommon to have someone contact you about estimating a project and having them scoff at your rate then talk about how they can hire someone in India for $5 an hour (to be fair, these kind of clients are on my never-ever list too). And to get a good developer in India, even $5 is too low.
However, as mentioned in one of my previous posts, the math doesn’t usually work out the same way you’d expect it to. On one hand, the developer from India might quote you 700 hours at $5, which ends up at $3500. Someone local may charge you $150 an hour, but only bills 30 hours, which ends up only being $1000 more than the alternative. This is a bit of an extreme example, but it also disregards the savings from avoiding the issues related to outsourcing overseas. This discrepancy in hours billed may be caused by a different skill level, or they may simply be billing dishonestly (which can occur anywhere). Hourly rate is not a good indicator of value provided. This is the reason why some of my clients are charged based on blocks of time (think day/week basis). In fact, the working relationship between client and freelancer is also incredibly important. Someone who has worked with your company for an extended period of time likely has a better understanding of your business and is able to provide solutions that are tailored specifically towards your business needs. From personal experience, there have been times where I would propose a different solution, one that would make me less money, but would ultimately be a better choice for the client.
Okay, but when should I outsource overseas?
As someone working mostly in North America, my opinion is definitely biased. But while I have seen first hand the many issues that come up with hiring someone overseas, I do believe there are instances where it can make sense for your business. Projects that are smaller in scale and more isolated from the critical parts of your business, which have clear requirements specifications, may be a good choice for overseas labor from a cost perspective. The issues listed above may still apply, but having a smaller project, along with clear requirements specifications will go a long way towards helping mitigate/lessen the impact of the those issues. Depending on your budget, it may be your only option.