Versus Outsourcing – Part I
by Paolo on Apr.26, 2009, under Meanderings, News

Ganesha's Arms help him code faster than you.
Ryan Henson Creighton of Untold Entertainment posted an article on freelancers versus outsourcing to India. He had this awesome picture and caption of Ganesha that I had to duplicate it on my blog. The gist of his article was lamenting how a team of outsourced programmers can create tons of “top-notch” websites for pennies on the dollar compared to their western (read: expensive) counterparts.
My hope is to dissect this fear one piece at a time in a series of articles and reasons why not every computer job or freelancing gig will suddenly find itself in India.
Firstly: Computer Programming is NOT based on the factory model.
A lot of software engineering practices and models of operation seem to base themselves on the theory that computer programming is like a factory model that can be scaled with more labor. This is a horrible analogy, but this meme is unfortunately repeated by many management teams across the software engineering landscape.
Probably one of the best and most accurate analogies of software programming comes from “The Mythical Man-Month.” Programming is more like a “surgery” table than it is a factory. Most complex systems act like a body with all its moving parts working as a whole. And because a program works as a whole with all its moving parts, there is only a limited number of things people can be working on at a time – much like having too many surgeons working on the same person on the operating table.
This is the first place that you find that you cannot simply purchase more people and solve a complex problem quickly. In fact, having too many people may slow down the process rather than speed things up.
Secondly: You can’t outsource talent.
Now taking the surgery analogy further… Would you outsource your heart surgery to someplace cheaper? Does a cheaper doctor mean you will have a better surgery? People will not buy things simply because they are cheap. Depending on how much they value of the end product, people will still pay top-dollar for a good result. “You get what you pay for,” is very true in this field, and I have heard a few stories from freelancers who have had to clean up or redo messes made by outsourcing. The fact of the matter is that people will pay for talent.

Dr. Evil
The reverse is also true in that talented people will not price themselves cheaply. Why would a highly-skilled and talented person in India not charge equal to or just under their more expensive counterparts in the West and live like a king with a lower cost-of-living? A person of a certain skill level will not undervalue themselves in the market. To quote Dr. Evil, “Why settle for millions when you can make billions?”
So unless you are developing a computer program that easily fits under the mold of “easily replicatable” like some sort of template that you can replicate a million times over, I don’t see outsourcing as necessarily the best choice.
And if anything… GAME PROGRAMMING does not fit this category.
April 27th, 2009 on 7:55 am
Reminds me of what you said in The Difference. Are we outsourcing “programmer” jobs to “those who program”?
May 1st, 2009 on 9:48 am
I like your line of thinking here. I’m going to have to say that I don’t completely agree that someone in India will charge as much as their Western counterparts. They have a lower cost of living; therefore, they don’t need to charge as much to make it big in India. I do work for a company in a larger city (read: high cost of living). What makes me competitive with local contractors is that I have a lower cost of living and can charge less than those in the big cities.
At any rate, there are a couple of problems with that line of thinking [outsourcing] coming from management. First, as you said, is that you can’t outsource talent. On a deeper level though, how do you identify talent?
A manager who has never truly been part of the development community will not have the skills necessary to pick out talent even if it just walked in for an interview. It appears that the larger problem is not even the outsourcing of labor to India, but rather the priorities, goals, directions, and experience of management making those decisions. The wrong people appear to be in charge of the wrong places. To lead a development team to success, you need a tech-savvy manager to some degree, not someone that has no experience developing at all. In fact, the common wisdom is that even those promoted to manager should set aside a small amount of time to work on code just so that they can stay in touch with a briskly moving industry.
I see that you’ve read Mythical Man-Month. Now I’m going to have to suggest that you pick up a new one called- Managing Humans: Biting and Humorous Tales of a Software Engineering Manager.
It is rather insightful and talks about the challenges of being a development manager with some great suggestions as to how you (as a development manager) should be viewing your team. It is a great read for anyone in a development team, regardless of your position.
May 1st, 2009 on 10:49 am
Hey Brian,
Good to hear from you again. Well, in the case of pricing, you price yourself lower than someone in a bigger city. But it isn’t like you were pricing yourself way under market value – just competitively under.
So assuming that it costs $50/hr for freelancing here in the US, why wouldn’t someone in India price themselves at $25/hr or even $10/hr rather than at $0.10 an hour like the author is supposing in the article I cited? The author is talking about dropping the price way below market value which drops the floor.
As far as management structure is concerned, I think that the Mythical Man-Month proposes the surgical model as the way of doing business. The surgeon (lead programmer) is the head while the administrator (manager) is actually an assistant and facilitator to what the surgeon (lead programmer) needs to accomplish his goals. What we call “management” which does project planning and logistics, should serve as an assisting role to the technician. The problem is that we have the administrators at the top while the skilled technicians are the “grunts.”
Now how to identify talent? I think the first step is identifying if the person is just “someone who happens to program” and a true “programmer.” I think you were one of the first people who started giving me that insight into what constitutes talent.