Original URL: http://www.theregister.co.uk/2006/01/05/outsourcing_offshore_development/

The outsourcing commandments

Development outsourcing: tips, tricks and pitfalls

By Geoffrey McCaleb

Posted in Developer, 5th January 2006 11:53 GMT

Comment Sure it’s all the rage, but is the outsourcing of web and software application development all that it’s cracked up to be?

Outsourcing is a subject of wonder, disdain, and even ignorance. I have a fairly unique position in that I have been a promoter of technology/development outsourcing for more than eight years. Back during the rising internet bubble, I felt it was highway robbery that a developer or designer could charge $100, $200, or even $500 an hour for something that used to be done for an average wage. At the time I was living in the Czech Republic, and you could have had a Cisco CCNA engineer for a laughable rate.

While enterprise-sized companies were not eager to jump on the bandwagon on a one-on-one basis, they did start turning to companies for unique projects, and eventually whole development streams. A company, even one on the other side of the world, has SLAs to be accounted for, people to phone and fax, and crucially, can be sued.

Outsourcing, though, is not the panacea for cutting costs that people would have you believe. Thanks to overzealous CTOs and CIOs, development teams around the globe are being shuttered at a rapid rate. Entire divisions of development and support staff are being handed their pink slips AND being told to train their replacements. Are people paying too much attention to the bottom line?

Back during the bubble, consultants and salesmen used to use the old FUD technique to sell their software and kit. And it worked, just look at Sun and Cisco, and to a certain degree the vast amount of unused or dark fiber in the US.

Now is no different. Outsourcing has a very clear business proposition: dramatically lower your production costs and ramp up whole teams (and vice versa) at the drop of a hat. For the amount of money you pay, hell, do three projects/versions in one fell swoop.

It almost sounds too good to be true. Which, of course, means it is.

Yes, it is very nice that you are now paying $14 an hour for a Java developer. But what other costs are you incurring that you may not be able to quantify?

Here are my tips and tricks for ensuring your offshore project goes smoothly.

  1. Outsourcing doesn’t mean your projects magically get delivered on time. Any pitfalls that come with your particular territory will only increase with outsourcing. An example of this is cutting-edge Java development. Remember all that testing time you needed last time? Well, double it.
  2. Always, always, always factor in the time zone of your offshore partner. Not only must they communicate with you 20 time zones ahead of them, but also any third-party hardware or software vendor as well. Before you realise it, minor problems could take days to resolve simply because of the time differences.
  3. K.I.S.S. (keep it simple, stupid) - still the best way. This is by no means an insult to offshore vendors, but people often forget that English is not the world’s first language. Forget the flowery language and hyperbole, just stick to the facts. And do not let anyone from marketing in on the email chain.
  4. Skype Me! Personally, phone lines in India and Russia still have a long way to go. VOIP can really improve meeting interaction simply from the line quality.
  5. Remember, there are very, very clear cultural differences between you and your offshore vendor. And no, it does not make you or anyone racist to bring that sort of thing up. I once managed a project team in Beijing, and I had no idea, for weeks, that things were going terribly. Why? Because the Chinese find it rude to say no and don’t like disappointing you.
  6. Do you have a shit-hot project manager on your side? Do they? If not, forget it. Like in every other facet of business, solid communication is the key to success. Project transparency is key to this. You must have a partner that is willing to include you, warts and all, in all the project’s gory details. If you don’t want to be involved, then you should just quit now. Remember, to err is human, but to be ignorant is fatal.
  7. The quality of developers is improving all the time. But remember the old Dennis Miller quote: “All-you-can-eat shit is still shit.” Do not be afraid to request CVs from the developers who work on your projects. It's your money, after all.
  8. Do NOT be surprised if testing takes longer, and the actual days to deliver a project are more than it would have been had you delivered the project locally. Some people have the mistaken impression that a 100-day project onshore, translates into a 100-day project offshore. Your local teams understand you, your business, and your requirements. A team half the world away will take longer to get the same level of cohesion (if at all).
  9. Document like you are being the most anally retentive writer you’ve ever known. And once you're done, then document some more. Use screen shots, use cases and succinct and clear steps for everything.
  10. Connect early and often. Why not fly out for the kick-off meeting? Explain your business, your project, the pain points that drives this project. Demand demos, lots of them (or at least screenshots). In short, get involved.

Don’t get me wrong, I'm a personal and professional proponent of outsourcing/offshoring. But running technology projects is hard enough without separating yourself from your team by 1,000s of miles. The pain comes from incorrect or unrealistic expectations from the customers, which can be compounded by an uncommunicative vendor.

At the end of the day, offshoring works and works well when both parties strive to work like they are part of the same team.®

Geoffrey McCaleb writes content management systems for a living. His blog lives here.