Scalable Story Examples

How do you think about stories?

We’ve talked about different levels of stories. Scalable stories let us gradually increase the intensity and utility of system behaviors.

As before, I’ll use LinkedIn.com for examples. (This is a reverse-engineering exercise; I have no inside knowledge about how they envision, think about, or implement their systems. Instead, I’ve looked at the system as a user and reconstructed stories I might have used.)

We’ll see how details can act like “mini-stories” that work together to create scalable stories.

Capabilities and Headlines

Here are the headlines we identified:

  • System displays connections
  • User searches for a person
  • User connects to another user
  • User sends message

and a couple more:

  • User sends invitation
  • User accepts invitation

Details

As we narrow in on how things will work, we can add details to our headlines.

The most common way I see this done is that the bullet points represent a checklist of everything that must be done, like this: 

Headline
* Detail 1
* Detail 2
* Detail 3
:

It’s natural to envision a very capable system, but there’s a better way (“negotiated” as well as “iterative and incremental”): layer the details as a series of increments and alternatives. 

The simplest form of this is a series of levels, each adding on to the previous work:

Headline
Level 1 (initial version)
* Detail 1
* Detail 2
Level 2 (a little more)
* Detail 3
* Detail 4
Level 3 (another increment)
* Detail 5
* Detail 6
etc.

You can get more sophisticated, treating details as alternatives, or even as independent options. Rather than “complete” one story then move to the next, you can look across stories and either tackle a new story or do the most valuable increment of any existing story. 

This lets you take advantage of feedback. Often, you find that you don’t really need everything that you can imagine. 

Examples: Skeletal Stories

Applying this idea to the LinkedIn stories, let’s create an initial version of each story:

User searches for a person
* Find potential connections by name
User sends invitation
* Send invitation
User accepts invitation
* Accept invitation
* Connection is made
System displays connection
* List connections
User sends message
* Choose recipient
* Enter message
* Send email

Example: The Rest of the Story

Once the “walking skeleton” is in place, we can take a very fine-grained approach, treating each bullet point as an increment. Then the game is not “Is everything done?” but “How little can we do and still accomplish what we need to?”

User searches for a person
✓ Find potential connections by name
* Sort results by degree of connection
* Match names exactly
* Match names with known substitutions (Ed == Edward or Edgar)
* Match names approximately
* Filter by degree of connection
* Filter by geographic location
* Filter by company
* Filter by current or past companies, industries, schools, name, etc. 
* Filters restricted by values present in the nearest connections
* Filter by function, years of experience, …
* Only allow advanced filters with a paid plan
User sends invitation
✓Send invitation
* Add a note with an invitation
User accepts invitation
✓ Accept invitation
✓ Connection is made
System displays connections
✓ List connections
* Selecting a name goes to that person’s “home” page
* Filter by name
* Sort by recently added
* Sort by first name
* Sort by last name
* Filter by other alternatives (as for finding a connection)
User sends message
✓Select recipient
✓Enter message
✓Send email
Select between “original message + small compose window” or “big compose window”
Attach an image
Attach a document
Search for GIF
Insert emoji

The minimum level will vary based on your users, the capabilities you need, engineering costs, and more. Look at how the levels kick in for a typical story:

User sends message
* Enter text           <– not yet usable
* Send message  <— bare minimum (we would ship with this)
* Select between “original message + small compose window” or
“big compose window”
* Attach an image
* Attach a document    <—- expected level
* Search for GIF    <— the rest are “nice to have”
* Insert emoji                            
:

Conclusion

Many teams lock in on fine-grained stories very early. Instead, try these ideas:

  • Have wide-ranging “scenario-level” conversations
  • Separate headline-level thinking from detail-level thinking
  • Treat details as options, not as mere checklists
  • Grow your solution in smaller steps so you can evolve as you learn