Thursday, November 11, 2004

Why agile development and outsourcing don't mix

If you're involved in IT you must be aware of two trends in the market - the move to more agile methods of application development, and the move by large enterprises to outsource more and more.

I believe that there is a fundamental conflict between these two trends, as do many of the gurus of the agile world. (For example, read Scott Ambler's article Outsourcing Examined in the April 2003 issue of Software Development Magazine ).

The most important factor in agile IT projects is the quality of communication. (See Alistair Cockburn's Agile Software Development).That includes communication within the team and communication between the team and outside stakeholders.

We can assess the quality of communication in terms of a few key measures. These measures are the same as those you would use to assess an electronic communications network. The measures are
  • Bandwidth
  • Latency
  • Reliability
  • Availabity
Of these measures, we want latency to be low and the others to be high.

Let's look at these in relation to a spectrum of application development styles.

At one end we have an XP team.

All four measures are likely to be very good. The team members are physically close, so bandwidth is high and latency is low. Reliability of communication is high, not least because because the team is likely to develop a common culture. By culture, I mean the customs, conventions, codes and values that are shared by the team. These all help to make communication faster and more reliable.

At the other end of the spectum we have an outsourced team that's located in another continent, and from a different company.

All four measures are likely to be very bad.

Bandwith is low. If we use email to communicate, we lose about 95% of the information our brains get when we interact with someone within touching distance.

Latency is high. If the person we want to interact with is available only via email and is seven time zones away, we may need to wait for 18 hours for a reply even if the person we're interacting with replies as soon as they see our email. If they are busy, or want to avoid the issue we've raised, we may have to wait much longer.

Reliablilty is low, both for technical reasons and because our cultures are different.

Availability is low. In the most extreme case, some countries pretty much close down for two weeks or more in the summer!

While this is an extreme example, any outsourced development will suffer from a significant degradation of all four measures of communication.

Conclusion: agility and outsourcing are incompatible.

Anyone who tells you otherwise is probably trying to sell you something.


No comments: