Managing Distributed Software Teams
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.