What CIOs Should Know About Outsourcing Enterprise Java
original
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.
Post-Mortem Analysis
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 nameless resources.
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 your company.
© 2006 SYS-CON Media Inc.