David Churchville described the common distributed team scenarios, offering solutions to common pitfalls of delivering Agile projects using different types of distributed team:
-
Type A: All developers are together, all customers are remote
-
Type B: Multiple development teams in different locations (but each team is together)
-
Type C: "Virtual" team where nearly everyone works remotely (e.g. from home, in various offices, etc.)
The author discussed some valid approaches for Types A and B, however for Type C:
On to Type C teams - the new "virtual workforce" we've been hearing about. Unlike the first two types, these folks never see anybody. This turns out to be strangely beneficial. Because everyone is on the same level, these individuals are either lonely and isolated, or pretty happy with their arrangement. We can influence the outcome towards the latter by setting up frequent communication and having an initial in-person meeting as with the first two types. Virtual teams can suffer from poor quality of communication though, and may need to supplement with group collaboration tools like shared whiteboards to supplement daily calls, emails, IM, etc.Tools such as Mingle and VersionOne are firmly aimed at the management of executing the build of a software product (and in their Web based nature supports distributed teams), and using practices such as mentioned above, but cannot facilitate virtual teams activites such as pair programming and daily meetings – where social interaction is fundamental.
For Agile aficionados enamoured with pair programming (developers working on a task together), it's possible to setup virtual desktop and keyboard sharing (using VNC or similar software) along with an Internet phone line (e.g. Skype) to do this.
In light of Alistair Cockburn’s work on the importance of quality in communication and the role it plays in Agile teams, and the plethora of communications tools (IM, Skype, IRC, Groups, Virtual Whiteboards) - do we have what's needed to make truly virtual teams effective?