Offshore Development: What does it mean for software engineering?

August 2004

The 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