Agile software development is a complex process. Software development work can be extremely difficult to understand and execute on. But, there are practices out there that make the work easier.
This is where the Vertical Slice practice can help. When starting on work, an Agile team is often simultaneously seeking to understand the goals of the work while also creating a game plan to meet said goals. Vertical Slicing helps to break up and tackle the work.
That cherry on top, it is the gained value over other practices. Check out content below to find out more on using the practice and it’s benefits.
- The work is stressful, requiring better practices
- What is Vertical Slicing?
- Vertical Slicing Example
- Vertical Slice of the System Layers
- Piece of Each Layer
- Next is What I Call “Like Things”
- Putting the Ideas Together
- Refine Features into Smaller Pieces of Work
- Benefits of using Vertical Slicing in Agile
- Getting value sooner
- Easier to prioritize work when it’s a vertical slice
- Value gain over time
- Building understanding
- Consistent Feedback
- Avoid low or no value
- Enables responding to change
- Allows just enough to meet goals
- Agile and Waterfall Time to Delivery
- Vertical Slicing Gains Business Value
- 5 Best Questions to Break Up User Stories Using Vertical Slicing
- Last Thoughts on Vertical Slicing of Work
- Additional reading and eBooks on Vertical Slices and Agile
The work is stressful, requiring better practices
Working against deadlines in software is normal and causes great pressure. Teams have to balance the work with due dates. How do you approach and write user stories to mitigate the issue of being up against deadlines? What practice will help you to write better user stories?
The answer is Vertical Slicing Agile. In Agile projects, this will help you avoid rushing work and quality. It allows incremental and iterative delivery of user stories. Building to larger goals. Ultimately though, it will boost your Delivery!
For Agile teams, Vertical Slicing enables consistent delivery of functionality and value. An iterative development process, with continuous delivery of pieces of work. All building and gaining value.
Agile development using vertically sliced user stories enables the work to be done by the team and avoids the pressure associated with software development.
Realizing you can’t deliver it all at once
Agile software development is also an environment that is full of change, where goals evolve and shift. Requiring the work to change to meet the goals. The work goals and how to meet the goals become even more difficult when mixed into this fluid environment.
All of this causes a lot of stress and pressure for the team. Let’s get into some reasons for that further. As the benefits of working software in this way, become all the more clear when you fully understand the problems facing the team.
What about this stress though?
There are lots of reasons for the stress, and exploring them is not the intent here. Instead, focusing on what can be done to help deliver user stories more effectively. This is doing work in pieces with Vertical Slices of work.
Doing in pieces is part of an incremental and iterative approach. Which is a driving force in Vertical Slices and Agile. Vertical Slices go a step further. At a high level, it’s that they are pieces that work on their own.
We will get into this more, just remember those ideas as being part of good Agile practices. Vertical Slices will boost your delivery and speed. Reduce complexity, and speed up time to completion.
What is Vertical Slicing?
Vertical Slicing is where you slim down a work item to a narrow focus. In other words, breaking the work into small pieces. Yet, the pieces have all the functions to be stand-alone.
It may or may not require more features to truly be useful. However, as a piece of the system, it works on its own. Ultimately, it is a process of breaking up work. Defining and organizing work items into smaller pieces that work on their own and can be executed on in a given sprint.
It’s an Agile approach to creating pieces of a system. Stringing those pieces together over time for continuous improvement and delivery. This helps handle the complexities of a product or system, as you take them piece by piece.
Adopting this practice allows the Agile project team to deliver value. By building out pieces of the product and system, feature by feature, but in a priority order. You then get important pieces, pieces of the functionality that can give value sooner. The practice is key to writing better user stories. More importantly, user stories that are likely to be completed and delivered.
Vertical Slicing Example
Let’s start with an example of Vertical Slicing of user stories. Take a field on a website. Just a single field. That field only could be a Vertical Slice of work. The field includes the front end. It also has the database to store the value. Lastly, the service to store and update data to the website. Altogether, that work is limited in scope to just the single field. Yet, altogether, those pieces are complete and that field could function on its own.
Another way to describe Vertical Slicing is to say that the piece of work goes across all architectural system layers. They can include, but not limited to, the user interface, database, and services or logic used. In other words, the piece of work includes a piece of the user interface, a piece of the database to support it, and so on. Making that split up story functional on it’s own.
Vertical Slice of the System Layers
To help show the Vertical Slicing example in Agile idea, consider this. First, breaking down features of work into small pieces. Second, if small enough, group like pieces. The groupings I call “like things”. An example is similar fields or actions on a website. Group the fields together, as they behave and function similarly. These help to show the Vertical Slicing Agile concept.
Piece of Each Layer
The visual below shows a Vertical Slice. These are common areas of a system. The user interface, services, and database. A Vertical Slice takes a piece of each layer. Together, the pieces make up a slice of work.
This is to say a small piece of the user interface or front end. In addition, a small piece of the service used. Lastly, a small piece of the database. Together, those small pieces are a Vertical Slice of work. Together, they deliver a piece of work, without being the entirety of any of the separate layers. Below is an image, showing a vertical slicing example
Next is What I Call “Like Things”
Next, is the idea of “like things”. This is where you group similar items. So that you could work them together. However, only if they are similar and could be completed in a sprint. When they relate enough and are small enough, they can be a Vertical Slice of work. This is the “like things” idea to me.
Think of an average website. If you break up pieces of the site into like things, those could be Vertical Slices. Or pieces of them could be. Group together similar pieces of the site. Those are your “like things”. IE, the menu, or navigation. Taking one of those individually, you can break that work apart from the rest. The system that supports your like thing is your thin Vertical Slice of work. Where the system behind the scenes includes your other layers.
Putting the Ideas Together
Combined, these ideas are the Vertical Slice of work. In Agile, this helps lead to a key concept. Which is incremental delivery. Building software incrementally is one of the most important fundamentals to Agile. An increment is just a piece of work, but it’s a piece of work you can go do.
Check out the Agile Manifesto and it’s values. How many require keeping work to manageable and smaller pieces? Almost all require it in some way or another.
Incremental delivery is about consistent, progressive, and piece-meal progress. Accumulating progress over time on the work. Progress on work items and goals. By consistency, you are delivering work at regular times. You also delivery quality at regular times. By progressive, you are building onto prior work items.
By piece-meal, I mean that the work is small and you can manage it. When you can break work down into pieces, you can refine and get more specific detail to enable the work. This is how to improve user stories. By getting smaller with the work and enabling completion, that is is how to deliver incrementally on your work.
Refine Features into Smaller Pieces of Work
Continue that idea of organizing pieces of work. Find the ways to break down stories into smaller and manageable portions of the feature and functionality. Organize those stories into groupings of work, those being features or epics. This allows you to continue to take on small user stories, to accomplish them and deliver the functionality. But also chip away at much larger work items.
Benefits of using Vertical Slicing in Agile
What are the benefits of splitting user stories up into these Vertical Slices? There are many things gained and practices enabled from approaching complex work by splitting up into more defined pieces of the functionality. The following are some of the best items to be gained from this practice.
Getting value sooner
One of the best benefits is gaining value sooner. By breaking work into pieces, those pieces can deliver value on their own. The team is feature driven, as you continually deliver pieces of features, working toward a larger goal. Work is not as tied to all the other pieces of work. Allowing you to put pieces in place. Then organize to see value quickly.
Easier to prioritize work when it’s a vertical slice
You can weigh pieces of work against others more easily. In other words, its easier to compare work and see which ones to do. When you prioritize the work, it stands to reason that the higher priority items will deliver higher value. Not always the case, but often so. A nicely prioritized backlog becomes so much easier!
Value gain over time
Consistent delivery allows you to build value over time. Pieces of work stack on each other. They accumulate value. Each piece on its own delivers value. However, over time, the value is greater as you complete more pieces.
Another benefit is that it becomes easier to understand the value of backlog work. You can more easily see the value in the backlog. Because you have broken apart the work into more pieces. Which, allows you to assign work its own value. Which enables easier ranking against other work. The lines between work become more distinct. This helps greatly with priorities.
Consistent and frequent feedback is so important. You need honest and critical feedback. The team uses it to learn and adjust. Doing Vertical Slices of user stories in Agile, helps enable a better feedback loop.
Another part of Vertical Slices of user stories is that they help get feedback, by helping to execute work sooner.
Avoid low or no value
By working in smaller pieces, you enable more frequent course correction. Which in turn enables you to set down low and no value work, in favor of higher priority work. Vertical Slicing Agile stories makes it easier to avoid low and no value stories and to focus on the high value stories.
Enables responding to change
Business priorities can often change, as the business landscape changes. By working in an incremental fashion on smaller pieces of work, you can move on to new priorities easier.
Responding to change is a core concept in Agile values.
Allows just enough to meet goals
Smaller increments of work allow just enough to meet goals. Without working on large chunks of work that do way more than is needed. Instead, you accomplish what is needed, and when a goal is met you can move on to new work.
Agile and Waterfall Time to Delivery
I have included a diagram showing how the Vertical Slice helps Agile delivery. The diagram shows the agile sprint flow. You gain value when the work is done. If you compare it to the Waterfall model flow of work, it takes much longer before done. Thus, Agile gains value more quickly. The time-to-market in Agile is reduced! You will create ship-able software much faster.
Additionally, at each stage, you have the ability to learn and adjust the course. As opposed to Waterfall, where the time frame is longer. There is much less ability to course correct. In Agile methods, pieces of work is a big part of the Agile flow. As smaller pieces of work enable shorter sprints. They also enable the build, learn and adjust concepts needed in Agile teams. Where the team can learn, collaborate, and do things better.
Contrasting with Vertical Slices, you have Horizontal Slices of the System. Horizontal Slicing of work is the end-to-end piece of work. This is to say it is a piece of work across one system layer. By this, it could be the entire user interface or the entire database.
Horizontal Slicing is not synonymous with the Waterfall method of software delivery. There are some overlapping ideas though. The biggest being that you need to do the entirety of a piece of work before it is done.
The drawbacks of this Horizontal Slicing can be severe. As you create functionality without knowing the rest of the system. It’s difficult to create a new database accurately. Especially without knowing the front-end fields it supports.
Vertical Slicing Gains Business Value
You might also know Vertical Slices as Value Slices. Meaning that it is a piece of work, that delivers value. Which is a key part of Agile methodology. Thus it is important to remember the connection to delivering value. Above all, Agile and Vertical Slices of user stories is about providing value and doing so step by step. It is all part of incremental delivery to the stakeholder and users. Gain value faster when you boost your delivery.
Incremental delivery allows for quick timelines. In other words, work is done in short sprints. Incremental delivery opens the door to good feedback loops. As a result, it helps with quick learning by the agile team.
Lastly, incremental delivery allows for changes along the way. It is flexible and responsive to changing needs. Responding to change helps the team to build the right things. This helps avoid the pitfalls of Waterfall development. Where you can be too far along to effectively respond to change. The quick feedback loop in agile helps that. It allows for course correction. Which you get from Vertical Slices of work.
5 Best Questions to Break Up User Stories Using Vertical Slicing
The below questions are a great guide to help with these ideas. These questions will help break up your user stories into Vertical Slices of work. User stories that you can deliver on and gain value on immediately. Splitting your user stories like this is a great Agile practice. Using these questions will get you moving forward in no time. These ideas are how you can write better user stories. More importantly, though, you will create user stories that are likely to be completed. Use them to help break up your deliverables. Making the work more manageable and enabling completion. Write better user stories when you ask these questions and dig for the answers.
- Is there a core set of functions? Which are most important or most of what is needed. If not a core function or not important, it can be moved to the product backlog for later consideration.
- Are there business rules or logic? Can you do these separately?
- Is there a workflow? Within the workflow are there stops, where you can divide before/after the stop? Or, if multiple branches of a workflow, could you do a happy path through first? Then add more variations to it with additional work.
- Do you receive, manage, or update date from multiple processes or interfaces? Split based on those variations.
- Is there speed, performance, timing, or quality involved? Can you first get something to function, and later add the additional metrics for these?
Last Thoughts on Vertical Slicing of Work
Vertical Slicing is an important concept in Agile methodologies. It helps the team with many practices. If not using it, you should consider using it in your software projects now! Adopting the mindset here and practices of slicing stories vertically will grow your Agile process. Use the Agile tools in your tool box. Of which, Vertical Slicing of user stories is one. Helping to write better user stories. User stories you can complete. You will find you can boost your delivery and enable quality software completion. To reiterate its benefits, it will help with the below:
- incremental delivery
- gaining business value
- consistent feedback loops
- responding to change
- builds team understanding
Additional reading and eBooks on Vertical Slices and Agile
Here is some additional information on story writing, and help with that. As well as info on how to work a more iterative process.
For a refresher, here is a link to the Agile Manifesto. Slicing up of user stories in the ways presented goes hand in hand with a number of the values and principles. Another great piece of information on Vertical Slicing Agile is available here. Vertical Slicing is available as in text here.