An introduction into vertical slicing

Geschreven door Ray Wijshake op

Vertical Slicing

Er is veel geschreven over de manier van software ontwikkeling. In een vakgebied dat zich constant blijft ontwikkelen blijft de vraag actueel over hoe software snel waarde kan toevoegen aan een business. In deze blogpost duiken we dieper in op dit vraagstuk met behulp van Vertical Slicing en de voordelen die het met zich meebrengt.

Een manier van werken

In ons vakgebied hebben we allemaal onze eigen rol en manier van denken. Dit is iets waar de verschillen in de manier van denken tussen de klant en een software ontwikkelaar naar boven komen. Waarbij de klant graag bruikbare functionaliteit ziet om in z’n business doelen te voorzien dient een software ontwikkelaar diverse technieken toe te passen om daarin te voorzien. Dit maakt dat ieder een eigen perspectief heeft op de manier waarop wordt gewerkt en waar de aandacht ligt.

image Perspectieven voor software

Hier komt Vertical Slicing om de hoek kijken. Het is een manier van werken met als doel om stapsgewijs waarde voor de klant te leveren. Maar gaat zoiets in z’n werk? Om hier een antwoord op te geven duiken we iets dieper in de software.

Doorgaans bestaat software uit een aantal lagen. Voor de eenvoud houden we het op de volgende drie lagen:

  • Een user interface
  • De business logica
  • Data opslag

Elke laag is nodig om een werkende functionaliteit op te leveren. Zie het als een stuk taart: bij het aansnijden ervan zijn de lagen mooi zichtbaar en krijgt ieder een punt. Elke laag vult elkaar aan qua smaak en textuur en zorgt voor een stukje genot.

image Een stuk taart

Vertical Slicing werkt op dezelfde manier: om een stuk functionaliteit op te leveren werkt elke softwarelaag samen voor een functioneel werkend geheel. De truc is om de slice (functionaliteit) klein te houden. Hoe kleiner de slice, hoe eenvoudiger het op te leveren is. Grappig genoeg gaat die gedachte niet altijd op bij het nuttigen van een stuk taart, maar dat is een ander onderwerp 😋

image Software is taart!

Anyway, het mooie van deze manier van werken is dat het hand in hand gaat met een agile mindset: iteratief werken waarbij de klant incrementeel waarde geleverd krijgt. Aanvullend is hierdoor eerder feedback mogelijk die verwerkt kan worden. Het is een win-win situatie:

  • De behoeften van de klant zijn duidelijker inzichtelijk
  • De klant ziet eerder resultaat en kan daarop feedback geven
  • De werkzaamheden zijn eenvoudig te verdelen in een multidisciplinair team

Een tegenhanger hierin is Horizontal Slicing. Hier wordt van dezelfde softwarelagen uitgegaan, maar is dit leidend in de manier van software ontwikkeling. Elke laag wordt individueel uitgewerkt en opgeleverd waardoor bijvoorbeeld rollen eenvoudig verdeeld kunnen worden in een team: de één werkt aan de UI, de ander aan de backend, en nog een ander test het geheel. Een gemis is dat de behoefte van de klant niet wordt meegenomen hierin: op het moment dat één van de lagen nog niet is geïmplementeerd heeft de klant simpelweg nog geen werkende functionaliteit.

Vastlegging

Een onderdeel van de manier van werken is het vastleggen van de behoefte van de klant. Doorgaans gebeurt dit in de vorm van user stories waarbij een user story de kleinst mogelijke stuk werk is. Dit sluit mooi aan bij Vertical Slicing: de software lagen die nodig zijn om een user story te implementeren worden taken die aansluiten bij de werkzaamheden voor de software ontwikkelaar: het toevoegen van een stuk UI en het aansluiten ervan middels business logica en opslag.

Een scenario

Maak kennis met Sarah en Berend:

image Persona's van Sarah en Berend

Sara is de product owner van de app Happy shop: hiermee kunnen winkeleigenaren eenvoudig hun producten op de markt zetten. In haar vrije tijd is ze veelal te vinden op de weg. Of het nou asfalt of gravel is: zolang ze maar onderweg is!

Om de app te realiseren is Berend ingeschakeld. In de full stack wereld voelt hij zich thuis om ideeën om te zetten in software. In de buitenwereld zul je hem niet zo snel zien tenzij je toevallig onder water bent. Daar zul je hem vinden zoekende naar wrakken en hun mysteries.

Inmiddels is het project een tijd bezig. De app is in pilot fase en één van de feedback punten is dat klanten aangeven dat ze hun producten op een meer aantrekkelijke manier willen aanprijzen. Sarah besluit hiermee iets te doen en brengt de feedback naar Berend.

Dit is het moment om even stil te staan. Op dit punt is namelijk de behoefte van de klant duidelijk, de oplossing nog niet. Hier komt de kracht van agile werken en Vertical Slicing naar boven. Door de behoefte van de klant vast te leggen in een user story is voor zowel Sarah als Berend duidelijk waarvoor een oplossing nodig is. Dit is cruciaal voor het gezamenlijk begrip en het bedenken van een oplossingsrichting. Voor Sarah houdt het in dat zij graag functioneel een oplossing ziet dat voorziet in de behoefte. Voor Berend houdt het in dat hij een functionele oplossing kan bedenken dat gerealiseerd moet worden in diverse facetten zoals UI, backend en opslag. Na het nodige denkwerk en brainstorming besluiten ze gebruik te gaan maken van productafbeeldingen in de app. Hiermee zien gebruikers van de app hoe de producten er daadwerkelijk uitzien en ze helpen sneller tot aankoop over te gaan.

image Brainstorming

Met Vertical Slicing in gedachten houdt Berend er rekening mee dat de verschillende facetten diverse taken zijn om de user story tot een mooi eind te brengen en kan deze ook zodanig voor zichzelf uitwerken. Op het moment dat Berend de implementatie heeft voltooid is er een werkende functionaliteit die Sarah direct kan gebruiken en feedback op kan verzamelen. De user story blijft functioneel van aard.

Met Horizontal Slicing hadden de user stories een andere vormen aangenomen: aparte user stories voor elke laag waarin de implementatie plaats vindt: UI, backend en opslag. Beginnend met de UI kan Berend weliswaar snel iets opleveren voor Sarah, al zou Sarah het functioneel nog niet kunnen gebruiken, laat staan er feedback op kunnen verzamelen. Het werkende geheel zou op zich laten wachten totdat alle user stories zijn afgerond. Deze manier van werken houdt meer rekening met de technieken waarmee wordt gewerkt, al komt daarmee de behoefte van de klant en de functionele aard minder helder naar voren. Hoewel Sarah initieel blij is met de snelle oplevering van de UI zal ze nog even geduld moeten hebben voordat ze het naar de klant kan brengen…

Herken de nuances

De kunst met Vertical Slicing is om de user stories klein te houden. Dit maakt dat er op een constante tempo functionaliteit kan worden uitgebracht. Het kan echter gerust zijn dat de behoefte meer omhelst dan een enkele user story. In het voorbeeld van Sarah en Berend komen er ook andere wensen naar boven zoals het beheer van productafbeeldingen. Het is dus van belang om nuances in de behoefte te herkennen en te formuleren. Hiermee ontstaat vanzelf een grotere lijst aan user stories (a.k.a. een backlog) die eenmaal goed opgezet eenvoudig kunnen worden opgepakt door Berend en Sarah een goed beeld geven in welke behoeften reeds is voorzien.

Show me the code!

Nu hoor ik je denken: leuk verhaal, maar hoe kunnen we dit toepassen in de software? In de volgende blogpost gaan we daar dieper op in en hoe dit vormgegeven kan worden. Stay tuned!

← Terug
XPRTZ