February 10, 2008   Sign In |  About ebizQ |  Contact Us |  Join ebizQ Gold Club
Keith Harrison-Broninski
IT Directions
Keith Harrison-Broninski cuts through the hype in his hands-on guide to where enterprise technology is really going.

« BPM without a BPMS | Main | How to become an IT professional »

April 16, 2007
Outsourcing and the fall of the professional programmer This is the fourth article in a blog series on The Future Of Programming.  In this series, I am trying to set into context some recent developments such as SOA, BPM and MDA, and show how an organization can prepare itself for the advance of these technologies - how it can develop the capabilities needed to leverage them in an effective and efficient manner.

In this article, I will discuss a change of which no-one in IT could fail to be aware - the rise of outsourced application development - and its impact on development practices.

Let's start with some typical problems that arise with outsourcing application development.  Here are some real outsourced projects on which I was brought in to consult:

  • A medical system that passed all system tests first time - tests written by the developers - but that turned out to consist of unmaintainable spaghetti code;
  • A telecomms data warehousing system that ended up completely dependent for maintenance on a single programmer who had written the core code, who became impossible to work with, and who then decided to retire early;
  • An online catalogue with a hopelessly impractical database design in which individual queries often ran into thousands of lines - of SQL code, not results - and consequently each took hours to run;
  • A retail replenishment system that had to be completely ditched and re-written from scratch in-house (under huge time pressure) due to the poor quality of delivered code.

These are not particularly exceptional cases.  As with anything in life, you get what you pay for.  Yes, you can save money by using staff from less developed economies - but unless you supervise the work properly, which means managing the code development as closely and carefully as if it was written in house - you will end up with only a short-term gain, and quite possibly not even that.

Why?  Are local developers (wherever "local" happens to be for you) always so much better than developers from other countries?

Of course not.  However, there are 2 key issues to be aware of.

First, programmers are human.  Suppose you are a programmer working under pressure for a company on the other side of the world, a company that does not know you personally, on a system that you will probably never see again once it has been delivered.  Being realistic, you are not going to polish every line of code until it gleams.  You are going to produce as much code as possible, as fast as possible, to the minimum acceptable level of quality imposed by your managers - or to a lower level, if you can get away with it.

Second, outsourcing companies cannot afford to encourage their development staff to invest time in personal development - in deepening and broadening their skills.  Such companies compete intensely on price.  They may be willing to pay more for senior developers, for whose services they can in turn charge more to clients, but they are generally unable to afford to sponsor the increase in knowledge and experience required to turn a junior programmer into such a person.  This means that high-level skills are acquired and applied piecemeal, if at all, by developers working in less developed economies.

As a result, there is an endemic culture of low quality code in outsourcing companies - a culture that means many apparently low-cost systems commissioned from outsourcing companies are in fact unmaintainable, or may not work properly even if they pass all their system tests.

TAKE AWAY

Does your organization rely on outsourced system development for mission-critical processing?  If so, the poor quality of such systems could end up as your undoing.

Coding standards are dropping across the IT industry - even where you would least expect it.  I have seen code written by senior developers with an outsourcing background as part of an extended interview process.  The purpose of writing this code was as an example to demonstrate their abilities, and hence to secure highly desirable work in the West.  Hence one assumes the authors invested as much time and trouble as they could into the example code.  However, while the code they produced did seem to work, the poor quality was obvious at a glance.  The code had been written with such disregard for conventions of style, documentation, etc that maintenance would have been a nightmare.

The authors of this code were all the cream of the crop - highly educated, with experience working on projects for companies such as Google and Amazon, and earning a very respectable amount already - typically around 40 USD/hour, in India!  The problem was that they had never been through the kind of induction process that used to be standard in every professional software development organization.  They did not know even what expectations to set of themselves.

In the next postings to this blog, I will discuss the nature of a professional development induction process, and how to re-introduce it in a world of outsourced application development.  I will also show how to ensure that code delivered from an outsourcing organization is of high quality.

There's nothing wrong with outsourcing application development - but you have to manage it the right way.  If you'd like to find out how, stay tuned to this blog.

Posted by keithhb in Management • Service-Orientated Architecture |Digg This|Add to del.icio.us

Comments

I think the author is most ill-informed of all the IT professionals..apparently he has taken his experiences and generalized it for the entire outsourcing practice..not sure if he knows that, the same outsourced cheap programmers he is writing about, write the code for managinng a Boeing plane's wings and many other critical tasks..I doubt if the author has done research to see, how much the outsourcing companies atleast the big one's spend on quality, training, upskilling etc. It is unfortunate that he had some bad experiences..but to generalize that shows his narrow mindedness..

May be he should go and do his research and ask client's like GE who were pioneer in quality practice before writing such blogs..

Posted by: outsourced programmer at April 23, 2007 11:37 PM

Dear "outsourced programmer"

Does hands-on experience with hundreds of organizations count as research? I have been consulting for a very long time, and only ever speak about things I know first-hand to be true.

Please understand that this blog article describes a general state of affairs. It is not a judgement on every single outsourcing organization and programmmer therein. Further, it is not actually a criticism of outsourcing suppliers - simply an assessment of how market forces bring about certain situations in outsourcing companies.

What I am saying, in a nutshell, is that if an outsourcing customer wishes to guarantee the quality of an outsourced application development, there are certain steps that they must take. I agree with you that there are many successful outsourced application developments. This series of articles is designed to show people how to make sure that theirs is among them.

--
All the best
Keith

Posted by: Keith Harrison-Broninski [TypeKey Profile Page] at April 24, 2007 02:46 PM

Thanks for the info, Keith. I also appreciate your maturity in answering questions posted.

Posted by: Ezekiel at June 22, 2007 01:48 PM

I've seen many of the same things Keith has seen at my latest client. Unbelievably (almost comical) poor quality code (stuff you would not expect of a first year CS student), no clue about moderately advanced object-oriented techniques, design, automated unit testing, etc. And it's not just me - colleages here (both fellow contractors and employees alike) bemoan the situation. I also have a buddy who manages projects for a different Fortune 50 companym, and he often commiserates with me about the same issues. So, I don't think Keith is generalizing at all.

The good news in all of this is that the poor quality systems being developed will always provide me with work, be they bug fixes, rewrites, refactoring, etc. There will always be a need for high quality software engineers. I truly believe that.

Posted by: C++ Programmer at July 16, 2007 10:41 AM

Post a comment




Remember Me?

(you may use HTML tags for style)

We ask that you type your code (displayed below) in the text box.This code is an image that cannot be read by a machine. It prevents automated programs from submitting comments.


Code:



Most Recent ebizQ Blog Entries
ADVERTISEMENT
RSS Subscription

Blog Roll
This Work
Accountability:The opinions expressed in this blog are solely representative of the blog's author, and not of ebizQ

Subscribe to our Newsletters
ebizQ Weekly Gold Club Update
Live Webinar Updates
Updates from ebizQ Partners
ebizQ SOA Update
ebizQ BPM Update
ebizQ Security Update
ebizQ BI Update
ebizQ Open Source Software Update
Virtual Show Newsletter
Your E-mail Address:
BAM: The Killer App for CEP
Date: Feb 12, 2008
Time: 12:00 PM ET
(17:00 GMT)

I WANT TO ATTEND
Event Processing Market Pulse
Date: Feb 14, 2008
Time: 12:00 PM ET
(17:00 GMT)

I WANT TO ATTEND
Archived Webinars | Upcoming Webinars

Marketing Solutions | Feedback | About ebizQ | Unsubscribe | Privacy Policy | Site Map