SN-Logo NewSN-Logo NewSN-Logo NewSN-Logo New
  • Scrum Courses
  • Agile Keynotes
  • Agile Books & Tools
  • Blog
  • About
  • Contact
0

CHF0.00

✕
How to become a Scrum Alliance Certified Scrum Trainer
26-09-2017
Lowest prices for Scrum Training
09-01-2018

A concrete alternative to estimating story points in Scrum

Published by Peter Stevens on 03-12-2017
Categories
  • estimating
  • story points
Tags
Estimating is such a pain. I remember when I first read about Scrum and saw that the team was responsible for estimates, not the Scrum Master. I was sold!

But… estimates are controversial. Without estimates many stakeholders are unwilling to fund development efforts. The upside is that the process of discussing the stories in the team helps everyone understand what the feature is about. It’s about the conversation, not the number. OTOH, estimates do not produce value for the user, so they are potential waste, and may be used to beat up the team if the estimates are not correct, which is even more counterproductive.

Story points are particularly controversial, because they are vague and fragile. Using real or hypothetical hours has other disadvantages. (What do I do when my customer only wants to pay the hypothetical hours, not reals ones?!)

I believe you can base estimates on something more concrete and measurable: Acceptance tests.

This satisfies the need to estimate larger projects, while eliminating the main drawbacks of story points and maintaining the benefits of estimation from the team perspective. Let me explain how I came to this conclusion.

“Shouldn’t we create estimates now?” Yesterday, I lead a group of aspiring Product Owners through a 1-hour Scrum simulation to create the “analogue version” of the products they had conceived in the previous exercises. After the teams had created their forecast for the sprint, they wondered if they should estimate.

What is the value-add of the estimate? At this point, not much, because they have already made their forecast, which is itself an estimate, and they would be wasting time that they could use to actually produce the result.

I suggested instead that they make sure they are clear on how to verify that the goal of each story has been achieved. Write the goal on the front of the card, and the confirmation on the back. If the goal or the confirmation are too complicated to fit on a single card, make more cards, each with a goal and confirmation, until the cards add up to the original goal.

Does you recognize the XP (Extreme Programming) approach here? The three C’s – Card, Conversation, Confirmation. The description and the confirmation have to fit on one card (I use 1/3rd of A4, but A5 or 4″x6″ are probably okay too). A card corresponds to an acceptance test.

Does anyone see the similarity to Pawel Brodzinski’s “#Noestimates scale”?

  • 1 – fits easily into a sprint.
  • TFB. (T means “too”, B means “big” and F is for you to figure out)
  • NFC (N mean “no”, C means “clue” and F is forever the same)
Estimating in #NoEstimates is simply breaking the stories down to until they are standard size, then counting the cards. My understanding is XP cards are usually very small; many fit easily into a sprint. So XP cards count as a “1” on the #NoEstimates scale.
Counting the cards is the same as counting the acceptance criteria, which in turn is creating an estimate.
How can you use acceptance criteria to estimate a project?
Story points and planning poker were a big leap forward. The discussions between the development team, product owner and other domain experts facilitated a common understanding of the problem to be solved, and eliminated the need to do work-breakdown analysis. Using this approach us you can use simple math and charts to predict and monitor how much functionality will be done by when. Using the Fibonacci sequence or the Cohn scale addressed the problem of false precision.
The main drawback of this approach is that story points are vague and fragile. If you put them under pressure, they break. (Is this a 3 or a 5? The product owner wants higher velocity, so let’s call it a five!) Because they are difficult to standardize, it is difficult to compare velocity of different teams. Teams often ask to re-estimate because something is more work than they thought it was.
What if the basis could be more objective?

Acceptance Tests: A concrete basis for estimates

How might this work in practice? Given this story for a job portal:
  • As a job hunter, I want to submit my CV with my application for (reasons that should be obvious)
How to know how big the story is? After discussion the team and product owner agree on the following workflow (I call this “how-to-demo”):
  • Given I have selected a position to apply to…
  • Step 1 Create an application
  • Step 2 Attach my CV by dragging it to the application
  • Step 3 Preview the application to submit and see that the CV is attached.
Assuming that these steps are sufficiently granular that they fit easily into a sprint, each one becomes a point, and the story is a three-pointer.

A tangible estimate

One point equals one step in the how-to-demo.
If any of the steps are too big, it becomes a new card with its own how-to-demo. So let’s say Step 2 is “TFB”, then we would make a new card. Create and preview the application are each one point, and Attach the CV depends on the number of steps to validate it. If this is also three points, then the total for this feature is 5.
How do you estimate before the start of the project? Simple. Use planning poker, but instead of applying some abstract size, you are guessing the number of acceptance criteria you expect to satisfy.

Tracking progress

As you implement the project:
  • you take credit for acceptance tests satisfied, just as you did with story points. (The issue of partial credit disappears, because the stories are very small, and a test is passed or not).
  • if the requirements change, you update your guesses accordingly. Do you expect to have more, fewer or the same number of acceptance tests?
  • In backlog refinement (getting ready to implement), your guesses become actual acceptance criteria.
  • Replace your guesses with the actual number of steps in the how to demo. This enables you to keep track of how good your estimates are, because for each story there is an estimated number of steps and the actual number of steps.

Budgeting

As with story points, this approach requires a baseline for comparison. How many individual acceptance criteria can you team actually get done in a sprint? Once you have established this, the math should be the same as for story points: (Size / velocity) * Team Size * Sprint Length = Estimate in Person days.

Summary

A point corresponds to a step in your how-to-demo confirmation workflow. An estimate is a guess of how many steps there will be to confirm the story. Backlog refinement confirms or updates the estimate and produces fine-grained stories which are ready for implementation. Velocity measurements, budgeting, a estimating function much like convention story points.

3/12/2017 — Updated to recognize Pawel Brodzinski, the source of what I dubbed the #NoEstimates scale.  His discussion of the topic is quite illuminating!

Share
0
Peter Stevens
Peter Stevens

Related posts

16-02-2015

What good are story points and velocity in Scrum?


Read more
28-05-2011

The Key to Good Estimates


Read more
06-03-2011

What is the optimal Story Size?


Read more

2 Comments

  1. Unknown says:
    07-12-2017 at 13:35

    Try Business Bingo …

  2. Nyland says:
    01-04-2019 at 15:21

    I really like the concept of 'steps'; its something we've been working on with athletic development. (). What do you think of an approach like:

    If it took a hundred steps to complete a sprint, how many of those steps would this (PBI) roughly be?
    This way you get proper relative sizing, but clear context to the sprint length.

Learn more about Agile

  • Certified Scrum Product Owner | Face-2-Face | English | 230413-CP2
    in Zürich
    April 13, 2023 -
    April 14, 2023
    Register Now
  •  

  • Certified Scrum Master | Face-2-Face | English | May 22-23, 2023
    in Zürich
    May 22, 2023 -
    May 23, 2023
    Register Now
  •  

  • Certified Scrum Product Owner | Face-2-Face | English | Jun 15-16, 2023
    in Zürich
    June 15, 2023 -
    June 16, 2023
    Register Now
  •  

  • Certified Scrum Master | Face-2-Face | English | Jul 06-07, 2023
    in Zürich
    July 06, 2023 -
    July 07, 2023
    Register Now
  •  

High Performing Teams

  • Get Stuff Done
  • Get Right Stuff Done
  • Create Alignment
  • Leadership

Free Resources

  • Personal Agility Institute
  • Impressum
  • Terms and Conditions
  • Privacy Policy

Upcoming courses

  • Certified Scrum Product Owner | Face-2-Face | English | 230413-CP2 in Zürich
    April 13, 2023 -
    April 14, 2023
    Register Now
  • Certified Scrum Master | Face-2-Face | English | May 22-23, 2023 in Zürich
    May 22, 2023 -
    May 23, 2023
    Register Now
© 2020 Saat Network GmbH. All Rights Reserved.
    0

    CHF0.00

      ✕

      Login

      Lost your password?

      We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
      Read more about our Privacy Policy
      Cookie SettingsAccept All
      Manage consent

      Privacy Overview

      This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
      Necessary
      Always Enabled
      Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
      CookieDurationDescription
      cookielawinfo-checkbox-advertisement1 yearSet by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Advertisement" category .
      cookielawinfo-checkbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
      cookielawinfo-checkbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
      cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
      cookielawinfo-checkbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
      cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
      viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
      Functional
      Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
      CookieDurationDescription
      mailchimp_landing_site1 monthThe cookie is set by MailChimp to record which page the user first visited.
      Performance
      Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
      Analytics
      Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
      CookieDurationDescription
      CONSENT2 yearsYouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data.
      _ga2 yearsThe _ga cookie, installed by Google Analytics, calculates visitor, session and campaign data and also keeps track of site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognize unique visitors.
      _gat_gtag_UA_42152348_11 minuteSet by Google to distinguish users.
      _gcl_au3 monthsProvided by Google Tag Manager to experiment advertisement efficiency of websites using their services.
      _gid1 dayInstalled by Google Analytics, _gid cookie stores information on how visitors use a website, while also creating an analytics report of the website's performance. Some of the data that are collected include the number of visitors, their source, and the pages they visit anonymously.
      Advertisement
      Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
      CookieDurationDescription
      NID6 monthsNID cookie, set by Google, is used for advertising purposes; to limit the number of times the user sees an ad, to mute unwanted ads, and to measure the effectiveness of ads.
      test_cookie15 minutesThe test_cookie is set by doubleclick.net and is used to determine if the user's browser supports cookies.
      VISITOR_INFO1_LIVE5 months 27 daysA cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
      YSCsessionYSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
      yt-remote-connected-devicesneverYouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
      yt-remote-device-idneverYouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
      Others
      Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.
      CookieDurationDescription
      COMPASS1 hourNo description
      cookies.jssessionNo description available.
      S1 hourNo description available.
      SAVE & ACCEPT
      Powered by CookieYes Logo