views:

602

answers:

10

The Agile Manifesto emphasizes the importance and nature of communication in the software development process. Two of the twelve principles underscore this:

  • Business people and developers must work together daily throughout the project.

  • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

On my current project, the five members of our development team are scattered across four cities in three states. Geographically distributed teams seem to be more and more common as telecommuting/remote working and offshore development expand.

When a team can't be face-to-face, how can tools and technology be employed to make practices like daily stand-up meetings, code reviews, pair programming, and the XP concept of "whole team" effective? How can these practices themselves be tailored to best suit a geographically distributed team?

A: 

Fowler has written about offshore development, but in your case it doesn't directly apply. It's still a good read. I'd suggest using collaboration tools (IRC, Wikis, Skype, IMs) as much as possible and try to arrange many face-to-face gettogethers if it's possible.

auramo
A: 

We did some of this--you can do some work to mitigate the problems but it's a mess.

Have your status meetings together in the morning on the phone, everyone needs to be on IM all the time, and you can pair via VNC/video conference, but that doesn't always work.

Very long phone calls--When I had one member offsite, I often would just open the line at 9am and stay on until lunch--then reconnect as needed.

That's actually an interesting idea--Create an always-on speakerphone using software so that anything you are doing is automatically picked up by the other offices. It's much easier to just say "Hey, Jim, what's the deal with line 203?"

CHECK IN EARLY, CHECK IN OFTEN. Constantly, like every hour, max.

Bill K
+1  A: 

I have found that you really need to be careful looking for tools that "do it all". The problem is that you end up having to change your process to use the tool rather than using the tool to help your process. This can be okay if the new process dictated by the tool is better, but in many cases it's not.

However, take a look at Campfire. It's like a cross between a wiki, IM, and irc. It's really quite good for free-ish form group communication with history and some structure.

I also like BaseCamp (by the same company, 37signals) - it's more of a task list/discussion/project tracking system. More tools than just campfire.

The nice thing about both of these is that they are pretty lightweight - use them to help what you do rather than hinder it.

And lastly - Skype. Make sure people are not afraid to hit the "call" button. Make sure people set busy status and that it's respected.. Have people think of it like offices with doors, not a phone call.

Philip Rieck
+2  A: 

I'm on a team in a similar situation. We keep a Skype group chat going all day, it has been a huge benefit and we're extending the idea to other projects that are not agile or geographically dispersed.

We do the daily stand up on the phone though, that meeting needs the immediacy and feedback of true voice communications. We have the daily stand up in the morning on the phone, and then (still on the phone) if there are any complicated issues for the day those are discussed. The rest of the day everyone works on their assigned tasks and uses Skype for coordination. It works well.

Mike
+4  A: 

These are findings my employer presented from a massive distributed project.

Make sure the team meets in person, both at start-up of project, and regularly throughout the project. Ensure that all feel included in social events.

Be prepared to spend on good communication equipment. Don't buy crap microphones -- go for decent teleconferencing equipment. Make sure you have enough bandwidth to handle this.

Find good collaboration tools and stick to them.

Add people's photos to virtual meeting rooms -- it's much easier to talk to a face even if it's just a photo.

Communicate the project's vision as often as possible to ensure people are on track.

Asgeir S. Nilsen
A: 

Some sort of group chat tool works very well. I set up a monitor and speaker in my cube with a custom MSN messenger account that gave anybody (the account only had team members as friends) the privilege to start a video chat.

In addition, I checked in often (soon as I could get something to compile provided it wouldn't break any tests) and did a get often.

A lot of times a colleague would pop up on the MSN monitor and just ask me to do a get because they'd checked in something important. I'd just do it without even turning my head towards the monitor. The long distance equivalent of your colleague over in the next cube hollering at you to get latest. Works a charm :)

Arun
+3  A: 

In order of priority:

  1. A good project manager who would keep different locations together
  2. Effective (quick and reliable) chat tool which would allow a group chat. Skype is excellent. We have a group chat for all team members open permanently and use one-to-one chats and VoiP calls as necessary
  3. Code repository
  4. Wiki for shared Knowledge Management
  5. Good, quick and easy issue tracker.
  6. Weekly/daily code reviews
  7. Continuous Integration system
  8. A person with good organisation skill in every location where there is more than one team member who would keep a 'shard' organised internally.
Ilya Kochetov
+1  A: 

For those who tired of Campfire, there is recently launched Jaconda.im , chat as a GTalk/Jabber contact. We're using it in our team and kinda loving it, no need to install anything.

You just create a 'room' there and give the contact to everybody you want to chat with, and you got your chat-room in your contact list.

Nick
A: 

There is a nice Success Story about Scrum Implementation with distributed teams: http://www.agile42.com/cms/pages/success-story-be2/

And if you are looking for an online whiteboard to support your plannings, you can have a look at Agilo for Scrum: http://www.agile42.com/cms/pages/agilo/

Doro