I've been getting more and more emails lately from people confused about the difference between “user stories”, “epics” and “themes.” So I thought this month we'd return and cover some basic–but very helpful–territory by explaining those terms. First, the terms don't matter that much. These are not terms with important specific meanings like “pointer” to a programmer or “collateralized debt obligation” to whomever it is that's important. Story, epic and theme are merely terms we use to help simplify some discussions Scrum teams have. The terms do have standard meanings that date back to some of the earliest Extreme Programming (XP) teams. And it's nice to use terms in industry-standard ways. But, if these terms didn't exist, you'd make up your own.
So let's see what each means.
A user story is simply something a user wants. User stories are more than just text written on an index card but for our purposes here, just think of user story as a bit of text saying something like, “Paginate the monthly sales report” or, “Change tax calculations on invoices.” Many teams have learned the benefits of writing user stories in the form of: “As a <type of user> I <want/can/am able to/need to/etc.> so that <some reason>.” But it is not necessary that a user story be written that way. Check out the advantages of that user story format.
A Scrum epic is a large user story. There's no magic threshold at which we call a particular story an epic. It just means “big user story.” I like to think of this in relation to movies. If I tell you a particular movie was an “action-adventure movie” that tells you something about the movie. There's probably some car chases, probably some shooting, and so on. It tells you this even though there is no universal definition that we've agreed to follow, and that an action-adventure movie must contain at least three car chases, at least 45 bullets must be shot, and ….
So, “epic” is just a label we apply to a large story. Calling a story an epic can sometimes convey additional meaning. Suppose you ask me if I had time yesterday to write the user stories about the monthly reporting part of the system. “Yes,” I reply, “but they are mostly epics.” That tells you that while I did write them, I didn't get the chance to break most of them down into stories that are probably small enough to implement directly.
Finally, “theme” is a collection of user stories. We could put a rubber band around that group of stories I wrote about monthly reporting and we'd call that a “theme.” Sometimes it's helpful to think about a group of stories so we have a term for that. Sticking with the movie analogy above, in my DVD rack I have filed the James Bond movies together. They are a theme or grouping.
Hopefully you've found this short explanation helpful. I look forward to your thoughts.