ETA based on Story Points

Gabriel Zampieri January 13, 2021

Hey, guys. How are you?

 

I want to create an ETA field (Estimated Time of Arrival) calculated over the Average Story PointCompleted in the last Sprint to my Stories:


Example:

Average Story Point Completed in the last Sprint: 10

Sprints:

Sprint #1  - Start Date: 01/13/21
Sprint #2  - Start Date: 01/20/21
Sprint #3  - Start Date: 01/27/21

Backlog:

Story #1

  • Story points: 5
  • ETA:  01/20/21

Story #2

  • Story points:4
  • ETA:  01/20/21

Story #3

  • Story points: 5
    ETA: Start Date: 01/27/21


Do you guys think is possible? Thanks! 
 

2 answers

1 vote
Earl McCutcheon
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
January 15, 2021

Hello @Gabriel Zampieri ,

in addition to using the API, as @Sudarshan described you could also look into using Automation for Jira which is a built-in front-end feature, that can be used to run calculations via "Smart Values".

The following documentation details how Date values and calculating mat functions work using these Smartvalues:

and the Automation Getting Started material at the following link for a referance point:

As described in the documentation you can increment a date value using a smart value in the format:

{{[date].plus[Unit]([number])}}

Using a calculated math expression you could create a custom field to hold a calculated converted number of the story point to the desired time value like hours or days, with something like the following if you wanted your story point calculation to be 1 story point = to 1 hour or 1 day etc...:

{{#=}}{{issue.Story Points}} * 1{{/}}

and then combine the increment function with a field value that stores your calculated number.  as an example, if you had a number field that stored a calculation called "Test Example" and you set your story points calculation to 1 story point = 1.5 days the following automation would do the trick, with an additional note that the Re-fetch data item is required so that the first calculation can be used in the second:

  • When:
    • Value changes for "Story points"
  • Then:
    • Edit issue fields:
      • Test Example
        • {{#=}}{{issue.Story Points}} * 1.5{{/}}
  • AND:
    • Re-fetch issue data
  • AND:
    • Edit issue Fields:
      • Due Date:
        • {{now.plusDays(issue.Test Example)}}

This will take the value from your initial calculation field in the example "Test Example" and add that many days to the Due Date Field.

However there is going to be a logical barrier to this approach as the example I used above only has a single static value for story points to days and in effect turns the story point to a Day value and would simply overcomplicate things as at that point the recommendation would be to just use time estimation rather than Story points, as one of the main advantages to Story points is that a story point is used to act as the effort required as a makeshift range of possible values, like 1 Story Point could represent an overlapping range of 1-2 hours, 2 Story Points 2-6 hours, and 3 is 3-10 and so on in a Fibonacci like sequence as described in "Story points and estimation" where the Fibonacci sequence generally used by Scrum teams for story point estimates is 1, 2, 3, 5, 8, 13, 21, and so on.

since the points have a range effect you would need a way to define that range, I recommend using the Max value possible in the range for the calculation and use If/Then conditions for each possible range.

As an example the math used to set the "Test Example" field say 1 story point is the range 1-2 hours, and the value 2 translates to 2 - 6, and 3 is 3-10 hours and so on, you would want to use the value 2 for 1 point and the value 6 for 2 points and 10 for 3 points and so on depending on the ranges you have defined:

  • if:
    • Story points: 
      • is equal to 1
    • Then:
      • Edit issue fields:
        • Test Example
          • {{#=}}{{issue.Story Points}} * 2{{/}}
  • Else if:
    • Story points: 
      • is equal to 2
    • Then:
      • Edit issue fields:
        • Test Example
          • {{#=}}{{issue.Story Points}} * 6{{/}}
  • Else if:
    • Story points: 
      • is equal to 3
    • Then:
      • Edit issue fields:
        • Test Example
          • {{#=}}{{issue.Story Points}} * 10{{/}}

             

So again this adds in some logic conflicts as you are defining the due date of the max value on overlapping values but must define each possible value you could encounter per your definitions, so pointing this out so it's not missed when you set it up as the logic problem presented by ranges would apply to either automation OR a custom script to call on the API.

Hope this info helps you drive an appropriate solution.

Regards,
Earl

0 votes
Sudarshan
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
January 14, 2021

Hello @Gabriel Zampieri  Welcome.!

Fine and how you are good as well.!


Yes, it is possible, the Jira REST API will help you with this.
refer here: https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/

I am sure this needs coding to work.!

One the other hand as a Scrum Master I have a question.
Why would you need to spend effort trying to predict the future.? when scrum is all about planning (going with the present)

Every story is different, and the estimation is based on the previous efforts and complexity involved (empiricism) the Story points and velocity are off course estimates, metrics to forecast what could be the capacity of the team to take the next set of items from the backlog.

I personally feel an ETA would undermine certain Scrum values principles and team dynamics; this may lead to a waterfall scene in the future.
(feel free to comment)

Hope you take it as a suggestion :) 

Gabriel Zampieri January 14, 2021

Hey, @Sudarshan Thanks for helping with your message! 

Cool! Where should we code it? Should we use a Jira App to do it?

About the metric, this is a broad discussion here at the company.

 

We are a dev shop called Seasoned.cc that sells software development services to Non-technical startup founders. We use the estimated ETA for time management and other stuff.

Sudarshan
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
January 14, 2021

Nice seasoned.cc

Keep the discussion going on...!

The Coding can be done with any modern software editor (use VS Code, Eclipse)

To get things started have a quick look at the below link with your Development team

https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#version

This is for Jira Server: (still a good read)
Here are some examples of using the Jira API to get what you want to customize:
https://developer.atlassian.com/server/jira/platform/jira-rest-api-examples/

If you want to develop a plugin:

https://developer.atlassian.com/server/jira/platform/integrating-with-jira-server/

Suggest an answer

Log in or Sign up to answer
DEPLOYMENT TYPE
CLOUD
PRODUCT PLAN
FREE
PERMISSIONS LEVEL
Site Admin
TAGS
AUG Leaders

Atlassian Community Events