Exercises to Help You Toward Genius
You now understand some of the reasoning behind breaking down stories into extremely focused tasks. This section contains some conversations between you and your customer. Read these conversations, and then try to work out the stories and break them down into tasks. At the end of the book (Appendix I), I provide some possible solutions to these exercises; however, they are not definitive answers. When carrying out the task breakdown, there is not one right way to do it, but there are certainly some wrong ways. Remember to keep each story adding one piece of functionality and each task doing just one thing. Each exercise should take you no more than an hour to complete.
Exercise 3-4: The Shopping Cart
Customer: I need a shopping cart for my Web site.
You: Okay, what do you need it to do?
Customer: You know, shopping cart stuff!
You: I guess you need to add items to the cart?
Customer: Of course! And take items out
You: Anything else?
Customer: Yes, I want to have a running total of the value of items in the user's cart.
You: So each user can see his or her own running total?
You: Does the system need to remember what's in my cart the next time I log on?
Customer: No. I don't think so; they can start again.
You: Okay, give me an hour and I'll get you some timeframes and an idea of how we'd go about developing that.
Exercise 3-5: Derived Stock Market Data
Stock trader (customer): I want to be able to see a set of derived data for my portfolio.
You: Where is your portfolio stored?
Stock trader: I don't know! It's in my software somewhere; I think it saves a file to my disk.
You: Okay, and what do you want calculated?
Stock trader: The open price for the day, the high for the day, the low for the day, the close price for the previous day, and how much I've made on that stock.
You: Hold on. That's too much for me to do at one time; let's go through those one by one, first the open price for the day.
Stock trader: Yes, that's the first price that the stock gets quoted at after the market opens at 9 a.m.
You: So, the high for the day is the highest price the stock is quoted at from the time the market opens till it closes?
Stock trader: Yes, the market closes at 5 p.m.
You: And the low is the lowest price between open and close?
Stock trader: Exactly.
You: The close for the previous day? Is that the price at 5 p.m.?
Stock trader: Pretty much. It's the last quoted price before the market closes.
You: And the last one was how much you've made on the stock?
Stock trader: Yes. My software tells me how much of a stock I've got and how much I paid for it, so you can use that information to work out how much I've made, or lost, on the stock.
You: Okay, I'll have to work out how to get that information from your software.
Stock trader: Great. Well, now you know what I want, tell me how long will it take and how much it will cost me.
You: Give me an hour and I'll get back to you with some estimates.
Exercise 3-6: What's the Weather Like?
Customer: I am running a hot air balloon race around the world and I need to have some way to know what the weather is like in the areas around where the balloons will be.
You: So you want me to write some software that does weather forecasting?
Customer: No! That would be a bit expensive, and the race would probably have finished before you get it right!
You: So what do you want?
Customer: Well, there's all this weather information on the Web, and I thought if we could somehow collate it, it would be really useful for me.
You: You want me to develop a portal site for weather information Web sites around the world?
Customer: Would that be like a Web page where I could click a map of the world and get a weather report for the location I click?
You: Yes, we could do that. Do you have a list of sites that we can use to get the weather from?
Customer: No. I thought you'd know what was best
You: I'll put together a list for you to look through. Is there anything else you need it to do?
Customer: Oh yes, I need to know if there are any severe weather conditions around the world that should be avoided.
You: So you need a list of typhoons, hurricanes, hailstorms, floods?
Customer: Yes. I need to be able to see that list at all times; it must be up-to-date.
You: Okay, let me take all this information away and get back to you with some estimates for delivery times
Customer: Great, I have to dash; I have a race to run. Call me in an hour with what you have.
Exercise 3-7: The Unfinished Solution
Manager (customer): Ah, there you are; I've been looking for you.
You: Why? What do you want?
Manager: Remember Bob was working on that Mailer program?
You: Sure, he seemed to be enjoying doing a .NET project.
Manager: Yes, well he's been pulled off because he knows everything about the C++ code in the TY project.
Manager: I need you to pick up where Bob left off and finish the Mailer program.
You: Okay, can I have a few days with Bob to hand over the project?
Manager: It's too late for that. Bob's already on a plane to HQ to work with the other guys on TY.
You: Oh... so did Bob have a spec or any Use Cases or stories he was working from?
Manager: I don't know. I never saw him write anything down in the entire time I've worked with him. That guy is just so smart he remembers everything you tell him.
You: Great, but I need to know what the software is supposed to do!
Manager: Okay, calm down. I'll go through it with you now. It is a program that enables you to collect a group of contacts together with their e-mail addresses and then send one e-mail that goes to all of them but with different bits being only for certain people on the list.
You: Okay, so do you know how far Bob got?
Manager: Yes, he had built a way of creating a contact, with an e-mail address and a collection of tags, and adding that contact to a collection of contacts. He said it was all stored in an XML file.
You: That's a good start; sounds like each contact has a profile?
Manager: That is the idea.
You: So the next thing to do would be to provide the user with a mechanism to enter an e-mail with tags in it?
Manager: Yes, and then send the e-mail to each person in the contact collection.
You: Only sending each person the tags that included contact details in their profile?
Manager: Yes. How long will that take you to do? Because we need you back on the other project shortly.
You: Let me get back to you on that.