User Stories Applied: For Agile Software Development
|
| List Price: | $54.99 |
| Price: | $35.47 & eligible for FREE Super Saver Shipping on orders over $25. Details |
Availability: Usually ships in 24 hours
Ships from and sold by Amazon.com
41 new or used available from $24.99
Average customer review:Product Description
The concept of user stories has its roots as one of the main tenets of Extreme Programming. In simple terms, user stories represent an effective means of gathering requirements from the customer (roughly akin to use cases). This book describes user stories and demonstrates how they can be used to properly plan, manage, and test software development projects. The book highlights both successful and unsuccessful implementations of the concept, and provides sets of questions and exercises that drive home its main points. After absorbing the lessons in this book, readers will be able to introduce user stories in their organizations as an effective means of determining precisely what is required of a software application.
Product Details
- Amazon Sales Rank: #20733 in Books
- Published on: 2004-03-11
- Original language: English
- Number of items: 1
- Binding: Paperback
- 304 pages
Editorial Reviews
From the Back Cover
Agile requirements: discovering what your users really want. With this book, you will learn to:
- Flexible, quick and practical requirements that work
- Save time and develop better software that meets users' needs
- Gathering user stories -- even when you can't talk to users
- How user stories work, and how they differ from use cases, scenarios, and traditional requirements
- Leveraging user stories as part of planning, scheduling, estimating, and testing
- Ideal for Extreme Programming, Scrum, or any other agile methodology
Thoroughly reviewed and eagerly anticipated by the agile community, User Stories Applied offers a requirements process that saves time, eliminates rework, and leads directly to better software.
The best way to build software that meets users' needs is to begin with "user stories": simple, clear, brief descriptions of functionality that will be valuable to real users. In User Stories Applied, Mike Cohn provides you with a front-to-back blueprint for writing these user stories and weaving them into your development lifecycle.
You'll learn what makes a great user story, and what makes a bad one. You'll discover practical ways to gather user stories, even when you can't speak with your users. Then, once you've compiled your user stories, Cohn shows how to organize them, prioritize them, and use them for planning, management, and testing.
- User role modeling: understanding what users have in common, and where they differ
- Gathering stories: user interviewing, questionnaires, observation, and workshops
- Working with managers, trainers, salespeople and other "proxies"
- Writing user stories for acceptance testing
- Using stories to prioritize, set schedules, and estimate release costs
- Includes end-of-chapter practice questions and exercises
User Stories Applied will be invaluable to every software developer, tester, analyst, and manager working with any agile method: XP, Scrum... or even your own home-grown approach.
About the Author
Mike Cohn is the founder of Mountain Goat Software, a process and project management consultancy and training firm. With more than twenty years of experience, Mike has been a technology executive in companies ranging from start-ups to Fortune 40s, and is a founding member of the Agile Alliance. He frequently contributes to industry-related magazines and presents regularly at conferences. He is the author of User Stories Applied (Addison-Wesley, 2004).
Excerpt. © Reprinted by permission. All rights reserved.
I felt guilty throughout much of the mid-1990s. I was working for a company that was acquiring about one new company each year. Every time we'd buy a new company I would be assigned to run their software development group. And each of the acquired development groups came with glorious, beautiful, lengthy requirements documents. I inevitably felt guilty that my own groups were not producing such beautiful requirements specifications. Yet, my groups were consistently far more successful at producing software than were the groups we were acquiring.
I knew that what we were doing worked. Yet I had this nagging feeling that if we'd write big, lengthy requirements documents we could be even more successful. After all, that was what was being written in the books and articles I was reading at the time. If the successful software development teams were writing glorious requirements documents then it seemed like we should do the same. But, we never had the time. Our projects were always too important and were needed too soon for us to delay them at the start.
Because we never had the time to write a beautiful, lengthy requirements document, we settled on a way of working in which we would talk with our users. Rather than writing things down, passing them back and forth, and negotiating while the clock ran out, we talked. We'd draw screen samples on paper, sometimes we'd prototype, often we'd code a little and then show the intended users what we'd coded. At least once a month we'd grab a representative set of users and show them exactly what had been coded. By staying close to our users and by showing them progress in small pieces, we had found a way to be successful without the beautiful requirements documents.
Still, I felt guilty that we weren't doing things the way I thought we were supposed to.
In 1999 Kent Beck's revolutionary little book, Extreme Programming Explained: Embrace Change, was released. Overnight all of my guilt went away. Here was someone saying it was OK for developers and customers to talk rather than write, negotiate, and then write some more. Kent clarified a lot of things and gave me many new ways of working. But, most importantly, he justified what I'd learned from my own experience. Extensive upfront requirements gathering and documentation can kill a project in many ways. One of the most common is when the requirements document itself becomes a goal. A requirements document should be written only when it helps achieve the real goal of delivering some software.
A second way that extensive upfront requirements gathering and documentation can kill a project is through the inaccuracies of written language. I remember many years ago being told a story about a child at bath time. The child's father has filled the bath tub and is helping his child into the water. The young child, probably two or three years old, dips a toe in the water, quickly removes it, and tells her father "make it warmer." The father puts his hand into the water and is surprised to find that, rather than too cold, the water is already warmer than what his daughter is used to. After thinking about his child's request for a moment, the father realizes they are miscommunicating and are using the same words to mean different things. The child's request to "make it warmer" is interpreted by any adult to be the same as "increase the temperature." To the child, however, "make it warmer" meant "make it closer to the temperature I call warm."
Words, especially when written, are a very thin medium through which to express requirements for something as complex as software. With their ability to be misinterpreted we need to replace written words with frequent conversations between developers, customers, and users. User stories provide us with a way of having just enough written down that we don't forget and that we can estimate and plan while also encouraging this time of communication.
By the time you've finished the first part of this book you will be ready to begin the shift away from rigorously writing down every last requirement detail. By the time you've finished the book you will know everything necessary to implement a story-driven process in your environment. This book is organized in four parts and two appendices.
Part I: Getting Started—A description of everything you need to know to get started writing stories today. One of the goals of user stories is to get people talking rather than writing. It is the goal of Part I to get you talking as soon as possible. The first chapter provides an overview of what a user story is and how you'll use stories. The next chapters in Part I provide additional detail on writing user stories, gathering stories through user role modeling, writing stories when you don't have access to real end users, and testing user stories. Part I concludes with a chapter providing guidelines that will improve your user stories.
Part II: Estimating and Planning—Equipped with a collection of user stories, one of the first things we often need to answer is "How long will it take to develop?" The chapters of Part II cover how to estimate stories in story points, how to plan a release over a three- to six-month time horizon, how to plan an ensuing iteration in more detail, and, finally, how to measure progress and assess whether the project is progressing as you'd like.
Part III: Frequently Discussed Topics—Part III starts by describing how stories differ from requirements alternatives such as use cases, software requirements specifications, and interaction design scenarios. The next chapters in Part III look at the unique advantages of user stories, how to tell when something is going wrong, and how to adapt the agile process Scrum to use stories. The final chapter of Part III looks at a variety of smaller issues such as whether to writes stories on paper note cards or in a software system and how to handle nonfunctional requirements.
Part IV: An Example—An extended example intended to help bring everything together. If we're to make the claim that developers can best understand user's needs through stories then it is important to conclude this book with an extended story showing all aspects of user stories brought together in one example.
Part V: Appendices—User stories originate in Extreme Programming. You do not need to be familiar with Extreme Programming in order to read this book. However, a brief introduction to Extreme Programming is provided in Appendix A. Appendix B contains answers to the questions that conclude the chapters.
Customer Reviews
The user story bible
'User Stories Applied' was a book that long stood on my Amazon wish list with a 'must have' rating. I'm not disappointed. I loved the book. Now let me explain why.
First of all, running the planning aspect of an XP project, for example, well is essential for reaping the benefits of agile software development. Yet, relatively little has been written to guide practitioners in doing that. I, for example, have made all the mistakes Cohn enumerates in the chapters for guiding the user towards writing *good* user stories (usually more than once). These sorts of things make you realize you shouldn't put the book on the shelf to gather dust! The author doesn't cover just writing good user stories, but the whole spectrum from putting together the customer team to estimating stories to discussing the stories to writing acceptance tests for the stories.
Second, it's a pleasure to read. The structure makes sense, each chapter is followed by a useful summary, and there's a set of questions -- along with answers -- to make sure you understood what the chapter talked about. Usually these kinds of Q&A sections simply force me to skip them over. The questions in this book did not. I read each and every one of them and I think there was only one set of questions that I did 'pass' with the first try, usually having forgotten some rather important aspects to consider (concrete evidence of their usefulness to me). To finish, the last part of the book, an example project, nicely ties together all the threads.
As usual, there were some things I experienced not so well. I believe the chapter on applying user stories with Scrum could've been left out without breaking the plot. Also, I think a typical user wouldn't have been bothered about dropping the appendix introducing Extreme Programming.
In summary, this is the book to get if you're involved with user stories. I had to pause reading every few pages to scribble down some specific tips. I'm confident that you will too.
For XP enthusiasts
Writing user stories is one of the twelve practices of the XP software development methodology. User stories summarily describe features of the software that must be developed, from the point of view of the user. This means that no implementation detail is present on stories.
As with all the XP practices, the emphasis is on traveling light, producing only those artifacts that are absolutely necessary. Thus, user stories contain a brief description of the feature as a reminder, to the developers and to the customer, that sometime in the future they will need to meet and flesh out the details. This is in contrast to techniques like use cases, which might seem similar but are much more formal and rich.
User stories also play a fundamental role in the planning game, one of the other XP practices. During the planning game, the development team and the customer together discuss the stories, the developers estimate the time necessary to implement each story, in terms of story points and the customer prioritizes them. During the next iteration, developers will implement those stories that the customer deemed more urgent, up to a number whose total sum of points does not exceed the estimated team velocity.
All of this is explained in a couple of the XP series books, namely Extreme Programming Explained: Embrace Change and Planning Extreme Programming You'd better have already read at least the former of those before picking up Mike Cohn's book.
User Stories Applied does a good job explaining in detail what user stories are, what goes into them -and what doesn't -, how they should be estimated and what to do with them after the stories have been implemented.
There's a lot of good sense advice in this book, which might induce someone to think that user stories and all other XP practices are just a bunch of generic suggestions that you might apply or not, as you wish. That's certainly not true, as XP is a methodology whose effectiveness lies in the combined action of all the practices when they are taken to the limit. This takes determination and discipline and, in my experience, it's just too easy to fall into the habit of following only some of them, say when you're not under deadline pressure, and still pretend that you're an XP shop.
I would have liked more real-life stories in this book, in order to spice it up a little. As it is, everything that is there sounds highly reasonable (at least to me) but it wouldn't convince anyone who is skeptic of XP's supposed benefits. The example at the end of the book sounds contrived and hollow.
On the other hand, if you have been already convinced by Kent Beck's white book and want to start adopting XP, I can heartily recommend Mike Cohn's book.
Finally! Practical advice on writing user stories, and more
This excellent book is a must-have for anyone on an agile team - developers, testers, business experts, analysts - and for anyone who struggles with requirements, planning, or estimating on any software project.
User Stories Applied is easy to read and digest. As the title suggests, its techniques are easy to apply and deliver huge value. Each chapter summarizes developer and customer responsibilities, and has questions whose answers are provided in an appendix. The book is full of real-life, concrete examples, allowing you to learn from the successes and failures of others.
This book will give you many tools to help your projects succeed. Just a few of the most valuable topics:
When are user stories too big, too small, too detailed, too general, too open ended, when are they not user stories, and how to correct all these.
Why use user stories.
How to handle requirements for infrastructure, performance, qualitative aspects, UI.
How to ask questions to elicit requirements.
How to cope when you don't have `on-site customers'.
Practical ways to estimate stories.
Monitoring velocity and progress.
When to keep and when to discard artifacts.
Mike explores the differences between stories and other techniques for delivering requirements: IEEE 380, use cases, scenarios. He points out many positive side effects of user stories, such as encouraging participatory design and tacit knowledge accumulation.
I particularly like that the book emphasizes the team's responsibility to successfully complete each iteration. I enjoy Mike's illuminating bits of wisdom, such as the "everything takes 4 hours" example. I love the comprehensive example in Part IV. No matter what your level of experience, you'll put the ideas in this book to immediate and productive use.






