Deploy vertical slides for faster feedback
Teach people to build deployable vertical slices. This makes it much more exciting than, for example a database schema, or the business logic of an application. You can’t see those. That work stays hidden until you add the ‘front end’; whether it’s javascript with some css and html, or some screens in a mobile app.
Thin, vertical slices are much more fun to look at and explore. Think of them as building the cake by adding one slice after another – the reverse of how you eat a cake. This builds on what I’ve written about small slices already. Think of the layers you see here in the cake below. One layer is the back end, the frosting between is maybe another layer, and the layer above is another layer of your work. I want you to focus on how ups deliver a nice vertical slice of cake.
Photo by Caitlyn de Wild on Unsplash
The textbooks point people in the wrong direction
Software engineering textbooks talk about layers and their integration. This is all fine and well: a layer can talk to the one above or below it. This keeps the application code more manageable. However, after reading this students seem to think this is how you also build the application: one layer on top of the other. Each person can work on another layer. When we’re all done, then well integrate them and provide the app to the client.
Sadly, the same textbooks seem to confuse students. They read about considering the layers when designing the application. The students then think that they should do the big design up front. That you can’t do any building until you have worked out the issues of each layer.
Teaching people to focus on a whole horizontal layers leads to delay. This means people try to build bigger chunks of the application in a timebox. This takes longer. This means more mistakes and rework. This means delay.
Teach people to only sketch out what they need to build a small vertical slice
If we teach them about horizontal layers, and then tell them to only consider a few simple user stories, to put together a small slice, then their work will flow better.
By all means have a ‘rough’ notion of what the bigger app might look like, but only put in the detail for the current part. Think of only how the small horizontal parts fit into a vertical slice that you can deploy.
Teach them to build apps this way: Vertical slice, connected to vertical slice will let your people build growing applications that contain only enough to do what’s needed for ‘now’. Build out your cake ‘in the round’ as it were by only building a slice at a time, which you serve to your client. Eventually you end up with the whole cake, or as much as you realise that you need.
Vertical slices provide more useful information
If we teach people to build applications in thin vertical slices we also show them how to gain more information sooner, than if they did everything in horizontal slices.
When you use thin vertical slices you focus on the work more easily. You ignore the parts, that you’re not building NOW. Add a foreign key in a table if you know you need it. Or better yet, don’t. You can can add it later. Modern databases, and the use of migrations in web frameworks, makes a lot of this work easier to change than it used to be.
It is easier to write tests for small parts as you build each vertical slice. Now each added vertical slice can use the previous tests to confirm everything still works. Tests add a support network for you. This speeds up your work as you’re confident it all still ‘works’.
Building with thin vertical slices means there is feedback from the client, or other stakeholders, who can SEE the work and its’ interactions. This means corrections, and innovations can be discussed sooner. They don’t have to wait for the final ‘visual’ layer. They can tell you NOW.
Teach people to build thin vertical slices and they will have more fun building the application, and they will be able to do it faster too.
This post is part of a project pulling together my materials and ideas about Teaching Team Collaboration: the Human-Side of Software Development for software development to students. If you’d like to be notified of future posts, then please sign up for more using the adjacent form.