adams.co.tt

Distributed Agile Learnings

16th March 2010

I’ve been on few distributed projects now, and I’ve noticed that the same sets of issues consistently arise. These issues all have the same root cause. Lack of communication. Fortunately there do seem several things that can be done to offset these issues.

Putting names to faces
On a distributed project there is often a collection of people you will have to work with but never have the chance to meet. Without faces to put to the names of those people, it is easy to lose track everyone you work with. Worse yet, it becomes easier to ignore people you cannot visualise. Having some form of repository of team member photographs is really rather valuable. It gives your team members the ability to talk to one another and to imagine a real person on the other end, and recognise each other should they ever meet. Which brings me onto the next point…

Team rotation
If you have two or more sites, a very useful activity is to rotate team members from site to site. This means that team members from the two locations develop relationships with each other. This inherently lowers the barriers to communication, as people like talking to people they know and trust. It also means that if either location has a particular specialisation, team members can share knowledge and bring that knowledge back to their own home office.

Video conferencing
Video conferencing can be implemented in two contexts on a projects, both of which are valuable. Firstly it can be used for meetings and presentations. If there is any gathering in which it makes sense to include both locations, then encouraging members from both sites to attend using video conferencing means that everyone feels involved, and the outcomes from those gatherings do not have to be passed on second hand.
The second context in which video conferencing can be implemented, is as a perpetual live feed from both locations. This means that each team can see what the others are doing and contribute to any spontaneous discussions that take place.
The value of video conferencing should not be underrated. Face time is extremely important for building successful and productive relationships. It also allows information to flow much more effectively. When explaining a concept, seeing someone’s face allows you to implicitly understand whether they agree, disagree or have not understood the point you are making. It is possible to read a person’s body language to gauge how happy they are with a proposed solution, and can go a long way in avoiding personal issues brought about by miscommunication.

Osmotic communication
Live video conferencing can greatly aid the osmotic communication of a team. The ability to overhear a conversation, to absorb information, or even jump in when appropriate is very valuable. However, live feeds are not always available, but this does not mean that all osmotic communication has to stop. What is important is that the whole team should have the ability to hear and jump in on any given exchange of information. To that end, favour conversations on speaker phone. Use group chat instant messaging rather than private messaging. When sending an email, choose your recipient(s), but CC the rest of your team. This way everyone has access to the information.

Know who is doing what, where
An important part of Agile is providing stakeholders transparency around what the team is working on and how stories are progressing. The story wall is a major means of communicating this information. However, stakeholders are not the only consumers of this information. This information is key to the rest of the team and it is important that any team member can know what people at both locations are working on. This prevents the same story being picked up twice and means that someone with knowledge of any given story or area can volunteer that information to those working on it. It also means that developers can avoid stepping on each other’s toes when working in the same area of the codebase. So it is important that your story wall not only reflects what is happening locally, but also anything going on with a remote location too.

tags: agile, post
blog comments powered by Disqus