Let’s start with some Principles behind the Agile Manifesto:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Deliver working software frequently
- Simplicity—the art of maximizing the amount of work not done—is essential
What is a vertical slice?
A vertical slice means a bit of every layer. Again as an example, a new feature request like “showing x information on main screen” would contain these work bits:
- Work in the UX/UI that will display the information
- Work in the service layer to transform the information
- Work in the database layer to store / fetch the information. Wikipedia
I like the analogy with a cake from this post.
People don’t eat layers of a cake. We don’t eat all the top layer before we start eating the second layer – we cut the cake into slices (thin or thick, depending on your preference and diet) and then eat those. Again, looking at the cake as the whole product,
User stories come to play
One way to try achieving a vertical slice is by focusing the stories on the end user.
That’s why we call a feature “user story”, and it is common to follow the format “As a user, I can update Client”. This format reminds us that the goal is to deliver valuable software to the end user. When that’s too big, the goal is to find the sweet spot by reducing the scope in all layers. For example, we could reduce the scope by changing the story to “As a user, I can update the title of a Client”.
But I don’t know frontend…
It is tempting and natural for engineers to split within layers. That is logically easier. It is more comfortable to pick a backend task up if you know the backend. But remember, you are part of a team, and your team should be able to deliver a task touching all the layers at once. More than one person can be working in the same task at once, getting in sync and focusing on delivering the piece of the cake together. You, as a team player, can still work on what you work best, but everyone can be focused on delivering that piece of cake, or even a cupcake if that allows you to get more insights and deliver more value at this iteration.
Be ready to change
This idea, to be implemented, will likely require your team to change their ways of working, trying new ways to deliver value. You are not do it right in the first iteration… Keep moving, keep reviewing and trying other ways to deliver value faster.
Just a reminder that all of these are guidelines, not rules. They are analogies to help us deliver value faster, which does not apply to all cases. For example, it is common to have to do work beforehand to deliver value easier later. You will have to sharpen your saw from time to time.
Part of Tips for Software Engineers