Chris Spagnuolo has been working in the Geographic Information Systems (GIS) field for nearly 15 years. If it involves GIS, he's probably done it...everything from field data collection to large scale enterprise GIS deployments. Through this experience, he has reached the conclusion that the most effective way to deliver value is by the implementation of agile practices. He believes strongly in the effectiveness of agile practices and he is leading a new group to evangelize the benefits of agile. Chris is a DZone MVB and is not an employee of DZone and has posted 29 posts at DZone. You can read more from them at their website. View Full User Profile

The Case for Colocation

  • submit to reddit
I've been thinking a lot about the colocation of agile development teams (or any development team for that matter). Some people argue that collocated team members are essential to successful software development while others argue that it doesn't make any difference. The more I think about it, and the more we operate with geographically dispersed teams, the more I'm starting to believe that collocation matters.

Currently, our team is spread out between Ft. Collins, CO, and Orlando and Jacksonville, FL. While things have not gone terribly wrong having dispersed team members, I have noticed a difference in communications. The difference is that in the Ft. Collins office (and I'm sure in Orlando and Jacksonville), there is a lot of informal communication that occurs amongst collocated team members. You know, the kind of discussions that happen spontaneously. When these happen, a lot of project information gets passed between team members that doesn't get transmitted to other remote team members. There is no malicious intent to not communicate. It's just that the impromptu discussions don't usually inspire anyone to dial in to a teleconference number and all that...precisely because they are impromptu.

On the flip side, the scheduled daily stand ups, planning meetings and reviews all happen when they're supposed to and everyone communicates on those calls. However, I have found that something is lacking on those calls as well. When a team is all together in a room, there is definitely a different dynamic than when there are "voices" on the phone. Body language plays a huge role in communications and tells a lot more than than what people are saying. However, what I find really absent is the sense of team and camaraderie that exists in a collocated team. There are many "physical" exercises that we used to do for planning meetings and retrospectives that have been lost due to collocation. I found those really useful and without them, I think our planning and retrospectives are less effective than they could be. Maybe we just need to adapt those exercises to be more amenable to the space between our team members.

All in all though, I think I would definitely be in the camp of folks who believe that collocation really does matter. It build a better sense of team, increases both verbal and non-verbal communications, and really fosters a more collaborative work environment.

Published at DZone with permission of Chris Spagnuolo, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)



Allan Bond replied on Wed, 2008/05/21 - 10:48am

Not much you can do about spontaneous communcation between remote teams. But I wonder the extent to which technology can make up for the loss of body language and other deficiencies. Tools like video conferencing and collaborative software that allow real-time code editing among developers. Anyone have experience with this?

Cindy Hilmes replied on Wed, 2008/05/21 - 12:49pm

Yes, we've used video conferencing along with doing real-time code refactoring between developers.  Video conferencing wasn't too successful, as the TV images weren't that clear and there were some audio delays.  We have have success using live meetings and webex to conduct meetings.  Nothing beats being collacted though!  Collaboration is just more efficient!

Keith Fry replied on Wed, 2008/05/21 - 1:48pm

And don't limit this collaction to just the developers on the team (you said development team, I'd expand this to "project team"). Having immediate, face-to-face access with project managers, analysts, architects, designers, testers, etc. also has significant benefits. There are a number of reasons that I've found collaction to be the best working environment, some of which you've mentioned already:

* Teams that spend time together trust each other and know the strengths and weaknesses of each other. This makes them open to asking questions and they know the right people to ask. 

* Even with technology as an enabler of remote communication, it is often less effective and efficient. Emails and chats are actually very ineffective from a stand-point of getting something done "right now" because for most people typing is much less efficient than, say talking on the phone or face-to-face. Unfortunately, most developers prefer to be "heads down" and isolated. And some rely on chat so much these days that their phone has inches of dust lying on it. Arguably there is still the need for email and other offline tools when resources aren't available "right now".

* There is so much implicit knowledge on a project that having a "physically close" team helps make that knowledge explicit. For example: if all the developers for an application or component are in the same room, a conversation between two people that can be overheard by others, even if they are not actively participating, helps expand the collective knowledge.

I'm not a big fan of "spec-it-up-and-throw-it-over-the-wall" type projects - some people assume that if it isn't written down they can take liberties. Instead I try to instill in my team that communication is half the project effort and that "good people ask questions". Asking questions helps make project knowledge explicit and that is the goal of any type of communication. Physical separation (and don't forget temporal separation!) simply impedes good communication.

Mark Thornton replied on Wed, 2008/05/21 - 3:52pm

I speculate that the worst case is where you have several groups at different sites. Then information is shared within each location, but the communication between sites may be lacking. On the other hand if everyone is dispersed, then electronic communication is the only method available and once you are sending a message it is easy to add extra recipients.

So I would say that having everyone in the same place works best, followed by everyone dispersed, and multiple groups may be the worst case.

Jess Holle replied on Fri, 2008/05/23 - 6:45am

The cost here is huge and is often overlooked, e.g. when offshoring, centralizing employees by role (e.g. QA or product management) rather than by team, etc.

This does go well beyond developers.  Daily, informal collaboration between QA, developers and product managers is part and parcel of good, iterative development -- whether you call it agile or something else.  Having everyone scattered to the four winds kills this 90% of the time, even if you have standups, teleconferences, etc.  The 10% is when folk actually use something like IM to bounce ideas off one another, etc, as they happen all day long [if they have to wait too long, e.g. until the next standup the ideas are just be lost] -- but that falls flat when folk are in utterly non-overlapping timezones (e.g. India and the US).

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.