Online Collaboration
Conducting iteration planning meetings using online collaboration tools resolves issues such as those I just described, and improves the efficiency of meetings. An online collaboration session helps clarify requirements, flush out tasks, and bring more team members' input into possible solutions to problems. It is worth noting, however, that there are different kinds of online collaboration.
One type of online collaboration involves a number of people participating in a video conference or presentation. This form of collaboration is generally one-to-many: When one person is speaking, others can't contribute. A common example is when one person is showing a PowerPoint presentation, while other people are watching the presentation. Feedback and questions are generally reserved for the end of the session.
Another type of online collaboration is many-to-many communication, like that provided by ThinkTank, the online collaboration tool from GroupSystems (www .groupsystems.com). In this approach, while one person is contributing, many other people can be contributing to the meeting at the same time. The contribution can be any text, comments, questions, ideas, answers, or any variety of possibilities. Each time a contribution is added, it is immediately sent to the other team members. This is useful for a variety of reasons:
- It keeps the flow of the meeting going; there's no bottleneck waiting for someone to document what is being said.
- An idea one person enters can trigger ideas from other people.
- It lets people enter ideas anonymously; therefore, the group discusses the idea rather than the person who submitted it.
For ThinkTank-based online iteration planning, team members in the office bring their laptops to the conference room where the meeting is held. Remote team members run the program from wherever they have access to the Internet (home office, remote office, hotel room, or wherever). We also provide a conference phone number they can dial into.
ThinkTank comes with several activities that can be used many different ways to accomplish different tasks. To illustrate an iteration, I set up an online session with our Categorizer tool, adding features and set-up categories (buckets) for the tasks; see Figure 1. For this example, I show three uses of our tool that help in iteration planning:
- Requirements clarification
- Task discovery
- Brainstorming
To start the meeting I review the requirements and see if anyone has any questions about them. Instead of asking questions one at a time or over the phone, participants can ask questions simultaneously by typing them into ThinkTank. Steve can ask GUI questions, while Joe is asking questions about the fields themselves. As the questions come in, they can be answered quickly by the product manager or other team members.
The questions and answers are immediately sent to all team members during the process. The simultaneous many-to-many interaction keeps team members engaged. They don't have to wait for other questions to be answered before asking new ones.
Keeping everyone engaged throughout this process generates new ideas and questions from people who were previously not paying attention. These new ideas subsequently kick off other ideas to form a more complete picture of the features to be implemented.
During this clarification, we find a few items we had forgotten:
- We haven't said where in the GUI the fields will be placed; we knew what screens, but not where on the screens. Jeannette needs to update the PowerPoint.
- We also forgot to include the fields in the e-mail invitations when inviting participants to a session.
While clarifying the requirements, team members enter tasks needed to complete the feature. In Figure 2, comments number 3 and 4 are additional discovered tasks. We can copy those tasks to the tasks category while continuing on with the requirements discussion. Additionally, team members enter tasks simultaneously instead of waiting for others to tell the project manager their tasks. This dramatically shortens the process we went through without online collaboration.
We also have team members add estimates for completing the tasks. This lets us comment on time estimates. Sometimes a long task can be shortened using a different way to approach the task. Other times the task may be lengthened by unknown complications. In either case, task estimates are now more accurate.
As with requirements, remote team members see the estimates and tasks and make their comments at the same time. They are more inclined to participate instead of answering e-mails or doing development.
As you can see in Figure 3, for the enhancement request regarding the new fields we get:
- Update PowerPoint mockup (1/2 hour) Discovered Task.
- Update the session details screen in administration (2 hours). (Now we know exactly where to put the fields in the GUI.)
- Update the session details in the new session wizard (15 min.). (This should be handled when the updates to the administration pages are done because the session wizard reuses the admin screen.)
- Add fields to the database (2 hours).
- Update the Session object (3 hours).
- Update the test cases (3 hours).
- Update the e-mail invitation (4 hours) Discovered Task.
After getting the tasks set up for the addition of fields, we start discussions about improving the performance of casting ballots. All of these questions, ideas, and comments can occur at the same time.
Steve, adding comments remotely, adds a question about performance improvements: "Any guesses on what is causing the slowdown when casting votes?" Jes responds with "the way the data is stored and retrieved. I can improve that."
Brian also has an idea. "What if we calculate the results only when we need them? Right now we calculate them after someone has cast a ballot." Brian is generally pretty quiet, but enters his idea anyway. Because it's anonymous, he doesn't have to take any offense at comments on his idea.
We've now got additional feedback from other team members that might not have happened right away. After further discussions, we decide it's a really good idea. It impacts reports, however, so we need to add a task for making some changes to them.
Once we're done with tasks for that feature, we see that we won't have enough time to get to the third feature request, "Moving the Reports Button". We'll move that to the next iteration. Now support and sales have a better idea of what will be completed for this iteration and we won't have to work overtime to get it done.
This sample iteration and iteration planning meeting benefited from using online collaboration:
- We found many additional tasks needed to complete features for the iteration.
- We were able to shorten the meeting by allowing all members of the team to participate in requirements clarification at the same time.
- Simultaneous contributions also allowed us to shorten the task discovery and estimation.
- We also did some brainstorming on where possible performance improvements can be found, possibly saving considerable time in the process.
- We were more accurate in our assessment of what can be accomplished in the iteration.
- We brought in thoughts and comments from people that may not have spoken up.
Conclusion
Agile software development requires input from all team members, and such collaboration is most effective when everyone participates. Traditional methods of one-to-one online collaboration can limit participation, whether for iteration planning meetings or other types of online meetings. On the other hand, a many-to-many approach to online collaboration facilitates simultaneous participation, improving the development processes by involving everyone who needs to be involved.