For many years, there has been a trend in all industries to look to outsourcing as a method to “reduce costs” and “improve efficiencies.” In the software industry, this has given rise to large numbers of firms in countries where the cost of labor is low; India, Eastern block countries, Malaysia, etc. This is a popular topic in management and business books. But does it really work? Does it let a company produce better software for less? I think not. And I think it fails on several fronts.
Team building – Producing quality software requires a strong team. What makes a strong team? The question that is usually asked, is whether a team has “jelled.” To me this means are they all thinking on the same wavelength. Does the team communicate outside of the traditional methods of email, specifications, designs, memos, meetings. Do they get together for a beer or dinner after work to socialize, but end up hashing out that tricky algorithm? The thing you may see here is that all of this requires physical proximity. It is very hard to create this jelled team when you are in 4 time zones spread across the globe. As an example, I had a conference cal yesterday with all of the software managers in Swisslog; in order to make it work, I had to wake up at 5am and the guys in Australia were up at 10pm.
“But wait!” you say, “what about all of those open source projects that have people all over the globe? They can do it! Why can’t you?” Simply put, they are different. If you look at most open source projects, you will find while a large number of people may have contributed, there are usually a very small group of core contributers who do most of the work. They receive patches and suggestions from the group but do the critical work themselves. The other huge difference is that open source projects don’t have to be cost effective, everyone is working for free.
Costs – Cost is the bean counter argument for outsourcing. Why pay $120/hour for a programmer in the US when you can get 4 programmers in India for $30/hour? On the surface it seems like you an get far more work done for less money. But in reality can you? I don’t think so. From my experiences, you end up spending far more money with offshoring. The cost of the off-shored programmers is cheaper, but you end up spending more money on on-shore activities. In order to have a successful offshore, you need rock solid requirements, specifications, and designs. You also need far stronger project management. This all takes time.
Communication – So now you have a bunch of code from your offshore team, now what? You need to test it, which will inevitably find bugs. If you are in the US and working with a team in India, you generally communicate via email. I have heard the argument that since they are nearly 12 hours off that they can be productive while you sleep. That sounds good, but in reality what it means is that every email “transaction” now takes 24 hours to complete.
Obviously I am not a fan of this method of development. Can it work? I’m sure it is possible for large projects where the entire project takes place in another country, but then you are not really offshoring, you are just onshoring it in another country. I have seen multiple companies I have worked at try to make this work, and I don’t believe it can in the small/medium sized tech companies.
What do you think, am I right?