What CIOs Should Know About Outsourcing Enterprise Java
Your manager Frank
started the meeting by saying that the budget for the new project had
been approved, but half of the project will be outsourced to a great
team from overseas. Can you imagine, their rates for Java programmers
can go as low as $15 an hour!
No, we're not losing anyone from our team,
and you should take it as an opportunity to work as team leaders,
helping our new partners to hit the ground running. No, this wasn't my
decision; it came from above.
Three Months Later
Mary. I've asked them to add two fields to a JTable on the
Invoice screen. The data are being retrieved from our database so
they'd need to modify an SQL query as well. I've sent them this e-mail
yesterday, but it was night time over there, so they've responded today
asking me to send them the modified SQL and write the name of the Java
class and method where this new code should reside. I could've done
this by myself in two hours.
Frank. Just be patient, it's a new application for them. By
the way, I'd appreciate it if you could stay a little longer today.
We're having a meeting with our colleagues from overseas, but there's a
time difference, you know… No worries, they're willing to come to work
early, so we're starting our meeting at 7pm.
Six Months Later
Frank. The system has to go to UAT in two weeks. We've all
worked hard, our remote colleagues put in lots of overtime. John,
you're our Java expert, and you've spent the last two weeks doing the
code review of that module. Why does it work a little slow?
John. Well, that module isn't written in Java. I mean, they
were using Java syntax, but it wasn't Java programming. There are
chunks of unused code fragments, the code isn't object-oriented, they
used the wrong Java collections, and there's unnecessary
synchronization all over the place. But I can re-write the entire piece
in three weeks.
Frank. OK, let's do it - but quietly.
After spending many nights in the office, the project was
saved. Frank got promoted for delivering the project almost on time and
showing "strong leadership in managing cost-saving external resources."
But the team's morale went down the drain; two local resources (a k a
John and Mary) got small bonuses and started looking for new jobs.
Unfortunately, more and more
CIOs believe that computer programming is a commodity skill that can be
bought cheaply when needed and replaced easily like a receptionist,
mailman, or any other clerk. They don't believe that having a pool of
knowledgeable and talented developers adds any value to the
organization. This wouldn't be the case if the development managers
(the Franks) explained to them the price that's paid for the success of
such projects. But most of these managers never do this, because of
conflict of interest: Frank's only goal is his smooth movement up the
corporate ladder. Moreover, to increase his importance, Frank inflates
the resources needed for the project on purpose. The CIO doesn't have
the budget for several additional $70K-a-year developers, so he settles
on the same number of $30K developers from overseas with similar
résumés. Realistically, the "cheap" labor is actually an additional
expense on top of the salaries of local employees.
Another hidden expense is the extra time spent writing super-detailed
functional specifications and validating the overseas work. Here's one
more: for security reasons, you may have to create and maintain a
separate encrypted version of your database for the offshore team.
Having said all this, I can't blame the overseas developers. Their
countries are experiencing a golden IT rush, so young kids are ready to
dive into muddy Java waters after spending several months in vocational
school (if I were in their shoes I'd do the same thing). They put in
long hours trying to learn programming and the business of their rich
clients (not to be confused with "fat clients") on the run. As a result
of this IT boom, the turnover rate in offshore teams can be as high as
100%. You can often see it just by looking at the source code.
Sometimes you get a feeling that a 200-line Java program was written by
10 different people of different qualifications. Forget about naming
conventions, design patterns, or any programming style.
Hey, Frank, if you need seven people for a project, have the guts to
say seven and not 10. Yes, you won't have a chance to manage an
international (or as they like to say global) project, but you'll
definitely sleep better at night. Before giving a chunk of your project
to a company overseas, talk to your developers and ask them if they
really need this help. Your developers are human beings and not just
On the other hand, outsourcing works fine for small businesses because
both parties know that the owners of such businesses count their money
and won't pay for poor-quality jobs. It also works when you hire an
offshore team of senior people who know the business you're in. No,
their rates aren't cheap, and don't have to be! But such teams usually
consist of professionals, who take pride in their work, deliver on time
without putting an extra burden on your own developers, and even mentor
your staff. This is the outsourcing I vote for, but I'm not the CIO of
© 2006 SYS-CON Media Inc.