& the Fall of Software Development, Part 1
I consider myself
politically. In the last three Presidential elections, I
voted for the Republican twice and the Democrat once. In
case, I thought that the candidate for whom I voted (irrespective of
party) would continue policies I thought would be best for this
country. Sadly, I have been disappointed by these, and in
fact every President since Ronald Reagan.
I point all this out
because I am about to talk about a politically volatile subject, namely
the practice of outsourcing American jobs overseas. Many
writers on this topic employ a "trojan horse" approach: essentially
pretending to come from some "objective" or "unbiased" position (as if
there could be such a thing), and then espouse a particular
ideology. I'm not going to insult your intelligence that
way. (I might insult it in other ways, but at least it won't
be in THAT way.) I'm letting you know up front, I come from a
conservative point of view, but not one that is the "orthodox" party
These "trojan horse"
political authors will stitch together a compelling weave of
argumentation, highlighting propositions supporting their "eventual"
conclusions, avoiding any mention of arguments which might undermine
it. For such authors, I just skip to the end to see the
conclusion first, and then go back to read how they supposedly got
there. That way, the "trojan horse" is gone.
So as to be fair, I'm
going to save you a little time and give you my conclusion
upfront. The point of these next two columns is this: the
current trend of businesses outsourcing their software development work
is harmful to both the industry in particular, and America in
general. I know this is not
considered a typically conservative
position, but it is
mine, and I believe there are good reasons, even
conservative ones, to
warrant it. And being a conservative, I will not
be appealing to
arguments of class warfare, capitalist greed, the disenfranchised,
racism, poverty, Big Oil, the Iraq War, 9/11 conspiracies, or that
George W. Bush is evil. If you were hoping to read any of
that, you can move on to your next Google search.
Now with nothing up
my sleeve, I shall proceed
I'm going to assume
most of you reading this know what Outsourcing is. I'm also
going to assume that you understand the incentive that businesses have
for engaging in this. In a tough economy, businesses will look at
Outsourcing in much the same way (and please forgive me this analogy) a
horny man might look at a prostitute. The promise of the
short term gain might overshadow in his mind the long term
consequences. Better judgment often gives way to immediate
gratification. Sadly though, it is only after the fact that
one learns that the benefits were much less than one wanted to believe
... and that the repercussions are a lot more long lasting.
Before jumping into
how Outsourcing is affecting the software industry, I want to take a
quick diversion into Outsourcing in recent history. Really,
what we call Outsourcing has been with us a long time. It's
no secret that the cost of labor can be significantly cheaper
overseas. Even in the 70's when I was a kid, most of the
things I purchased did not get made in America. Electronics
and Hi-Tech items were typically marked "Made in Japan", and only the
real cheap stuff was "Made in China". I can't remember seeing
anything marked "Made in India". But we as Americans looked
at Japan as our technological competitor. It was Japan who
(it was said) was taking our jobs away. No one cared about
competing at the low end wage level. We were
Americans. We fought for the top, not the bottom.
Unskilled labor was not what Americans cared to compete with.
In the 80's, we began
to compete toe-to-toe with Japan, and Americans started to dominate a
new hi-tech arena with the Computer Revolution. The economy
of the 80's boomed. At that point, it was not only unskilled
labor, but low-skilled labor that soon became a casualty. By
the early 1990's, it was no longer Japan but rather Mexico which became
a major competitor. Basic assembly line jobs could be shipped
over the border and the Mexicans be paid for much less for the same
work. Although there was some grumbling, members of both
parties in Congress passed NAFTA,
a free trade agreement between Canada, the United States and
Mexico. But Americans on the whole believe in the free
market, and continued to prosper in the new economy. Like the
80's under the Republican Reagan, the 90's under the Democrat Clinton
was a time of prosperity.
It may come as a
disappointment to some of you reading this, that I supported NAFTA (and
still do now). The "loss" of unskilled and low-skilled jobs
was counter-balanced by higher tech and better paying jobs.
This can be seen by the fact that the average American wage (after
taking inflation into account) continued to rise during these two
decades. By the year 2000, the unemployment dipped below 4%
(the job transition rate), which essentially meant that the United
States was actually over-employed. There just weren't enough
people to do all the jobs! All this was after
NAFTA was passed.
However, we are
starting to see a less healthy trend. We are no longer
off-shoring only the low-skilled and unskilled labor jobs that we
Americans don't have time for. More and more, it's the
hi-tech jobs that are going overseas. In the spring of 2001,
the unemployment rate was at 4.3% (not as low as the previous two
years, but certainly respectable). But the jobless rate
hasn't been that low again since then. In the past 12 months,
it has oscillated between 9.4% and 10.1%. And how many of
these were lost to outsourcing? This is hard to say
accurately, as every American job directly lost to outsourcing, there
are certainly many more jobs lost due to the indirect ripples from
other businesses which work closely with them. For example,
contractors will have fewer jobs to choose from, but cannot be said to
have had a job "lost".
manufacture of automobiles, computer parts, etc., computer software has
no burdensome shipping charges associated with the outsourced
product. This makes software development appear to be a model
candidate for outsourcing. That, combined with the unbeatably
low bid quotes, make outsourcing of software a no-brainer.
The problem with
"no-brainer" decisions is that no brains were used to make them.
engineers I know have been in (or at least heard of) an experience of
how a software project went overseas, and the product came back in a
terrible state. For those who have not heard of such, I offer
a few interesting links:
Suffice it to say,
Outsourcing is not the money-saving salvation a lot of businesses had
hoped it would be.
The first problem
that usually associated with off-shored development software is its
dramatic drop in quality. Now why should this be the
case? It is certainly not due to some racist notion that
Asians are inferior programmers to Americans. It is something
much simpler than that: experience.
According to the
National Science Foundation average age of a software engineer in the
United States is just over 40. This means that most domestic
software developers have 15-20 years of experience in the industry,
learning proper coding conventions, practiced at debugging tough
problems, and understanding proper object oriented design.
Many such engineers are quite capable of developing under
different programming methodologies, from classical waterfall to more
agile ones such as Extreme Programming. This makes the
average domestic engineer a very experienced and mature
employee. On the other hand, most of the off-shored
developers have only recently learned these skills … very
recently. 54% of India is under the age of 25, and it is the
young people who are obtaining these new jobs. A 30 year old
is a relatively young programmer in the United States, but might be
managerial material overseas.
This is further
compounded by the separation of the inexperienced from the
experienced. In the United States, a typical 25 year old
programmer who experiences some difficulty, can walk down the hallway
to speak to an experienced 45-50 year old engineer. Junior
programmers evolve into senior ones with the help of a corporate
culture of internship and the promise of advancement within the
company. Overseas however, the 25 year old junior programmer
usually has no such option. In fact, it is to his peril to
seek help, as this tips off his competitors within the company that he
is weak in a particular area. Moreover, most overseas
development houses are hired contractually, as so as contractors need
to appear to be extremely competent, so as to win the contract.
Budget & Schedule
Another big problem
in Outsourcing is budget overrun. You know the old saying "It
is easier to get forgiveness than permission"? Well, this is
the creed of every contractor (whether domestic or
international). To win a bid in the past, an American
contractor often "lowballed" his estimates. These contractors
would typically be competing against the same people in town, and their
estimates (even if lowballed) were not terribly far apart.
Today, a contract house in Asia is competing with literally hundreds of
others across India, China, the Philippines and elsewhere. It
used to be that the contract manager could accurately determine if a
given contract bid was unrealistic. However, American
managers have little to no idea how accurate the bids are from an Asian
contractor. The numbers seem so amazingly low, it is easy to
be seduced into believing them.
Another issue is
schedule delays. Much of this has to do with the timezone
differences. When your contractors are in a timezone which is
10-15 hours apart, questions which might be answered in an hour
domestically, may have to wait until the next day. Changes
and clarifications which could be simply handed to a domestic engineer,
may need contract renegotiations, which delay things further.
compounded when the software being developed has to interface with a
piece of hardware. The expense and delay of shipping
internationally makes it very difficult to keep the contractors up to
speed with changes in hardware. And problems which might
arise, can no longer be resolved by a firmware engineer taking the
escalator down to work with a software engineer. Everything
must be done remotely. What used to be solved by two
engineers talking over lunch, must now involve email exchanges over
night, or late night conference calls.
Finally, an internal
employee of the company is one you know and have reasonable
expectations of his abilities. More to the point, you can
expect that he will still be there the next day and will not disappear
from you without a two-week notice. Overseas contract houses
typically manage their own internal resources. The
contractor, which worked on a particular part of the subprogram last
month, may not be the one working on it this month. It is
also not unusual that an experienced engineer from overseas gets the
ball rolling on one contract, and then passes the balance of the work
to his team of junior programmers, whilst he himself move on to try to
help win the next bid.
Up Next Month:
continue our discussion of Outsourcing, Part II!
list of all the According to Hoyle columns, visit: http://www.jonhoyle.com/maccompanion