
Let’s continue reading chapter 23 of the book Agile Estimating and Planning, by Mike Cohn. In this second post you will realize about the convenience of writing down physical cards and how to conduct a brainstorming session to make team members infer requirements, a.k.a. user stories. A piece of advice: try to follow thematic areas during the brainstorming to cover all requirements.

Team members can also estimate size and complexity of requirements in a game named planning poker: user stories can be sized using non dimensional units known as story points. Later on, big user stories will have to be broken down into more manageable ones.
One basic rule to follow: Good defined user stories should be INVEST –Independent, Negotiable, Valuable, Estimable, Small and Testable.
Now you can read how is a session to collect requirements in an agile project. At the end of the session, that could take between 2 and 4 hours, team members of the Havannah project will have agreed on 32 user stories and the project sizing of 146 story points.
Do you want to know how to do it? Just keep on reading…
[…]

“So how do we get started writing the user stories?” Frank asked.
–Vamos a usar estas tarjetas –dijo Carlos, a la vez que le daba un paquete de tarjetas a cada persona–. A mí me gusta escribir historias de usuario con esta plantilla. –Carlos sacó un rotulador y escribió en la pizarra:
“We’re going to use these note cards,” Carlos said, as he tossed a package of cards to each person in the room. “I like to write user stories in this template.” Carlos picked up a marker and wrote on the white board:
“As a [], I want [] to so that []”


Brainstorming to write User Stories

- As a player, I can start a new game.
- As a player, I can restore a saved game.
- As a player, I can select the computer’s playing strength.
- As a player, I’d like to be able to use the system to play against another human on my computer.
- As a player, I’d like the appearance of the game to be aesthetically pleasing.
- As a player, I’d like to be able to choose between a wooden board and pieces and a metal board and pieces.
- As a new player, I want to be able to view an interactive tutorial for the game.
- As a player, I want the system to play background music.
- As a player, I can select the background music played by the system.
- As a player, I want to place a piece on the board using either my keyboard or my mouse.
- As a player, I want to see a visual indicator of whose turn it is.
- As a player, I’d like a visual indicator of the last piece played (make it blink perhaps).
- As a player, I’d like to undo and redo moves.
- As a player, I’d like to ask for a hint sometimes.
- As a player, I’d like to be able to save games.
- As a player, I want to be able to quit the game.
- As a player, I want to restart the game so that I can give up and start over.
- As a new player, I want access to an online help system.
- As a player, I want all pieces of the winning shape to blink or glow so that I can see the winning shape.
- As a new player, I’d like to be warned after making a horrible move and be given the chance to take it back.
- As a new player, when it’s my turn to play I’d like to be shown any hex I should play in because if I don’t the computer will play there next and win.
- As a player, I’d like the computer to play a move in no more than 2 seconds on a 2.0Ghz PC.
- As a player, I want the system to keep track of how many games I win and lose. (By the playing strength of the computer?)
- As a player, I’d like to add annotations to saved games.
- As a player, I’d like to step forward through moves so that I can review a game I’ve already played.
- As a player, I can save a game.
Estimating The User Stories with Story Points


Breaking big user stories down



- As a player, I can play against a weak engine that recognizes rings (8)
- As a player, I can play against a weak engine that recognizes bridges (5)
- As a player, I can play against a weak engine that recognizes forks (8)
Making User Stories Independent

What to do with dependent User Stories?


Brainstorming Outcome: 32 user stories and 146 story points
The stories and their estimates are shown bellow:- As a player, I can start a new game (1)
- As a player, I can restore a saved game (2)
- As a player, I can select the computer’s playing strength (1)
- As a player, I can play against a weak engine that recognizes rings (8)
- As a player, I can play against a weak engine that recognizes bridges (5)
- As a player, I can play against a weak engine that recognizes forks (8)
- As a player, I can play against a medium-strength engine (8)
- As a player, I can play against a strong engine (20)
- As a player, I’d like to be able to use the system to play against another human on my computer (3)
- As a player, I want the computer to recognize a winning shape (2)
- As a player, I want a nice looking splash screen when the program starts (5)
- As a player, I want nice looking background art that integrates with the game boards (5)
- As a player, I’d like to be able to choose between a wooden board and pieces and a metal board and pieces (8)
- As a player, I’d like to ask for a hint sometimes (1)
- As a new player, I want to be able to view an interactive tutorial for the game (8)
- As a player, I want the system to play background music (5)
- As a player, I can select the background music played by the system (1)
- As a player, I want to place a piece on the board using either my keyboard or my mouse (3)
- As a player, I want to see a visual indicator of whose turn it is (2)
- As a player, I’d like a visual indicator of the last piece played (make it blink perhaps) (2)
- As a player, I’d like to undo and redo moves (2)
- As a player, I’d like to be able to save games (3)
- As a player, I want to be able to quit the game (1)
- As a player, I want to restart the game so that I can give up and start over (1)
- As a new player, I want access to an online help system (8)
- As a player, I want all pieces of the winning shape to blink or glow so that I can see the winning shape (3)
- As a new player, I’d like to be warned after making a horrible move and be given the chance to take it back (8)
- As a new player, when it’s my turn to play I’d like to be shown any hex I should play in because if I don’t the computer will play there next and win (3)
- As a player, I’d like the computer to play a move in no more than 2 seconds on a 2.0Ghz PC (8)
- As a player, I want the system to keep track of how many games I win and lose. (By the playing strength of the computer?) (3)
- As a player, I’d like to add annotations to saved games (3)
- As a player, I’d like to step forward through moves so that I can review a game I’ve already played (5)
