How do you keep evil user stories in a shared product backlog when they have no happy path?
answer
- value is a loss avoided, not a feature
- attach to the story it inverts
- size both halves in one slice
- never open a second security backlog
- declining out loud beats silent debt
basics
~20 sAttach each evil user story to the feature story it inverts so it is sized in the same slice, and express its value as a capability removed from the attacker rather than one added for a user. A separate security backlog ages and dies.
solid answer
~50 sThe problem is real: a feature story ends in something demoable, and an evil user story ends in something *not* happening, which no product owner can show anyone. Three moves make it survivable. First, attach the evil story to the feature story it inverts and size them together, so it is part of the slice rather than competing with it. Second, state its value as the loss avoided in the product owner's own units — on a donation platform, "a fraudster card-testing on the donate form" is chargeback fees, a payment-processor relationship and a headline about a charity, not "an OWASP issue". Third, never open a parallel security backlog; a list nobody ranks against features becomes a list nobody reads. When the product owner still declines, that is a legitimate product decision — the job is to make sure it is said out loud in refinement with the exposure named, not to smuggle the work in.
go deeper
Know that an evil user story is worked like any other backlog item and that its value is expressed as harm avoided, since there is no feature to demo at the end.
Be ready to explain how you would size one: attached to the feature story it inverts, in the same slice, with a falsifiable invariant standing in for a definition of done.
Show that you can hold the conversation with a product owner in their units — chargebacks, processor risk, reputation — and that you accept a reasoned no rather than routing the work around the decision.
Own the shape of the practice: no second backlog, a hard cap on volume, the team authoring their own stories with security facilitating, and explicit accepted-risk decisions instead of silent debt. Be able to say what evidence tells you it is working.
## Why the backlog resists them An ordinary story ends in a capability someone can be shown. An evil user story ends in an *absence*: a fraudster who cannot profitably card-test on the donate form, a courier who cannot mark a phantom delivery, a reviewer who cannot quietly learn an author's name. There is no screen at the end of it. Product owners are not being obtuse when they push back — the artefact genuinely does not fit the shape their planning process expects, and the usual response, a separate security backlog, is worse than the disease. ## Attach, do not park The strongest single move is to keep the evil story physically next to the feature story it inverts, and to size them in the same slice. A donate form and "a fraudster wants to test stolen card numbers against it" are one piece of work with two halves, and estimating them together means the cost of the feature is stated honestly the first time. Split them across sprints and the second half competes against new features forever, which is a competition it loses. This also fixes the *definition of value*. The feature's value is measured in donations completed; the evil story's value is measured in the same currency — chargebacks, the processor's risk review, the cost of a fraud incident on a charity's public reputation. Both are product outcomes. Neither needs to be argued in security vocabulary, and arguing them in security vocabulary is what makes a product owner file them under "compliance". ## Give it a done, without writing the fix into the story The complaint that an evil story "has no definition of done" is usually a complaint that the goal has not been made falsifiable. Convert the attacker goal into an invariant the team is willing to state: no bulk of low-value authorisations from a single source can be used to distinguish a live card from a dead one on this form. That is testable and arguable, and it leaves the choice of mitigation open. The mitigation itself is separate work that references the story; the story does not name it, or you lose the ability to compare options next quarter when the first one stops working. ## Volume discipline A team that adds three evil stories per feature is doing threat modelling. A team that adds thirty has produced a document. The list has to stay short enough that everyone in refinement remembers it, and short enough that declining one is a conscious act rather than a shrug. Being ruthless here is also the honest response to the fact that most inversions of most stories are not worth work — say so, and drop them in the room, rather than carrying them as unranked debt. ## When the answer is no Some of these should not be built, and pretending otherwise burns the credibility that gets the important ones built. The principal-level behaviour is to make the decline explicit and informed in the same conversation: what the exposure is, what it would cost to address, and what the product is choosing to live with. The decision belongs to whoever owns the product, not to the person who wrote the story. What you must not accept is silence — an evil story that is neither built nor declined, sitting in a list that nobody ranks, is the failure mode that makes the whole practice look ceremonial. ## Who writes them and when They come out of the design conversation for the feature, written by the people who wrote the feature story, with a security-minded facilitator asking who else is already inside the flow. Produced that way they arrive already attached to something the team is about to build, already in product language, and already sized. Produced the other way — a specialist arriving afterwards with a list — they are a gate, they are late, and they are exactly the stories a backlog rejects. ## The signals that it is working Evil stories appear in refinement without a security person prompting them. They get declined out loud, with reasons, as often as they get accepted. There is no second list. And the team can name the last one that changed a design, which is the only evidence that any of this is more than a documentation habit.
- Why is a separate security backlog worse than not writing the stories at all?Because it converts a decision into a deferral. Items in a list that is never ranked against features are never declined and never built; they accumulate, they go stale as the product changes, and their existence lets everyone believe the risk was handled. A short list inside the one backlog forces a yes or a no on each item, and a no with reasons is a better outcome than an unread entry.
- How do you give an evil user story a definition of done without writing the mitigation into it?Turn the attacker's goal into an invariant the team will stand behind — this form cannot be used to distinguish a live card from a dead one at volume — and let the mitigation be separate work that references it. The invariant is falsifiable, so it can be argued and later re-tested, and because it names no control you can swap the control when the first one stops working.
- A product owner says the fraud story is not worth a sprint. What do you do?Accept that it is their call, and make sure the call is informed and audible: state the exposure in their units, what addressing it would cost, and what the product is choosing to carry. Then let it go rather than re-filing it somewhere quieter. Spending credibility on the stories that do not matter is what makes you lose the argument on the ones that do.
saying these in an interview costs you the question
- Keeps a separate security backlog nobody ranks
- Argues value in security vocabulary rather than product outcomes
- Writes the chosen mitigation into the story text
- Adds dozens of evil stories per feature
- Treats a product owner's no as illegitimate
- Leaves declined stories in the list instead of dropping them