Agile Case Study (3/5): Planning the First Sprint
May 24, 2021

Third post on the chapter 23 of the book Agile Estimating and Planning, by Mike Cohn. In the previous post the Havannah team had written 32 user stories, totaling 146 story points.
In this post, team members are working on another project, while analyst Delanie start a market research performing a survey with potential customers. At the end of the two weeks, the team meets again with Carlos, the agile coach, to plan the first iteration and commit as a team to finish the stories with the most priority. As a result, the team commits to finish 4 stories, totaling 18 points.
Do you want to know how to plan the first sprint. Keep reading…

“So where do we go from here? We need one more two-week iteration on Deep Black & White before we send it to the publisher,” Frank said.
“While everyone else is working on that I’m going to interview some likely buyers of this game,” Delaney said. “I want to see what features are the most important.”
“Will that take long?”
“No, I’ll be done before the end of the iteration,” Delaney said. “Let’s meet again in two weeks, right after we ship Deep Black & White and after Frank takes us all out to celebrate finishing it.”
“Sounds great. I’ll get right on that celebration. Are hamburgers OK, Delaney? Or should we splurge for pizza?”
Preparing For Product Research
In the quiet of the early morning of the next day, Delaney sat at her desk in the team’s new open space preparing the questionnaire she would use to interview prospective game buyers. Frank had asked to met with her sometime during the day so she could explain to him how she was going to prioritize features. As the product manager, Frank would make the final decisions about what would be in the product, but Delaney knew that he would rely heavily on her research. She wanted to be prepared for meeting with him. By the time Frank arrived, Delaney had nearly the finished the questionnaire. “Good morning, Delaney,” Frank greeted the analyst. “Do you still have time to get together this morning?” “Absolutely. I came in early to finish the questionnaire I want to send. I’d like to show it to you.” “Let’s do it,” Frank said as he pulled up a chair. “Show me what you’ve got.” “I printed this about a half hour ago,” Delaney said as she handed Frank the page shown in the following table. “I’ve added more questions since I printed that. But it’s enough to give you an idea of what I’ll send.” Frank reviewed the page Delaney had given him and then asked.


Planning The First Iteration
“So, what should we develop first?” Rose asked. “I want to get started on the move engine,” Allan said. “That’s our biggest risk.” “No argument from me,” Sasha, the other programmer on the team, said. “Are there things I can do to help, Allan? Normally, all of the artificial intelligence work is yours.” “Yeah, there are things you can do. Thanks,” Allan said. “That would help me a lot because I’m worried about how hard it might be to do the strong engine.” “So let’s start with the story, As a player, I can play against a weak engine that recognizes rings. Isn’t that the one you want to do first, Allan?” Delaney asked. “Yes, it is. The first thing we need to do is code the classes that will keep track of the state of the board, keep track of whose turn it is, and stuff like that. Sasha, you can definitely help there.” “OK. How long do you think it will take? A couple of days?” “A couple of solid days. Let’s say 16 hours,” Allan answered. “Allan, we want to capture each task on a note card. Write that on a card and put 16 in the corner of the card so we don’t forget the estimate,” Carlos said. Allan wrote the task card: Code state management classes (16 hours) “Should I put my initials on it so we remember this is my card?” “No, it sounds like you’ll probably be the one to do it. But it works better if we don’t assign work to specific individuals right now.” “I’m going to need to test this,” Prasad said. “It shouldn’t take long, but this is the first code on this project and I want to make sure I set it up right. I’m going to say testing will take 10 hours.” He wrote task card: Write automated tests for state management classes (10 hours). “Carlos, you told me earlier I need to break my work up into small pieces,” Allan said. “I can’t just say that writing the move engine for rings will take 2 weeks, can I?” “No, you can’t. When we’re identifying tasks we want them to be around 1– 16 hours. Ideally you should be able to finish one each day, which means the average should be like five or six hours since we always have a few other things to do each day.” “In that case,” Allan said, “the way I plan to write this is to first have a move engine that will be smart enough to play six hexagons in a row to make a ring. There won’t be an opponent trying to stop the engine. I’ll have the engine start in a random place on the board and figure out how to make a ring in six moves. Next I’ll write it so that it tries to make a ring even if an opponent tries to block the ring. Then I’ll switch to the defensive side of rings. I’ll have the engine try to block another player that is trying to make a ring. That’ll be it for this story for me.” “OK, I wrote a task card that says Have move engine pursue an unblocked ring. That’s what you said you wanted to do first,” Sasha said. “That’ll probably take me most of a day. Put 6 hours on that card, please” Allan said. “Allan, no offense but you are always optimistic at the start of a new engine,” Rose, the artist, said. “Yeah, you’re right. You better double that,” Allan agreed. Sasha crossed out the 6 and wrote 12 hours on the card. Carlos then led the discussion through estimates of the other tasks Allan had identified. “Are there other tasks we haven’t identified for this story?” he asked. “We might want to include some time for testing!” Prasad said. “If Allan can give me code after each of the tasks he identified, I can define and automate tests right along with him. Any bugs I find he’ll hear about while the code is fresh in his mind. I wrote the tasks on cards while Allan was describing how he’ll code this, but I haven’t estimated them yet. Can we do that together now?” When they finished discussing the As a player, I can play against a weak engine that recognizes rings story, they had written the task cards for this story.
- Code state management classes (16)
- Write automated tests for state management classes (10)
- Have move engine pursue an unblocked ring (12)
- Write automated tests for unblocked rings (12)
- Have move engine pursue a ring even if the human player tries to block it (8)
- Identify test cases for trying to make a blocked ring (4)
- Automate test cases for making a blocked ring (4)
- Have the move engine try to block a human player who is trying to make a ring (12)
- Identify test cases for blocking a human player making a ring (4)
- Automate test cases for blocking a human player making a ring (2)


- Frank
- Allan (1 day)
- Rose (2 days)
- Sasha
- Prasad
- Delaney

- Very simple board and graphics (4h)
- Draw empty board (2h)
- Clicking on a hexagon adds a new piece of the right color (4h)
- Computer knows when a piece completes a winning pattern (6h)
- Design tests (6h)
- Automate tests (8h)

- Engine can find path from one corner to another (that is, form a bridge) (4h)
- Identify and automate tests for simple bridge design (6h)
- Engine can form a bridge around obstacles (12h)
- Identify tests for forming a bridge around obstacles (6h)
- Automate tests for forming a bridge around obstacles (4h)
- Engine knows when to give up on a particular bridge (8
- Identify tests for giving up on a bridge (4h)
- Automate tests for giving up on a bridge (2h)
- Engine tries to prevent a another player from forming a bridge (4h)
- Identify tests for blocking another player from making a bridge (4h)
- Automate tests for blocking another player from making a bridge (4h)
- Engine can choose appropriately between placing a piece that leads to making a bridge and one that leads to making a ring (16h)
- Identify tests for choosing between making a bridge or a ring (6h)
- Automate tests for choosing between making a bridge or a ring (2h)


- As a player, I can play against a weak engine that recognizes rings (8)
- As a player, I’d like to be able to use the system to play against another human on my computer (5)
- As a player, I can play against a weak engine that recognizes bridges (2)
- As a player, I’d like to be able to use the system to play against another human on my computer (3)