The Vertical Slicing concept is key in the agile process. This approach enables many agile practices. What is this concept of Vertical Slicing? What does it mean to break work apart using Vertical Slicing? How does that impact the agile software development process? Lastly, what are some benefits of using this concept in an agile process.
In the following, I discuss the Vertical Slicing Agile concept. I will provide visuals to help illustrate the concept. Showing what Vertical Slicing of work means. I will discuss what you gain from this agile concept. Please continue to read and see if Vertical Slicing is something for you.
What is Vertical Slicing?
The Vertical Slicing Agile concept is where you narrow down a work item to a specific focus. Yet, it has all necessary system functionality to be stand alone functionality. It may or may not require more features to truly be functional. However, as a piece of the system, it works on its own. Ultimately, it is a process of breaking up work. Practicing this will allow the agile team to improve in agile.
As an example, you have a field on a website. Just a single field. That field only, could be a Vertical Slice of the work, of the larger page or website. The field includes the user interface, the database to store the value, and the service to store and update data to the website. All together, that work is limited in scope to just the single field. Yet, all together, those pieces can be a full set of functionality and that field could function on its own.
Another way to describe the Vertical Slicing Agile example is to say that the work goes across all technical architecture layers. I mention some of these technical architecture layers above. They can include, but not limited to, the user interface, database, and services or logic used.
Visual of a Vertical Slice of the Architectural Layers
To help illustrate the Vertical Slicing Agile concept, I use 2 ideas. First, breaking down features or work into granular pieces. If small enough, some things can be grouped together into what 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 illustrate the Vertical Slicing Agile concept.
Visual for a Piece of Each Layer
The visual below shows a Vertical Slice. There are common areas of a system represented. The user interface, services, and database. Vertical Slicing takes a piece of each layer. Together, those pieces make up a slice of work. A small piece is taken from each layer that is needed to make something work. This is to say a small piece of the user interface, or front end. Then also a small piece of the service. Lastly, a small piece of the database. Together, those small pieces are the Vertical Slice agile example work. Together, they deliver a piece of work, without being the entirety of any of the separate layers.
Next is What I Call “Like Things”
Next, is the idea of “like things”. When you know all of whats needed to make like things work. You can take fields, buttons, etc, and use the Vertical Slice concept. Grouping said like things together. Where some of the like things can be worked together. As they are related enough, and simple enough, to be combined in a Vertical Slice of work. This is the “like things” idea to me.
Mentally picture 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 the similar pieces of the web page. Those are your “like things”. IE, the menu, or the 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 supporting this is the different areas of the system, that make that thing work.
Putting the Ideas Together
Together, these concepts help to create Vertical Slicing of work. In agile, this approach of work helps lead to a key concept, which is incremental delivery. Which, is very important in agile methodologies. Incremental delivery is about consistent, progressive, and piece-meal progress. Progress towards work items and goals. By consistency, you are delivering work at regular intervals. You also delivery quality at regular intervals. By progressive, you are building onto prior completed work items. By piece-meal, I mean that portions of work are smaller and manageable.
Benefits from Vertical Slicing
- Getting value sooner. One of the biggest benefits is gaining value sooner. By breaking apart work into stand alone items, those items can deliver value individually. Work is not as tied to all the other pieces of work. Thus you can implement individually and see value quickly.
- Prioritizing work is easier. Smaller pieces of work are more easily weighed against one another. When you prioritize the work, it stands to reason that the higher priority items will deliver higher value.
- Value gain over time. Consistently 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.
- Building understanding. Another benefit is that it becomes easier to understand the value of upcoming work. You more easily understand the value in the backlog of work, as they are separated out into their own work items. You can assign work it’s own value. Which enables easier ranking against other work. The lines between work become more distinct. This helps greatly with prioritization.
- Consistent Feedback. Consistent and more frequent feedback is of great value. You need to get honest and critical feedback. This needs to happen often, and consistently. The team uses this to adjust and build better things. Doing Vertical Slicing in Agile, you help enable that frequent and consistent feedback loop.
Agile and Traditional Implementation Flow
I have included a diagram showing the Vertical Slice, as it is part of the agile delivery flow. Forgive my basic wire frame display. It’s form over function for me. The diagram shows the agile sprint flow. Which, upon completion, value is gained. This is done in shorter iterations, compared to the waterfall flow. Additionally, at each stage, you have the ability to learn and adjust course. As opposed to waterfall, where the time frame is longer. There is much less ability to course correct. The Value Slice is a big part of the agile flow, as smaller pieces of work enable the shorter sprint cycles. They also enable the build, learn and adjust concept. Where the team can learn and do things better.
Contrasting with Vertical Slices, you have Horizontal Slices of the Architecture. The Horizontal Slicing of work is the end to end piece of work. But, it is across one architecture layer. By this, it could be the entire user interface, or the entire database. The drawbacks of going this route can be severe. As you are creating functionality without knowing the rest of the system. It difficult to create a new database accurately. Especially without knowing the front end fields it supports.
Vertical Slicing Gains Value
The Vertical Slice agile example is sometimes called a Value Slice. Meaning that it is a piece of the larger work, that delivers value. It is important to remember the connection to delivering value. Above all, agile is about providing value, and doing so step by step. Which makes the Value Slice another great idea to use. Which helps to describe incremental delivery. It’s all about doing pieces of work. However, those pieces bring value.
Incremental delivery allows for quick timelines. AKA, the sprint or iteration. 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 route. It is flexible and responsive to changing needs. This last item is very important in agile methods. It helps to the team to build the right things. This helps avoid the pitfalls of traditional waterfall development. Where you can be too far along to effectively respond to change. Waterfall has examples where work is too far along for change. The quick feedback loop in agile helps that. It allows for course correction. Which is enabled by Vertical Slices of work.
Last Thoughts on Vertical Slicing of Work
Vertical Slicing is an important concept in agile. It helps the team with many practices. If not using it, you should consider it now. To reiterate its benefits, it will help with the below:
- incremental delivery
- gaining value
- consistent feedback loops
- responding to change
- builds team understanding
Lastly, some further reading:
- Slicing work also applies to documentation. It helps to complete the work and deliver value What to should you focus on? Here are some best practices around this. Documentation in Agile – Tips to Help
- What are some items to work on, to be more agile? A Blueprint for Agile Improvement – 5 Tips to Help, discusses some concepts. Helpful in the agile process.
- Creating user stories can be difficult. What is it we want from the user story? Here I discuss some of that intent. Goals of the User Story
- A great article with info on Vertical Slicing. Vertical Slices and Scale