Chapter 4
IN THIS CHAPTER
Planning each day
Tracking daily progress
Looking at team members’ daily roles
Developing and testing every day
Ending the day
It’s Tuesday, 9 a.m. Yesterday, you completed sprint planning, and the development team started work. For the rest of the sprint, you’ll be working cyclically, where each day follows the same pattern.
In this chapter, you find out how to use agile principles daily throughout each sprint. You see the work that you will do every day as part of a scrum team: planning and coordinating your day, tracking progress, creating and verifying usable functionality, inspecting and adapting, and identifying and dealing with impediments to your work. You see how the different scrum team members work together each day during the sprint to ensure transparency as they help create the product.
With agile product development, you make plans throughout the entire development effort — and on a daily basis. Agile development teams start each workday with a daily scrum meeting to evaluate their progress and adapt their plan for the day based on what was accomplished previously. They will identify and coordinate the resolution of impediments (roadblocks requiring scrum master involvement), note completed items, and synchronize and plan what each team member will do during the day to achieve the sprint goal.
The daily scrum is stage 5 on the Roadmap to Value. You can see how the sprint and the daily scrum fit into product development in Figure 4-1. Note how they both repeat.
In the daily scrum meeting, each development team member addresses the following four topics, which facilitate team coordination:
What was completed yesterday to help accomplish the sprint goal?
Avoid using the daily scrum as a status report by having each developer give an accounting of what they did the day before or by moving completed items around on the task board. Developers should update their task as soon as they complete it, or at the very least at the end of the day, so that when the scrum team comes together for their daily scrum the next day, the status is already reflected. In other words, don’t spend time on what was accomplished yesterday unless it effects how to go about the work to be done today.
The scrum master also addresses these three statements regarding the team’s impediments:
What does the product owner do during the daily scrum? Listen. The product owner listens to see whether there is anything he or she can do to help the team accomplish their work more effectively. The product owner may provide clarification as needed, and might say something if he or she hears something that indicates that the development team is working on something outside the sprint goal. An engaged, decisive product owner makes life easier for a development team.
One of the rules of scrum is that the daily scrum meeting should last 15 minutes or less. Longer meetings eat into the development team’s day. Standing encourages shorter meetings (which is why the meeting is referred to also as the daily standup). You can also use props to keep daily scrum meetings quick.
Daily scrum meetings are for coordination, not problem-solving. The development team and the scrum master are responsible for having relevant discussions of the tasks they’re working on and removing roadblocks during the day.
To keep meetings from drifting into problem-solving sessions, scrum teams can
Daily scrum meetings are effective for keeping the development team focused on the right tasks for any given day. Because the development team members are accountable for their work in front of their peers, they are less likely to stray from their daily commitments. Daily scrum meetings also help ensure that the scrum master and development team can deal with roadblocks immediately. These meetings are so useful that even organizations that are not using any other agile techniques sometimes adopt daily scrums.
The daily scrum is for discussing progress and planning each upcoming day. As you see next, you also track progress — not just discuss it — every day.
You also need to track the progress of your sprint daily. This section discusses ways to keep track of the tasks in your sprint.
Two tools for tracking progress are the sprint backlog and a task board. Both the sprint backlog and the task board enable the scrum team to show the sprint’s progress to anyone at any given time.
During sprint planning, you concentrate on adding user stories and tasks to the sprint backlog. During the sprint itself, you update the sprint backlog daily, tracking progress of the development team’s tasks for each working day. Figure 4-2 shows the sprint backlog for this book’s sample application, the XYZ Bank’s mobile banking application, as it would appear after day 4 of the first sprint. (Chapter 3 in Book 4 discusses details of the sprint backlog.)
Near the top left of Figure 4-2, note the sprint burndown chart, which shows the progress that the development team is making. You can see that the development team members have completed tasks close to the even burn rate of their available hours, and the product owner has accepted several user stories as complete.
You can include burndown charts on your sprint backlog and on your product backlog. (This chapter concentrates on the sprint backlog.) Figure 4-3 shows the burndown chart in detail.
A burndown chart is a powerful tool for visualizing progress and the work remaining. The chart shows the following:
Some sprint burndown charts, like the one in Figure 4-3, also show the outstanding story points on a second vertical axis that is plotted against the same horizontal time axis as hours of work remaining.
Figure 4-4 shows samples of burndown charts for sprints in different situations. Looking at these charts, you can tell how the work is progressing:
Not participating: A straight line in a burndown means that the team didn’t update the burndown or made zero progress that day. Either case is a red flag for future problems.
Just like on a heartbeat graph, a horizontal straight line on a sprint burndown chart is never a good thing.
Another way to keep track of your sprint is by using a task board. Read on to find out how to create and use one.
Although the sprint backlog is a great way to track and show development progress, it’s probably in an electronic format, so it might not be immediately accessible to anyone who wants to see it. Some scrum development teams use a task board along with their sprint backlog. A task board provides a quick, easy view of the items in the sprint that the development team is working on and has completed.
You can’t deny the status a task board shows. Like the product roadmap, the task board can be made up of sticky notes on a whiteboard. The task board will have at least the following four columns, from left to right:
Because the task board is tactile — people physically move a user story card through its completion — it can engage the development team more than an electronic document ever could. The task board encourages thought and action just by existing in the scrum team’s work area, where everyone can see the board.
Figure 4-5 shows a typical task board. As you can see, the task board is a strong visual representation of the work in progress.
In Figure 4-5, the task board shows four user stories, each separated by a horizontal line called swim lanes. The first user story is done. All tasks are completed, and the product owner has accepted the work done. For the second user story, the development work is completed but is waiting for acceptance by the product owner. The third user story is in progress, and the fourth user story has not yet been started. At a glance, the status of each user story is clear not only to the scrum team, making tactical coordination faster and easier, but also to interested stakeholders.
Agile product development day-to-day work involves more than just planning and tracking progress. In the next section, you see what most of your day’s work will include, whether you’re a member of the development team, a product owner, or a scrum master.
Each member of a scrum team has specific daily roles and responsibilities during the sprint. The day’s focus for the development team is producing valuable shippable functionality. For the product owner, the focus is on preparing the product backlog for future sprints while supporting the development team’s execution of the sprint backlog with real-time clarifications. The scrum master is the agile coach and maximizes the development team’s productivity by removing roadblocks and protecting the development team from external distractions.
Following are descriptions of the responsibilities of each member of the product team during the sprint. In the later section “Creating Shippable Functionality,” you see how the product owner and development team work together to create the product.
A successful product owner focuses on ensuring that the development team has everything they need to keep the development speed (velocity) high. The product owner works to understand the problems and needs of customers by meeting with them frequently. Product owners shield the development team from competing priorities, allowing them to focus on the sprint goal. By sitting with the rest of the scrum team, the product owner can provide instant feedback as work is completed, enabling the development team to turn requirements into valuable working functionality.
The product owner has the following responsibilities during a typical day in a sprint:
Successful development team members have pride in their work. They build high-quality, enduring products. They engineer their work for change, realizing refactoring is necessary and expected as more is learned. They sit next to their teammates and perform tasks, even unfamiliar tasks, to expand their capabilities and contributions to their team. They excel in their particular discipline and look to expand their capability each day.
If you’re a member of the development team, you
Successful scrum masters are both coaches and facilitators. They coach the team to improved performance and facilitate team interactions to help the team reach decisions quickly. They inspire, lead, challenge, and serve. Because they also sit with the team, each day they look for opportunities to serve their team members by removing impediments, by coaching the broader organization to better work with the team, and by making sure the organization’s environment enables success. After low-hanging-fruit team improvements are made, a scrum master’s job only gets harder as he or she works to remove more difficult organizational impediments affecting the team. The scrum master is the process owner in the scrum framework.
If you’re a scrum master, you do the following during a typical day:
Build relationships to foster close cooperation with people working with the scrum team. Build clout and champion agility throughout the organization.
Nonverbal communication says a lot. Scrum masters can benefit from understanding body language to identify unspoken tensions in the scrum team.
As members of the product team, successful stakeholders know how to work with the product owner to ensure product success. They counsel, collaborate, and listen. They give feedback and support. In flat, agile organizations, stakeholders empower, coach, and serve the scrum team rather than direct their activities from the outside or top-down. Each day, they participate in team discussions when asked but otherwise reserve their feedback for sprint review discussions.
If you’re a product stakeholder, you do the following during a typical day:
For teams new to agile techniques, agile mentors are critical sounding boards for the team. They challenge the team’s thinking, helping to create healthy tension. Similar to scrum masters, they coach, challenge, and serve. They teach them to find answers themselves (rather than just give them the answers). The team understands that they’ll get honesty and candor from the agile mentor. Agile mentors work to become redundant, transitioning their experience and expertise to the scrum master. Agile mentors participate daily in whatever way the team needs them.
Strategically, agile mentors engage with the organization’s leaders to help maximize the value created by the teams. The scrum team’s maximum pace is determined by the environment in which they’re working. Agile mentors help leaders improve the environment according to agile values and principles.
If you’re an agile mentor, you do the following during a typical day:
The objective of the day-to-day work of a sprint is to create shippable functionality for the product in a form that can be delivered to a customer or user.
Within the context of a single sprint, a product increment or shippable functionality means that a work product has been developed, integrated, tested, and documented according to the definition of done and is deemed ready to release. The development team may or may not release the increment at the end of the sprint because release timing depends on the release plan. The release plan may require multiple sprints before the product contains the set of minimum marketable features necessary to justify a market release.
To create shippable functionality, the development team and the product owner are involved in three major activities:
During the sprint, any or all of these activities can be happening at any given time. As you review them in detail, note that they don’t always occur in a linear way.
With agile product development, elaboration is the process of determining the details of a product feature. Whenever the development team tackles a new user story, elaboration ensures that any unanswered questions about a user story are answered so that the process of development can proceed.
The product owner works with the development team to elaborate user stories, but the development team should have the final say on design decisions. The product owner should be available for consultation if the development team needs further clarification on requirements throughout the day.
During product development, most of the activity naturally falls to the development team. The product owner continues to work with the development team on an as-needed basis to provide clarification and to approve developed functionality.
The scrum master should also sit with the development team. He or she focuses on protecting the development team from outside disruptions and removing impediments that the development team encounters.
To sustain agile practices during development, be sure to implement the following development practices from extreme programming:
Verifying the work done in a sprint has three parts: automated testing, peer review, and product owner review.
Automated testing means using a computer program to do the majority of your testing for you. With automated testing, the development team can quickly develop and test the product, which is a big benefit for improved team agility.
Often, agile teams develop during the day, with regression test automation and security vulnerability scanning run on a nightly or weekly cycle. After the cycle completes, the team can review the defect report that the testing program generated, report on any problems during the daily scrum, and correct those issues immediately during the day.
Software automated testing can include the following:
Peer review and pair programming are techniques teams use to build product increments. Peer review simply means that development team members review one another’s work. Pair programming means that two people work together, with one person driving (the pilot) and one observing from behind (the navigator). Both practices improve product quality, build or expand team member capability, and reduce single-point-of-failure exposure.
A newer trend gaining momentum is mob programming. Mob programming is an approach for product development in which the entire team works on the same thing, at the same time, in the same space, and at the same computer. The entire team continuously collaborates at a single computer to deliver a single work item at a time. Customers are often invited to participate with the team as well. Mob programming extends the benefits of pair programming from two people to the entire team.
Benefits of mob programming include a broader technical understanding of the product, a faster resolution of communication and decision-making problems, preventing the need to do more than is barely sufficient, reduced technical debt, reduced thrashing of the team and team members, and reduced work in progress.
However the team chooses to review each other’s work, collocation helps make the review easy and informal — you can turn to the person next to you and ask him or her to take a quick look at what you just completed. Self-managing teams should decide what works best for them.
When a user story has been developed and tested, the development team moves the stories to the Accept column on the task board discussed earlier in this chapter. The product owner then reviews the functionality and verifies that it meets the goals of the user story, per the user story’s acceptance criteria. The product owner verifies (accepts or rejects) user stories throughout each day as the development team completes them.
As discussed in Chapter 3 of Book 4, the back side of each user story card has verification steps. These steps allow the product owner to review and confirm that the code works and supports the user story. Figure 4-6 shows a sample user story card’s verification steps.
Finally, the product owner should run through some checks to verify that the user story in question meets the definition of done. When a user story meets its acceptance criteria as well as the definition of done, the product owner updates the task board by moving the user story from the Accept column to the Done column.
While the product owner and the development team are working together to create shippable functionality for the product, the scrum master helps the scrum team to identify and clear roadblocks that appear along the way, as you find out in the next section.
A major part of the scrum master’s role is managing and helping resolve roadblocks that the scrum team identifies. Roadblocks are anything that thwarts a team member from working to full capacity.
Examples of roadblocks include the following:
Beyond the primary focus of creating shippable functionality, other things happen during the day. Many of these tasks fall to the scrum master. Table 4-1 shows potential roadblocks and the action that the scrum master can take to remove the impediments.
TABLE 4-1 Common Roadblocks and Solutions
Roadblock |
Action |
The development team needs simulation software for a range of mobile devices so that it can test the user interface and functionality. |
Do some research to estimate the cost of the software, prepare a summary with the product owner, and have a discussion about funding. Process the purchase through procurement, and deliver the software to the development team. |
Management wants to borrow a development team member to write a couple of reports. All your development team members are fully occupied. |
Tell the requesting manager that the person is not available and probably will not be for the duration of the sprint. Recommend that the requester discuss the need with the product owner so he or she can prioritize it against the rest of the product backlog. As you’re likely a problem solver, you may want to suggest alternative ways in which the manager could get what he or she needs. |
A development team member can’t move forward on a user story because he or she does not fully understand the story. The product owner is out of the office for the day on a personal emergency. |
Work with the development team member to determine whether any work can happen around this user story while waiting for an answer. Help locate another person (stakeholder, customer, or subject matter expert) who could answer the question. Failing that, ask the development team to review upcoming tasks (not related to this stopped one) and move things around to keep progressing. |
A user story has grown in complexity and now appears to be too large for the sprint length. |
Have the development team work with the product owner to break the decompose user story down so that some demonstrable value can be completed in the current sprint and the rest can be put back into the product backlog. The goal is to ensure that the sprint ends with completed user stories, even smaller ones, rather than incomplete user stories. |
Each day, the team uses information radiators to broadcast important information to not only themselves but also to stakeholders. An information radiator is a poster, task board, list, or any artifact that can be viewed on-demand. Information radiators such as a sprint backlog or a task board reduce questions such as “What’s the status of a story?” or “Is the team on track to meet the sprint goal?” Most information radiators are posted in the team’s physical workspace or, if the team is collaborating with other teams, in a common collaboration or meeting area. If teams are using digital collaboration tools, these information radiators are clearly made transparent through obvious links and easy access.
Information radiators that teams find helpful include the following:
At the end of each day, the development team reports on the progress of tasks by updating the sprint backlog with which tasks were completed and how much work, in hours, remains to be done on new tasks started. Depending on the tool that the scrum team uses for tracking progress, the sprint backlog data may automatically update the sprint burndown chart as well.
The product owner should also update the task board at least at the end of the day, and move any user stories that have passed review to the Done column.
The scrum master should review the sprint backlog or task board for any risks or impediments before the next day’s daily scrum.
The scrum team follows this daily cycle until the end of the sprint, when it will be time to step back, inspect, and adapt at the sprint review and the sprint retrospective meetings.