Monday, June 14, 2010

Outsourcing

Since April of 2006, I have been dealing with outsourcing the development of a mobile software product to India, especially between 2007-2009. It seemed like such a great model at at the time I formed the team..identify a young team, provide them with detailed technical requirements, and get it developed at 1/3 the cost.... and you get the benefits of 24x7 work given the 12 hour time zone difference.

To the contrary, in my experience, its been a nightmare. In general, the attention to detail is just not as widely spread with companies in India. And more so, even though English is the spoken language, there could be a HUGE communication gap between what is said, and what is understood.

As far as the perception of saving a lot of money..well in reality, this is just "a perception". In fact, I'd argue that the productivity losses caused from outsourcing to India outweighs the savings in cost, and therefore over time, you end up spending more than if the product was developed locally.

All this said, outsourcing is here to stay, and my prediction is that it is just going to keep ramping up as more and more companies look for perceived cost cutting measures to compete in the emerging global competitive landscape.

Here are some tips to making your outsourcing efforts a successful experience, based on my experiences over the last few years. It will require you to think through these things from ground up, before you embark on this journey.

1) HIRE AN EXPERIENCE TEAM!!! This is primarily for management and project management. A nice to have (but not must have) is to have an experienced technical staff as well. You will end up paying more and saving less, but if you really want to outsource, hire a team that has experience

2) Make sure the management team that you hire has developed processes in place, ranging from the ability to quickly hire from a pool of resources, to having well defined software practices and methodologies in place.

3) Make sure you scan the environment before you choose on a firm. It should have lots of space, open windows, clean environment for working, and just an overall healthy atmosphere.

4) Ideally your lead engineer should be comfortable and be a factor in deciding on the team he should work with. His English should be strong and it would be preferred that he has worked with US clients (but not a must).

5) Ideally , the lead engineer should be able to be available and on call 24x7, in case of technical emergencies.

6) There should be a Project Manager on the team that is the main point of contact between the US and India. This Project manager should have had excellent experience in dealing with US firms and working abroad, preferably in the US. He will likely be allocating the technical staff on deliverables and work assignments and responsible for on time delivery dates. It would be nice if the project manager had computer science skills as well.

7) Ideally, it would be good if the entire team you hire has had experience working together in the past.

8) Have set times for conference calls with your Project Manager. Perhaps twice a week.

9) Communicate on a quarterly basis with your entire team and keep them in the loop with business goals, and recent successes.

10) Stay actively involved in the development process, and don't just an "outsider" or "management". Try to make sure you are enough in the know that you can handle most of the technical situations as a contingency.

12) Know all the team members by name, and try to have a good working relationship with each of them. Don't treat them the development team as "resources" but as "people". Make sure they feel they are part of the entire organization. Reward them and take them out for something fun whenever you are in town.

In summary, if you do have to outsource, it will go well to hire experience. Now the issue comes down to cost. In general, better experience will lead to more costs and less overall savings for your company, and I am a strong believer that you get what you pay for! The only paradox is that the main point of outsourcing is destroyed if you can't save money. So if you really don't have the money to hire a well regarded tier 1 or tier 2 firm (e.g Infosys, Sathayam, Tata, Virtuosa), then its best you move to India for 6 months, and build your team from scratch directly. The difference between hiring a team directly captive to you vs hiring a company that will set up a development team for you, is that you will likely need someone from the US eventually living there in charge of the whole organization. If you do end up going with this direct model, you will likely save about 2/3 of what you would have spent had you hired a company to set up a team for you.

Good luck!

-RO




2 Comments:

At 3:06 PM, Anonymous Anonymous said...

Good points, and seldom said, and I bet many know from firsthand experience, but they don't mention it. In my 2000 startup we outsourced and saw all the pitfalls. My engineering group pondered over the waste of time to outline every last iota so that it could be sent over as to what to do. We'd have been done in the time it took to outline everything. Finally when the President whined about "we need to give them more work or they might go under", the CEO answered, "we're not in business to keep them in business." It's about resource allocation, not about knee-jerk reaction to just send work over.

 
At 8:36 PM, Anonymous Rohita Shanker said...

Nicely done, Raj. I think you hit on all the key points, with #1 and #2 being paramount. In fact, a lot of this is applicable to assembling a team even in a non-outsourcing scneario.

Its really tough to communicate successfully (effectively) across both cultural and geographical barriers, so for a non-Indian business in the US, I think it is also important to be aware of the differences and familiarize themselves with the social and cultural landscape or framework of the environment they are trying to do business in.

 

Post a Comment

<< Home