Wednesday, April 19, 2006

Overseas...

So what happens to the agility when the project is distributed? Well, it suffers...

It's not that it doesn't work in a distributed context. In fact ThoughtWorks has been doing distributed agile for quite sometime now. We talked about some of the best practices of agile earlier. Let us see what problems distributed agile poses to these principles.

Time difference
When working across oceans, the first thing that hits the team is the time difference. The typical arrangement renders the team to be in a low cost country like India and the client in the US of A or Europe.

The time difference is the first major barrier to communication. Because even if we assume that the other barriers like distance, language, culture, etc can be handled, we just wake up and live at different times.


Communication
As much as agile believes in face-to-face communication, it suffers badly in a distributed context. Mitigation consists of:
  1. Cross pollination
  2. Using Voice communication rather than mails
  3. Video Conferencing
  4. Adjusting working schedules on both sides
These techniques are most effective with mirrored teams. Of course, that's the essence of a distributed project, but it gets missed quite often in that the client site is left with a couple of analysts and the development goes on offshore. The mirrored team aims at having all roles replicated on both the shores which encourages more communication amongst the team members.

Documentation
One more thing hampered is the amount of documentation, which increases almost exponentially...

As the customer is sitting elsewhere all the analysts can't talk to the customer face-to-face which adds to the documents and artifacts created. Also for transparency and quicker feedback sake, tools like online bugtracking systems are used.

The whole effort towards reducing the feedback time and working closely with the customer comes with major overheads in distributed contexts.

Cost and Benefits
From a customer perspective, distributed development reduces cost significantly. The organization seemingly doesn't reap the benefits of distributed development in terms of profit margin due to the increased cost of travel, communication, etc.

But the benefit of having a distributed team like:
  1. Better team skillset (as compared to on-site)
  2. Reduced costs (as compared to on-site)
  3. Reduced culture shocks to customer (as compared to offshore)
  4. Improved business context (as compared to offshore) because people living in the same country have definite advantage in understanding the business
  5. General cross-pollination leading to better diversity and a more cohesive work force overall in the organization.
Selling Distributed Agile
There are some important points that we need to keep in mind when selling distributed agile (even agile) to clients. Setting these customer expectations goes a long way in favour of project success. Other than the cost / benefits decribed above:
  • Expect lots of communication. Mostly in the form of voice communication rather than email
  • Expect much more participation than any waterfall project your organization has been a part of
  • Expect having to give feedback right from the beginning of the project.
  • Expect software to grow (an agile team will rarely go for place holders)


A related and more detailed article by Martin Fowler can be found here

1 comment: