Monday, March 11, 2013

Measuring Costs in Agile Delivery

How much have you invested? *
One of the questions I sometimes get on Agile Delivery is on computing actual costs. My colleagues and associates know that I advocate a two step process - estimating performed by leads on story stubs and sizing performed by the team on fully written stories. I also recommend using points, not hours for the estimates and sizes because technologists can usually express more qualitative metrics like complexity rather than providing effort and duration related measures.

So How Do You Measure Actual Costs

Measuring actual costs turns out to be an easier process assuming that you have a tool to manage the backlog and a scrum master running daily standups. You'll also need to have some basic governance and insure that >X% of the team's activity is captured as stories. You don't want the team accounting for every hour at work as stories because there are administrative tasks, non-development work, special meetings and other activities that are not appropriate to account toward direct costs.

Approach

  1. You'll need to determine an hourly cost for the sprint. This can simply be done by
    • Know who will be on the team during the sprint and request the number of days that they will be absent during the sprint
    • Calculate, Hourly Cost for Sprint N = Sum(Hourly Rate * Number of Hours Planned Work in Sprint N) for each member of the team / (Total Hours Planned for Sprint N)
  1. You'll need to know how much effort was applied to each story which can be easily be done by the ScrumMaster during the daily standup. If Tim only worked on Story 1 yesterday and he worked 8 hours/day, then you know that this story consumed eight hours of activity. If Sara worked on two stories, yesterday, then I would suggest applying a 50/50 to each one unless she can provide more specifics. Use the agile backlog tool to keep a running total of Actual Hours per story.
  2. At the end of the sprint, calculate the total hours applied to all completed stories. Call this Total Hours Applied.
  3. The Cost for each story can then be calculated as Story Cost = (Hourly Cost for Sprint N) * (Actual Hours for the Story)
  4. If Features and or Epics are used to group Stories, their costs can be calculated by the sum of Story Costs for their associated stories.
  5. For Releases, you can also calculate the development costs by summing up the costs of the completed stories.

Exceptions

  • If Total Hours Applied varies significantly from Total Hours Planned, then that should be discussed during the retrospective. It implies the team put in overtime for the sprint, and would help for the team to reflect on the cause. 
  • In Step 3, I suggest teams only account for completed stories. I am suggesting the total costs of a Story be decided and allocated only on its completion.
  • A team can also choose to calculate costs associated with stories that are not completed or not released. 

Why Calculate Costs?

Once a story, feature, or release is completed the best metric to discuss costs with members of the Business (Product Management, Product Owner, Finance) are actual costs. Estimates and Sizes are good for team alignment and making smart decisions are made on what to prioritize and what to implement. But once prioritized and developed, costs are a better metric for comparing benefits versus actual investment.


* © Vilax | Dreamstime Stock Photos & Stock Free Images

4 comments:

  1. Interesting. Actually I am looking for these details. Thanks Isaac Sacolick for sharing the details.

    ReplyDelete
    Replies
    1. Thanks for the comment. I am glad you found this useful. Let me know if you have any follow up questions.

      Delete
  2. Couldn't you simply say - I have an 8 person team, they completed 10 stories for this many points... so the cost is the salary portion of the team divided over the number of days in the sprint? Why Calculate something any more detailed?

    ReplyDelete
    Replies
    1. Thanks Joe for the question. Your formula would actually give you cost/day. I'm trying to get at cost for each story and ultimately, the cost for each feature requested.

      You could use points to weight. Cost(story) = points(story) * (team costs for the sprint) / (total points of the sprint). This is definitely easier, but it basically assumes that Sized stories are accurate. It also communicates that costs are directly related to story points, which isn't always the case.

      The approach I posted is independent of points but requires capturing actual hours applied to the story. It is more complex, but not complicated and the effort worthwhile if these measures are important to your business or enterprise.

      Delete