,

Chapter 5. Scrum Planning and Collective Commitment

Each developer must feel comfortable committing to the work she’s signed up for. And since the team has a “we’re all in this together” attitude, everyone needs to be comfortable with the overall commitment of the team.

Mike Cohn29

You’ve learned the mechanics of Scrum, and how to use the basic Scrum pattern to get your team working together. But there’s a big difference between Scrum theory and getting teams to actually build software on a live project. How do you set up your Scrum team to succeed? How do you get everyone to strive for the same goals? In other words, now that you understand what Scrum is all about—self-organization and collective commitment—how do you actually get your team to do it in real life?

In this chapter, you’ll learn about the practices that many Scrum teams use for planning their sprints. You’ll see how user stories can help you really understand exactly what your users need from the software, and you’ll use story points and project velocity to get a good handle on how much work your team can do in a sprint. And you’ll learn how to use two valuable visualization tools, burndown charts and task boards, to keep everyone on the same page.

You’ll also learn why these practices and the basic pattern for a Scrum project aren’t enough for your team to achieve “hyper-productivity” or “astonishing results.” We’ll revisit the Scrum values, and you’ll learn how to assess if your team and company culture match those values—and what to do if they don’t.

Figure 5-1. Product owners often find it challenging to get into their users’ heads.

Act V: Not Quite Expecting the Unexpected

The next day, the whole team met to talk about how they could start moving in unison and give the project a little more predictability. They talked about collective commitment, and what that really meant. Eric asked for a few of the team members to talk about times where they saw their software actually being used by a lot of people. There was a lot of head nodding and smiling in the discussion—everyone seemed to get that they liked their jobs best when the software they built was used. Then he asked about a time when they found out that nobody was using the software. It turned out that the previous year, the team had spent four months building a user tracking and account management system, only to have a senior VP decide at the last minute that they’d just license a system to do that for them. Two people quit after that, and everyone felt awful. One of the lead developers who had worked a lot of overtime for that project seemed skeptical. “What’s keeping that from happening again?”

Roger connected the dots for him: “We’re happy when people use the software we build, and we hate it when we work on something that gets thrown out. So we just need a way to make sure that we’re only building software that people will actually use.”

From there, it was easy to get the team on board. Roger explained how sprint planning worked, and how Avi would work with them and their users so that only the most valuable things ended up in the sprint backlog. By the end of the meeting, Avi, Roger, and Eric all felt that almost everyone on the team was really starting to understand the idea of collective commitment, and genuinely wanted to build software that their users valued.

After the meeting, Eric, Roger, and Avi sat down to take stock. Roger and Avi started to congratulate each other on finally getting the team thinking together. And again, they were quite surprised by Eric’s reaction. Rather than being optimistic, Eric looked concerned.

He said, “OK, you’ve got the team on board with sprint planning, and that’s great. But that doesn’t solve your bigger problem: how do you get the right features into the sprint backlog? Because if you don’t get the most valuable things in there, you’ll end up exactly where you are today—with users complaining about missing important things and being overwhelmed by things they didn’t remember asking for.”

Roger and Avi were skeptical, but that skepticism dissolved after their next sprint review with their users. Avi proudly brought up the latest version of Lolleaderz.com on their test server, and started to go through the new “Create an achievement” feature they’d been working on, where users could set up criteria for their friends to earn “achievements” by uploading specific videos. He set up an achievement he called “Got your goat!” by navigating through the new achievement editor: dragging the “goat” keyword out of a list, using the new toolbox widget to specify that it would be awarded after 500 page views, and decorating it with a pop-up animation using the graphics upload feature they built for it. At the end of the demo, the room was silent.

“Um, that looks like it was a lot of work,” said one account manager. “So, uh, why did you build it?”

This was not what they wanted to hear at all! It turned out that all they needed was a simple feature to nominate your friends’ videos to get a little star next to it. Somehow, the team had taken that simple request and turned it into a full-featured achievement criteria editor, complete with its own pseudo-scripting language and service infrastructure—and none of the account managers had any idea how to sell it to their customers. This a huge waste of the team’s effort, but more importantly, now there were a bunch of new features in their backlog that were needed but not built.

This wasn’t how it was supposed to go!

After the meeting, Roger and Avi went back to Eric, who was not at all surprised by the outcome. “So how do we fix this?” asked Roger.

Avi said that he was already trying his best to give the other account managers what they wanted. He’d been maintaining the backlog, organizing it by value, and bringing it to the team. How could he do any better? Roger didn’t even know where to start, but he did know that if they didn’t make any changes, they would keep getting the same results. Except this time, they’d given the team a huge pep talk and gotten them fired up about Scrum, and now they had a big disappointment for everyone. If they didn’t make some sort of change fast, he felt that they might lose the team for good.

Eric said, “The trick here is to start to get into your users’ heads. You need to know how they’ll use the software. And even more importantly, you’ll need a way to know at the end of the sprint whether or not you’ve built that software right. If you do that, your software will always be used, and your users will love it.”

Roger was skeptical, because he knew from experience that users rarely seem to know what they want until they see it. And Avi was starting to get that “drew the short straw” feeling about his Product Owner role again.

Avi asked, “How do we get into their heads?”

User Stories, Velocity, and Generally Accepted Scrum Practices

Users and stakeholders hate unpredictability. Even if your team has genuinely made a collective commitment to build the most valuable software they can build for their users and stakeholders, if the working software that they deliver at the end of a sprint doesn’t resemble the promise they made at the beginning, the users will be disappointed. In other words, it’s not enough to deliver the most valuable software the team can build. You also need to make sure that there are no surprises when the people you’re building the software for get their hands on it.

Avoiding those surprises—and pleasant surprises can be almost as damaging as unpleasant ones, if they set the future expectation that your team will always go above and beyond what they can normally deliver—generally boils down to two things. First, the team needs to do a good job of setting expectations at the beginning of the sprint. And second, as the sprint progresses, they have to keep everyone up to date on all of the changes they discover during their Daily Scrum meetings. This is why it’s valuable (but not required) to have users and stakeholders present in the Daily Scrum—but also why it’s very important that they are only there to observe, and not to interfere. The Daily Scrum is the team’s time to plan the next day’s work, not answer questions from people who aren’t on the team. Not all stakeholders will be able to attend the Daily Scrum; in some cases, none of them will. That’s OK. It’s great when stakeholders can make the time to attend, but it’s not required. As long as the Product Owner is dedicated to keeping stakeholders in the loop about any changes the team makes to the plan, everyone will be on the same page when the end of the sprint rolls around.

But none of that matters if the team builds software that isn’t useful.

Make Your Software Useful

Take one more look at that quote from Ken Schwaber at the beginning of Chapter 4. If you don’t get collective commitment, you don’t get Scrum. But what does that term, “collective commitment,” really mean? What, as a team, are you committing to together?

Collective commitment means genuinely trying to make your software more useful. To make your software useful, you need to understand what it is that your users are doing. You have to truly care about helping them do whatever it is that they do—and you need to care about improving that aspect of their lives more than you care about any other aspect of the project.

This is built right into the Agile Manifesto. Think about what it means to build “working software”—how do we actually define “working”? It’s trivial to make software that simply runs. It’s not hard to build software that looks like it “works” but which drives the users crazy when they actually attempt to do their jobs with it. But building actual “working” software means building software that really helps the users get their work done. And the most effective way that we have of building working software is customer collaboration. This is another reason that we value working software over comprehensive documentation, and customer collaboration over contract negotiation.

Before agile changed the world of software development, teams routinely built software that was not useful, and we have plenty of evidence of this. Open up practically any academic textbook on software engineering written in the late 1990s or early 2000s, and you’re likely to find a reference to the Standish Group’s CHAOS report. The Standish Group started doing this report in the mid ’90s in response to a perception—which happened to be true—that a huge number of projects failed (around a third of them were considered successful, as it turned out30). Their annual survey and study repeatedly found that project teams felt that many features in the software they built were not used. The 2002 study31 put this figure at an absurdly high 64% (45% never used, 19% rarely used).

This may have been a shock to many in the academic community, but to a lot of software teams at the time, it was obvious. In fact, what the CHAOS report defined as “failure” was so common that many teams considered it a basic fact of software development. Teams would build software, throw it over the wall to their users, and hopefully some of what they built would stick. Many discussions (arguments) with users ended with a developer saying, “It’s not a bug, it’s a feature.” This was a way for the developer to say that the software works exactly the way he intended it to work, and that the user needs to change his expectations to match it. This is a lousy way to treat users.

Roger and Avi ran into trouble with their achievement editor because they built a complex, over-engineered tool to solve a simple problem. This is a very common way for teams to build software that isn’t as valuable as it could be. In fact, it’s so common that there’s a term for it: gold-plating. Teams gold-plate their software, or add extra features that were never requested and aren’t needed by the users, with the best of intentions. Developers want to help, and they think that what they’re building is really cool and will be very valuable. This is a very natural thing for an excited developer to do, and it’s one of the main sources of those 64% of features that go unused.

Another contributor to that high number of unused features is the throw-it-over-the-wall mentality itself, because users feel like they have a limited time to work with the development team and will sometimes try to fit in as many feature requests as possible within that time. That can lead to stakeholders actually requesting features that are of little value when they’re delivered.

Effective agile teams, however, rarely have this experience. It’s rare for any feature of the software they build to go unused, much less two-thirds of them—so much so that people on those teams often see the conclusions of the CHAOS report as incorrect. In fact, it’s not uncommon to hear the CHAOS report results snarkily referred to as “debunked” by some agile evangelists. So what are effective agile teams doing that allows them to build such useful software?

User Stories Help Build Features Your Users Will Use

Agile teams start by getting into their users’ heads, and they have a very effective tool for doing that. A user story is a deceptively simple tool. It’s a quick and simple description of a specific way that a user will use the software. Most user stories are between one and four sentences long—most teams have a rule of thumb that a user story has to fit on the front of a 3×5 index card.

Many teams write their user stories in a specific, Mad Libs–style, fill-in-the-blanks format:

  • As a <type of user>, I want to <specific action I’m taking> so that <what I want to happen as a result>.

Here’s a user story that the Lolleaderz.com team might have used as a starting point for the achievement feature.

Figure 5-2. A user story written on an index card.

This user story is effective because it makes three important things obvious:

  • Who the user is: “a returning user with a large friends list”

  • What the user wants to do: “nominate one friend’s video for an achievement”

  • Why the user wants to do it: “so that all of our mutual friends can vote to give him a star”

It also has a title (“Nominate a video for an achievement”), which gives the team an easy way to refer to the user story when they’re talking about it.

This is a lot of information packed into the user story. It means that there are many things that have to be built: user interfaces for nominating and voting, a way to store nominations and votes, an update to the system that displays the video to look for achievements and display a star, and probably several other things.

What’s just as important is what isn’t there. There’s nothing about any sort of criteria editor (like the team added unnecessarily), or other unnecessary features. This is why a user story is an effective tool for fighting gold-plating. What happens if the team writes down user stories, goes over them with the Product Owner (and users, stakeholders, and anyone else who has a good opinion to share), and sticks to them? If they do this, they’re a lot less likely to bloat the software with features that the users don’t need and won’t use.

User stories also give teams an easy way to manage their backlog. Many effective agile teams maintain a backlog that consists almost entirely of user stories. Because each user story is simple and written from the user’s perspective, it’s easy for the Product Owner to review the stories with the users and stakeholders in order to figure out which stories are the most valuable. And each story is very small, which makes it easier to add new ones or change their order at any time. When it comes time to start a sprint, the Product Owner and the team can pull some of the stories out of the backlog and designate them as to be delivered in this sprint.

The team can then discuss the stories with the Product Owner to make sure there is clarity on what the stories mean, and how they will know when each one is done. Most teams will then break the stories down into tasks and start to estimate how long those tasks will take. The tasks for each story would go in the “To Do” column of the task board to wait until someone can work on them. When a team member is ready to take a new task, he or she will select the next most valuable task they could do, write their name on it, and move it to the “In Progress” column to indicate that they are taking the task.

Conditions of Satisfaction

One way to be sure of what you’re building is to be able to envision what it will look like when it’s done. It’s very satisfying for a developer to take a step back, look at what he or she just built, and feel like it’s finished. Conditions of satisfaction are an effective tool for helping developers to know what the software will look like when it’s complete, and to gauge how close they are to done. (Some teams refer to conditions of satisfaction as “acceptance criteria.”)

Conditions of satisfaction, like user stories, seem really simple but accomplish a complex goal. Most teams define them for each user story by writing down some specific things that the user needs to be able to do with the software once the user story is written. Typically, the conditions of satisfaction can fit on the back of the same 3×5 index card as the user story. The Product Owner usually has a hand in writing the conditions of satisfaction or at least reviews them when they’re written.

Conditions of satisfaction for the “achievements” user story might look like this:

Figure 5-3. Conditions of satisfaction written on the back of the user story index card.

These conditions are valuable to developers because it helps them avoid declaring victory too early. It’s not uncommon for a programmer to build many of the pieces of a feature, but put off the finishing touches until the end of the sprint. For example, he might build out the pages to do the nomination and modify the code that displays the video to add the star for achievements. But until he ties it all together so that every link is in place and all of the new code is fully integrated into the existing codebase, the feature isn’t done—and it’s a lot more efficient for him to finish building the story now while it’s fresh in his mind.

Conditions of satisfaction help this by giving the team a concrete definition of “Done.” This gives the team and the Product Owner a concrete, unambiguous way to figure out exactly when that story is “Done.” To call the story “Done,” all of the work it takes to understand it, build it, test, and deploy it must also be done. The user story is “Done” when a user can open up the working software, and execute each of the conditions in exactly the same way that it would be demonstrated in the sprint review. Until the team member can do this, the user story isn’t done, and he stays focused on that user story (remember the Scrum value about everyone being focused on the work?) until it’s done. And as soon as it’s done, he moves it from the “To-Do” column of the task board to the “Done” column. Done!

Story Points and Velocity

During sprint planning, your whole team works together to figure out how much work they can do in the sprint, so that they can set a goal for the working software that will be delivered at the end. But how, exactly, does the team do that?

There are practically as many ways to estimate how much work a team can do in a sprint as there are teams. One technique that has proven especially effective for Scrum teams over the years is to use story points. Story points are a way to understand how much effort you’ll need to build a specific user story by assigning a number of points to it. The team comes up with those points by comparing the current user story to other stories your team has built in the past.

While there’s no hard-and-fast rule about how many points to assign to each story, some teams assign between 1 and 5 story points to any user story. (The 5 value is arbitrary—other teams will give stories between 1 and 10 points, or use another number, as long as they use a consistent rule from sprint to sprint. Still other teams use numbers from the Fibonacci sequence, or exponential numbers. You can pick any scheme that works, as long as everyone on the team is comfortable with it.) One 3-point story should require about as much work as another 3-point story. As your team assigns points to all of the stories they work on, they start to see how many points’ worth of stories they can complete (or “burn”) in a sprint. If your team completes on average, say, 25 points’ worth of stories in a sprint, then their project velocity is 25 points per sprint.

Teams tend to work at a pretty constant velocity when measured across many sprints. So while it’s hard to predict what your project velocity will be before you start working with a team, you can use the velocity from past sprints to help you plan for the next one.

Now, anyone who’s had to manage their retirement account has read the disclaimer, “Past performance is not a guarantee of future returns.” The same goes for story points. Even if your team burned 32 points last sprint and 29 the sprint before, there’s no guarantee that they will burn around 30 this sprint—in a given sprint, people will misjudge certain stories, run into unexpected technical problems, go on vacation, quit, or have other life events that interfere with the project. But despite that, story points and project velocity are a surprisingly reliable guide for most Scrum teams over time, and you can take advantage of that reliability when you plan your sprint.

A sprint planning session using story points might go like this:

  1. Start with the most valuable user stories from the product backlog.

  2. Take a story in that list—ideally the smallest one, because that makes a good baseline for comparison—find a similarly sized story from a previous sprint, and assign it the same number of points.

  3. Discuss with the team whether that estimate is accurate—discovering additional problems, work, or technical challenges increases the estimate; simplifying factors, reusing existing code, or scaling back what needs to be built decreases the estimate.

  4. Keep going through the stories until you’ve accumulated enough points to fill the sprint.

Don’t overload your sprint backlog. It’s OK to leave room in the backlog, but it’s not OK to go beyond what your team has done in the past. If your team has an average velocity of 28 points per sprint, and you’ve already put 26 points’ worth of stories into it, then you can only add a 2-point story or two 1-point stories. Because developers are very optimistic by nature—we have to be, because we’re builders—the team will be tempted to add a 3-point story and just go over by one point. Don’t give in to that temptation; it’s a good way to disappoint your users at the next sprint review.

What about the first time you do this? It takes time to build up a history of stories, and to build up the common knowledge among your team about how big a 3-point story is. So for the first time through, just take a guess. Choose one story that seems to be about the middle of the road in terms of work, and arbitrarily assign it 3 points. Find the biggest story that’s valuable, and assign it 5 points. Find the smallest one, and assign it 1 point. Use these as a starting point for estimating more stories and filling up your sprint. By the time you’ve gone through two sprints, you’ll have plenty of stories to compare to, and a good idea of your team’s average velocity.

Why story points work

Like user stories, story points are deceptively simple. They’re very easy for teams to start using (although there are plenty of nuances to using them—which we won’t cover here). But why are they so effective?

They’re simple

It’s easy to explain to a new team member how story points work. Plus, the numbers tend to be low—in the dozens or hundreds, not thousands—which makes it easier for team members to get their heads around them.

They’re not magic

A lot of developers and project managers have seen many estimates turn out to be wrong, and develop the mindset that software development simply can’t be estimated accurately. By basing story points off of real, live experience from this particular team, there’s no mystery about where the number comes from.

The team is in control of them

When the boss tells you that you need to meet a certain numeric goal or metric, it feels like an imposition and adds to the pressure and stress on the team. But when the team decides themselves how to measure their own work, and only uses that measurement for their own planning, it becomes a valuable tool for them.

They get your team talking about estimates

When a new developer joins his first Scrum team, it might be the first time in his career that he’s actually talked openly about estimates, or even had his opinion asked. Estimation is a skill, and the only way to get better at it is to practice—which, in most cases, means talking about how much effort certain tasks will need.

Developers aren’t scared of them

Too many developers have had the experience of making an off-the-cuff estimate for a project manager, only to have that somehow turn into a hard deadline on a project schedule. That never happens with story points, because they’re never turned into hours or dates—the only date, the end of the sprint, is fixed, and the amount of work promised for that date can be modified during the Daily Scrum as part of the visibility-inspection-adaptation cycle.

They help the team discover exactly what a story means

If you think that we’re looking at a 5-point story, and I think it’s only a 2-point story, we’re probably not disagreeing on how much work is involved—we’re disagreeing on exactly what that story means. If we talk it out,32 it might turn out that I thought that the story required us to build a simple command-line tool, while you thought it needed a graphical user interface. It’s a good thing we figured that out during sprint planning, instead of suffering a nasty surprise halfway through when our 2-point story turned out to be a 5-pointer!

They help everyone on the team become genuinely committed

Story points and velocity give everyone an objective “waypoint” that they can agree on: we burned 26 points last sprint; we agreed that this story was worth 4 points. If you’re a chicken, you tend to back off from contributing to this—only to discover later that everyone moved on without you. The day that you realize that you had information that could have helped the team estimate a story at 3 points rather than 1 is the day that you start to care about sprint planning and keeping the estimates realistic—and that’s how you become genuinely committed.

Burndown Charts

A burndown chart is a way for anyone to see, at a glance, how the sprint is actually progressing when compared with the team’s past velocity.  Here’s how to build a burndown chart based on story points (this also works with other units of measurement, like hours, but we’ll use story points):

  1. Start with an empty line chart. The x-axis has dates, starting with the first day of the sprint and ending with the last day. The y-axis has story points, ranging from 0 to 20% more than the total number of points in the sprint backlog. Draw the first dot on the chart: the number of points in the sprint, at day 0. Draw a straight line (called the “guideline”) from the first point to the end of the project—zero points left when the sprint is complete.

    Figure 5-4. Burndown chart when the sprint starts. We created this burndown chart using story points, but you can also use hours, days, or another unit of measurement.
  2. As soon as the first user story is finished and moved to the “Done” column of the task board, draw the next dot on the chart: the number of points left in the sprint, at the current day. As you finish more stories and burn more points off of the backlog, fill in more days in the burndown chart.

    Figure 5-5. Two stories worth 7 points burned off
  3. You might discover during a Daily Scrum that more work needs to be added. Sometimes you’ll do this because the team is burning more points than they expected, and they’ll finish early as a result. Or an important support task comes in, and the team and product owner agree that it needs to be added to the sprint, but they don’t yet know how much work the team will need to remove to balance out the sprint. When you add the cards for that work to the task board, schedule a follow-up meeting to gather up the team, estimate the story points for each card, and add them to the chart. It’s helpful to draw an extra line that shows where the points were added—and don’t be afraid to write notes on the chart!

    Figure 5-6. The Product Owner added stories halfway through the sprint.
  4. As you get close to the end of the sprint, more and more points burn off the chart. Keep an eye out for a gap between the guideline and your actual burndown, because that could mean you’ve got too many points left in the sprint and need to remove a user story.

Figure 5-7. A gap between the burndown chart and the guideline tells you that there’s a good chance you won’t finish all of the stories by the end of the sprint.

There are lots of great software packages that let you manage your backlog, stories, and story points, and draw burndown charts automatically. However, many teams prefer to draw burndown charts by hand, and keep the chart on the same wall (often on the same whiteboard) as the task board. This lets everyone see exactly how the project is doing at any time. It’s especially satisfying for the team if each developer gets to update the burndown chart after he or she completes a user story and moves the card to the “Done” column.

Planning and Running a Sprint Using Stories, Points, Tasks, and a Task Board

If you read the description of sprint planning in the Scrum Guide (or in the beginning of Chapter 4), you’ll see that you need to have a sprint planning meeting to come up with detailed answers to two questions:

  • What will the team deliver in this sprint?

  • How will the team do the work?

We just showed you how a team can use story points and velocity to figure out what will go into the sprint. That’s a very common way for Scrum teams to handle the first half of sprint planning. But how do they actually plan out the work in the second half?

One of the most common ways for Scrum teams to plan out the actual work for the team is to add cards for individual development tasks. These tasks can be anything that the team actually does: write code, create design and architecture, build tests, install operating systems, design and build databases, deploy software to production servers, run usability tests, and do all of those other things that teams actually do every day to build and release software.

Here’s how many teams do this:

  1. The team holds the second sprint planning meeting. The Scrum Master starts with the first story, and leads a discussion with the team about exactly what they need to do to build it. Everyone works together to come up with a list of individual tasks that they think will each take no more than a day to complete. Each task is written on a separate card—some teams use different colored cards for stories and their tasks to make it easier to tell them apart—and the story card is grouped together with its task cards. This continues until all stories are planned. If the sprint planning timebox expires before all of the stories are broken down, each unplanned story gets a single task card for a task to plan out the story.

    Figure 5-8. The second half of the sprint planning session is all about breaking the stories down into tasks that the team members will do during the sprint.
  2. The stories and their tasks are grouped together and added to the “To Do” column of the task board.  

    Figure 5-9. Each story card in a sprint is grouped together with the cards for its tasks and added to the “To Do” section of the task board.
  3. When a team member finishes one task and is ready to move on to the next, he moves the task card for the completed work to the “Done” column. Then he pulls the task card for the next piece of work out of the “To Do” column, writes his name on it, and then puts it back on the board in the “In Progress” column. If the story is still in the “To Do” column, he moves it to “In Progress” as well (but doesn’t write his name on it because one of his teammates might work on tasks for the same story).

    Figure 5-10. Each team member works on exactly one task at a time by writing his or her name on its card and moving it to the “In Progress” section of the task board.
  4. As the sprint rolls along, the team moves tasks from “To Do” to “In Progress” to the “Done” column. It’s pretty common for team members to discover that they need to do additional tasks to finish a story. When this happens, the new task is added to the board, and the team member points that out in the Daily Scrum so everyone is aware of what’s going on, and can help spot potential problems.

  5. Once a team member finishes the final task for a story, he pulls the story card off of the task board, verifies that all of the conditions of satisfaction are completed, and moves it to the “Done” column so that it’s grouped with all of its tasks. (But remember—the story’s not done done until the Product Owner accepts it as potentially shippable on behalf of the company!) If he discovers that one of the conditions of satisfaction hasn’t been met, then there’s still work to be done—so he moves the story back to the “In Progress” column and adds tasks to complete that work to the “To Do” column.

    Figure 5-11. When a team member finishes a task, he or she moves it to the “Done” section of the task board and claims another task—and if all of the story’s conditions of satisfaction are met, the story card is moved to the “Done” section too.
  6. The sprint is done when the timebox expires. This means that there might still be story and task cards left in the “To Do” and “In Progress” columns. The stories go back to the product backlog so they can be prioritized in the next sprint planning session,33 but the team can reduce the number of points based on the tasks that remain. The team does not get credit for completing a story until its card and all of its task cards are moved to the “Done” column.

Generally Accepted Scrum Practices

If you search Ken Schwaber’s original book on Scrum, Agile Project Management with Scrum, you won’t find any mention of user stories or story points. Many teams learned about them from other sources, like Mike Cohn’s excellent book, User Stories Applied.34

There are many great practices that teams use to improve how they use Scrum. This shouldn’t be a surprise. The whole reason we have retrospectives is to find ways to improve what we’re doing. If we decide that we’re bound to what one person wrote in a book, and refuse to go beyond what’s written in it, why bother finding ways to improve?

This is why many teams make use of additional tools and techniques, which Cohn termed Generally Accepted Scrum Practices (GASPs).35 For example, many teams find that their Daily Scrum meetings are more effective when held as a standup meeting, where everyone stands until the meeting is complete. This is not a core Scrum practice, but it’s accepted by many Scrum teams.

Remind yourself of the last principle in the Agile manifesto:

At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

You and your team should keep this in mind when you hold your retrospectives. Try to find ways to improve, but don’t reinvent the wheel. If you’re running into a problem with Scrum, the odds are that someone else also ran into it at some point. If you have a good mentor (like Roger and Avi have Eric), he or she should be able to help you find a change or a practice that will help fix the problem.

Act VI: Victory Lap

It was 11:30 p.m., and everyone was still at the office—but not for work. The team had just taken Lolleaderz.com live earlier that week, and there were already great reviews and a growing number of users. The CEO had caught wind of a little release party that Roger and Avi were planning, and he would have none of it. He brought in catering, a DJ, and an open bar. And Roger and Avi had had quite a bit to drink already.

Roger stumbled over to Eric, who was chatting with a few of the team members. “We couldn’t have done this without you!”

Eric thought for a minute, and said, “That’s really nice of you to say that. But think about what I did for you. I didn’t actually do any of the work, right? I just pointed out some of the problems, gave you solutions that worked for me, and once in a while I let you run into some of those problems so you could see for yourself what was wrong.”

Avi had come over. “Yeah, what about that? There were a couple of rough spots we got into. Why couldn’t we avoid them? Not that I’m complaining—the results speak for themselves.”

By now, most of the team and a few account managers had gathered around. Eric said, “If you hadn’t had that terrible meeting with the other account managers, would you ever have gone ahead and put together the user stories? Would you know your project velocity, and be able to plan out your sprints?”

Roger thought for a minute. “So wait a minute. You’re saying that the only way to learn is to run into trouble?”

Eric said, “I’d flip it around and think positive. The rough patches you run into give you a reason to work together and think about how to be more effective. You find a way to improve, you grow as a team.”

There was a lot of head nodding, and a few “mm-hmms” from around the room. Finally, a voice came from the back. “That’s what I want to hear!”

It was the CEO, and he looked pleased. “I see some really big things for this team in the future. Great work!”

Scrum Values Revisited

Roger, Avi, and the team ran into a lot of problems during the Lolleaderz.com project. For a lot of teams, those kinds of problems would have sunk the whole project and caused a CHAOS report-style failure. How did this team turn those problems into opportunities? How were they able to learn from them and succeed?

One big difference was that Roger and Avi had a secret weapon: an effective mentor, Eric, who could help them steer through the obstacles. The first thing that Eric did was to help Roger, Avi, and the rest of the team understand the Scrum values: commitment, respect, focus, openness, and courage. He talked about pigs and chickens, to help them understand what commitment really means. He helped them understand how to run a more effective Daily Scrum, and through that he was able to make sure they were focused. And he showed them that they could build up mutual respect by listening to each other. By improving how they plan and review their sprints and backlog using tools like user stories and velocity, Eric helped the team show everyone—including the other account managers and the CEO—what was going on with the project, which built up an attitude of openness across the team. And when the going got tough, Eric showed them that they had the courage to stick to the truth, even if it made people unhappy in the short run.

Every project has challenges and problems. When you’re trying out a new methodology or practice for the first time, those problems can get magnified through lack of experience, misunderstanding, and regular old mistakes. A good mentor like Eric knows this. Instead of trying to prevent those mistakes, he took advantage of them to create learning experiences for the team. This is called letting the team fail, and it’s a basic element of coaching. 

Lyssa Adkins talks about this in Coaching Agile Teams:

Let the team fail: Certainly, don’t stand idly by while the team goes careening off a cliff. But do use the dozens of opportunities that arise each sprint to let them fail. Teams that fail together and recover together are much stronger and faster than ones that are protected. And the team may surprise you. The thing you thought was going to harm them may actually work for them. Watch and wait.36

It’s one thing to read words like courage, openness, commitment, focus, or respect, and agree that they sound like great ideas. It’s quite another thing to walk into your boss’s office and tell him that the team won’t be able to deliver a feature because there’s not enough time in the sprint. It’s hard to have courage when your job is on the line.

You can’t have a successful Scrum implementation without adhering to these values. And the truth is that while there are plenty of companies that have a culture that’s compatible with Scrum, some companies do not. It’s even possible that you work for a boss who demands a command-and-control style of project management, and will fire you if you try to create a self-organizing team.

Scrum teams learn from their mistakes—that’s how they grow as a team. The team needs a culture where it’s OK to make mistakes. That’s why we collaborate so much as Scrum team members, and it’s why respect is such an important Scrum value. But even if a team has a tolerance for mistakes and the ability to learn from them, they might be working in a company that doesn’t accept mistakes. Software engineering innovator Grady Booch book, Beautiful Teams:

One of the signs that I have for the health of an organization is that they’re reticent to fail. Organizations that are totally anal and refuse to fail at all tend to be the least innovative organizations, and they’re hardly any fun, because these people are so fearful of failing they take the most conservative actions. On the other hand, organizations that are freer in failing, not in a way that will destroy the business, but are given some freedom to fail, are the ones that are more productive, because they’re not in fear for their life with every line of code.

So what do you do if you find yourself in an organization where failure means getting fired? Is Scrum even possible?

Practices Do Work Without the Values (Just Don’t Call It Scrum)

Not every team in every company can self-organize from day one, and that’s OK. If your company’s culture doesn’t match the Scrum values, then your job as a Scrum adopter is to help the people around you understand its values. The best way to do this is to lead by example: show everyone around you what it means to be open about your work, have respect for others on your team, and show courage when you run into problems. Finding a good mentor is a great way to show people that this can really work, and help people start to change their attitudes. Often, teams will bring in a consultant as a mentor because it’s easier for their bosses to listen to someone from outside the company tell them that they need to make changes.

But sometimes, even if you do everything right, the prevailing culture of the company where you work might be too far away from the Scrum values. If that’s the case, self-organization and collective commitment might simply be out of reach for your team. And as Ken Schwaber showed us, if you don’t get self-organization and collective commitment, you don’t get Scrum.

And that’s OK!

Even without the “heart and soul” of the values, and even without self-organization and collective commitment, Scrum still has some pretty great practices. They’re very simple, easy to implement, and can generally be done inside the team without your asking permission (or apologizing later).

If you recognize that you’re in an environment where you can put the practices in place but not the values, then you can still get better-than-not-doing-it results. And because it’s better than not doing it, you should do it! Just make sure that you and your team recognize what you’re doing, and where your boundaries are.

However, don’t just adopt the practices and then call it a complete Scrum adoption. If you do, you’ll set yourself up for a struggle later on. People in your company who have read about “hyper-productive teams” and “astonishing results” will question why you’re not getting those results, and you won’t have a good answer. Even worse, your team will probably get excited about Scrum, only to find that life has just changed slightly for them. In a sense, they’ll get the message that this is the best that they can do, and if that’s not much different than before, that can be frustrating and demotivating. These problems can poison future attempts to improve: by setting the bar too low, they assume that they’re facing limitations outside their control.

In other words, by telling everyone, “You’ve done Scrum, congratulations!” you give the impression that Scrum is nothing more than renaming your status meeting to a Daily Scrum and your requirements to a backlog. That’s dangerous for you, as an eager agile adopter, because the fundamental problems you were trying to solve in the first place by implementing Scrum still exist, so most people will assume that Scrum can’t fix them—and, worse, that those are problems that exist everywhere and simply aren’t fixable by humans. Think about how many times you’ve heard someone say something like, “Developers can’t estimate,” or “Software is always buggy,” or “Projects always run late,” as if those are basic facts of life that can’t be changed.

The worst part is that when you constantly claim Scrum can solve problems that clearly haven’t been solved and that people assume can’t be solved, you start to come off as a pushy agile zealot. People will get sick of hearing about Scrum but not seeing any results. That hurts your career, and it ruins the idea of Scrum for all of the people around you.

There is another way!

Give your team new practices that they can do today, but also give them a vision of what they can accomplish tomorrow. Then they won’t just assume that they’re doing Scrum because they’ve adopted a few simple practices.

What if you openly acknowledge that you’ve put in place the Scrum practices, but you haven’t started to work on self-organization or collective commitment yet? Instead of claiming that a “practices-only” Scrum implementation is complete, we can be honest with our teams that we’re putting in place the practices, but that we still have a long way to go with the values, with self-organization, and with becoming genuinely committed to delivering value.

The first difference with that approach is that you haven’t made any promises that you can’t keep. You told people that you would make things a little better. So when they see better-than-not-doing-it results, instead of being disappointed that you haven’t solved every problem the company will ever face, they’re happy that your team is producing better software, and building it more quickly and easily. It’s much easier to start talking about new values for the company if you have a track record of improvement, even small improvement. And from your boss’s perspective, instead of criticizing him for not being “Scrum enough,” you’re giving him good results today and promising even better results tomorrow—if he’d just let the team go out on a limb with these new values.

Is Your Company’s Culture Compatible with Scrum Values?

Not every company is ready to give up command-and-control project management and start self-organizing, and not every team is ready for collective commitment. The way to figure out if your team and company are ready is to evaluate whether the culture is compatible with the Scrum values. But how do the Scrum values translate into real-life practice?

Ask yourself each of these questions, and try to come up with honest answers. Discuss them with your team, and with your manager. If everyone is really OK with each of these things, then your company and team are ready for the Scrum values. If not, then those conversations will help you figure the right approach to bringing Scrum to your team.

To understand if you’re ready for commitment, ask if you, your team, and your boss are OK with:

  • Relinquishing control of the project, and trusting the team to decide what gets delivered?

  • Not going off on your own and building something without talking to the rest of the team, and just integrating it at the end?

  • Not having one “single, wringable neck?”37

  • Listening to comments and feedback, and not telling people to mind their own business?

  • Actually being willing to take responsibility? Does everyone on the team feel the same way?

To understand if you’re ready for respect, ask if you, your team, and your boss are OK with:

  • Trusting the team to do the right thing, and deliver each feature at the best possible date based on relative value and how the project progresses—even if it causes the project to take longer than you expect?

  • Giving the team enough time to do the work, and not demanding overtime of them?

  • Trusting the team to choose the tasks that are right for them and for the project, rather than relying on strict roles, RACI matrices, etc.?

  • Not being able to ever say again that you don’t know why the team decided to do something the way they did?

To understand if you’re ready for focus, ask if you, your team, and your boss are OK with:

  • Never asking anyone on the team to do work that’s not part of the current sprint?

  • Never asking anyone on your team to do work that the whole team hasn’t agreed to take on (“but I need this done now!”)?

  • Putting what’s most valuable to the company ahead of all other project or work concerns?

  • Not being able to demand that team members work on specific tasks in a certain order up front?

To understand if you’re ready for openness, ask if you, your team, and your boss are OK with:

  • Listening to what other people have to say—and actually thinking about it?

  • Thinking about project planning or users if you never have before?

  • Thinking about technical details if you never have before?

  • Thinking about what the programmer next to you is working on, and whether it really fits into the overall goal?

  • The programmer next to you thinking about your work in exactly the same way?

To understand if you’re ready for courage, ask if you, your team, and your boss are OK with:

  • Not being able to blame lack of planning on your project manager?

  • Not being able to blame poor requirements that don’t hit the mark on your Product Owner or senior managers?

  • Taking the time to really understand your users?

  • Building something that isn’t perfect, because what the users need most is something that’s simply good enough?

If the answer to most of those questions is “yes,” then your team, managers, and company probably have a culture that matches the Scrum values. On the other hand, if you’ve answered “no” to more than one or two bullets for any of the values, then that’s a good starting point for a realistic and open discussion with your team and your boss. And if that open discussion sounds unrealistic, then you’re definitely going to have to work on openness if you want to get the most out of Scrum.

29 Mike Cohn, User Stories Applied: For Agile Software Development (Upper Saddle River, NJ: Pearson Education, 2004).

30 J. Laurenz Eveleens and Chris Verhoef, “The Rise and Fall of the Chaos Report Figures,” IEEE Software vol. 27, no. 1 (2010).

31 2002 CHAOS Report, The Standish Group International Inc., 2002.

32 Score another one for face-to-face communication over comprehensive documentation!

33 There’s actually some debate among Scrum trainers about moving incomplete work back into the product backlog and re-estimating the point value. There are some trainers who believe that is OK, while others teach that you should never change it (because this helps the team to get better at estimation). There are also some who feel it doesn’t really matter either way, because it will all wash out in the end.

34 Mike Cohn, User Stories Applied: For Agile Software Development (Upper Saddle River, NJ: Pearson Education, 2004).

35 From “GASPing About the Product Backlog”, accessed July 26, 2014.

36 Lyssa Adkins, Coaching Agile Teams: A Companion for ScrumMasters, Agile Coaches, and Project Managers in Transition (Boston: Addison-Wesley, 2010).

37 Be a little careful with the phrase “single, wringable neck” because in many companies, that’s the nickname for the Product Owner—the team may understand self-organization and collective commitment, but if the rest of the company doesn’t, then as far as anyone outside of the team in concerned, that’s his role.

38 If you want to learn more about Planning Poker, we recommend reading the Planning Poker PDF by its creator (and Agile Manifesto co-author) James Grenning.

39 Scott Downey and Jeff Sutherland, “Scrum Metrics for Hyperproductive Teams: How They Fly like Fighter Aircraft” (paper presented at the 2013 46th Hawaii International Conference on System Sciences, Maui, HI, January 7-10, 2013).

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

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