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