5 minute read

Every time I arrive to a new company or team, one of the first things that I get myself doing is talking about vertical slicing: why it matters, techniques, workshops, etc. And then, I take a look for the n-th time to the resources I have saved in Notion, Drive, GitHub, or my hard-drive (distributed systems have their drawbacks 🤣), in order to share them (because… well, you know, sharing is caring 😄).

The goal of this post, which I will update whenever I discover more interesting resources, is to have in a single place the main resources that I have found valuable related with “vertical slicing”. Some people refer to it as story slicing or vertical story slicing: all sounds great to me. Personally, I prefer thinking of “story slicing” as the generic term, where we can find “tastes” like “vertical slicing” or “horizontal slicing”.

As usual: this post is for my future me, but I decided to share it in case it might be found useful for someone else 🙏

Although the goal of this post is not to explain what vertical slicing is and its benefits, I will do a quick and hypersimplified review of it:

What is slicing?

  • I love something I heard during a workshop with Kevin Meadows and Chris Pipito:
    • “Getting to the smallest possible thing we can have a conversation about. ‘What can we do today, that can be used tomorrow?’ That can make tomorrow easier for customers, for users or for us.”
  • Horizontal slicing (PLEASE, AVOID IT 🙃):
    • “A horizontal slice tends to decompose problems into technical layers which may seem to match well with the technical skills of team members, i.e. they’re split amongst a database team, a UI team, and a server team each of which is responsible for their own tasks. Even though we may call these horizontal slices user stories, and create them in form of user stories, they are in fact can’t deliver the value to the end customer without interaction or integration with other layers, components, or other building blocks of the software system. It is like slicing a cake horizontally, which does not allow for users to have the perfect bite.” (source: User Story Splitting - Vertical Slice vs Horizontal Slice)
  • Vertical slicing:
    • Vertical slicing is a technique in agile product and software development where work is broken down into small, end-to-end increments that deliver value across all layers of the system—UI, backend, database, etc. Each “slice” represents a complete, functional piece of the product, allowing teams to build, test, and deliver working software iteratively and get early feedback.

Why do we “need” stories?

  • Bridge business-technical communication
  • Focus on user value over tech specs
  • Enable iterative and incremental delivery & feedback
  • Support prioritization (and re-prioritization)
  • Track progress

My personal opinion: in order to enable and get its benefits, you need some principles and practices (e.g. from XP and Lean), e.g. parallel changes techniques, continuous delivery/deployment, deferring commitment, simplicity, a design that enables it (e.g. ports and adapters aka “hexagonal architecture” or some patterns from DDD), etc.

Some techniques and heuristics

Workshops

Further interesting topics, tools, and techniques

Feel free to suggest other resources that you have found helpful, insightful, or illuminating!! 😊🙏

Leave a comment