trevmex's tumblings

JavaScripter, Rubyist, Functional Programmer, Agile Practitioner.

Ruby DCamp 2010: Dispersed Teams

Avdi (WideTeams.com)

A dispersed team is one where some or all of the team members are working remotely (geographically distributed)

Using tools like skype, vnc, im, email, and phone teams can stay in touch and work together.

Skype calls are hard to coordinate. One idea is to have workers record their daily standup for viewing later.

  • One way of doing this is to have a shared YouTube account and have everyone upload videos.

Try out Second life for a virtual standup. You can emote as well as speak.

  • Open Wonderland is an open source Second Life designed specifically for dispersed teams to meet in a virtual office-like setting.

A lot of teams are using Campfire and Yammer for instant communication.

You have to earn the experience and ability to work in a distributed manner. It is a good idea to engage a new engineer locally, before setting them free.

Implement a 5-minute rule: If someone asks you a question, tell them you will get to it in 5 minutes. That gives them time to solve it themselves.

A good way to bootstrap a new dispersed team member is to make some face-to-face time with them in the beginning.

  • Have the new hire come pair with you for a week.
  • Make sure that they have all the tools they need to collaborate.
  • Then have them work across the room from you using VNC.
  • Then have them work in another room with you.
  • Then set them free.
  • When they are out there, make sure your pairing sessions are well-defined and controlled.

Teams spread across different floors in the same building communicate WORSE than team spread across different COUNTRIES! Such a bad idea.

Most people don’t interrupt pairs because they look like they are busy and the pairs are usually more focused on what they are working on. This can be hard to do remotely.

How do you deal with inconsiderate interruptions while working remotely.

  • Don’t answer the call. Then tell them, “I’m sorry I didn’t get to your call, I was working on this important feature.”
  • The key is to seriously limit your availability when you are working.

A lot of the problems you see in dispersed teams is the same you have in a traditional team. You will have more organizational issues than dispersed team issues. Be careful not to blame the wrong situation.

Send your remote customers a Skype phone with video support, that way they can contact you face to face, if need be.

When the client goes directly to the developer, the project manager cannot know what the developer is working on, and if this happens enough, schedules can fall apart as agreed upon items slip without universal knowledge.

Have your remote client run your product demos at the end of a sprint. Having the client do the presentation can show the developers how the client will use the product and where to go next.

What about timezones and cultural differences? It helps to see if you can get people together in real life first to make the link between team members stronger.