Outsourcing is for Dummies
Let’s get one thing out of the way fast: There is no possible way to build and ship quality software on a tight schedule by outsourcing the development, period. If you are in the business of software, then be in the business of software and suck it up and build a team that can write the code. Outsourcing your primary application development is the equivalent of outsourcing the defense of a country. Here’s the primary thing you are admitting when you outsource:
By outsourcing the development of your software, your company is admitting that another company is better than you are at creating the very product that you want to create. You’re also admitting that they can do it cheaper and they can do it better than you can while still making a profit selling it back to you.
If that’s true, then why are you in the business of building software? You should be selling dogfood or cat litter. If you are in the business of selling dogfood or cat litter, then great, continue outsourcing. But even Amazon.com, a company that by any measure is in the ”retail” business, builds their own technology and they consider it one of their primary business advantages. If Amazon.com considers it a major advantage to build their own technology and doesn’t outsource its development, then why would you even consider it?
Outsourcing breaks some of the primary laws of building great products. To build a great product, you must have a great team. Notice I didn’t say “you should” or “it would be nice to” have a great team, but rather you must have a great team. A team is inclusive of the designers and developers and testers and trainers and support personnel! If you think that the designers can throw the design over the wall and have the developers give them back a great product, you’re sadly living in a dream world. Although the threshold of importance is substantially reduced with each of the latter items (such as testing, training and support), the quality of those items are also substantially reduced when those items are outsourced.
Lets take a closer look at the most common area of outsourcing: support. Of all the parts of software development, support is by far the easiest to outsource. It requires the least amount of technical knowledge and support managers will often tell you it’s all about “respecting the customer” and “having patience.” So if you can find people in India or Romania who can provide respect and patience to your customers at less than 1/3 the price, theoretically, you should be golden. But anybody who has spoken to a support rep recently from Microsoft, Dell, HP or any other larger tech company who is supposedly saving money by outsourcing support knows from experience that no matter how much “respect” these customer service reps provide, you end the conversation more frustrated than the start, swearing into the air and vowing to never buy from that company again. Of course you end up going ahead and buying from them again because you have no choice, but this time you know, with a heavy heart, that your purchase price doesn’t really include the promised support. Ironically, from the perspective of these companies, their outsourcing strategies save millions of dollars and not just because of the lower cost of labor. The fact that you are less likely to make a 2nd call into an outsourced support center provides an even bigger savings. So here’s what happens when a large company outsources support:
- Initial costs are substantially reduced due to lower labor costs.
- Call volume is reduced (due to frustrated users who give up calling) implying that the new call center is doing a fantastic job or the overall support strategy is working great, reinforcing the behavior that outsourcing was the right thing to do.
- Surveys will reveal nothing because A) nobody fills out 20 minute surveys and B) those who do are almost always complaining, so the percentage of complaints does not appear to be any higher than when the support was in-house.
- It does not appear that outsourcing support has had any impact on sales. This is, of course, is only a temporary effect as customers often don’t have a choice, but as soon as they do have a choice, it’s over!
So, the outsourcing strategy may initially seem like a success, even while it’s failing miserably. If you can outsource support, then why not documentation or testing? Eventually, why not development? Nobody dares outsource Design. At least not yet. But the metrics are flawed and those who rely solely on metrics for the operation of their business shouldn’t be in business. They’ll get what’s coming to them.
Note that I’m not picking on India or Romania. It would be equally stupid for an Indian company to outsource its software development or support to a US company if labor costs were reversed. I’m also not against outsourcing from the standpoint of “keeping jobs in America.” That’s about the worst possible reason not to outsource. It disrespects humanity and implies that an American’s life is somehow worth more than a non-American. Outsourcing simply doesn’t make good business sense. At least not for a company that wants to be great.
The Optimum Team
At Axosoft, we often move people around, even as little as 20 feet, just to be closer to somebody that they expect to work with on a project. It’s amazing how much productivity can be gained by being next to a person vs. 20 feet away. It encourages conversations and questions about design items, issues, features and things that would have been passed on if the people were simply 20 feet further apart. Having these conversations allows the teams to build a better more solid product in a shorter period of time with fewer defects. Increase the distance by 20 feet and you lower the overall productivity and product quality by some amount. Increase the distance to 20 miles and your productivity and product quality tanks. Increase that by to 10,000 miles and an equally large cultural gap — and you can imagine what will happen. There is a reason why companies like Microsoft, Google and Apple have built corporate “Campuses” that are focused in a single location. The close proximity of all the engineers to one another is a good thing. It creates a healthy feedback loop, which helps increase productivity and increase the overal quality of products and what’s possible. So the optimum team is one who’s physical proximity is as close as possible and its different functions such as design, development, testing and support are not outsourced.

Hamid, you really made me laugh with your quote about selling cat litter. Your post is on quite a controversial topic and surely you will find people very much disagreeing or agreeing with you. I personally agree. Joel Spolsky wrote a similar point where he mentioned that one should not outsource their core business. For example, Microsoft should not outsource building Excel. This had catastrophic results for IBM who un-strategically outsourced DOS to Microsoft (The rest is history). However, I have seen at my organization we have applied outsourcing to our QA process, and even though it took a year or more, the overseas QA team has an intimate understanding of our application and presumably the price we are paying them for 1 or 2 overseas QA staff is maybe 1/3rd of what a one QA professional would get in Canada, with the overhead of one QA manager here who overseas their operation. So my mind is not quite made up on the matter, it still remains to be determined what is the best strategy in regards to outsourcing.
Sameer Alibhai
December 5, 2007 at 6:17 am
It is just a matter of being capable to manage your outsourcing projects or not. What I mean is, it is simple to outsource your power generation to power companies, because all you do is make an agreement plug in and they start delivering. This does not mean that you are making a huge mistake by producing cars and using the electricity provided by someone else. Exactly the same works for for SW that runs within their PGS computers.
Of couurse you have to STRICTLY FOLLOW important outsourcing rules:
1) sign the contract stating that YOU totally own the product (source code as well as documentation) so there is no way it can be used either partially or in total by your SW development service provider you are quite on a good track.
2) Do not forget to keep the key knowledge (high level designers) within your company. High level design MUST clearly specify what you are paying for and (if you insist) also how do you want it done. If you fail to do so this will be a large problem.
3) You should always request the possibility to prolong the contract with your SW development service provider. I suggest that you do not pay the last cca. 30% of work if they decide not to prolong the contract for the period they promised to do so at least 3 months before it ends. This will give you money and time to easily find another SW development service provider (of course in case that you did not fail to fullfill point 2).
If IBM would follow these 3 rules they would not be in the position as they are today. As far as I understood HP outsourced it’s SW development to Slovenia, and you can find its HP Open View deployed all around the world. They just know how to manage it!
What if you start a new R&D project that would include 6 SW developers, 3 people in testing team and 2 people to write the documentation and your old experienced team is already fully utilized?
1st question that you run into is: “”What would my time to market be?”
2nd question that you run into if “what will I do with these people after we conclude this project and we do not have new projects for them”?
These are major two problems that companies that do not use external SW development service providers run into.
SW development engineers, project managers, test teams, good documentation writers are almost impossible to find on the HR market. Smart SW development service provider invests in “growing” these experts for long periods of time.
SW development service providers also HAVE to take care that they resources are utilized enough to be competitive on the markets.
These two important issues are the reason why you get more experienced TEAM for less money. That is the trick. This is why this business is still on the marker as is not going away.
What most of the managers tend to forget is to ask them selves “Do I have some people in my company that my business would stop if they would be hired by another company or run-over by a car”. This is because he is not pa part of the system. In a business system HR is replaceable. Having someone that is not replaceable says to me that your internal processes are not transparent and setup as they should be.
What I want to say is that if you have SW project managers of your own who says that his project is impossible to outsource you should think why is he saying so. Either
1. he really has some good reasons (like in case that you have your business in Hungary, “no one speaks Hungarian, and we would spend millions in translating our Hungarian documentation to English and back”, or “we cannot export these expensive highly sensitive equipment that cannot be accessed/programmed through the internet”) or
2. he is not trained/capable of managing a team remotely, he does not have all the necessary documents or he is not ready to, his team is hiding things from himself so he is hiding them from you.
I would be happy to continue this discussion.
wkr
Igor
Igor
December 7, 2007 at 6:28 am
I thought about writting a long winded response, but why.
You’re just plain wrong. and wrong.
Bob
December 18, 2007 at 11:41 am
Hamid,
I agree with you 1000%, but you forgot a couple of other reasons not to outsource. The most important reason being the true cost of outsourcing, especially off shore. Since you have to consider the language and cultural differences, you have to spend more time on spelling out the requirements and design, and explaining them in more detail – thus increasing the cost of requirements and design. Igor implies in his post that you have to manage you’re projects better. I don’t believe you have to be “better” at it, just be a lot more active with it – thus raising the cost of your project management. Then, once the product is delivered to you for testing, there will be rework and retesting, and usually lots of it – more cost. So, with the added costs in requirements definition, design, project management, rework, and testing, are your really saving that much money? I think not. From personal experience in several gigs dealing with outsourcing, the cost is usually higher, not lower, plus as you mentioned, the quality of the product will not be as good as if you did it yourself. I have personally had to fix a lot of problems dealing with outsourced work.
Regarding your statement on outsourced support, I agree with you, there are some companies you will have to go back to because you don’t have a choice, such as Microsoft. But there are a lot of companies you don’t have to go back to – especially software companies. Yes, you are pretty much stuck when it comes to operating systems, unless you go to Mac or Linux, but when it comes to almost any other software, you are not stuck with the norm. For example, I use Firefox, not IE, because it is better and safer. I also changed banks due to the outsourced lack of customer support I received.
Well that is my 2 cents worth. Enjoy.
Allen
Allen
December 18, 2007 at 12:15 pm
You said “I’m also not against outsourcing from the standpoint of “keeping jobs in America.” That’s about the worst possible reason not to outsource. It disrespects humanity and implies that an American’s life is somehow worth more than a non-American.”
Wow. That last glib statement is quite an implausible stretch, and a feeble attempt to employ an offensive strawman in your argument. Do you understand the purpose of national governments? Each government’s first job is to protect its citizens. And you have blithely dismissed the loss of hundreds of thousands of American software engineers that the United States has suffered in the past decade. And it happened simply because our own broken government failed to rein in corporate greed.
Dwight Spencer, Ph.D.
December 18, 2007 at 12:55 pm
I personally believe that the suggestion that “Outsourcing is for Dummies” is altogether too simplistic and dogmatic.
Some companies may be extremely good at marketing and identifying business opportunity in a particular domain while other companies may excel in executing quality software development projects.
In a free-market economy, why would two organizations with these characteristics not engage each other’s services to mutual gain?
Admitting that another company has capabilities and valuable services to offer is not a sin. Some people might call it humility and yet others might call it wisdom when mutual gain is the result of partnership or exchange of services.
Recently I had a discussion with some professionals who were acquainted with a “we’re better” company. That company’s products were stagnating and suffering because the employees “knew” they had a company that was better than any other. The employees became resistant to acknowledging and benefitting from the value and skills of others around them.
I might want to think through the analogy a bit more, but at this moment of writing I’m reminded that Boeing airplanes are powered by jet engines built by such as Rolls Royce and Pratt & Whitney. Is Boeing’s greatness somehow tarnished by this decision?
Tom
December 18, 2007 at 8:21 pm
I just found this blog, a bit late, but I still want to react on this topic.
First I think you arguments are not correct.
You say outsourcing is bad, and then you prove it by taking one example (outsourcing support) as your proof. This just proves that outsourcing support has been bad in many cases! It doesn’t say anything about outsourcing in general.
Now from my personal experience, an example where outsourcing was good.
I worked for a company that produces television sets. Now you may know that TV’s are changing rapidly. From just displaying analogue images to a real digital hub, with USB, Firewire, network, digital video and audio processing.
For us, making a USB stack or network stack is not core television business.
We had no experience in this, no knowledge and not the right tools.
Would it be best to try to do this ourselves or leave it up to another company that has proven experience (and already working code!) in making USB stacks?
I think it’s clear what was the best decision.
Also on the subject of outsourcing testing: USB is a standard, but apparently it is not followed that strictly. You really have to test with a lot of devices to get it right. Again, do you want to buy all those devices for one test yourself or do you want to leave that to a specialized company?
Even when software is your core business, not all your software has to be.
ChrisVB
January 10, 2008 at 2:05 am
Ironic that you are somehow managing to convince people in the business of writing software that they should in fact outsource some of the development. If they didn’t, we’d all be writing our own bug tracking software :). I only read the first paragraph though, so I can’t wait to read the rest…
Russ McClelland
January 29, 2008 at 9:52 am
I agree with ChrisVB’s comments, and wanted to comment on one more thing.
It seems that a great many people automatically equate “outsourcing” with “off-shoring.” Collectively we seem to have virtually forgotten about service businesses located in our own locale.
We do have personal experience with this model: maybe we’ve had an attorney with his or her own practice, an architect, or an MD who’s part of a local private practice. Professionals who are local to us and who can contribute through service-delivery ought to be pretty familiar to most of us.
Now can this be of use to a software development organization?
Suppose this: managers are under pressure to avoid creating permanent positions to meet shorter-term needs. Some also perceive that there is too much risk in sending some work overseas where laws and law-enforcement may provide inadequate protection, or perhaps where communication issus could cause expensive difficulties.
Wouldn’t it be powerful to have additional hands, with additional creative energy, who also happen to be domestic and who have skills in communication and in readiliy understanding requirements and translating those into realized vision?
These are intangibles that (imo) can and do make a huge difference in sucessful and productive projects, which local service providers are capable of offering. But when “outsourcing” is discussed, this model of engaging with local talent and creative teams doesn’t even come to the minds of some decision-makers.
“Why get great service and a talented team with good communication skills available domestically, when I can try to do a 2-for-1 play by going through the hassles of going to an unknown company on foreign soil with less-expensive labor and possibly lower standards of living?,” seems to be the question … i.e. the question that isn’t being asked.
Tom
February 14, 2008 at 10:22 pm
Another thing that gives Outsourcing Bad Points is the Sense of Ownership
No one has the sense of ownership of the product or the PRIDE, the willingness to improve.. to make it excel
As for judging outsourcing as being evil, i think it is not fair to say that
It may work sometimes under the right conditions.
lifegeeked
June 12, 2008 at 8:15 am
[...] Axosoft CEO claims that Outsourcing is for Dummies. I think this isn’t true in all cases, as I have been able to apply outsourcing successfully [...]
How to Waste Millions Of Dollars With Outsourcing (or Make Millions)
October 5, 2008 at 5:22 am