Online Collaboration and Agile Software Development

Agile software development requires input from all team members, and such collaboration is most effective when everyone participates.


January 11, 2007
URL:http://www.drdobbs.com/architecture-and-design/online-collaboration-and-agile-software/196900197

Doug is Director of Development for GroupSystems. He can be contacted at [email protected].


Iteration is at the core of all Agile methodologies. However, individual iterations are challenging to plan and execute properly—requirements can be unclear, small tasks can fall through the cracks, and problems can be difficult to solve without input from remote team members. Clearly, careful iteration planning is critical, although the planning process itself can be one of the greatest challenges to Agile software development.

Iteration planning meetings identify what teams will accomplish in the next one- to four-week-long iteration cycle. Prior to iteration planning meetings, the product owner prioritizes requested stories, then reviews those requests with the project manager and development team to ensure they understand the requirements well enough to estimate effort and plan tasks. During the iteration planning meeting, team members determine what tasks need to be accomplished, then estimate how much they can accomplish. However, good planning meetings must also include customer collaboration to understand requirements, and whole-team input to create task lists with accurate estimates. But due to the distributed (often global) nature of stakeholders in today's software development projects, just convening a planning meeting itself can be difficult.

In one project I was involved in, iteration-planning meetings were initially a very painful eight hours long, and resulted in incomplete task lists. Unfortunately, the project manager was also doing development, so he and the development team didn't have time to analyze tasks completely. Consequently, we uncovered additional tasks during iteration, and had to continually add those unplanned tasks and move planned tasks out. This caused confusion for management and support because they didn't know what features were going to be completed by the end of an iteration.

The emergence of online collaboration tools provide the communication and input needed for successful iteration planning, resulting in iterations that run smoothly and efficiently. And as we've become more experienced with using online collaboration, our iterations have become more accurate and iteration planning meetings have shortened to three hours.

Iteration Before Online Collaboration

Before the availability of online collaboration tools, preparation for iteration planning meetings started with the project owner prioritizing the product backlog to identify which features or enhancements had the highest priority. The project manager then made a high-level estimate on the features, and set up an initial plan for the next iteration. For instance, a typical iteration might have included adding a few simple features and improving the performance:

Once the project manager knew the features identified in this iteration, he reviewed the features during the week with team members. This gave the team a general idea of what was coming in the next iteration. Quite often, team members were so busy they didn't have time to review and clarify the requirements of planned features. Consequently, review and clarification was left for the iteration planning meeting.

For the meeting, stakeholders dialed into a conference phone number so that each person could participate. The first part of the meeting was always energetic. The development team gave demonstrations of what they had accomplished during the previous iteration. Once the demonstrations were complete, the project manager and product owner reviewed what was completed in the previous iteration and what improvements to make for the next iteration.

The next step in the iteration planning meeting was reviewing upcoming features. This review took a bit of time. As the product owner reviewed each feature, requirements questions invariably came up. Each question was clarified and laboriously documented, one at a time.

Remote team members strained to hear the questions, and had a hard time getting their questions across through the phone. Sometimes team members didn't think the feature being reviewed applied to them, so they stopped paying attention. After the review process, the team was drained and not as receptive to identifying and estimating their tasks.

This is only one example involving three features. As you can imagine, when an iteration had a large number of complex features, the process took a long time.

The next step in the iteration planning meeting was adding tasks. Each person communicated the tasks to the project manager so they could be documented. Again, this slowed the meeting to a crawl. On the conference phone, you could hear remote members answering e-mail or doing more development.

After tasks had been estimated, the team decided whether all of the features could be accomplished in this iteration. In this example, the team thought that the project manager made a good initial guess at what could be accomplished, and that they could accomplish all of the originally planned features for this iteration.

By the time the final review was done, the team came up with the following list of initial tasks and assigned them to team members:

For Additional Fields:

For Improving Performance

For Moving the Reports Button

Overall

As the iteration progressed, Steve proceeded to add the fields to the GUI. He knew which screens, but didn't know exactly where on the screens to put them. Since the product owner wasn't around, he made his best guess. Quality assurance reviewed the updates and checked with the product owner. As it turned out, Steve guessed wrong and had to move the fields to the right place. This lack of clarity in the requirements caused some time delay to coordinate the product owner, quality assurance, and developer. It also took Steve time to put the fields correctly in the GUI a second time.

Steve also noticed that the new fields needed to be added to another place in the application—the e-mail invitation. Putting the conference phone number and the conference code on the e-mail invitation made accessing and starting an online collaboration session easier, but added a few more unaccounted for tasks.

Meanwhile Jes continued to work on his tasks. Although he struggled with the performance improvements, he made major strides. Still, the improvements weren't quite enough and took longer than he thought. During one of the daily stand-up meetings, he brought this up and got some good ideas from other team members. However, he could have saved some time if this was brought up earlier.

Once he got the performance improved enough, Jes checked in his code, but it broke another part of the application: the reports. Steve found out late in the iteration that he needed more time to update his code to get the reports working again. More discovered work.

With all of these found tasks and other issues, we moved the "Move Reports Button" feature to the next iteration and, at the end of the iteration, had to notify management we weren't able to get all of the planned features implemented. Customers expecting the feature also had to be notified.

Obviously, this iteration didn't go smoothly:

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:

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:

[Click image to view at full size]

Figure 1: Start of an online iteration planning meeting.

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:

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.

[Click image to view at full size]

Figure 2: Clarifying requirements.

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:

[Click image to view at full size]

Figure 3: New fields.

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:

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.

Terms of Service | Privacy Statement | Copyright © 2024 UBM Tech, All rights reserved.