Agile Software Development in the Large: Face-to-Face Conversation
Summary by Jutta Eckstein
It is common knowledge that it is not the technology that influences success or failure of a project, it is the effectiveness of communication. And communication regards everyone with a stake in the project: developers, managers, customers - just everybody.
However, one of the biggest challenges when applying agile software development in the large is how to ensure effective communication as it is requested by the following principle from the agile manifesto: ?The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.? Depending on your actual large setting the solution will be different. For example if are you developing with a large but not a dispersed team then you could always try to collocate the people as close as possible. For example in one of my projects, after several struggles we found a way to locate most of the team members in two adjoined open plan offices (without cubicles!). Each open plan office was able to seat about 40 people. Well, and you can be sure, whenever we had major problems in our team, the affected people were not sitting in one of these open plan offices..
You might already have found out, as also showed in the example above, that problems can directly be referred back to the physical distance the people are having. This is true for single-site as well as for multi-site teams. Thus, the only solution is reducing the physical distance. In a single-site team it could mean that team members, or subteams will have to move occasionally in order to be closer to the people they are currently working with. So, whenever you encounter massive problems, consider seating the affected people or subteams closer together. In one of my projects we even had to change the location of a couple of subteams several times during the project.
On dispersed teams, especially if we're talking about offshored teams, this means that some people from each site will have to go to the other site for a specific amount of time in order to establish a good communication path. A colleague of mine reported that they had three people from their team in India working for three months in the US and vice versa. By the way - all successful offshored teams I know about are using a model like this. Of course, you can argue that the travel expenses will then top the benefit of the cheap work hours on your offshore site. However, this is not the topic of this article..
Different Communication Channels
Another thing we learned was, that it is very important to change the communication channels you are using for conveying information. So don't use e-mail for everything, switch sometimes to the phone, to real meetings, to virtual meetings - be creative in finding different ways for communicating. And be sure, whenever a communication channel is working extremely well, everybody will use it, which will mean it will be overused and as a consequence it won't work anymore. Probably most of you have once experienced the effect of a ?meeting-culture?. Don't get me wrong - meetings are a great means for working together, but when overused they don't work anymore.
The importance of this role can never be overestimated - and no matter if you are in a dispersed setting or just in a large one. This person's, or this group of persons' main task is to ensure that everybody has a common understanding of the project, of the organization of the project, etc. Most of the time these people are following the management-by-running-around approach (which does imply traveling to dispersed sites) and figure out where the communication gaps are. So they very often arrange meetings as soon as they figure that some things have to be clarified among a group of people. It might be that they just overhear that one member of the team isn't able to do her job properly because she's waiting for an interface from another member of the group. If those team members do not take up the responsibility themselves, the communication facilitators will ensure that the right people will talk to each other in order to clarify the requirements for this interface.
Thus, large teams require the extra role of a communication facilitator, in the same way as a large team has the need for a chief architect.
Durability of Communication
I guess everybody has experienced this once in his life. For example if you are getting to know somebody on vacation (or at a conference) and you had a good time together, you often try to keep this good communication up via e-mail, phone or something the like. This typically works for a while, but at one point, you are writing e-mails less frequently, replies are coming even more infrequently and not short after your conversation is stopping completely. The reason is not that you don't have any things in common anymore; the reason is that a communication path has only a limited durability. You have to take this into account when working with dispersed teams. You have to ensure that you never reach the end of durability, because if you do, you can't just carry on, but instead you first will have to repair the damage. So ensure that people are able to meet from time to time. Unfortunately, I don't know of any research studies which have measured the durability of communication, but for development teams it seems to be somewhere between eight and twelve weeks.
For example, in a dispersed environment you can make sure that team members will meet regularly for the retrospectives. If the team is too big, then you can invite subteam representatives - but ensure that the representatives will change over time.
Establishing a good communication path is essential for the success of every project - no matter if agile or not. The only difference is that agile development has officially recognized the importance of communication and therefore agile teams are taking it more serious. However, taking it serious would safe all kinds of projects.
A large team will be more challenged by establishing a good communication than a small one. In large teams, communication won't flow naturally as it most often does within small ones, just by sitting together in one room.