The benefits of breaking down user stories
Breaking down problems into smaller, more consumable pieces can improve predictability and feedback cycles while reducing risk.
Before anything else, we need to address the real definition of a user story, as originally coined by XP:
I’ll try to go over the benefits of properly slicing user stories. To be clear, when I say small, I’m referring to the size of the problem, not the solution (even a little story can take a while to implement in some cases). Therefore, splitting user stories means recursively splitting the problem, not the solution. Beware that splitting by vertical slices of value is only effective if you have autonomous and multi-disciplinary teams — comprised of people who, together, have the necessary skills and empowerment to deliver user value. It’s way harder to achieve this when you have backend and frontend teams.
This approach has several noteworthy benefits. Let’s go over them.
Reducing delivery anxiety
When users have to wait a lot to see something new, anxiety and risk accumulate, and clients start asking for dates and hard commitments to upfront plans (which is harmful because we are discovering as we go). The solution is to release often and team up with the customer.
Imagine you need to develop a dashboard with a few metrics and some nice-looking charts. The typical approach is some PO/PM that “knows what the users want” proposing a big idea, a designer draws some fancy-looking mockups full of bells and whistles and shows them to everyone; people get excited (customers included); the team sets a goal for the following months based on a master plan — just as in waterfall.
This dashboard initiative happened to my team, but our approach was doing a little user research, developing a screen with a single number, having some nice chats with some users, adjusting, and repeating — customer collaboration over contract negotiation. Had we done the upfront design and developed it, we would have ended up with a beautiful but useless dashboard — responding to change over following a plan. We would also have trouble managing client expectations after they saw the beautiful mockups and got excited. It’s much better to make the customer part of the process. This divide-to-conquer strategy is how agile embraces uncertainty. It’s also one of the extreme programming practices called flow:
The principle of flow suggests that for improvement, deploy smaller increments of value ever more frequently. Extreme Programming Explained
More frequent feedback cycles
Feedback is at the heart of agile and lean development. Without feedback, we develop software blindly. With smaller cycles, we adjust often. We promote customer engagement through fruitful conversations and act accordingly. You only learn what to build next as you get feedback.
With small stories, you can test assumptions, learn from users, act on feedback, pivot, abort, fail early, etc. This aligns with the continuous integration/delivery paradigm, where we aim to increase early defect discovery and productivity and provide faster release cycles.
Great software today is often preferable to perfect software tomorrow. If you give your users something to play with early, their feedback will often lead you to a better eventual solution. The Pragmatic Programmer
With small stories, value is in users’ hands sooner and more frequently rather than making promises of delivery on some date far ahead. This is one of the principles of lean software development: to deliver as soon as possible.
Our highest priority is to satisfy the customer through the early and continuous delivery of valuable software. […] Working software is the primary measure of progress. Principles behind the Agile Manifesto
It follows from the definition of ‘user story’ that backlogs should not be “to-do” lists; they are instead “to-learn” lists. If you don’t deploy frequently, you’re not learning and adapting as much as possible; you’re creating waste.
Reducing internal silos
When you split into layers, you don’t have user stories. All you have are technical tasks. This division strengthens the wrong internal silos like the frontend vs. backend vs. database. These require coordination, back and forth, and hand-offs. Real user stories are vertical, by definition. The backend and frontend are implementation details. I prefer to think vertically.







