Friday, March 7, 2008

Offshore programming

Three - four years ago I was told by a professor in software business that every software development job is going to India. Another member of the faculty said that this is not going to happen. At the time, I couldn't say who was right or wrong but I wanted to learn more of this fascinating craft anyway. Today, I feel more confident to weigh in my opinion, but first, a few generally accepted ideas about software:
  • Software development is not an automated industry, it is a craft. Something that involves human time and effort. Training of a good software developer takes 10 years. Therefore, it is always hard to find good programmers just as it is hard to find professional brain surgeons.
  • Unfortunately, bad code usually works well enough! In my (relatively short) experience in business software, I have not yet seen an application that would pass any decent internal quality criteria. Producing bad code obviously requires less skill and generally favors bad programmers over good ones.
  • Yes, you can transfer craftsmanship overseas. Actually, even in highly automated industries it is worthwhile sometimes to add (cheap) human labor instead of automation. Human labor is very flexible.
  • Software development has very low returns to scale. Adding more cooperating developers adds progressively less output. I think the optimum efficiency in business applications is between three people: one business person who represents high-level needs, a programmer who creates the application and perhaps a graphical design/UI/database specialist who adds to overall quality and provides support for the programmer.
  • Software industry structure is greatly influenced by the balance between open vs. closed systems. Open systems increase competition, closed systems cause monopolies. Increased competition means cost pressure. And by this I mean time and money. Time pressure generally favors people close to the customer, money pressure favors offshore development.
  • In textbooks, time pressure is handled with agile methods and increased automation. In reality it is handled by writing more bad code instead of fixing it. "Hit and run" you call it.

And finally, my predictions :
More and more cheap code is demanded - and produced overseas. But not in the current offshore havens! They are going to be too expensive for cheap code, and will have to rise in the value chain. Consequently, there will be more competitive pressure for a western technical specialists of any kind, because a specialist for every niche can now be outsourced. Big players like Accenture have already adjusted their network for this.

Personally, my hopes for business software development are in increasing automation, the magical silver bullet. Maybe this craft can become an industry after all, when working with bad code is outsourced to machines who do it best.
(By increasing automation I don't mean anything of general kind, but task-specific tools like report generation that minimize code and maximize data.)

0 comments: