This rule of Scrum aligns with the Agile Manifesto principle “The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.” In-person attendance of all Scrum Team members allows for the plan to unfold with minimal communication overhead and for the team to keep the meeting within the short time-box. In-person attendance also allows the team to effectively collaborate in the work of creating the plan. The efficiency and effectiveness of the Product Owner’s presentation of the Product Backlog is optimized as well as the Development Team’s ability to collaboratively assess and select what it can and will accomplish in the Sprint. It also allows for everyone to be clear about the Sprint Goal and why the Development Team is building the increment. In-person attendance also allows the Development team to efficiently and effectively come to a decision as to how it will build the increment of functionality. In-person participation of all team members also increases the likelihood that the team will create the right design for the increment. If even one team member attempts to attend this meeting by any other means, either by phone or even video conferencing, efficiency and effectiveness of the planning becomes compromised. Compromised collaborative planning yields compromised collective ownership. The successful delivery of the Sprint Goal requires full commitment on the part of the whole team. Lack of in-person participation increases the likelihood that the team will fail to deliver on its Goal because the planning will lack effectiveness. People are prone to estrangement from hazy goals reached through ineffective planning. In-person planning, therefore, is paramount to succeeding with Scrum.
The comic strip at XKCD today is brilliant. It takes a bit of effort to follow it, but the punchline is brilliant. Communication is tough. How does this apply to agile teams? You be the judge! (PS. XKCD is a great comic for geeks, but sometimes nsfw.)
Actually, this is six tips because my first tip is really about deciding to use distributed teams…
Some in-house studies that I have been privy to have shown 2-1 or 3-1 productivity difference between good co-located teams and “good” virtual teams. Creating a true, high-performance virtual team is incredibly hard emotionally, incredibly time-consuming, and costs a lot in terms of tools and travel. If this is being done for convenience of the team members or for cost savings, it’s a bad idea. The only good reason to have distributed teams is if there is a compelling strategic reason that trumps the hit you will take financially and morale-wise. (That was tip “zero”.)
That said, it is worth trying is to create an environment as close as possible to what you would get with a co-located team. To do this, here are some things to try:
1. Set core hours (at least 3 contiguous) every day when everyone on the team, regardless of time zone, will be at work simultaneously. If you have a globally distributed team, this will mean that some team members will have to make an ongoing personal sacrifice to be available. This sacrifice should be compensated financially. Avoid rotating the core hours in the mis-guided idea that it is better that everyone is uncomfortable some of the time vs. some being uncomfortable all of the time. It is much easier for a team member to get used to a consistent schedule and although initially there will be discomfort for some team members, they will (relatively speaking) get used to the new schedule.
2. During core hours, use a good video conferencing tool (e.g. Office Communicator), in an always-on state for all team members – be in the same space at the same time. Cameras should be set up so that it is possible to see an individual’s facial expressions, yet also to allow that person to move around and still be in-view. The video conferencing tool should have good full-duplex audio so that no one ever gets cut off because someone else is louder.
3. During core hours, all team members agree to forego the use of headphones or anything else that would prevent them from instantly being aware of something happening with any of the other team members. Again, for some people this might be quite a sacrifice. The idea is that communication is paramount for agile teams and anything that isolates one team member from another will hinder communication.
4. Have a live update task tracking tool that all team members use. (Most agile team management tools that I am aware of do not work because you have to refresh to see updates. Cardmeeting.com is a decent virtual wall that has live updates.) Any task-switching should be visible on this tool either through a color change, an audible cue, or a movement. So if I complete a task and start on a new one, everyone else should notice this immediately even if I do not actually say anything. The team members should get in the habit of using this tool even outside core hours.
5. Have a second (or third) monitor for every team member that is dedicated to the always-on communication tools (video conferencing, task tracking). These always-on tools should _never_ be covered by anything else. All the real-time communication tools are useless if they are not constantly visible. If your team members currently have two monitors, then get them a third for these tools. There should never be any excuse for a team member to hide these tools.
Basically, these suggestions are designed to maximize the quality, bandwidth and minimize the latency of communication among the team members. If you have a distributed team, and you try these things, please let me know how it works for you!