Skip to main content
Spurious Logic

So you want to outsource?

Government House Calcutta It's finally happened, your business needs have outstripped your technical resources and you're not able to hire in staff locally. Someone, in a meeting somewhere mentions they "have a contact in India/China etc.." and suddenly you're committed to ramping up development team in some offsite location...

Here's what I've learned about how this will go, with some suggestions on how to do it better. My experience was with India but it could equally be Europe, Asia or America. Most of this advice applies across the board.

1) Do you really need to?

First off, you need to look at the actual business need. Is this in-depth work which requires experienced developers or is it shovel work? If it is actually shovel work, then yes, go and outsource. But if it's anything above "change these colours" or "edit this css" then you're going to have a learning curve as new developers figure out your pristine system. This is going to happen in-house or abroad but at least if it's in-house you can be sure the new team members are going to learn it more quickly.

You may be better off hiring some local graduates, take the 3 months or so to train them up and then at least after 3 months you've got some good junior developers. After all if you're trying to run a dev team, you're going to need new developers in order to replace inevitable attrition.

2) Are you going to contract an outsourcing firm or rolling your own?

This is actually slightly trickier than it looks. If you go to an separate firm, you'll meet PhD level programmers who can do absolutely amazing things with code. You'll be promised that they'll be devoted to your project and that all best practices will be followed, code reviews, unit testing, style guides... And that all deadlines will be met.

In reality, the chances of these superstars actually working on your project depend solely on how busy the firm is overall. The code will arrive on time and it will fulfill any specifications to the dot. It is totally hit and miss whether the code will be good enough internally or whether it does what it's meant to (as opposed to what it says in the spec).

On the other hand if you're forming your own team, it's actually surprisingly tough to get good developers. In India at least the large multinationals take literally every graduate straight out of college and then over a year or two drop the ones that aren't good enough (the one's that are good enough get shipped off to America on H1B visas and work there on Indian wages until the get green cards). So when you're a small company hiring in India, you'll be faced with literally hundreds of 2-3 year experienced developers with good degrees who cannot write a for loop. This is without even touching on communication issues.

Assuming you luck out and get some good devs (and they are out there) you then need to get them trained up...

3) Who is going to manage them?

Unless you're very, very lucky you're going to have to do a lot of hand holding for the first 9-12 months. So, you're going to have to either organise regular training or assign someone full time to bring these guys up to speed. Again, this is not unique to outsourcing, it's just harder to do because of time difference, travel distance and language concerns.

In addition to training them to the system you'll also need a full time manager dedicated to keeping an eye on the team. Again, you may get lucky, but in general developers need to be kept under pressure to keep them productive.

In summary I would say that outsourcing works if you have a short term need for uncomplicated work which does not require in-depth knowledge of the system or you are in a position to sink at least a year's worth of costs and resources into a new team with no expectation of results during that year. If it's the first then you are best off using a separate outsourcing firm and providing very clear specifications and deliverable requirements. If it's the latter, then you have to jump in with both feet. If you just dip your toe in, you will fail!

If it's team expansion you need, then you need to commit senior personnel to your new team wherever it's located. And if you're not willing or able to lose a senior developer for up to a year then you are much, much better off hiring junior developers locally and training them up in-house. In general, teams need to grow organically, you can't just bolt on a new office full of developers and expect everything to work smootly.

So yeah, there's a rambling, semi rant, semi diatribe on my experience on out sourcing