It comes that time when you have to break down the features into stories, and stories into tasks. The question is how to slice them?

In my experience the way you slice features has an impact on the time to release something of value to our beloved users.

Let’s say your team needs to implement a dashboard that shows a summary of how the user’s investments are performing.

Basically it has these components and behaviours:

a list of all your investments with the return value

the possibility of the user being able to sort the investments by return

a chart telling how much money you’ve earned over time

1st approach: Technical slices

You could think of these functionalities as only one feature and break the cards into technical needs to implement it.

So we could start by creating a database card, this would contain all the data we need to ship the whole feature. At this point we realize that maybe we will need to cache some data. So we create another card on caching data.

After that there will be the back-end to fetch all the data using the cache or the database and let it available for the view.

Then comes the front-end that will put all this data into an UI. Using HTML, CSS and Javascript.

We can break the cards into style: HTML, CSS. And behaviour: Javascript for the sorting stuff.

So using this approach we would have a backlog full of technical cards.

2nd approach: User stories slices

Another approach would be to slice the cards in order to bring value to the user as soon as possible.

If we ship the database without any UI, the user would not receive any value. But if we ship the list of investments with return value, it will be something.

We don’t have to wait for other pieces of the page to add value for our users.

So with this approach we could end with these cards:

As an investor. I want to see how my investments are performing. In order to track them.

As an investor. I want to sort my investments by return value. So it is easier to identify what is going on.

As as investor. I want to see how much money I’ve earned over time. So I can see that investing really works.

The tasks inside each of these cards would include: database stuff, back-end and front-end.

This is a mind-shift towards valuable output.

Conclusion

When you eat a cake, you bite it vertically so you can experience all the flavours at once. This was how the Chef designed it for you.

It does not make sense to slice the cake horizontally to eat each layer in isolation. And that’s similar to the 1st approach I talked about. You can’t ship a horizontal slice and add value to the user.

This cake analogy is a way to easily remember the suggestion of slicing features vertically.

Recently at Magnetis we forgot about this and did technical slices. During retrospectives we identified lots of issues, most of them related to rework and delay before shipping value to our users. Lesson learned!

Hope this helps companies to increment features (or improve existing features) in a better pace.