I occasionally (and usually accidentally) find myself in a discussion about whether or not every story should be a shippable increment of work. Recently, I got involved (deliberately) in the discussion when I was invited to answer the question, “...should a user story correspond to a potentially shippable product increment?” on Quora.
Ideally, every user story is independently shippable. It might help to check a story against Bill Wake’s INVEST acronym where every story is:
The challenge is often in how we slice a story and what we consider potentially shippable.
Let’s look at a real-world scenario:
The law firm you work with wants to add an attorney search to their site. They have hundreds of attorneys in locations around the globe who specialize in very different aspects of the law.
The design firm has come back with a beautiful screen layout with a search bar that allows you to provide a location and classification of legal service in any order and it will filter the attorney list in real-time on the screen. “Marriage PA”, “Pittsburgh Family”, and “Pennsylvania Prenup” are all likely to produce the same or similar results. As you type, the search system prompts you with possible word matches to select from.
I’d tackle this problem a tiny piece at a time.
I’d start with something simple - maybe the ability to choose one of our offices from a drop-down and get a list of the attorneys and their legal area of specialty. One story. Ship it.
Then I’d add the ability to sort by legal area of specialty. One story. Ship it.
Then I’d add the ability to filter by legal area of specialty. One story. Ship it.
I think you can get where I’m going here. Each story adds some new piece of functionality.
We might not break it down exactly like this. Maybe we believe that choosing specialty is more important than location. But the approach is fundamentally the same.
Along the way, we might learn things. Maybe people are typing attorney names into the search bar. Maybe people commonly search by city name, but rarely by state. Each story is an opportunity to learn, validate, and offer direct value to our customers.
In some companies, they’d refuse to ship the early versions to production. In other companies, they’d ship each one. Done right, they’re all potentially shippable - pushing them into production adds functionality and breaks nothing else.
Previously published at https://docondev.com/blog/2020/4/17/shippable-stories