Is your team always busy but your users aren’t seeing any new features?
Have you ever worked hard on a feature only to be disappointed when you learn your users aren’t using it?
Today I want to help evaluate how we tackle our work when implementing features for your project.
In this blog we are going to discuss two approaches to feature development. Horizontal delivery and verticaldelivery.
Vertical Delivery: This approach focuses on delivering complete, functional slices of a product that cutacross all necessary layers—UI, backend, and database. Each increment provides real user value and can be testedend-to-end. This method aligns well with agile principles, allowing for faster feedback and iteration.
Horizontal Delivery:This method builds software layer by layer, such as developing the entire databaseschema first, then the backend, and finally the UI. While it might seem organized, it often leads to delayedintegration, increased rework, and a lack of early user feedback.
Say we are building a travel app, and you have a vision for how this app should look like. You might want thefollowing features:
When your development team picks up these features, they realized that the location/tracking functionality inthe Api and Database can be shared across both features.So, your first sprint towards this goal is aimed at implementing this functionality in your service and databaselayer. By the end of the sprint, you have integration test cases that look a bit like:
You start to feel good because it feels like you’re accomplishing something. As you worked on multiple featuresthis sprint there simply wasn’t enough time to focus on the UI, so you will have to tackle it in the nextsprint.
By focusing on how to develop all the features efficiently, we have broken some important agile principles!Agile principle no. 1:“Our highest priority is to satisfy the customerthrough early and continuous deliveryof valuable software.”In the first sprint we didn’t deliver anything a user could use and therefore our clients received no value.From a business perspective, it could mean we convert fewer clients.Agile principle no. 10:“Simplicity--the art of maximizing the amountof work not done--is essential.”By delaying instant feedback from the client. We become less confident that what we are building is of realvalue. That feedback is important because it can allow us to stop wasting time on irrelevant features and pivottowards more valuable ones.
‘Vertically delivery’ is developing a feature that a customer can use in a single sprint.The work being done must only focus on the feature and nothing else. There can be no scope creep. Remember the10th Agile principle. You are trying to maximize the work not done.In practice this will mean the development of the feature may touch multiple layers of an application, that maybe the database, the API & the UI etc. Because you are integrating between the layers early on, you can addressany integration issues immediately. With vertical delivery it could be weeks before you realize your UI and APIdon’t integrate well, further delaying your feature.The feature may or may not require more features be truly useful. However, this a piece of the system that canwork on its own and importantly give value and receive feedback straight away.