Agile Project Planning

ExtremePlanner: Agile Project Management for Distributed Software Teams
Click For Your Free Online Trial

Friday, February 16, 2007

Managing Distributed Software Teams

There seems to be a growing trend towards distributed software development.

Maybe it's just me, but lately everyone I talk to is working on a software project with developers and customers in different parts of the country or the world.

In particular, there seem to be more people working at home, even in large corporate"environments. From the reports I've heard, it's actually working pretty well, with some obvious drawbacks like no group lunches.

So the big question is how a project manager can coordinate this kind of virtual team, separated by geography, time zones, and sometimes even oceans.

Here are a few strategies that I've used with my own teams:

  • Have developers pair up for remote design/coding sessions. Although "pair programming" is often derided, for a virtual team, it's important that there is regular communication between developers.
    You can use tools like VNC to share a computer or presentation tool for scribbling designs, and tools like Skype for voice conferencing.

  • Make project information visible online. Agile software teams can use a web-based planning and tracking tool like ExtremePlanner to plan releases, track progress through iterations, and to see what everyone is working on.

  • Get together in-person periodically. There's no substitute for in-person communication. Ideally your team can meet at the start of a project to get at least a little initial bonding. It's much easier to maintain relationships if the team is already familiar with one another.

  • Meet daily. Communication is the life blood of a successful project. Run a brief, structured daily meeting where team members can say what they did yesterday, what they plan to do today, and what obstacles are in their way.

  • Use alternative communication channels. Outside of pairing sessions and daily meetings, encourage frequent informal communication. By phone, using instant messaging, blogs, wikis, or whatever helps the team share information more frequently.

Get your copy of the new book! Agile Thinking: Leading Successful Software Project and Teams

Thursday, February 01, 2007

Distributed Agile Teams in Action

Apparently there are quite a few Agile distributed teams doing quite well.

I just got back from the Agile Open Northwest conference in Portland, Oregon. It was an Open Space event, so there were no pre-planned sessions or speakers, but it turned out to be one of the best events I've ever been to. Many of the pioneers of the Agile movement were in attendance, along with over a hundred interested and energetic practitioners.

Back to the point.

I facilitated a session on Distributed Agile Development, where I wanted to hear what people were doing in situations with:

  1. Distributed Customers (customers not co-located with developers)

  2. Distributed Development Teams (more than one development team, each in a different location)

  3. Dispersed Teams (no one on the team is in the same location)

The resulting discussion was very enlightening. Not only were people doing all three of the above, but they were making it work. We uncovered some general principles that attendees pointed to as critical in making a distributed effort successful.

  • Build Trust Early
    There was wide consensus that personal connections were the most important piece to building trust. An initial investment in travel to get everyone on the team together to meet in person, learn a little about each other, and to start to bond seemed to be the critical step.

  • Maintain Regular Communications
    Once the team had formed some initial connection, the next insight was maintaining that connection. While this wasn't always done in person, teams that reported success often had daily teleconferences, video conferences, or relied heavily on instant messaging.

    One team that had some members onsite, and just one or two working remotely had a strategy of rotating a remote member every few weeks to have them work onsite to refresh their personal connections.

  • Communicate At the Lowest Common Denominator
    One surprising insight was the idea that if part of the team is co-located, it was actually preferable for them to behave as if they were remote. Co-located teams called in individually rather than gather together in a conference room.

    The counter-intuitive principle was to keep everyone on the same footing by using the lowest common form of communication. By not having some people enjoy face-to-face contact, while others were "just listening in" as second-class participants, teams were able to build more trust and feel more engaged.

There was much more said, but I found two themes most interesting. First, companies are continuing to move towards more distributed development through outsourcing, work-at-home initiatives, and using external resources. More importantly, the use of Agile methods is helping projects that do choose a distributed model to be more successful, both in terms of business outcome and team satisfaction.

Get your copy of the new book! Agile Thinking: Leading Successful Software Project and Teams