So, if quality can be lower in enterprise in-house software, then that allows for lower-quality resources from Indian outsourcing firms to maintain it. Remember that good is good enough and it doesn’t make sense for architects to expend such energy churning on better ways of developing higher quality working software.
Indian outsourcing has caused many to lower their standards and therefore the opportunity to abuse is rampant. Methodologies such as extreme programming encourage merciless refactoring while Indian outsourcing has taught us that refactoring is nothing but overhead as you have to write comprehensive documentation in order to get working software. Sometimes the effort but into documentation makes refactoring a non-starter.
McGovern’s recent posts have been pretty cynical about Indian outsourcing and I suppose it has some roots in his actual experiences. So I am not going to quibble and say he is wrong, because he will be obviously right with what he has experienced personally. That being said, I think he has a limited view of why many companies outsource outside the United States, including to Eastern Europe, India and East Asia.
What I am writing below is based on meetings and conversations with CEOs, VPs and other executives in charge of outsourcing decisions. Obviously, you cannot take any one person’s word at face value, but when you hear the same reasons cited by multiple people, you start seeing trends. Let me start with saying that cost is a major factor, but not for the common reasons you would think. No executive talks of costs in the context of replacing existing costly resources with new inexpensive resources. Instead, the typical reasons cited are as follows:
- There is an unfulfilled project need, but the existing software development team is busy with tasks. How do we increase the development team without incurring too much additional cost?
- The existing team is busy with maintenance tasks. How do we get them to work on new tasks and move the current maintenance work to someone else without incurring too much cost?
- We have a project that is low on our priorities, but would be very helpful to get done. If we can get it done at a lower cost, it could go up the priority list and approved faster.
- We are uncertain about our revenue stream and do not want to add long-term obligations on our payroll.
- We want someone who has done this kind of work before and can therefore do this at a lower overall cost. (In many cases, the existing development team does not have any experience in the new work that is being proposed to be outsourced.)
Cost is an important (if not the most important) factor because it is the easiest and most unambiguous one to measure. The compensation of most executives is determined by how much money they could make or how much they could save. But to assume that they are only obsessed with the bottom line figure is wrong. If that were the case, every action could be taken by only considering the short-term cost analysis, where you don’t want to introduce any new costs.
But as you can see, in the above cases, although the executives are trying to save money, overall they are increasing costs. They are not shutting down the existing development team. They are augmenting the team with new members for the purpose of performing projects that add to the company’s value. This adds more costs, so what the executives are doing is not so much as reducing costs, but reducing the rate of growth of expenses.
They could do this in a variety of ways, of course: Hire permanent workers, hire consultants, hire interns, buy off-the-shelf products, outsource to a local firm, outsource to a firm somewhere in the United States, outsource to someone outside the country, automate. And each has its pros and cons. The cost of the project is affected by risks of each approach and this includes quality too, because poor quality increases maintenance costs too.
There are two arguments that cannot simultaneously exist, which is that foreign programmers are both inexpensive and of poor quality. If an inexpensive foreign programmer produces code of really poor quality, the rational thing to do for a cost-conscious executive would be to use only domestic programmers. There would be no point in outsourcing if a programmer in an outsourcing country is more expensive than one in the United States because their poor quality cancels the benefit of their lower per-hour costs. One could argue that maybe some executive are dumb, but that does not account for the tens of thousands of jobs that have been outsourced.
The assumption that Indian outsourcing is associated with low quality may be satisfying to some United States programmers, but it is a dangerous assumption for several reasons.
- Even assuming that Indians are bad programmers and executives only outsource based on per-hour cost, there are plenty of inexpensive outsourcing destinations for software development. Eastern Europe is particularly strong in software outsourcing and they have very competitive rates combined with excellent developers coming out of first-class universities.
- It is difficult to envision sustained low quality from any outsourced-to country. It will improve quality through greater exposure and experience, or die a quick death. Unless you think that any country is culturally indisposed to quality, which I find hard to digest. They used to say that about the Japanese in the ‘50s. Look what happened.
- If outsourcing is ever banned, employers and executives will look to control costs through other means. If a company is not growing fast enough to exceed its costs, it will bleed people and go out of business. In any eventuality, people will lose jobs. Outsourcing is a good scapegoat, but it is only the symptom of a larger concern within the company.
I call it dangerous because it doesn’t help the displaced American programmer from understanding the high-level economic trend that is causing the job loss. Both national parties in the United States (and most parties in the Western world) are non-protectionist. They favor free markets and open trade. This means a much more competitive market for all companies. Blaming any one element that causes job losses in a particular sector is missing the bigger picture.
For instance, as Nick Carr wrote in “The Big Switch”, a trend that will cause the loss of many IT jobs is the rise of cloud computing. It will mean the end of many system and database administration jobs, as small and large companies move their data and processing to the servers of Amazon, Google and Microsoft. Is it worthwhile to complain that cloud computing may perhaps have less performance than a finely-tuned Oracle machine on a Solaris box? It may be satisfying to think you (as a sysadmin) have been replaced by an inferior solution, but that satisfaction is all you get.
What is the answer for the American programmer? If you cannot lower one’s wages, you has to provide greater value. Quality is greater value, but that may not be enough to justify those higher salaries. Corporations (and smaller companies) with access to the entire globe may not agree to the monetary value you place on your existing skills and quality. So the right answer is what new portfolio of skills will appeal better to employers and executives?
Better code quality is not enough. If you improve it, there is no guarantee that the Eastern Europeans and Filipinos will not equal you tomorrow because they are learnable skills. But the American programmer will always have the strength in understanding American businesses, rules, customs and traditions. They can be better analysts and managers. Although the Internet has dulled this advantage, Americans can take greater advantage of the wealth of experience in Silicon Valley and other technology hotspots as well as the many first-class universities in the US to become better architects and designers in emerging technologies. Finally, they can embrace globalization to obtain greater value through mixing and matching development resources from across the world.