For a given story headline, many interpretations are possible. These vary in their quality and sophistication. I call this the intensity or depth of a story. Story intensity is a knob you can control, dialing it down for earlier delivery, dialing it up for a more complex product.
For example, consider the story “System Cross-Sells Item.” The simplest version could suggest the same item to everybody. The next version could have the system suggest a bestseller in the same category as a shopping-cart item. The most sophisticated version might consider past purchases from this and millions of other users, take into account the customer’s wish-list, and favor high-margin items.
Lowering Intensity
The most common way to move the intensity dial is to lower intensity. This is the domain of various story-splitting strategies such as 0-1-Many or Happy Path First. These techniques are usually used to pull out the most valuable parts of a story, or to help ensure it can be implemented in a short time-frame (e.g., an iteration).
Story splitting is an important tool, but in the rest of this article we’ll focus on going the other way.
Why Intensify?
The ability to intensify is valuable because we are uncertain about what is most valuable. We have hypotheses, but reality can often surprise us.
Think of it as placing bets. Suppose you have six alternatives. You can bet everything on one choice, or you can place small bets on each alternative with followup bets when you see which one is winning. Put this way, it seems clear we’re better off starting with small bets, unless we’re already sure about which will win.
The Lean Startup community has a related idea. They note that startups often pivot from one business model to another as they try to create a business. One pivot is called a zoom-in pivot: take a subset of the original product, and build a business on just that. An example is Flickr: it started as a game with a sharing component, but was zoomed in to focus on just the photo-sharing aspects.
Intensifying: Three Approaches
There are three common ways to intensify stories:
- Improve quality attributes
- Apply story-splitting techniques backwards
- Invent intensifiers that add in more options or capabilities
Improve Quality Attributes
The most straightforward way to intensify a story is to improve some quality attribute. Quality attributes, also known as non-functional requirements or “ilities,” have a scale that tells how good something must be. Intensifying is just a matter of targeting a better number.
For example, suppose our system must support 125 transactions/second. We could intensify this by raising that to 500 transactions/second.
This form of intensifying is the least creative: take an attribute and ask for one 5x as good.
Be careful: some increases can be extremely expensive. A system that is 99% available can have 3.5 days of downtime per year; one with 99.9999% availability can have only ~30 seconds of downtime per year. A desktop machine might support the first one, but the second one might require a sophisticated and expensive multi-site setup.
Apply Story-Splitting in Reverse
For any story we’ve already split down, we can of course intensify it by combining everything back together.
But we can also use story splitting techniques as a way to generate new possibilities. For example, the 0-1-Many split says that when we have many of something, we can reduce it to 0 or 1 ways. To run this split backwards, we find something where we have only one of something, and generalize it to many.
For example, we may be able to save a document in a specific file format. We can look at this as a “one”; and look for a “many.” In this case, that might mean supporting a variety of output formats.
Invent Intensifiers
The third approach is to find creative ways to improve a feature or set of features. There’s no fixed set of ways to do this, though we can identify some common approaches.
Let’s take a story “User finds matching item” to describe a searching process, and look at several ways to make this feature more sophisticated.
Add Control: We can provide options that let the user do a more precise or broader search:
- Boolean operators
- Proximity operators (“Agile within 3 words of Testing”)
- “Find more like this”
Add Intelligence: We get the system to automatically do more for us:
- Automatically search for synonyms
- Autofill with the most common searches
- Automatically classify results
Manage History: Searching is rarely a one-time event; we can put the activity in more context by considering what has gone before.
- Save searches for future use
- Manage a list of previous searches or previous results
Manage Multiple Items: A user may have multiple searches active at once, and want to coordinate them.
- Allow multiple search result windows
- Compare results of two searches
- Merge results from multiple searches
Conclusion
Intensity is a controllable characteristic of stories.
To lower intensity, standard story-splitting techniques apply.
To increase intensity, there are several approaches:
- Improve quality attributes
- Apply story-splitting in reverse
- Invent intensifiers
By controlling the intensity of stories, we can better respond to the uncertainties of development and use.