3

For example, if you're building a chat app, having epics be the stages in a project:

  1. Phase 1 - Beta
  2. Phase 2 - Launch

vs. features

  1. Messaging
  2. Sign-Up

The goal of an epic is to capture a large body of work, so it would seem both would fall into that category, but are there are trade-offs I am not considering?

3
  • I started answering this on the other stackexchange before it was deleted. The answer actually lies in the premise of the question, but I think I can provide a straight-forward answer.
    – Daniel
    Commented Jan 2, 2019 at 19:17
  • @Daniel Ah yes, I deleted it because it was a Project Management question rather than a Software question. In any case, very curious to hear your straightforward answer.
    – Aspen
    Commented Jan 2, 2019 at 19:29
  • 1
    Now that it is done, it feels less straight-forward than I intended, but I hope it helps.
    – Daniel
    Commented Jan 2, 2019 at 19:38

4 Answers 4

7

There is some grey area here, but let's start with a clear answer to work from. Epics are a derived idea from User Stories - specifically an epic is just a big user story that you've broken down into smaller stories, so to address what you're asking it makes sense to walk through the breakdown of the user stories (and therefor, epics). I don't know your business goals, but let's say the overarching user story would be something like this:

As a shield agent, I would like to communicate with other agency operatives through a secure chat client so hydra doesn't intercept our messages.

This clearly meets a user need and makes a pretty good user story except for the fact that it is way too big, so we need to break it down. Let's look at your second example first. You look like you have two stories like:

As a shield agent registered in the system, I would like to be able to send encrypted, anonymous messages to other agents so that we can safely communicate without being discovered.

And

As Director Fury, I would like to be able to easily add new agents to the system so that they can communicate with other agents in the field without having to involve tech support. (you know shield had a bureaucratic tech support office)

The first one clearly meets the need of agents in the field. The second one allows the system to be a bit more sustainable. I could follow this down further by breaking the first one into encrypted messages and anonymous messages (onion routing, for example). Again, each piece individually adds value, with each extra piece adding more.

That brings us to your first example and why it is grey area. The important question is: is there a case where you could stop at beta and it would still add value? I don't want to get hung up on the term beta, but usually beta is reserved for very late testing in which you are knocking off the rough corners before launch. So beta is almost certainly just a late-project milestone, not an epic. However, let's pick something earlier, like a prototype.

I've seen two types of prototypes: one where the team is trying to determine is an idea is viable and one where the team is just warming up to the project. In the first one, the goal is to engage with some subset of the market with a very minimal version of the feature or product that helps them understand the user need. By doing this, the team may choose to continue, drop the project, or pivot to the users need more effectively. This makes a great epic and you can usually identify the learning in it. For example:

As a shield intelligence operative, I want to experiment with sending some encrypted bait messages into the field to see if Hydra is able to intercept and decrypt them.

Again, the value is clear and important. On the other hand, if it's just warming up to the project, you have something like this:

As a programmer, I want to build a POC for the chat message so I'm more comfortable building the full app.

Here, the value to the user is far less clear. At best I might be able to claim a small efficiency and cost benefit.

I know this is not a clear and direct answer to your question, but I hope it provides some of the background around the tools of user stories and epics to allow you to make effective decisions on how to use them in your situation.

1
  • 1
    I had some fun with the subject matter. On the chance someone reading this answer is not familiar with the marvel movies, Shield is an intelligence agency, Director Fury is the boss of said agency, Hydra is the bad guys.
    – Daniel
    Commented Jan 2, 2019 at 19:41
2

TL;DR

None of your current examples are really valid epics. They are actually labels, and you should think of them as labels for release targets instead.

To use epics properly, you should treat them as large user stories. You should use epics as inputs to release planning, but not as a substitute for building a release plan.

It's also worth noting that vague labels like "beta" and "launch" don't communicate much about the actual feature set that your milestones are intended to deliver. Feel free to use such labels when appropriate, but understand that they aren't a substitute for tracking features or estimating delivery dates, or for communicating about them.

Labels Aren't User Stories or Epics

Broadly speaking, an epic is a user story that is too large to fit within a single agile iteration. It is not really supposed to be a different classification; instead, it represents a different level of granularity.

The most common user story format is the Connextra format, which describes the who, what, and why of a feature:

As a <who: the archetypal user or value consumer of the feature>
I want <what: a synopsis of the feature>
so that < why: context to frame the solution space>.

So, if you take the agile approach to epics and view them as multi-iteration user stories, neither of your label sets really qualify as either stories or epics. You should refactor them until they do. Plan on refining the epics into a set of more granular user stories when they come into scope for planning, such as within Scrum's Backlog Refinement or Sprint Planning meetings.

Within JIRA—which is at heart a ticketing system, and often imposes non-agile thought processes on its workflow as a result—the system encourages you to link user stories to epics. However, it still provides the fields to describe epics in user story format, and the ability to track stories independently of epics. Don't treat epics as issue labels; leverage JIRA's features to treat epics as multi-iteration features linked to more granular stories, and use versions for release planning.

Release Planning and Epics Aren't the Same Things

In your question, you define releases such as "beta" and "launch" as possible labels. However, an epic and a release aren't the same things.

As described above, an epic is a multi-iteration, semi-granular feature set. Epics, when estimated properly, can help with release planning but are not intrinsically milestones or releases.

Agile release planning is done by estimating how many iterations it will take to address the stories related to that feature, based on estimates of the stories' complexity and the team's average capacity. To the extent that a well-articulated epic can be estimated, you can certainly plan releases around the completion of certain epics, but thinking of them as releases will lead you to the Dark Side of Agilish™ very quickly.

Because JIRA is a ticketing system, it often leads users into thinking that epics can be estimated with granularity by simply rolling up linked story estimates or assigning due dates. You can certainly assign due dates to things in JIRA, but this isn't really the same thing at all.

People do all sorts of things in JIRA to deal with release planning. The version field is usually the right place to put release labels, and also the right way to apply "Fix for Version" on each JIRA issue targeted at a specific release. However, you should not rely on JIRA itself to define your release dates. You should use an iteration-based methodology to identify the right targets for your versions, and always remember that agile estimates forecasts rather than money-back guarantees.

Vague Labels Don't Communicate Effectively

When you define a label such as "beta" for your project, it's important to understand that this is shorthand for some presumed-viable feature set. However, simply calling something a beta doesn't really communicate the planned feature set very well.

If you're going to label your milestones and release targets, rather than taking the more agile approach of releasing each iteration, then you should make sure you're communicating effectively about the expectations for each label. When possible, give the label a useful name like "messaging release" or "sign-up release" that the team presumably understands even in shorthand.

If you must use non-deterministic labels to represent release targets in JIRA, consider encoding them into the JIRA versions (e.g. foo-v1.3.5-beta1) and component fields of your issues. Some people also use a primary JIRA issue with tasks and sub-tasks to track the planned contents of a particular release.

In any case, while it can be useful to talk about alphas, betas, and launch targets, the value of the discussion is in adjusting scope to fit date targets or moving dates to fit current estimates. There is almost no intrinsic value in such labels other than as shorthand to remind everyone of these discussions, so you need to ensure that you're not simply letting the label stand in for actual communication.

If you're using meaningful labels, and having discussions around what everyone can expect from the milestone a given label represents, then almost any label will do. However, many JIRA users mistakenly allow the ticketing system to replace this type of collaborative communication.

Tickets (and labels applied to tickets) are for tracking. They are not the most effective way for teams to communicate or collaborate. Effective agile implementations value direct communications more than artifacts such as ticketing, so be sure to use JIRA tickets to support your agile processes rather than allowing it to define or drive them.

1

I see from your tags that you are posing this as a Jira question so I will answer it from that perspective.

Atlassian have various resources about epics - this is one of them - https://www.atlassian.com/agile/tutorials/epics

I'm an advocate of Jira epics as "large" user stories and an advocate of epics being "completable". If you are just looking to collect versions or phases, there are other tools within Jira that are just as suitable (e.g. labels and versions).

I find that any time an epic is used too broadly, you end up with these enormous tickets that are impossible to manage. I also find that small related tasks get added on even though the priority is quite low, and these stop the epics from ever being completed. You then end up with a long list of incomplete epics clogging up the backlog board.

Keep the epic at a size where it can be described as a single user story. Make sure the epic is completable. I tend to create an epic for the MVP, and additional epics for "gold-plated" iterations thereafter. When you have done the stories in the epic, mark the epic as done, clear it off the board, and celebrate!

0

Yes an No

Yes — an answer to the headline question

Agile is about keeping work in progress low, and doing retrospectives, and …

Timeboxing if the boxes are small enough, will help you know when to do retrospectives. You will have to employ other practices to keep work in progress low. (Work in progress is, any work that has been started, but is not of a quality that can be delivered to a customer. )

No — an answer to the detail in the body of the question.

Your labels do not indicate agile steps: Beta and Launch, smell of waterfall. Agile is not create, then test, then release. Agile is repeat {add feature (so it is release ready)}. At any point marketing should be able to say, “that is enough features, let us release it.” The product should be in a state to release in minutes.

“The goal of an epic is to capture a large body of work,…”. True but this does not mean that you then dismiss the goal of agile.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.