A few years ago I wrote a bunch of posts exploring my experiences of outside in development eventually coming to the conclusion that it seemed to make sense to drive out functionality from the UI and work back from there.
i.e. we take a vertical slice of functionality and then drive it end to end.
On the team I’m working on there’s been success using an approach where the functionality is still split vertically but we work across a horizontal layer for all the cards before moving onto the next layer.
The advantage of this approach is that we can do all the work in one layer without context switching and then move onto the next layer.
In our case this meant adding a bunch of text and check boxes to a backend CMS and then making sure that the values entered there bubbled their way up to a service used by the front end.
This was counter to my previous experience so I was curious why we weren’t seeing the problems that I’d seen before where we’d model things incorrectly in the backend and only realise when we tried to call them from the front end.
Jae pointed out that you don’t necessarily run into this problem if you can hold the model of how the whole system fits together in your head.
Since we have a few people who are able to do that and have knowledge of how the data flows through the different applications that is indeed the case!
I’m sure there are some other cases where this approach makes more sense so if you find success writing code in this style do let me know!