Chapter 6. Grooming and Planning


Learning Objectives

• Understand the elements of a product backlog and what traits lead to the strongest deliverables

• Dive into prioritization and learn different methods for understanding what is the most important feature or item to work on

• Explore estimation and the different practices and measures that are used today

• Understand story points and planning poker as ways to discern the level of effort and complexity of the user stories/requirements

• Learn the other inputs that affect the planning process, such as team velocity, definition of “done,” technical debt, and bugs/defects

• Evaluate Sprint planning and the XP planning game to learn how commitments are made and work is planned

• See how maintenance work can be incorporated into Agile teams

• Review the triple constraints model and how it is handled within the Agile framework


As the development process progresses, the requirements/user stories are groomed into functional input for the development teams. The priority of the user stories and the estimates of their size are important factors when the development team is considering their commitment to the work. This chapter presents a variety of strategies for grooming the stories. Once the grooming is complete, the sprint planning begins, incorporating the velocity of the team, the definition of “done,” the amount of technical debt, and more. Finally, we explore the theory of triple constraints (scope versus time versus resources) and how the management of these can affect the development process.

Product Backlog (Scrum and XP)

The full list of desired features, or user stories, are captured in what Scrum and XP call a “backlog.” The highest-priority stories reside at the top of the backlog and are in the lowest level of detail. As mentioned in Chapter 5, “A New Way to Collect and Document Requirements,” stories that are deeper in the backlog, meaning they will not be worked on for some time, will likely be in epic form, which is perfectly acceptable.

Backlogs vary in their depth, breadth, and quality. Jeff Sutherland (2011), one of the signers of the Agile Manifesto, pleads for technical excellence in the quality of the product backlog, citing it as one of the areas of improvement for Agile teams.

Mike Cohn provides sound guidance on how to improve backlog quality using the acronym DEEP, which stands for Detailed appropriately, Estimated, Emergent, and Prioritized (Cohn 2010, p. 253).

Detailed appropriately means that the highest-priority stories contain sufficient detail for the development teams to deliver them: Questions are answered, and the necessary clarifications are included in the story description. Acceptance criteria, as described in Chapter 5, are a component of the essential detail for the story.

Estimated means that the team understands the stories and believes there is adequate information to estimate the level of effort or amount of time required to deliver the story. We explore estimating thoroughly in this chapter.

Emergent refers to the backlog’s constant evolution: As new information is learned about the marketplace, a competitor, or a technological advancement, the backlog is modified, reprioritized, or clarified.

Prioritized means exactly that—the user stories are in priority order, with the highest-priority items that will deliver the most business value at the top of the backlog for immediate development. We also cover the prioritization process in this chapter.

Where the product backlog is housed will vary from company to company. Some firms, typically with smaller teams that are all colocated, may have a physical backlog with sticky notes hanging on the wall in priority order (see Figure 6.1). As collaboration between the business, product owner, and development team affects the priority, the sticky notes are simply rearranged.

Image

Figure 6.1 Backlog in stickies

Some companies, particularly those with virtual or remote team members, will opt to house their product backlog in a tool such as Jira Agile (see Figure 6.2), Rally, or numerous other online options.

Image

Source: Used with permission from Atlassian (Jira Agile).

Figure 6.2 Backlog in Jira Agile tool

Feature-Driven Development (FDD)

Feature-driven development (FDD) takes a different approach to the concept of requirements. As you may recall from Chapter 4, “Describing the Different Roles,” FDD breaks down the development team differently and does not adopt the idea of collective development, where a single team is working together in the code to deliver a feature. FDD works with the concept of “classes” that must be integrated to deliver the full feature set. To manage requirements, FDD breaks the features down into a hierarchy of three levels. The highest level is the problem domain or the subject area, which is then broken down into the business activities, and then the individual features are assigned to a business activity. This is a more model-driven approach, referred to as the “plan by feature” process, and allows FDD to support large projects and teams (De Luca 2003).

Prioritization of Stories

As the P in the DEEP acronym, product backlog requirements/stories must be prioritized. There are a number of tools and methods to assist with this activity.

Prioritization Based on Value

We first discussed the concept of prioritization based on business value in Chapter 4. Targets such as increased revenue, decreased costs, and improved customer service can be the high-level objectives, but now we dive a bit deeper into the value equation. There is more to the concept of value beyond just the benefits that we have previously discussed; there can also be negative impacts associated with failing to take action. If your competitors have a distinct advantage over you, then there are real penalties for not offering a competitive feature set. Let’s consider Cayman Design and our weather application. If our weather app offers weather only in the United States but many of our executive business travelers (like the Sam persona from Chapter 5) are traveling to the UK and Mexico and our competitor offers those locations, we may risk losing customers like Sam if we do not respond with a comparable feature set. Sometimes value is driven by proactively going after new markets and new opportunities. Other times, value is derived from a more defensive or reactive posture when we are simply matching the features of our competitors.

Value must also be supported by a positive return on investment (ROI), so the cost to deliver a desired feature must be considered. If there is no way to recoup your investment because the cost of delivering the feature is so high, then the value deteriorates and the feature should be deprioritized. For example, data format for weather information in Iceland is not compatible with our application and would require a significant amount of code to convert it to a usable format. The cost of the data conversion compared with the revenue potential for adding Iceland data reveals that this would not be a wise undertaking and would cost far more than it is worth. Therefore, a user story requesting Iceland data should be removed from the backlog with the explanation for the decision.

Lastly, there is a consideration of the risks associated with the feature development: If this feature might jeopardize the stability of the application, then its value is diminished. You can see that value is not a simple equation and that many factors—revenue, cost, risk, and penalties—must be considered.

Value Stream Mapping

Value stream mapping is another concept transferred from Lean manufacturing to software development. The mapping exercise is designed to remove waste from the product development cycle. The mapping begins and ends with customer activity, and the entire process is viewed from the customer’s perspective; this allows organizations to find breakpoints or bottlenecks in their process, where the customer experience is less than optimal. Sometimes this happens because the organizational processes get in the way. For example, have you ever talked to a customer service representative about a billing question and then wanted to change your mailing address, only to be told that the person you are talking to cannot handle that additional transaction? This happens when a company has developed organizational silos without regard to the customer impacts of those silos. The concept of value stream mapping is to flow all of the transactions from the eyes of the consumers to ensure that their experience is seamless and optimized.

Because Lean emphasizes eliminating waste and delivering the most value in the least amount of time, mapping the value stream from the customer’s perspective can help with prioritization activities to ensure we are satisfying a meaningful customer need in a way that adds value to the organization.

MoSCoW

Another method of prioritization that we introduced in Chapter 5 is the MoSCoW method favored by Dynamic Systems Development Method (DSDM 2011). Under this method, the “must haves” would clearly take priority over the “should haves,” and so on. Here again are the elements of MoSCoW:

Must have: All features classified in this group must be implemented, and if they are not delivered, the system would simply not work.

Should have: Features of this priority are important but can be omitted if time or resources constraints appear.

Could have: These features enhance the system with greater functionality, but the timeliness of their delivery is not critical.

Want to have: These features serve only a limited group of users and do not drive the same amount of business value as the preceding items.

Using Cayman Design as our example, we want to produce our weather-related calendars for purchase to create a new revenue stream. For this product, we have certain priorities with respect to the payment processing portion.

Must have: Ability to accept MasterCard and Visa

Should have: Add American Express and Discover

Could have: Add ACH payments for transactions directly through banking institutions

Want to have: Add gift cards

As you can see, if we cannot accept MasterCard and Visa, then our offering is not viable; therefore, that requirement is a “must have.” Adding American Express and Discover is important to our success, so they should be added as quickly as time allows; hence they fall into the “should have” category. Accepting ACH payments will broaden the appeal of our product but it does not have to be delivered early in the project, so that is a “could have.” Adding gift cards will serve only a limited audience, so that would fall into the “want to have” category.

Kano Model

The Kano model was introduced in 1984 by Noriaki Kano and was created to help companies learn how to build better products to “delight” the customers.

The model assists with the prioritization process because it breaks down features into three categories. The first is basic needs, which are sometimes referred to as satisfiers/dissatisfiers. These are the features that must be there for the product to work, in the eyes of the customer: The functionality is expected, and if it is not included, it causes great dissatisfaction. After a consumer’s basic needs are met, then there are performance needs, which add necessary functionality to enhance the user experience. The final category, which results in true product differentiation, consists of features that delight or excite users, and they are an unexpected bonus from the consumer’s viewpoint. The challenge when it comes to prioritization is to focus on enough of the basic needs, performance needs, and delighters to deliver a compelling product to the marketplace. If you have a product with only delighters but no basic needs, then you might have something really innovative that does not work. Conversely, if you have something that satisfies every basic need but does not delight, then customers may not be compelled to buy it because it does not offer anything special or different from the competition.

Another aspect of the Kano model that is critical to understand is the evolution of the feature categorization: Over time, delighters will become performance needs, and performance needs will become basic needs. To illustrate this concept, think of the first iPad that you experienced. It had a number of features that delighted: The touchscreen with the swiping capabilities was awe inspiring when first encountered, but now if we see a tablet that is not a touchscreen, it is completely dissatisfying. The delighters have become basic needs as the competition has evolved and the technology has advanced. Therefore, companies must continue to prioritize delighter features if they want to remain innovative.


Review 1

At this point, the reader should be able to answer Review Questions 1–5.


Estimating

In addition to effective prioritization, grooming and planning sessions require sound estimates for how long the work is likely to take. There are a number of different ways to come up with the estimates, just as there are many different ways to prioritize the feature requests.

Level of Effort (LOE) or T-Shirt Sizing

Perhaps the least precise but easiest method of estimating goes by one of the following names: “T-shirt size,” “level of effort” (LOE), or “small, medium, large.” The last title is the most descriptive because the development team just estimates each story as small, medium, or large; teams may add extra-small and extra-large, depending on what they have decided as their measure. The advantages of this approach are that it is very simple and can be done quickly; the disadvantages include a lack of precision and an inability to add up several stories into a meaningful measure. For example, it is hard to say “our team can work on two smalls and one medium at a time.” For these reasons, teams often use this form of estimating early in the process and refine it later.

Ideal Time (Days or Hours)

In this form of estimating, the developer determines the amount of time that a task would take under ideal circumstances—meaning no interruptions, no meetings, and no phone calls—and that is set as the ideal time. This is an easier metric for developers to assign than actual clock time because it is difficult for them to factor in all of the possible interruptions that might occur. Each organization will have some factor that is applied to convert ideal time to clock time; a ratio of 2 to 1 is fairly common, meaning that within every hour, 40 minutes are spent on concentrated work, with the other 20 minutes consumed by interruptions or breaks (Jones 2007, p. 141).

Ideal time is a useful metric because it is relatively easy for a developer to estimate, provided that the requirements/user stories are well defined and thorough.

Hours

“Hours” are simply the number of hours that the development team estimates will be required to complete the user story. This is an accurate way to measure because there is only one definition for an hour—60 minutes—so there is no room for misinterpretation. The disadvantage to using hours at this stage is that the team might be lacking information to make such a precise estimate. Because hours are so defined, there is a greater risk of executives and stakeholders placing inappropriate expectations on the team to deliver exactly in the estimated time frame.

Story Points

In Scrum, many teams use the concept of “story points,” which are an arbitrary measure that allows the teams to understand the size of the effort without the potentially binding expectations that come with hours.

Fibonacci Sequence

When estimating in story points, many teams use the Fibonacci sequence, a mathematical tool defined in the thirteenth century for rational approximations. The sequence is the sum of the prior two numbers: 1, 2, 3, 5, 8, 13, 21; as you can see, 1 + 2 = 3, 2 + 3 = 5, 3 + 5 = 8, and so on. The Fibonacci sequence is helpful for Agile estimating because as the points get higher, the degree of uncertainty is increasing. For the purposes of Agile estimating, the sequence has been modified to account for the needs of software development. Some teams have added a ½ for the user stories that are so small in effort they really do not need estimating. Also, many teams replace the 21 with 20 and add 40 and 100; the idea is that if a story is estimated at greater than 13 story points, there is a good chance that it is still an epic and needs to be broken down. The difference between a 20, 40, or 100 is just a sense for the size of the epic.

There are a couple of other considerations on either side of the spectrum. First, some teams add a 0 (zero) to their Fibonacci sequence, but one might question why a story with zero points or no level of effort is even in the mix. Some teams use this as a placeholder to remind them of an activity that another team must complete; a dependency (Cohn 2005, p. 53). For example, this task requires no effort on the part of Scrum team A but needs to be delivered by Scrum team B before Scrum team A can complete its work; therefore, it sits in Scrum team A’s backlog with zero points.

Some teams add 200, 500, and/or infinity (∞). The reason for these additions is that people (typically management or stakeholders) are used to comparing things as though they relate, which is not always the case. For example, the team estimates an activity at 100 points because it is an epic and they do not have enough information to make a more precise assessment. As that feature is better understood and broken down, it is eventually delivered in five months. Some members of the management team might now equate a 100-point story with a five-month delivery cycle, which is not true at all. The next 100-point story—which is equally epic and lacking in information—may take twice as long to deliver, so there is no relative comparison. To eliminate the opportunity to compare, some teams have started using infinity to represent “not enough information.”

One additional thing to keep in mind is that unlike hours, which have a fixed and commonly understood definition, story points are more abstract and negotiable. One team may assign 3 points to a story where that same story on another team would have been a 2 or a 5. As long as everyone on the team agrees to the size of a story point, then all of the estimating will be coherent.

The easiest way for a team to get started using story points is through relative sizing; this involves identifying a task that everyone is familiar with and assigning a point value to it. Let’s say that adding a field to the database happens frequently, so everyone is aware of the effort and time required. The team assigns that activity as 5 story points, and then every subsequent story is compared to that one. Is this activity bigger or smaller than adding a field to the database? If it is bigger, then it could be an 8 or a 13; if it is smaller, it could be a 2 or a 3. Starting with something relative provides a benchmark for new teams. It is also worth noting that the testing activities should be included in the story point estimation. If an action is easy to develop but challenging to test, then it should receive a higher estimate because designing, coding, and testing are all part of completing a story.

Team Participation

How does an Agile team actually execute on the estimation process? In all instances, we are looking for participation from the developers and testers because we want to benefit from the wisdom of self-organizing teams. Outlined next are several strategies that teams have used to come to consensus on estimation.

Planning Poker

Having the development team participate in the activity of estimating can have distinct advantages over asking a single developer to size a feature. If the team is using story points, as just outlined, one of the fun and effective ways to increase engagement is through a game called “planning poker.” Each team member is given a set of number cards with the modified Fibonacci sequence—1, 2, 3, 5, 8, 13, 20, 40, 100. Sometimes teams use a regular deck of cards, using aces for 1 and the face cards for the larger numbers. After the product owner and the team have discussed the user story in detail and everyone believes they have an adequate understanding, the Scrum master or coach will call for each team member to lay down the card representing the number of story points that he or she assigns to this user story. Many Scrum masters ask all team members to “throw” at the same time so that no one can be influenced by their teammates.

In addition to an estimated size, we are looking to see if there is a discrepancy. If a user story is discussed and one team member throws a 2 but another throws a 13, then there is a difference that needs to be discussed. It does not mean that one person is right and the other is wrong; this actually identifies a lack of common understanding as it relates to the user story. Just like all of the other opportunities within Agile for collaboration and discussion, this discrepancy should be explored. Why did the developer who threw the 13 think that this task was so big? Is there a point of interconnection that the other developer (who threw the 2) was not thinking of? Did they just understand the request differently? Or has the low estimator done something like this before, so he or she is very confident in that assessment? Again, the value is in the dialogue, so everyone can come to a common understanding of the request and what it will take to fulfill it. The result could be that the team agrees on a 2 or a 13 or on a number in between. The point of the exercise is to facilitate collaboration and negotiation so the team is clear on the desired feature and confident in their ability to deliver.

If you have a distributed team so not all team members are in one location, there are tools such as http://www.planningpoker.com/ that allow you to have the same poker game over the Internet.

Wide-Band Delphi

The Delphi method takes the same approach as planning poker but addresses the estimating in a more structured and formal way. A facilitator calls a meeting of the experts and a feature request is discussed. Each expert participant then completes an anonymous estimation form and submits it to the facilitator. The facilitator compiles the responses and redistributes them to the experts—continuing to maintain the anonymity of the respondents. Based on the new inputs, the expert team discusses the feature request again, clarifies any incorrect assumptions, gains a better understanding of the feature, and submits new estimation forms to the facilitator. This process is repeated until the estimations are an agreed-upon value. Although there is more effort to the Delphi method, it may produce more accurate results because of the anonymity of the respondents, which prevents a strong personality from swaying the group. The disadvantages are that it is time-consuming, and the experts are not required to reveal their biases to the group (Wu 1997, sec. 2).

Crystal Family

The Crystal Family software methodology calls for three distinct phases of estimates. Early on, in the proposal stage, the developers review the initial requirements and work breakdown to provide an estimate of the work. The project then moves into the exploration phase, where many more details are gathered and as a result of the new information, the estimates are refined. Finally, the team moves into the planning meeting, where each element is broken down into a discrete task and assigned to a developer. The developer has the opportunity to update the estimate at that time (Cockburn 2004).

We discuss more about planning meetings later in the chapter.

Extreme Programming (XP)

Within XP, it is critical that the developers are the ones making the estimates and no one else; they are also the only ones who can make changes to estimates. The goal is to instill a degree of responsibility or ownership of the estimates to the developers. The XP process also provides a feedback loop for the actual time required, so developers can continue to improve their estimates over time (Beck 2000).

Lean

Within Lean, since the concept of reducing waste is so important, it favors waiting until the feature is nearly ready to be worked on before completing an estimation. If you have a full feature list that contains requests with the associated details and estimates that are so far down in the queue that it is highly unlikely they will ever be completed, you run the risk of creating inaccurate expectations, and you are increasing the amount of waste in the process. “Investing time estimating projects that will never get done is also a waste” (Poppendieck and Poppendieck 2006, p. 57).

Scrum: Product Backlog Grooming

The activities of prioritization and estimation often take place in a session called product backlog grooming. This is typically a meeting between the product owner and the Scrum master/coach and may include the entire development team. The grooming session is also used to clarify and improve on the user stories; this could include identifying and breaking down requirements that are too big (epics), improving poorly written stories, and adding acceptance criteria. Once the participants have a clear understanding of the features/stories, they can discuss the prioritization of those stories and add the estimates.

The goal of the grooming session is to leave the meeting with good, solid user stories that are prioritized, discussed, well understood, negotiated, and agreed upon so that the next few action items (described next) can take place to ensure a successful sprint.

The product owner is responsible for leading the grooming session. Good product owners value the dialogue between the participants and recognize the benefits of the diverse backgrounds and perspectives of the group (Rubin 2012).

Additional Inputs

Once the backlog grooming is complete and the team understands the highest-priority user stories in sufficient detail, the next meeting or ceremony in the Scrum methodology is Sprint planning. Before we can effectively execute on that meeting, several additional data points must be collected and understood.

Team Velocity

Within Agile, as teams spend time together and work through a few sprints, they start to get a sense for their “velocity”: This is the amount of work that the team can usually deliver within the time frame of a sprint or iteration and can be used as a predictor for future iterations. Story points are the most common units of measure for velocity, though hours could be used if the team was estimating in hours. It would be challenging to calculate velocity for a team estimating in t-shirt sizes (or small/medium/large) because the estimates cannot be mathematically summed.

When a team first comes together, it is difficult to estimate their velocity because they have not yet experienced an iteration as a team. The first few iterations are usually more guesswork than precision, and that is fine because it provides the opportunity to inspect and adapt. Once the team is established and finds their rhythm, velocity is a great tool to use when establishing their commitment for future iterations.

Nevertheless, a few factors can disrupt velocity. If the team members are not dedicated to the team full-time, for example, it is hard to predict their availability to work on the next iteration; their other responsibilities could consume 20% or 50% or 80% of their available time, so it is difficult to count on their contributions. Similarly, if the team members change frequently, it is difficult for the team to find their rhythm—if Bill is part of the team and then removed and then put back on the team, it is hard for the other team members to depend on his deliverables.

Another negative impact on velocity is modifying the length of the sprint: If the team works on a two-week sprint, then a one-week sprint, then a two-week sprint again, it becomes difficult to gauge their capacity over a specified time period. Ideally, you want a team to work together for several iterations of consistent duration; then you will have the data you need to calculate the team’s velocity for planning purposes.

Personnel considerations for things such as vacation and training are yet another dynamic that will affect velocity. If a team will have two members on vacation for half of their iteration, then clearly they should not commit to the same level of work as if everyone were present. Although this might sound obvious, when a team experiences a dip in velocity, it tends to raise questions: Why was team A progressing at a velocity of 30 points per sprint for four iterations and then suddenly dropped to 20 points for the most recent sprint? Rather than raising alarms that something is amiss on the team, the best place to start is to simply look at team member availability.

Other elements that affect velocity could be external to the team, such as the stability of the infrastructure. If the development team is continually called upon to fix production problems, then they will have less time to spend writing new code. As we discussed in Chapter 2, “Organizational Culture Considerations with Agile,” if the executive team and/or stakeholders are not committed to the sacredness of the sprint and repeatedly introduce new changes, then calculating the team’s velocity can be very challenging.

There is no defined number of sprints that must be completed in order to calculate velocity; it is an ongoing, evolving measurement to be used as an input for the planning process.

Velocity should not be used as a management metric because it is based on story points, which are an arbitrary unit of measure defined by each individual team; teams with a higher velocity may not be more productive than others with lower velocity. In fact, management needs to be careful to avoid using velocity as an indicator of performance or productivity because it could lead to unhealthy behaviors on the team (Rubin 2012, p. 137). There are a few different ways to calculate velocity over time. Some teams simply average their totals for all of the sprints/iterations that they have worked on. Other teams, particularly those that are new to Scrum and are improving in their abilities, will use the concept of “yesterday’s weather,” therefore using only the last two to three sprints as indicators of their future capacity.

Extreme Programming also has the concept of velocity for planning purposes, but it allows for two types of planning: You can either set a date and determine how many stories can be implemented by that date, or define a specific scope and determine how long it will take to finish a defined set of stories. Either way, the team’s velocity is used to make the projections (Wells 1999).

Because Lean encompasses some of the manufacturing ideology, the developers are working with a pull scheduling system, where they “pull” in the right amount of work that can be completed in the time frame allowed. Once the team establishes their velocity, they will pull in only the amount of work that they can reasonably complete (Poppendieck and Poppendieck 2006, p. 70).

Definition of “Done”

Within several of the Agile methodologies, including Scrum, there is an element called the definition of “done.” This is a meaningful conversation that the development teams, product owner, and stakeholders need to have to ensure a common understanding of completion. When different people have a different definition of done, expectations will not be met and dissatisfaction can result. If this is difficult to conceptualize, just think of someone offering to clean up the break room. To that person, that might mean simply throwing away the trash, but someone else might define it as throwing out the trash, washing the dishes, wiping down the tables, and sweeping the floor. If the second person comes to inspect the work after the first person is “done,” he or she is going to have quite a different perspective regarding the completeness of the work.

The same is true on development teams. Does your team include code reviews in your definition of done? Does your product owner think that the team is going to update the release notes before a sprint is considered completed? These are important conversations to have to ensure that everyone is on the same page. Every new team should dedicate time to discussing and agreeing on their definition of done, which may or may not include elements such as code that is checked in and integrated and has automated tests (Cohn 2010, p. 259). When the definition of done is clear and well understood, then we ensure that the conclusion of every sprint will meet everyone’s expectations.

Extreme Programming handles the definition of done slightly differently: When a task is completed, it is crossed off of the board. To ensure that done means done, in XP, only the customer (not the developer) can cross off a task (Beck and Fowler 2001, p. 81); from Chapter 4 you will remember that the customer in XP is equivalent to the product owner in Scrum.

Incorporation of Technical Debt

One of the discussion points with regard to the product backlog is the inclusion of technical debt. With Agile, teams are moving very quickly, and sometimes to achieve the sprint goal within the time frame allotted, the team, either knowingly or unknowingly, creates technical debt.

There are many definitions of technical debt; in fact whole books have been written on this subject alone (see References and Further Reading for details), so we use a basic description here, for illustrative purposes. Technical debt was first discussed on the C2.com wiki page, and the definition created by Ward Cunningham is commonly used today: “Technical Debt includes those internal things that you choose not to do now, but which will impede future development if left undone. This includes deferred refactoring” (Cunningham 2012). Chapter 7, “Testing, Quality, and Integration,” provides much more information on refactoring.

There are two basic kinds of debt—unintended and intentional. Unintended technical debt is simply the consequences of the team’s learning curve. Perhaps they designed something poorly or did not test thoroughly enough, or the business was not 100% certain about the business requirements. No matter what the root cause, this type of debt is unintentional—no one meant to write bad code or be sloppy—and it happens as part of the continuous learning process that is essential to Agile.

Intentional technical debt is incurred as trade-offs are made in the development process. We may choose to incur technical debt for short-term, tactical reasons or long-term, strategic ones. Let’s consider some examples. Because our weather application for Cayman Design is going to be available with only information for the New York area in its first iteration, we are going to code the database lookups in a way that is quicker to deliver the initial release but will not be scalable once the data for the entire country is loaded. We decide that this is the best path, knowing that it will create technical debt, because it is the fastest way to release the initial version. It will allow us to research and learn more about the optimal database design once we better understand how users will interact with the application. Another example might be that Cayman Design is a cash-strapped start-up and can afford only certain hardware until we get revenue coming in, so we must code to those constraints. Again, we realize and accept that this creates technical debt that will have to be cleaned up once we are a thriving, profitable organization.

When we are ready to tackle technical debt, should it be included in the backlog of prioritized stories? Although there is some debate on this topic, most experts agree that it should. The technical teams may have to argue their case to the product owner to prioritize the efforts appropriately, and a good product owner should listen and understand the impact of allowing the debt to fester.

Bugs

Bugs, also referred to as defects, are different from technical debt in that they are usually errors in the writing or implementation of the code that are impeding the performance or usability of the application. In many companies, bugs are handled outside of the feature release (sprint) process because of their immediacy. Within organizations where bug fixes are resource intensive and can wait for the development cycle, bugs should also be included in the backlog and prioritized accordingly.


Review 2

At this point, the reader should be able to answer Review Questions 6–10.


Scrum: Sprint Planning

In Scrum, once we have the necessary inputs, we are ready for the Sprint planning meeting. In this meeting, we are going to decide exactly what we are going to work on during the sprint and we are going to plan for it—hence the name: Sprint planning.

Inputs

There are a number of inputs to the Sprint planning meeting, such as the following:

• Groomed and prioritized backlog

• Estimates for the highest-priority stories

• The velocity of the team

• Definition of done

• The schedule of the sprint—are there vacation days or a company holiday that will affect the amount of work we can commit to?

• Other inputs—are team members getting new monitors, is there an All-Hands meeting that everyone is required to attend?

Planning Session

The Sprint planning meeting has two distinct objectives. First, we want to make sure that everyone on the team has a complete understanding of the user stories. Team members may not all have attended the backlog grooming session, so it is important that everyone have the opportunity to ask questions and gain a clear understanding of the top-priority stories. The second objective is to allow the team to break the work down into individual tasks and determine who will own each piece of work. Let’s walk through this process step-by-step.

1. Once we understand the user stories, the team will decide how many stories can be committed to during this sprint. This is the sprint goal.

2. The team then breaks the user stories down into individual tasks.

3. Each team member selects the tasks that he or she is willing to own and complete.

4. The team member then estimates—in hours—how long it will take to complete each task.

Important things are happening in this small list that need to be discussed in greater detail. With item #2, user stories are broken down into tasks. Some teams skip this step and a single developer is responsible for the entire user story delivery. More frequently, each story will contain several distinct pieces—for example, there is an update to the user interface, a new database field, an update required for the API to add the new field, and so on. Each of those individual tasks can be owned by different developers depending on their level of expertise. Furthermore, in item #3, team members select the tasks that they will own, which creates an opportunity to cross-train or develop new skills, as we have discussed in previous chapters. One developer, for example, may be the expert on inventory but another may be interested in learning inventory; the second developer could pick up inventory tasks during the Sprint planning meeting. Then when they get to step #4, the team might add some time to their estimates of how long it will take to complete the inventory tasks because the second developer is less experienced and will need more time.

Another important outcome of the Sprint planning meeting is that story points are converted to actual hours and the hours are attributed to the tasks, not the stories. The thought is that story points are appropriate for stories in backlog grooming and hours are appropriate for tasks in Sprint planning because the level of detail is increasing and therefore the confidence in estimating is greater and can be more precise. For the teams that estimate in hours to begin with, this step is still important, because the original estimates may need to be modified now that the team knows more and the developer who will be doing the work is known.

Output

There are two primary outputs from the Sprint planning meeting. First is the Sprint goal, the user stories that are committed to for this sprint. Second is the Sprint backlog, which is the list of tasks and owners. The Sprint backlog is the team’s “to do” list for the sprint.

Chickens and Pigs

The Sprint planning meeting also demonstrates the role assignment for chickens and pigs, which was introduced in Chapter 4. In the first half of the Sprint planning meeting, when the user stories are being described and discussed, the product owner is absolutely a pig: He or she is deeply invested in the conversation and is committed to the positive outcome of the meeting. When the meeting shifts to the developers breaking down the stories into tasks and selecting their tasks, the product owner’s role shifts to that of a chicken: He or she is interested in the outcome of the conversation but the level of commitment has been reduced, since he or she will not be doing the actual work (coding and testing.)

Extreme Programming: XP Planning Game

XP has a ritual similar to the Scrum backlog grooming session and the Sprint planning meeting: the planning game. The planning game also consists of two parts: release planning, which is most similar to backlog grooming, and iteration planning, which is most similar to Sprint planning. Each meeting has three distinct phases—exploration, commitment, and steering. Table 6.1 compares the two aspects of the planning game side by side.

Image

Table 6.1 The XP Planning Game

It is important to note the participants in the different parts of the planning game. “Because customers have the most information about value—they’re most qualified to say what is important—they prioritize. Because programmers have the most information about costs—they’re most qualified to say how long it will take to implement a story—they estimate. Neither group creates the plan unilaterally. Instead, both groups come together, each with their areas of expertise, and play the planning game” (Shore 2010).

Maintenance of Legacy Code

In many organizations, the Agile teams are tasked with not only writing new code but also handling the maintenance of the legacy code base that is in production. Planning the amount of work that a team can commit to in an iteration may depend on the likelihood of maintenance work. Here are three examples of ways that teams have dealt with this issue.

Build Time into the Sprint

Perhaps the most common way that teams deal with unpredictable bugs and maintenance issues is to reserve some time for them within the sprint. For example, the team can handle 40 story points per sprint, but they commit to only 35 points so they will have some time available for the bugs that need immediate action. Bugs may account for more than the allotted 5 points in some sprints and less in others, but on the whole, the team learns their rhythm and builds in enough reserves to handle whatever may come up.

Assign a Team Resource to Maintenance

Rather than have every developer allocate time for maintenance work, some teams dedicate a resource to the unexpected. For example, if a team has five developers and two QA resources, one of the developers does not take tasks during sprint planning so he or she has no committed work as part of the sprint. This member participates in all of the meetings and in team activities and brainstorming, but his or her role is to work all of the unplanned activities that arise during the sprint, thus allowing the rest of the team to stay 100% focused on their sprint commitments.

Split into Two Teams

If you have a large team, another option is to split into two teams, one to handle the new development or enhancements and one to handle the bugs and maintenance. If the enhancement team uses Scrum, it is likely that the maintenance team will fare better with Kanban since their workflow is less predictable; Kanban is described in detail in Chapter 8, “Tracking and Reporting.” One consideration in this approach is rotating team members between the two teams so that everyone has the opportunity to grow and contribute. Cayman Design makes a practice of transferring two developers from the enhancement team to the maintenance team after each sizable release; that way the enhancement developers that have moved can teach the maintenance developers about the new features while they are working side by side. The two developers that move from the maintenance team to the enhancement team bring a keener insight into the issues that the users are running into in production so they can actually educate the enhancement team as well.

Triple Constraints

There is a long-held principle within the project management discipline that projects are made up of three variables: schedule/time, cost/resources, and scope/quality (see Figure 6.3). The theory is that you cannot adjust one without affecting the other two. If you shorten the schedule and say that a release is due one month earlier than planned, then you will also need to add resources or reduce the scope in order to meet the new desired date. Likewise, if you remove resources from a project, you will need to either extend the time frame to push out the delivery date or reduce the scope. Finally, if you add to the scope, then you will need to either extend the time frame or add resources. This model certainly helps with project management because it clearly depicts the trade-offs that must be made when a significant variable changes.

Image

Figure 6.3 Triple constraints

Agile looks at the theory of triple constraints slightly differently. First, there is a school of thought that scope and quality are, in fact, two very different things: A team could deliver the prescribed scope at lesser quality, or it could maintain acceptable quality standards with a reduced scope. As Wells (1999) explains, “The base philosophy of release planning is that a project may be quantified by four variables; scope, resources, time, and quality. Scope is how much is to be done. Resources are how many people are available. Time is when the project or release will be done. And quality is how good the software will be and how well tested it will be. No one can control all [four] variables. When you change one, you inadvertently cause another to change in response.”

It is important to understand the concept of the triple constraints when engaged in planning and grooming, because one must grasp that changing one variable will impact other variables and appropriate adjustments will be needed.

Another way to look at this in an Agile environment is to suggest that resources and time are fixed. The team size is five to nine people, so that cannot change. The date is fixed by the duration of the sprint, in many cases two weeks. Therefore, scope must be flexible to be able to be designed, coded, and tested within the confines of the sprint. By managing the size and priority of the stories in the backlog, you are effectively managing the scope while the time and resources are fixed.

Kanban

You may have noticed the absence of Kanban in this chapter, and that is deliberate. Kanban follows a different practice when it comes to planning and executing on an Agile work effort, which we tackle in Chapter 8. We call it out here, however, so that readers are aware that Kanban is an important methodology worthy of detailed discussion.


Review 3

At this point, the reader should be able to answer Review Questions 11–15.


Conclusion

Grooming and planning are critical activities within the Agile practice because they incorporate the values and principles that we aspire to regarding self-organizing teams, face-to-face collaboration, sustainable work environments, and frequent delivery of working software. If teams do not spend adequate time with backlog grooming and focus on ensuring that user stories/requirements are detailed appropriately, prioritized, and estimated, it is extremely difficult for the developers and testers to execute on their work. Likewise, if the sprint planning efforts are sloppy or undervalued, then the importance of delivering on the committed work is marginalized and teams will not excel. Agile provides a structured framework to facilitate important conversations about difficult work; through this framework, teams can elevate their performance and deliver real business value to customers and the organization.

Summary

• Agile teams need to groom the work and spend time and energy in planning cycles to ensure successful delivery of working software.

• The product backlog, which houses all of the requirements/user stories, should be DEEP—Detailed Appropriately, Estimated, Emergent, and Prioritized.

• Feature-driven development uses a technique called “plan by feature” to ensure that developers understand the feature categorization and priority.

• Prioritization by business value is common, and it is more than just proactive measures such as increased revenue or improved customer service. Sometimes priority is driven by reacting to the competition, evaluating the cost of an effort, and understanding the risk that a new feature might introduce to the technical environment.

• Value stream mapping is a useful exercise taken from the Lean principles, where an entire interaction is viewed through the eyes of the consumer to identify bottlenecks and inconsistencies.

• Using the DSDM method of prioritization called MoSCoW, we identify the Must haves, Should haves, Could haves, and Wants.

• The Kano model emphasizes that to be successful, products must fulfill basic needs and enhancement needs and delight end users. Over time, delighters can become basic needs, so ongoing innovation is important.

• Estimation can be done in t-shirt size, ideal time, hours, or story points, with story points being the most common in Agile. Estimations should always include testing.

• Most teams use the Fibonacci sequence for story points, which is a mathematical series where the first two numbers sum to the third: 1, 2, 3, 5, 8, 13, and so on. For most Agile teams, any story larger than 13 points is too big to fit in a single iteration.

• Planning poker is a game/tool used in Agile to estimate the size of efforts where team members play a card corresponding to their estimate. Differences are discussed and reconciled to ensure teams have a common understanding of the effort required to complete the story.

• Wide-band Delphi is a similar but much more formal and structured sizing exercise, in which estimates are submitted to a facilitator anonymously and discussed until reconciled.

• Product backlog grooming is a Scrum event where the team collaborates on the user stories. In this meeting, the product owner is a “pig” and clarifies the requirements.

• Other inputs to the product backlog grooming include the velocity of the team, the definition of “done,” and the incorporation of technical debt and bugs.

• Technical debt can be either intentional or unintended, and if not appropriately addressed, can jeopardize the long-term viability of the system.

• The Sprint planning meeting is another Scrum ceremony where the top user stories are committed to for the iteration, and the team breaks down stories into individual tasks.

• Tasks are selected by the team members, not assigned, which is a large shift from Waterfall practices and leads to higher developer engagement.

• Extreme Programming hosts a similar meeting called the planning game, where the “customer” sets the priority and the developers estimate the size of the effort.

• Many organizations must consider incorporating maintenance work on the platform and balancing it against the product development enhancements within an iteration.

• The triple constraint of time, resources, and scope is expanded in Agile to include quality, and teams must understand the trade-offs when adjustments are made to projects.


Review 4

At this point, the reader should be able to answer Review Questions 16–20.


Interview with Mike Cohn

Image

Mike Cohn ran his first Scrum project in 1995 and has been a vocal proponent of Scrum ever since. As an author and Scrum Alliance Certified Scrum Trainer, he had brought Agile and Scrum into the mainstream. His books include Agile Estimating and Planning, User Stories Applied for Agile Software Development, and Succeeding with Agile Software Development Using Scrum, as well as several books on Java and C++ database programming. Mike is a founding member of both the Agile Alliance and Scrum Alliance, Inc., where he currently serves as chairman of the board of directors. Through his leadership at Mountain Goat Software, a process and project management consultancy and training firm, he uses his 20-plus years of experience in a variety of environments to help companies adopt and improve their use of Agile processes and techniques in order to build extremely high-performance development organizations. He has worked with companies of all sizes including Bioware, Capital One, Electronic Arts, Google, High Moon Studios, Intuit, JDA Software, LexisNexis, Lockheed Martin, Microsoft, Nielsen Media Research, Pearson, Phillips Electronics, Sabre, Siemens, Sun Microsystems, Texas Instruments, Turner Broadcasting, Ultimate Software, and Yahoo!. He has also served as a technology executive in organizations of various sizes, from start-ups to Fortune 40 companies.

Kristin and Sondra: Backlog grooming—who should attend? How do you maximize the value of the meeting? Can it ever be fun?

Mike: Product backlog grooming is not yet an official Scrum meeting. It’s just something that many teams have discovered is a valuable thing that can lead to a more productive sprint planning meeting. As such, there’s no consensus on who attends. My view is that a subset of the team is adequate. Although I’m generally a big believer of whole-team involvement, that isn’t really practical for this meeting. Product backlog grooming usually happens two to three days before the end of a sprint. There is almost always someone on the team who is frantically busy two or three days before the end of a sprint. If we make that person attend another meeting, we could risk delivery of whatever product backlog item the person is working on.

Maximizing the value of a product backlog grooming meeting probably comes down to the same few things for any meeting: Keep it as short as possible, show up prepared, and encourage everyone to participate.

I have a hard time thinking of any meeting as truly fun, but I do think that when working with the right teammates, meetings can be viewed as welcome breaks from the more intense work of the team. Good teams can establish a rhythm where teams alternate from very intense mental work either alone or in pairs punctuated with occasional meetings. The meetings can have as much of a social tone as anything else and be a case for some joking around with teammates and just a bit of mental break before diving back into the more mentally intense solo or paired work.

Kristin and Sondra: What are the most common mistakes in a sprint planning meeting?

Mike: The most common mistake in sprint planning is misunderstanding the purpose of the meeting. Because one of the artifacts of sprint planning is a sprint backlog, many teams obsess over getting the sprint backlog perfect. These teams try to identify every last task and put a perfectly precise estimate on each task.

But that’s not the goal of sprint planning. The goal of sprint planning is to select the right set of product backlog items to work on during the sprint and to feel that each has been discussed enough that the team is prepared to work on it.

Focusing too much on the tasks and their estimates leads teams to spend too much time in sprint planning. The tasks and the estimates are necessary, but they are tools a team should use to decide which are the right set of product backlog items to select for a sprint.

Kristin and Sondra: Estimating is really hard. How can we get the best estimates of story size?

Mike: Estimating is definitely hard, but there are a few things teams can do that help.

First, try to keep most estimates—or at least the most important estimates—within about one order of magnitude. There are studies that have shown humans are pretty good across an order of magnitude but that we are bad beyond that.

Second, estimate in relative rather than absolute terms. Rather than saying, “this will take five days,” say “this (one story) will take about as long as that (story).” Then use velocity to determine how long each of those things will take. Not only is relative estimating more accurate, teams can do it more quickly. With relative estimating, the team does not need to think of all of the substeps, estimate each, and add them up. They only need to find something similar and use the same estimate.

Finally, rather than think of putting an estimate on a product backlog item, think of putting the product backlog item in the right bucket. I coach teams to do this by preidentifying a set of values they can assign as estimates. We’ll commonly use values like 1, 2, 3, 5, 8, and 13, which is, of course, the Fibonacci sequence. Each number represents a bucket of that size. When estimating a product backlog item, the goal is to put the item in the right bucket. If the team thinks something is a 10, it goes in the 13 bucket because it’s too big for the 8 bucket.

Kristin and Sondra: Should bugs, maintenance, or technical debt be part of the backlog?

Mike: They should definitely be part of the product backlog. The product backlog contains everything the product owner would like to do with the product. It the product owner wants those items addressed, they belong on the product backlog.

References and Further Reading

Anderson, David J. (2003). Agile management for software engineering: Applying the theory of constraints for business results. Upper Saddle River, NJ: Prentice Hall.

Beck, Kent. (2000). Extreme Programming explained. Boston: Addison-Wesley.

Beck, Kent, and Fowler, Martin. (2001). Planning Extreme Programming. Boston: Addison-Wesley.

Chandramouli, Subramanian, and Dutt, Saikat. (2012). PMI Agile Certified Practitioner—Excel with ease. Delhi: Pearson Education India.

Coad, Peter, De Luca, Jeff, and Lefebvre, Eric. (1999). Java modeling in color with UML: Enterprise components and process. Upper Saddle River, NJ: Prentice Hall.

Cockburn, Alistair. (2004). Crystal clear: A human-powered methodology for small teams. Boston: Addison-Wesley.

Cohn, Mike. (2005). Agile estimating and planning. Upper Saddle River, NJ: Prentice Hall.

Cohn, Mike. (2010). Succeeding with Agile: Software development using Scrum. Boston: Addison-Wesley.

Cunningham, Ward. (2012). Technical debt. http://c2.com/cgi/wiki?TechnicalDebt.

De Luca, Jeff. (2003). Getting flexible with planning. De Luca on FDD Newsletter, 1. http://www.featuredrivendevelopment.com/node/508.

DSDM. (2011). Dynamic Systems Development Method. http://dsdmofagilemethodology.wikidot.com.

Jones, Capers. (2007). Estimating software costs. New York: McGraw-Hill

McConnell, Steve. (2006). Software estimation: Demystifying the black art. Redmond, WA: Microsoft Press.

Mugridge, Rick, and Cunningham, Ward. (2005). Fit for developing software: Framework for integrated tests (Robert C. Martin Series). Upper Saddle River, NJ: Prentice Hall.

Nash, Adam. (2009). Guide to product planning: Three feature buckets.Blog entry, July 22. http://blog.adamnash.com/2009/07/22/guide-to-product-planning-three-feature-buckets.

Palmer, Stephen R., and Felsing, John M. (2002). A practical guide to feature-driven development. Upper Saddle River, NJ: Prentice Hall.

Pichler, Roman. (2010). Agile product management with Scrum: Creating products that customers love. Boston: Addison-Wesley.

Poppendieck, Mary, and Poppendieck, Tom. (2006). Implementing Lean software development: From concept to cash. Boston: Addison-Wesley.

Pressman, Roger. (2005). Software engineering—A practitioner’s approach (6th ed.). Boston, MA: McGraw-Hill.

Rubin, Kenneth. (2012). Essential Scrum: A practical guide to the most popular Agile process. Boston: Addison-Wesley.

Shore, James. (2010). The planning game. http://www.jamesshore.com/Agile-Book/the_planning_game.html.

Shore, James, and Warden, Shane. (2007). The art of Agile development. Sebastopol, CA: O’Reilly Media.

Stellman, Andrew, and Greene, Jennifer. (2005). Applied software project management. Sebastopol, CA: O’Reilly Media.

Sterling, Chris, and Barton, Brent. (2010). Managing software debt: Building for inevitable change. Boston: Addison-Wesley.

Sutherland, Jeff. (2011). Ten year Agile retrospective: How we can improve in the next ten years. http://msdn.microsoft.com/en-us/library/hh350860(v=vs.100).aspx.

Sutherland, Jeff, van Solingen, Rini, and Rustenberg, Eelco. (2012). The power of Scrum. Seattle, WA: CreateSpace Independent Publishing Platform.

Wells, Don. (1999). Release planning. http://www.extremeprogramming.org/rules/planninggame.html.

Wiegers, Karl. (2006). More about software requirements: Thorny issues and practical advice. Redmond, WA: Microsoft Press.

Wu, Liming. (1997). The comparison of the software cost estimating methods. http://www.compapp.dcu.ie/~renaat/ca421/LWu1.html.

Review Questions

Review 1

1. What is the name of the feature list of requirements?

2. What does DEEP stand for?

3. Should features provided by the competition influence prioritization?

4. Whose viewpoint is used in value stream mapping?

5. In the Kano model, do delighters sustain over time?

Review 2

6. What is ideal time?

7. Why is the Fibonacci sequence preferred over regular numbering for estimating?

8. What happens during product backlog grooming?

9. What does velocity tell a team?

10. What is intentional technical debt?

Review 3

11. What is an output from the Sprint planning meeting?

12. In the XP planning game, during which phase is customer prioritization completed?

13. Describe at least two ways that teams can incorporate maintenance work into sprint planning.

a.

b.

14. In Agile, what constraint is split into two distinct considerations?

15. If you want to remove resources from a project and the scope is fixed, what needs to change on the project?

Review 4

16. What is relative sizing?

17. How do you handle discrepancies in planning poker?

18. With wide-band Delphi, how are the estimates gathered?

19. Who owns the estimates in XP?

20. Is the product owner a chicken or a pig in the Sprint planning meeting?

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
13.59.237.58