What is User Story?
- As a user, I can view the comments side of individual posts.
- As a user, I can edit my personal information.
- As a user, I can view the product list.
Above are a few examples of user stories. So user stories are often a feature that users can use on the products or projects you make for them. Experience when creating User stories, often try to generate User stories as small as possible.
Example for a bad User story:
- As a user, I want to make a purchase.
We can see that the User story above is too general and covers the buying process. So instead, we should create small User stories as follows:
- As a user, I want to search for tank tops with keywords.
- As a user, I would like to see the list of tank tops.
- As a user, I can customize the text on the shirt I’m viewing.
- As a user, I can add a shirt to the cart.
- As a user, I can conduct checkout.
But it is not always possible to create an optimal User story right from the start when the project has just started, and you do not have too much information to make an accurate User story. However, we still have to start planning with high-level tasks/user stories. Or, We cannot make the user story smaller / more detailed.
When we have to subdivide that User story into a subtask, so when dividing, there will be two ways:
Looking back at the post’s feature image, you can see that the cake is cut vertically. The cake contains many layers. When slicing the birthday cake, you don’t cut it across; you slice it lengthwise. Thus, considering a User story is a whole cake, then Horizontal slice: is to cut the cake by layer, one portion has only one layer, and Vertical slice: is to cut the cake in the usual way, a piece of cake will include all layers.
So what are the advantages of Vertical slice? Talking about the cake, a person who enjoys the longitudinal portion will enjoy the cake’s full flavor, regardless of whether it is big or small. Talking about the User story, when broken down by vertical slice, a subtask is created that will cover all the technical aspects needed to complete that subtask: UI / UX, Database, Backend API, Frontend, etc., so that subtask, when completed, will demo the user, and QA can perform testing efficiently.
In contrast, when dividing User stories by Horizontal slice, a task is just for Database, a task just for UI, a task just for Frontend development. When a task is done, there is almost no way for QA to test that task if they don’t have specialized knowledge about that task (for example, how can the QA test database be designed appropriately?). Horizontal slice has one advantage, I find it easy to create. But it’s challenging about testing, demonstrating later. In short, should divide the cake by slicing vertically, or dividing a User story by vertical slicing will be better for QA, showcase, demo later.