I recently started playing a bit of a release manager role for some projects at work, and one of the interesting conversations I’ve been having with people are the merits of slicing projects horizontally vs vertically.
Horizontal slicing
With horizontal slicing, projects are broken up roughly along architectural lines. That is there would be one team for UI, one team for business logic and services (SOA), and another team for data.
One advantage of slicing your application horizontally, is you get good communication and consistency within each slice. Everyone does things the same way.
The downside of slicing your projects this way, is that until you integrate every thing together, you really haven’t delivered anything of value.
Your customer can’t go into production with screens, services, or well normalized database schemas.
Only when all the layers are hooked up do they offer any value.
That’s why agile is so big on slicing projects vertically.
Vertical slicing
Agile is very big on the concept of one team. There is no UI, SOA, or data team. There is only one team, focused on delivering a suite of features for the customer.
The other advantage of slicing vertically is you are more efficient. You don’t have the overhead, and effort that comes from trying to coordinate activities across multiple teams. No need to negotiate for resources. You’re all on the same team.
No. Not always.
Whenever you have legacy systems (mainframes), core business entities consumed by many across the enterprise, or anything where the technology dictates how the application needs to be built, you may be better off slicing that body of work horizontally.
That doesn’t mean you can’t work with them in an agile fashion. More that they will have a certain way of doing things, and you will have to adapt.
So go vertical when you can. And horizontal when you have too.
Thanks to John Kordyback for sharing his thoughts on this subject.
Oct 10, 2012 @ 11:05:26
Is there any literature that you can recommend?
Thanks
Markus
Agile Development with Vertical Slicing – Cyrus Vandrevala
Mar 02, 2017 @ 14:38:51
May 09, 2017 @ 23:52:14
is there any way that a horizontal can transform diagnolled
Oct 03, 2019 @ 19:21:20
I am facing a similar dilemma, where our engg. teams are working horizontally because there is legacy integration involved and has multiple business entities which are different for each touchpoint. But we need something for the customer to show the integration between the NextGen system. How should I combine these approaches?
Oct 07, 2019 @ 16:27:10
It’s about trade-offs.
The best way is always to slice things end to end for reasons described above. If you can’t do that here are some other options.
1. Fake the integration
Use fake data to show what things might look like when things are really setup and working.
2. Integrate just a few of the layers.
Maybe you can go end-to-end in some areas but not others.
3. ???
You can make horizontal work. Just be aware of the risks. You never really know if things are going to work until you hook them up. Try to change organizational and get alignment on going end-to-end.
At the end of the day you have to work with what you’ve got. But I always try to push for the ideal. And if I can’t get it let the powers that be know what the risks are and what we lose but not doing it.
Good luck!
Nov 04, 2020 @ 12:14:28
Still reasing in 2020 🙂