Agile Tip #1 – Epics and Themes

Tip #1:  Organize your product backlog into epics and themes using parent/child relationships.

It’s common to say that user stories should be small – you want the team to be able to complete the implementation of a user story in a single iteration.  However, it’s also common to organize stories into larger buckets called Epics or Themes:

  • Epics are very large user stories that represent a significant amount of work.  Epics are broken down into smaller stories that can be implemented in a single iteration.
  • Themes are higher level stories that may span the entire project.  Themes are used to communicate direction and alignment.

If your team prefers to use epics and themes you’ll want to make some simple changes to the default queries in your team project.  The first step is to change your Product Backlog query from a flat list to a tree.

image

  1. Double-click your Product Backlog query and click the Edit Query button from the query toolbar.
  2. Change the query type to Tree of Work Items
  3. In the linked work items portion of the query change the clause to “Work Item Type = User Story” .  This ensures that your Product Backlog will only return user stories, and not other linked work items like tasks, bugs, etc.
  4. Click Save Query.
  5. Make this change to the Product Planning query as well.  The Product Planning query is used to drive the Product Planning Excel workbook.

Once this change is made, you can drag and drop stories beneath each other – the parent story then represents the epic or theme.  A couple of quick rules to follow to be successful with this approach are as follows:

  1. Don’t add story point values to epics or theme stories after child stories have been created.  It’s good to start with a point value for epics that represents how big you think the work is, but once an epic is broken down into smaller stories the child stories get point values assigned and the epic point value is cleared.  Themes should never have story point values assigned.
  2. Use decimals to stack rank stories under a theme or epic. 
  3. Prefix both epics and themes with their type so that they can be easily distinguished when viewed in a flat list.  While a tree is the natural way to view these items, it’s easy to produce queries that return epics and themes in a flat list as well.  The prefix makes them easily distinguishable from other stories.

Below is a screenshot of a Product Backlog that has been modified to use Epics. 

image

Tip #1.1:  Prioritize epics relative to their child stories.

Martin Rajotte asked a great question related to this topic… “How do we deal with different priorities of stories that are children of Epics? I can’t fit all the stories of an epic into a single iteration. ”  Because this is quite common, I’ve included a screenshot below of the same backlog, adjusted to accommodate different priorities for child stories that don’t fit in the example above.  My recommendation in this scenario is to keep the epic (parent story) prioritized relative to its highest priority child story.

In the screenshot below you’ll notice I added a new epic named “Order Search” with two child stories.  The epic is prioritized relative to the highest ranked child story – in this case, “Quick search by title.”  When “Quick search by title” is completed, the epic would be reprioritized to to 55 as the highest remaining story (“Advanced search by order details”) is prioritized as 55.1.  I still prefer to keep decimal values on the child stories as it’s an easy visual indicator that the story is a child of an epic.  This approach allows epics to float up and down the backlog as the relative importance of the stories that make them up are determined.

image

Comments

  • Anonymous
    April 23, 2010
    Hi,Unless I misunderstood, using decimals for stack rank for the story under an epic will not work for us. Most of the time, we break down epics in multiple user stories because they are too big to enter into a sprint and therefore they will have different priority therefore different stack ranks...Martin RajotteIncycle Software
  • Anonymous
    April 26, 2010
    You're right Martin.  This is very common.  My recommendation is to keep the epic prioritized relative to its highest remaining child story.  See the update (Tip 1.1) that I just added above.Thanks.Aaron
  • Anonymous
    April 29, 2010
    The comment has been removed
  • Anonymous
    April 29, 2010
    Agreed Markus.  At this time through Team Explorer there is now way to drag/drop re-order.  It's definitely something that's on our backlog, but is not in the 2010 release.
  • Anonymous
    April 30, 2010
    Hi Aaron,thanks for the quick response.Pity, makes the decision a lot harder than I was hoping.Regards,Markus
  • Anonymous
    April 30, 2010
    I hear you Markus, I know it's not as "natural" as people want it to be (yet).
  • Anonymous
    May 26, 2010
    I agree about the drag/drop re-ordering. Open the query in excel and editing priorities there makes it at least a little quicker than using the Visual Studio work item forms, but I'd love to hear if anybody out there comes up with a more natural solution
  • Anonymous
    August 15, 2011
    The comment has been removed
  • Anonymous
    August 22, 2011
    Darren - in this situation I wouldn't assign the epic to an iteration at all.  Only assign the child stories to iterations.  You should relaly only have a single epic... making copies of it won't help much.  Is there a reason you need/want to assign the epic to the iteration?
  • Anonymous
    August 29, 2011
    Hi Aaron, thanks for the reply (sorry for the slow reply).We have been working it through further and agree with you that multiple Epic's inside TFS will not work or suit.  The issue is more for the test team, seeing a complete or single view of the Epic and the iterations it was developed in (there may be a few iteration before the Epic can be released)So we are going to:a) Create the Epic User Storyb) Create the sub storiesc) Do the work as it comes upd) Have a query that spans the iterations that align to a particular release to show that full view of what was developed in that EpicWe will give it a go and see how it pans outThanksDarren
  • Anonymous
    December 03, 2012
    I am wondering if there is a way to get Epic's to auto sum the Story Points of child stories.  This would make it easy to look at them as a whole, even in a collapsed view.  This is behavior I have seen with other tools like Rally and I quite like.
  • Anonymous
    December 03, 2012
    @David - sorry, there's not.  Wish there was... definitely something we're talking about.
  • Anonymous
    December 12, 2012
    Thank you for the article, Aaron; helped us make a decision how to handle epics in TFS 2012.Daniel