Tags: product backlog | sprint planning | sprints | Scrum Artifacts | Scrum Ceremonies

Some people want to take the stance that no work should be done in advance of the sprint. That is clearly untenable. To see why, let’s take that view to its extreme: If we did nothing in advance to understand what we're building, we’d show up at the planning meeting and say, “Hey, what should we build this sprint? We were working on an eCommerce site yesterday, but I think maybe we should switch to writing a word processor...” The team would literally have nothing written down—no product backlog / user stories / prioritized feature list at all.

This approach leads to what I call “billiard ball sprints.” Without any planning, the team starts a new sprint on the day after the prior one end, but spends the first two to five days “getting ready” to start the sprint. The start date of the second sprint is knocked forward by the end of the first—like one billiard ball knocking into another.

Having dispensed with the possibility that no work should be done in advance we are left to consider the question of how much work should be done in advance. Many say that as little as possible should be done: the team should do no more than write a few words of a user story on an index card to represent each product backlog item. While it’s true that this may be sufficient in many cases, it would clearly not be adequate in all situations.

My view is that each product backlog item (usually reflected as a user story by teams I train or coach) should be captured just in time and in just-enough detail for the team to go from product backlog item to working, tested feature within a sprint. To see why just-in-time and just-enough are appropriate targets, suppose we decide to write a checkbook program to compete with Intuit's Quicken product. We create an initial product backlog that includes these two user stories:

  • As a user I can see the current version, company website, and copyright in a "help about" dialog so that I know useful information about the product.
  • As a user I can enter a check in my register so that I can track who I pay.

That first story can go from that short description to implemented code quite easily within a sprint. The analyst will have time to figure out exactly what the text should say; the user experience designer (UED) will have time to mock up two or three screens, show them to some users, get feedback, and create the best possible “help about” screen. And the programmers will have time to code it and the testers to test it. In short, it meets the just-enough-detail criteria.

The second user story, “As a user I can enter a check in my register,” is too big to be done in a single sprint. It encompasses the entire main user interface (UI) metaphor—will our system look like a paper check register? How many rows in the register? How will users choose things like check numbers or electronic funds transfer (EFT) transactions, and so on. There is no way the UEDs can figure all that out in a two-week sprint. This user story is not explained in just-enough detail. This is where our second attribute comes in: detail should be added to this user story (product backlog item) just in time. If the team will not work on this user story for six months there is no need to expand on what is already written. On the other hand, if the team hopes to start it in a few sprints, it is likely time for the UEDs to figure out the answers to the high-level questionslisted above.

To do this, they’ll need to allow time to “figure out the answers” in the upcoming sprints. Let’s say that during the first sprint the team chooses to work on the “help about” story and likely a few others (not shown in our sample product backlog above). They also agree to spend some time figuring out what the main UI metaphor for the system will be.  During this time the UED may design a couple of screens and show them to a few dozen or hundred users, get feedback, and do it again. This may happen a few times. When they finish they may have turned that one user story (as a user I can enter a check in my register) into a dozen smaller stories, perhaps specifying what fields are needed and other details such as:

  • As a user, when I enter a new check it defaults to the last check number + 1
  • As a user, I can enter a memo for each check, etc.
  • As a user, I can double-click on a check in a list and see the current item look like a paper check.

In some cases splitting a large story into smaller ones is sufficient to show the new items at the right (just-enough) level of detail. When it’s not, we can augment the user story with additional information. I like to write user stories on index cards. That was sufficient for the "help about" story. It’s not for the initial large user story encompassing our system’s main UI metaphor. If splitting a story does not add just-enough detail, the UED and others involved may want to staple a UI design spec to the index card. (If you are using a software system for managing your product backlog, your virtual staple may be a hyperlink to a wiki page.)

The UI design spec that is stapled to the user story card will not yet be perfect; rather it will be close enough that remaining details can be figured out during the sprint. For example, the UED may not yet have decided if each check should take two rows or three on the screen and wants to do a bit of user testing early in the sprint while the team codes that story. He'll get them an answer early enough that they can do it either way during the sprint. 

The goal of the UED (and anyone else involved at the time) is to add detail to the story in a just-in-time manner. There is usually no value to splitting a large user story up now or stapling a document to it if we won’t work on that product backlog item for quite awhile. While working to add detail in a just-in-time manner, those doing so should strive to add just-enough detail that no individual item will take more than one sprint to complete. Just-in-time and just-enough become the targets for establishing a smooth flow from product backlog to sprint backlog.

Article Comments

  1. Haim Deutsch said on 12 Feb 08 05:22:
    Yeah, gotcha! You just removed my biggest problem. I had always difficulties to explain my coached people when to capture product backlog items. It is in general pretty easy to explain just-enough (i usualy didn't give this name but well-defined-item), it is much difficult to explain when to begin define complex user-stories (i used to call them story-what? ). I will certainly use your example it is just-enough and just-in-time as both. however to be entirely honest, i remain with the difficulty of correctly extimate how long time it will take to the product manager to reach just-enough storie, and this is inherently due to the un-defined nature of the item. Honestly this is where I fall (when I do fall at all :) ). This why I generally advise to prompt as soon as possible such items, and begin to define them ASAP too, this is risk management when the just-in-time value is not definable. So we pull down the risk for the teams to not have enough sprints to implement the meta-item. Another reason to begin to define it ASAP, is for estimation and planning needs. If you have to commit to a release date, it become critical to be able to put a story-points stamp on the index card(s). Let say that this is thinking material. I entirely agree with Mike's article, and will use it for training and implementation. Thanks.
  2. Mike Cohn said on 12 Feb 08 12:25:
    Hi Haim- I'm glad you found this article helpful. I have teams estimate with the sequence of values 1, 2, 3, 5, 8, 13, 20, 40 and 100 (story points or ideal days). I ask them to think of those numbers as buckets. A 13-liter bucket cannot hold a 14 or 15 liter backlog item so that item is put in the next larger bucket (20 in this case). This helps some with the risk of estimating the large items early. The goal with estimates like that should really be around deciding whether a feature is worth doing and whether we should do it in this release or the next. But you are right that when more precision is desired in the estimate, it can be helpful to split a product backlog item (user story) up sooner.
  3. Haim Deutsch said on 13 Feb 08 09:56:
    Swell Mike, I'm using too your Fibonacci story points-serie, and it is the best tool I found around in order to estimate tasks. But were I 1000% agree with you is concering the question "is a feature worth doing for the current sprint". I'm pushing the question to its extrem "is a feature worth doing for the current release!" And as you know, we have often the conviction that it shall not be done for the current release/sprint, but postponed to the next one. However it is not less often much difficult to explain the price of doing this feature over other. Using story points, you show not only the price, but certainly the cost too. And this is a winning argument!
  4. Geir Amsjo said on 26 Feb 08 06:49:
    Thanks Mike, this is an area in need of some better guidance! I have experienced Sprint planning with almost no preparation or understanding of the Product Backlog; Very frustrating and the Sprint suffers from day one. And I have experienced the opposite; We are well prepared, have more than enough estimated Product Backlog Items, some ROI evaluations and even some technical considerations done. The Sprint is likely to run much more smoothly. At a client we made a very simple rule, just to make sure that we found the time to work on the Product Backlog in advance of Sprint Planning: We simply reserved 2 hours a week (every wednesday at 12 o'clock) for "Backlog Work". Almost every time the Product Owner har a lot of new items to discuss and estimate. When we started to use Planning Poker theese meetings became even more valuable. After that the Sprints have had much better success rate, and the Product Owner have been able to prioritize better accoring to Cost / Benefit evaluations.
  5. Mike Cohn said on 26 Feb 08 08:08:
    Hi Geir--It sounds like you've discovered some great subtle ways to improve things for your team. That's fantastic.
  6. Mike Lowery said on 27 Feb 08 14:00:
    Great article mike, this will be a great resource for me to point people at when I can't quite get the message across. On the last project I ran we had all of the discovered product backlog items on the wall next to the dev team in the standup area. It really helped to keep what might be next in the minds of the team and whilst the stories may not have been fleshed out no one had a major surprise. The Other benefit we found was that during the development of an in-sprint story we would often spot backlog items that became redundant.
  7. Mike Cohn said on 27 Feb 08 15:56:
    Hi Mike--It is amazing how even a little bit of visibility (e.g., upcoming cards posted to a nearby wall) can really help the team.
  8. Quentin Gilbert said on 19 Mar 08 08:51:
    I think you've coined a new phrase, Backlog JITJE !!
  9. Cindy Shelton said on 31 Mar 08 19:43:
    Mike, Might I drop a note here? I do this a bit differently and that has me a little concerned as I would not want to get too far from the tree.... When I build the backlog - I build the pile of stories to match one of two visions: basic stories for everything that is expected to be done, with point estimates, for later use for targeting end dates based on our actual velocity AND/OR with just enough detail that business value can be extracted in sub-stories should that be possible. The first vision is so that those who want to see it, can view the progress and the trend line for a targeted completion and start communicating that soon. The second vision is also for the PO to extract some possible opportunities of items that are a higher business value or from the IT side to identify some possible opportunities to address risky items earlier. This is fundamental to my thinking. JIT detail may be alot of detail or very little - depending upon what level of detail the team needs to cry "uncle" using Paretos rule when they have enough information to estimate or anything in that story if broken out would be of equal business value. I really have to pull back teams from the detail as an everyday mantra for awhile and remind them of the 80/20 rule, but the overall effect has been more positive than squashing the detail when it rears its head. Your thoughts?
  10. Mike Cohn said on 01 Apr 08 00:52:
    Hi Cindy-- I don't exactly follow what you do. From the above it sounds to me that you are doing something similar to what I advise, which is (a) writing product backlog items at different levels of detail based on things such as priority, risk, etc. (b) progressively adding detail as needed, and (c) not adding detail too far in advance. If so, what you're doing sounds fine to me.
  11. Matt Roadnight said on 08 Apr 08 16:13:
    Mike, you’ve highlighted an area that we have been working on for some time, initially like most people we struggled with the concept that very little work should be done up front, we found very quickly that this wasn’t possible or responsible. Over the last four years we have looked at how we deliver our projects in an Agile way, balancing the Agile manifesto principles with the needs of generating just enough information to enable our development teams to deliver ”engaging web sites”. For those that interested in knowing more I will be presenting at the Scrum Gathering in Chicago how, as leading interactive web design company, Conchango approaches this problem and the artifacts and techniques we use to deliver our Agile projects. So if you haven’t already signed up and are interested register now, if you have registered it will be good to see you there
  12. Anthony Boobier said on 12 May 08 17:01:
    Mike - great that you use the Fibbonaci sequence, but a question what do you do about the unknown stories - the "?" ? Do you break these down into smaller stories or even Spike them ? or even leave them at 100 and break down at a later date ? If you Spike do you size the Spike ?
  13. Mike Cohn said on 12 May 08 20:42:
    Hi Anthony-- Usually when a team puts a "?" as the estimate on a story it means they don't know enough about it at the time to estimate it. The solution is usually to get more information from the PO about what to build or to develop more technical knowledge about how to build it. The PO may need to go do market research; the team may need to look at some code or do some research. If the team does a spike (a learning activity) I don't put story points on that but do include it as planned work during the next sprint planning meeting.

Please login to comment on this article.