Offshore Development: What does it mean for software
engineering?
August 2004The world of software engineering is never dull. Like (I am sure) many readers
of EiffelWorld, I like to watch what's going on, both the day-to-day events and
the deeper trends, reported or not by the press. The editors have invited me to
share some of these observations with their readers; it's a great pleasure to
accept.
To kick off this short column it's appropriate to reflect on a trend that, as
much as any technical development, is affecting almost all aspects of software
engineering: offshore development. I became fascinated with offshore development
earlier this year while preparing, with Peter Kolb from ABB, a seminar on
outsourcing that we'll be giving again in November in Zurich. A mere look at the
numbers provides unmistakable evidence of the size of the offshoring phenomenon:
IT outsourcing will be a US$ 100 billion industry in 2005, representing close to
a third of IT budgets. India has in a few years built an entire industry of
offshore software development, and several other countries -- Ireland, Russia,
China, and many Eastern European countries -- are following quickly, with many
more hoping to join the club. The effect on software engineering professions in
the West are visible everywhere; in Silicon Valley and other software hubs many
jobs have disappeared. The fear that more will follow is playing a role in the
US presidential campaign.
Is offshoring just something to be feared, or is there some inherent good in it?
Obviously, for the folks in Bangalore and Saint Petersburg it's a great
development, and at least abstractly we should be glad they can join the fun.
For some companies, it's obviously productive too. But there are also resounding
catastrophes (our seminar analyzes the ingredients that are needed to avoid
them). Part of the reason why I find outsourcing so fascinating is that it acts
as a magnifier and revelator of just about everything in software engineering.
For years software methodologists like myself have been telling the world about
software engineering principles, sometimes with some effect, sometimes with --
let's use euphemism -- less effect. Now comes a project where the team is split
into three continents, and suddenly software engineering advice ceases to sound
like preaching, becoming instead a matter of success or abject failure! We've
told people to do requirements and they've often skimped on it; with the
implementation team half a world away you won't produce anything decent without
a strict process and standards for requirements engineering. We've told people
to care about documentation, about quality assurance, about Design by Contract,
about proper project management practices; these are no longer just good ideas
but techniques that can each become a lifeline.
Reflecting further, I can't help -- seeing all the fear of good programming jobs
disappearing forever -- that the software world has missed a great opportunity.
It's no secret that, for the most part, it sees itself as a service industry.
It's been so much easier, during the boom years, to hire one more programmer
than to invest in a tool. Eiffel programmers know better: they understand the
leverage that their tool gives them. Needless to say, their productivity -- we
hear this again and again -- is, thanks to the tools and techniques they use,
their best job insurance.
This is the best advice one can give to those programmers in the industrialized
world who are concerned about how best to cope with the seemingly unstoppable
offshoring phenomenon. Become best at what you do by using the right tools and
methods. Anything else is futile. "Security by obscurity" (job security, that
is), which some have tried (I am referring to the practice of producing code
that no one else will understand) is silly, and won't protect you for long. What
will make you truly irreplaceable to your company is to show exceptional
productivity and to produce stable code -- bug-free, extendible, reusable --
that sets you apart from the crowd. Tool investment, and use of the best
software technologies available, is your best bet in this tough new world.
-- Bertrand Meyer
|