Chapter 16. Refine, Define, and Build

So, now what? If stories are for planning and facilitating discussions in order to build software, all we seem to be doing is lots of talking.

Cards, Conversation, More Cards, More Conversations…

Your first bunch of conversations helped you make sense of an opportunity. You talked about who’d be using your product, and imagined how they’d use it to accomplish something valuable to them. Your conversations went deep enough to break the big opportunity into parts that were small enough that you could tell which parts were important to be in a next product release, and which didn’t matter so much. You collected the stories that described that next viable release into a release backlog.

If you’re clever, and I know you are, your next conversations went deeper into what the software might look like, how it would behave, and how it might knit into your existing product and software architecture. You had these conversations with a close eye on the risky stuff. You sliced up the stories into the parts that you could build early that would help you learn more, faster. And because you’re clever, you segmented your release backlog into stories to take on early to learn, in the middle to build up, and later to refine.

But now it gets real. It’s time to have our best last conversations.

Cutting and Polishing

We’d like to get to work building these things, and we know that building the software that our storytelling describes will go smoothly and predictably if we can concisely describe exactly what we’d like to build. But, after all these conversations, the stories we’re left with feel a little rough around the edges. We likely haven’t talked about any of them in enough detail to understand precisely what they are and what they aren’t, and really predict how long they’ll take to build. But we’ve got a magical machine that’ll fix all this.

I want you to picture an elegantly designed little machine. We’ll drop jagged, rough stories from our release backlog into a big funnel on the left side. Then, inside the machine, we’ll hear a little grinding and clattering. But then out of a little spout on the right side comes small, polished little nuggets. These little nuggets are the things that team members can pick up and use to predictably build high-quality software.

This machine looks magic from the outside. But, on the inside, you and your team are having some serious rock-cutting and polishing discussions. The special, secret mechanism hidden inside this machine is a story workshop.

As you might recall from Chapter 11, story workshops are small, productive conversations where the right people work together to tell the stories one last time, and in the process make all the tough decisions about exactly what they’ll choose to build. These are the deep story conversations that result in confirmation. Finally, we’re getting to that third C in the card-conversation-confirmation flow. And it’s this C that helps us really cut and add the polish to these rocks.

Workshopping Stories

You’ll need a small group that includes a developer, a tester, and people who understand users and how the UI will look and behave—UI designers or business analysts in some organizations. This goes best when the group is small enough to work together effectively in front of a whiteboard. That’s usually three to five people.

image with no caption

This is a workshop, not in a meeting. Meeting is the word that has become a euphemism for unproductive collaboration. A story workshop needs to be filled with lots of productive discussion, hand waving, whiteboard drawing, and sketching. We’ll need to work together to decide exactly what we’ll build. We’ve got to come out of this conversation with solid shared understanding, and we’ll need space to have those productive words-and-pictures conversations.

In all those conversations prior to now, we talked through details, but hopefully we had the restraint to go just deep enough to make the decisions we needed to at the time. The decisions we’re making now focus on answering the question: exactly what will we build?

It’s during this conversation that you’ll find out your story is too big. By that I mean it’s bigger than the ideal size we like to see going into development—a couple of days or less to build. OK, it’s not always too big. But, if you just assume it will be, then you’ll be pleasantly surprised when it’s not. Happily, you have exactly the right people in the room to help you break down this story into smaller stories that can be delivered, tested, and demonstrated in the growing product the team is working together to build.

Sprint or Iteration Planning?

Some Agile practitioners accomplish these critical story conversations during planning sessions like iteration planning or sprint planning. That works pretty well if you’re working with teams that work effectively together and come into the discussion with a good understanding of their product. For teams I worked with for years, that’s the way we did things.

But one of the biggest complaints I hear from Agile teams is that these planning meetings are often long, torturous affairs. At some point everyone agrees on what to build, even if they don’t have shared understanding, just to make this torturous meeting stop.

Crowds Don’t Collaborate

The torturous sprint planning meeting has become such a common dysfunction that many teams sensibly choose to have these story discussions in the days preceding the meeting. They often have these scheduled in their calendars as pre-planning meetings, backlog grooming, or backlog refinement meetings. But, too often, what happens is they’ve simply moved the same torture they hated during the planning meeting to a different day. To add insult to injury, team members are asked to take a break from their current productive work to sit through this torture. No wonder they’re not excited about it.

The problem isn’t that story conversations are hard. Well, actually they can be pretty hard at times. But all conversations are made tougher by trying to include too many people. If many of those people aren’t interested or motivated to participate, you’re doomed. You know the people I’m talking about—the ones pretending we can’t see them playing with their smartphones under the table.

Allow team members to opt in to these conversations. If later they complain about the decisions made, make sure you invite them to be there next time.

If everyone wants to participate, try using a fishbowl collaboration pattern like the one described in the following sidebar. This way, interested people can drop by, participate if they want, and leave if they find they’re not missing anything exciting.

Split and Thin

Remember the cake and cupcakes discussion from Chapter 8? Now’s the time to break down those cakes to the smallest cupcakes you can. It’s now—when we’ve got developers, testers, and others who can really build the software—that we can really imagine how we could break down the story.

Remember that software is “soft.” Well, it’s not soft like a sponge or a cupcake. Ideally, it’s more like a rather large document or a book. If you were writing a book, like I’m doing my best to do right now, you wouldn’t try to do it all at one time. You might sit down and write a chapter at a time. In fact I’ll write a chapter at a time, and Peter, my competent, supportive editor, will review what I’ve written and make corrections and suggestions.

But then the chapter’s not “done.” Far from it.

I’ll need to go back through and figure out where there should be illustrations. I’ll need to figure out if I should add footnotes, references, glossary terms, or index items. Then other editors from the publisher will go back through each chapter, making final refinements. I’ve naturally split up the work to do it iteratively so that I can see the whole book take shape sooner.

You’re reading the “Refine, Define, and Build” chapter. And if you’re reading it now, it’s hopefully fully baked. If I were to think about my final acceptance criteria, I’d say it should be:

  • Edited and understandable by me
  • Edited and understandable by my editors
  • Supported by illustrations that help enable readers to visualize points
  • Supported by an index readers could use to find terms in the chapter
  • Supported by a glossary that readers could use to look up definitions of terms introduced in the chapter

Crap, that’s a lot of work. Even as I type those things into the first draft now, I realize I’ve got lots of work to do. But I don’t want to do all of it before moving on to the next chapter, because I’d like to see how the whole book is hanging together. So I’ll break it into “cupcakes”—small, complete parts that aren’t ready to ship, but that boost my confidence that I’m on the right track as I move through this book.

I’d break down my work into stories like this:

  • Refine, Define, Build first rough draft
  • Refine, Define, Build second refined draft
  • Refine, Define, Build with illustrations
  • Refine, Define, Build with reviewer feedback incorporated
  • Refine, Define, Build index terms
  • Refine, Define, Build glossary terms
  • Refine, Define, Build final draft

Each one of those things I can tell a story about describes what it looks like, and thinks through the steps I (with Peter’s editing assistance) must accomplish to finish each of these smaller versions and improvements to the chapter. And you can see that as each thing is completed, the chapter gets progressively more refined and closer to releasable. In theory, there’s something you could see and consume after the first story in the list is done. But I wouldn’t do that to you. It wouldn’t be pretty, and your reactions wouldn’t be good.

Finally, since I know you’re on top of your game, you may have noticed that the list of smaller, cupcake-sized stories looks a lot like the acceptance criteria for the chapter. That’s the magic here. It’s the discussion of the acceptance criteria that reveals how we could break down the work into smaller parts we could create and inspect along the way.

It’s important to inspect your work along the way so you can evaluate it and make course corrections. You should have seen the really stupid example I’d originally written here. But you’ll never see it because I wrote it, inspected it, and then removed it.

In a traditional software process, that “inspecting and removing” stuff would be called bad requirements. But, when you’ve got your Agile hat on, it’s just learning and iterative improvement.

When you’re really having good story discussions, and I know you will, at the end of a story workshop you should have right-sized stories supported by lots of extra documentation and models, and by acceptance criteria that describe how you’ll check this story to confirm it’s done. Sometimes it’ll take a couple of workshops supported by a little outside research, analysis, and design work to arrive at agreement, but that’s OK. Cutting and polishing takes time, and a bit more patience.

Use Your Story Map During Delivery

Use a map to build shared understanding with your delivery team. I often hear from team members working in an Agile process how much they like collaborating, and how productive they feel because every week or two they see and demonstrate working software. But then they follow that up with statements like, “I feel like I’ve lost the big picture. All I see are these little parts of the product we build.” Use a map to give the team the visibility of the whole product or feature you’re working on. They’ll make better tactical design and development decisions if they understand the context those decisions fit into.

Use a Map to Visualize Progress

As you begin to build your product release, the map makes a good visual dashboard to show what you have and haven’t built.

Some teams remove detailed stories from the body of the map as they bring them into development to complete. That way, when they look at the map, all they see is what’s left to build.

Other teams like leaving the map in place and using pens or colored stickers to mark the stories they’ve completed. When they step back and look at the map, they see a visualization of what’s done, and what’s left to do.

image with no caption

Use the map to identify the next stories to build. Every week, product owners will need-assess the progress of ongoing development work, and make decisions about what’s important to focus on next. When the map visualizes progress, then it’s a bit easier to scan it to look for areas that need more focus. It’s sort of like being a painter. If you can step back and take in the entire painting, it’s easer to figure out where to start working next.

Use Simple Maps During Story Workshops

Each development cycle, you’ll identify stories in the map you should work on next. You’ll carry those stories into those last best conversations you’ll have during story workshops.

An easy visualization to build during that workshop is a simple map. You might be mapping only the three or four steps the user takes using a feature you’re discussing. But being able to point to sticky notes on a wall that show the flow helps the discussion move faster. As you begin to discuss acceptance criteria, write them on sticky notes and add them into this mini-map. In the end, you’ll have a simple visualization that supports the conversation you had in this workshop.

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

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