Let's say you're provisioning a new project team with members on multiple continents. As you look for ways to do your work quicker, better, and cheaper, you may ask yourself: “Can we approach this project in an "agile" manner?” But you may have just read Martin Fowler’s excellent description of the ideal team room, and detected that the prototypical agile workspace isn’t big enough to span multiple time zones.
Should you give up your dream of using your new project to launch the agile revolution at your firm? Well, yes and no. A distributed agile team will not gain all of the benefits of Alistair Cockburn’s “osmotic communication.” The team members in Bosnia won't be overhearing the Toronto office's discussions and benefiting from them. On the other hand, you may still prefer for your distributed team to be agile rather than not. You don't want to kill something good while waiting for the perfect. And you may be acting on a mandate from above which gives you no choice, “self-governance” be damned. So here’s what you do.
Years (or even millennia, if you follow Mary Poppendieck) of shared tribal experience with agile techniques suggest that a distributed project, like its collocated counterpart, will succeed or fail directly in proportion to the effectiveness with which the people on the project team work together. Lilia Efemova has a wonderful discussion about the need for communication and common ground on project teams. If you can build team trust and understanding across multiple locations, you can get the team to do things like “scrum of scrums” and whatnot in a heartbeat. The reverse is not always true.
Start with four basics:
· Start with a careful vocabulary and go from there. Do not refer to anyone as “offshore.” Whose shore are you talking about? For best team morale and velocity, the premise must be that team members in all locations are equal in status, and each person is especially valued for his or her unique cultural background, project approach, experience, and personality.
· Don’t even think of starting a distributed agile project without a shared online information radiator, preferably one that can be electronically projected onto a wall or smart board or the like for all to view at each site. Agile zealots are quick to say that you should start with “post-its and pens,” and consider “the tool to be secondary.” It is not. Although a tool can’t create a high-performing environment for everyone on the distributed team, lack of a tool will certainly create miscommunications and lack of trust quickly and painfully.
If you have no tool, you will end up with a power imbalance across teams where one team has control of the radiator and the other teams don’t. Please don’t do this. Here's a ranking of the options:
o Looking for trouble: one physical lo-tech radiator kept up to date by local scrum master and distributed by digital photo to other sites.
o Better in theory than in practice: physical lo-tech radiator kept up to date by teams and synched by each scrum master through digital photos and the like.
o Good: shared online tool which everyone updates centrally, and which you project at local standups.
o Awesome: shared online tool which everyone can update and which is always projected on a wall or smart board at all sites.
· Start the project off with an in person meeting for the whole team. Try for two weeks. Figure out the most cost-effective location for the meeting, and bring everyone there, and have your project inception meeting. Make people share rooms. Put people up at team members’ houses. Get the team together in person to get to know each other. Team members will do far better during subsequent virtual contact via email, text, camera and phone, because they’ve already gotten to know each other’s quirks in person. After this, send single project team members to different sites on occasion to reinforce the in person connections.
During the project itself you may want to experiment with an always-on reciprocal webcam arrangement or a shared virtual world within which each person represents him or herself with an avatar sitting in a shared room, to do better than you can do with phone calls and texts. But regardless of what communications techniques you put in place for the duration of the project, it must be planted and periodically fertilized with in-person meetings.
During the project itself you may want to experiment with an always-on reciprocal webcam arrangement or a shared virtual world within which each person represents him or herself with an avatar sitting in a shared room, to do better than you can do with phone calls and texts. But regardless of what communications techniques you put in place for the duration of the project, it must be planted and periodically fertilized with in-person meetings.
· Team build. Even if you are unable to get your team together in person, allot some time during project initiation to creating common ground and a basis for communication on the team. I personally eschew events involving trust falls, ropes courses, and anything with a blindfold. What I would strongly recommend instead is that you start your project inception by cheerfully but efficiently forcing everyone on the team to understand each other’s professional persona (not their fear of heights). Have everyone take the Myers-Briggs test, the interesting MAPP assessment, or the currently popular StrengthsFinder test, and discuss the results together. (You choose the tool—these are just three I know about!) Do not even think of having trust falls.
Sometimes in the thick of things, I think we lose track of the first premise of the agile manifesto—this isn’t just a set of techniques. We win by focusing on individuals and interactions, and we just have to work harder on those interactions when a team is distributed.
Collaborative and interactive sharing of knowledge is one of my interests. Especially if a team wants to ensure the team members also *understand* the matter instead of just knowing the facts.
ReplyDeleteThis relates largely to how we humans link concepts together to create an understanding: concept mapping (see my blog)