Klant-gestuurde agile ontwikkeling

Geschreven door Timo Hoogendorp – ICT lead

Waarom we voor deze route hebben gekozen? 

Al vrij vroeg bij het opzetten van mijn huidige team was het duidelijk dat we een groep mensen hebben met een behoorlijk brede selectie aan vaardigheden die allemaal zouden kunnen bijdragen aan een verscheidenheid aan projecten op onze roadmap. Het was moeilijk om externe en interne belanghebbenden het eens te laten worden over urgentie versus prioriteit en tijdlijnen. Dan was er de extra complexiteit van externe deadlines en budgetten. Als een klant bereid is te betalen, of zelfs heeft betaald, voor iets dat moet worden ontwikkeld en er is een beoogde tijdlijn, betekent dit dan dat het automatisch voorrang krijgt op andere dingen die misschien voorrang zouden moeten krijgen? Bij wie ligt die beslissing bovendien? Bij het technische team, of bij iemand anders? 

Sommige van deze projecten waren grote/langdurige projecten, wat zou betekenen dat de schaarse resources tot wel een jaar in dit project zouden worden opgeslokt. De impact op de tijdlijn voor andere projecten zou aanzienlijk zijn, en als gevolg daarvan kregen deze grotere projecten doorgaans een lagere prioriteit van de belanghebbenden van de operationele teams. Als onvermijdelijk resultaat zouden we ook zien dat quick-win- en korte-termijn- projecten worden opgepikt boven meer fundamentele herontwerpprojecten of ambitieuzere nieuwe-marktprojecten. 

Een andere observatie die we maakten, is dat de eisen en specificaties van projecten soms veranderen naarmate de ontwikkeling vorderde. In het projectinitiatiedocument en de vereisten die het bevatte, ontbraken vaak de details. Soms, terwijl we aan het itereren waren, voelde het alsof de aanvragers zelf niet echt wisten wat ze precies wilden ontvangen totdat we begonnen met het ‘verbeteren’ van onze eerste ontwikkeling. 

Het tastbare product dat tot dan toe was ontwikkeld, inspireerde de aanvragers of belanghebbenden vaak en maakte duidelijk wat we precies aan het doen waren.  Dat bepaalde must-haves geïntroduceerd moesten worden voor de bevordering van de adoptie in onze operationele organisatie, of zelfs volledige bezwaren tegen het project ontstonden omdat het in strijd zou zijn met andere interne projecten of processen. Het leidde tot extra gebruiksverzoeken die onderdeel moesten zijn van de ontwikkeling. Verzoeken die achteraf gezien onderdeel moesten zijn van een ander project, worden in een andere sprint opgepikt. Een typisch voorbeeld van onnodige scope-inflatie, ondanks de beste bedoelingen van mijn collega’s. 

Deze slechte koppeling tussen het technische team en de aanvrager, en het gebrek aan begeleiding en vrij lange ontwikkeltrajecten maakte het noodzakelijk deze processen te herzien. We hebben tijd en middelen verspild aan het bouwen van dingen die volledig opnieuw moesten worden opgebouwd, die niet voldeden aan de behoefte van de gebruiker, of niet waren wat de gebruiker vroeg of nodig had. Bovendien leidde deze ontkoppeling tot een behoorlijk tijdrovend gebruikersadoptieproces. Wanneer het project ‘klaar’ was, betekende ‘gebruikersadoptie’ meestal enkele sessies om uit te leggen hoe het product werkt, waar specifieke essentiële functies en processen te vinden zijn, en een mooie lijst van de eindgebruikers van ‘hadden moeten en zouden kunnen hebben’ functionaliteiten die we ‘zeker in de volgende sprint moeten oppakken’. Het eindproduct voelde al verouderd en aan verbetering onderhevig vanaf het moment dat het in gebruik genomen werd. 

Wat?

De behoefte aan een strategie of raamwerk over hoe het werk het beste kan worden geprioriteerd en gestructureerd, was voor bijna iedereen in de organisatie duidelijk, en een pijn die zowel de belanghebbenden als de mensen in mijn ontwikkelteam voelden. De ontkoppeling zelf betekende dat we nooit werk tekort kwamen. Het was echter ook een potentiële winst in termen van teamefficiëntie en gebruikerstevredenheid. 

De eerste voor de hand liggende kandidaat voor mij was om projecten op te splitsen in kleinere sprints en deliverables. We geloofden al in het agile raamwerk, de eisen en prioriteiten die we krijgen veranderen voortdurend. Maar qua strategie en financiën was de visie altijd wat korte termijn. “Wat kunnen we in dit tijdsbestek afmaken”.
We zouden ons strenger moeten organiseren om zo agile mogelijk te werken. Projecten opsplitsen in deliverables die vervolgens over sprints kunnen worden verdeeld. Maar moesten ook een raamwerk of regelset creëeren die we onszelf opleggen om ervoor te zorgen dat deze verschillende deliverables (of sprints) nog steeds zouden leiden tot de uniforme oplossing die de aanvrager/gebruiker voor ogen had. Als vervuller van de rol van Software Architect, denk ik dat deze regelset en overkoepelend raamwerk voor de verschillende teams het meeste werk was. Inherent werd deze zwakte verdoezeld door het werk gewoon niet te verdelen, en het is iets dat we in de gaten moeten houden tot op de dag van vandaag proberen te verbeteren. 

Het tweede deel van deze strategie moest de potentiële efficiëntie winst gaan opleveren. We moesten ervoor zorgen dat wat we in deze sprints hebben gebouwd, ook past bij de behoefte van de gebruiker, terwijl we ook transparant moesten zijn over de langetermijnplanning en visie van het ‘echte’ eindproduct. Als je projecten opdeelt in kleinere sprints om ervoor te zorgen dat je eerst aan de belangrijkste dingen kunt werken, moet je transparant zijn over WAT op dit moment ‘het belangrijkste’ is en wat dan de tijdlijn van alle dingen waar je momenteel niet actief mee bezig bent is. We doen liever een paar dingen goed, dan veel dingen half. Dit was de voornaamste reden dat ik ervoor koos om, wat ik nu weet dat het ‘Klantgestuurde Agile softwareontwikkeling’ heet, te implementeren. 

Wat betekent dit het voor het team?

Dit framework betekent niet ‘bouwen wat de klant wil’, en is ook geen andere naam voor ‘functionaliteit-gestuurde ontwikkeling’. In plaats daarvan zullen we onze inspanningen plannen met een focus op stakeholders/eindgebruikers. 

Voeg binnen het project de meeste waarde toe met de minste inspanning. 

Dit betekent niet het laagst hangende fruit qua projecten. In plaats daarvan kijken we naar het belang en de inspanning binnen projecten die we oppakken, en streven we ernaar om zoveel mogelijk functionaliteit/toegevoegde waarde te leveren. Het doel is om de gebruiker/aanvrager er actief bij te betrekken, snel een tastbaar prototype te laten zien, om vervolgens snel te kunnen itereren, falen, leren. 

Wees transparant over wat de klant/gebruiker kan verwachten. 

Wees transparant en duidelijk over de projecten en functionaliteiten waar je wel en niet aan aan het werken bent (ook al ziet dat er soms niet goed uit). Maak een ruwe schatting van de tijdlijn voor de dingen waar je niet aan werkt, of wees eerlijk en transparant over waarom deze tijdlijn niet bestaat. Misschien is dat verzoek gewoon niet belangrijk genoeg? Of is er te weinig tractie binnen de organisatie? 

De behoefte en het doel van de aanvrager/klant echt begrijpen. 

Sara Blakely, zoals ik heb geleerd in haar onlinecursus over ondernemerschap, beschouwt deze eenvoudige doelstelling als een hoeksteen van haar productontwikkeling (al betreft het een iets ander product). “Blijf altijd verbonden met het waarom”. Als je iets wilt ontwikkelen dat de gebruiker echt helpt, problemen oplost en zelfs verwachtingen overtreft, moet je eerst echt begrijpen WAAROM het verzoek in de eerste plaats is gedaan. 

Hoe beter je het doel begrijpt van de oplossing die je aan het bouwen bent, hoe meer waarde de gebruiker er uiteindelijk uit zal halen. Het creëert ook een bewakingsproces waarin je kunt evalueren of het productvoorstel problemen bevat die moeten worden aangepakt, of zelfs of een vergelijkbare oplossingen standaard al beschikbaar is, misschien zelfs al binnen je bedrijf. Het is de moeite waard om bij het plannen van resources en tijd hier rekening mee te houden, omdat het de investering terugverdient gedurende de hele rest van het ontwikkelingsproces. 

Wat we hebben gedaan en het resultaat. 

Het is duidelijk dat ik niet alleen wil wijzen op de voordelen van klantgestuurde Agile-ontwikkeling of enkele inspirerende best practices. Ik zal enkele concrete veranderingen schetsen die we hebben toegepast op onze processen om te benadrukken HOE we onze Agile-workflow klantgerichter hebben gemaakt. 

Briefings voor belanghebbenden met prototypes voordat de ontwikkeling begint. 

Als onderdeel van onze voortdurende inspanningen om ons proces te verbeteren, hebben we een UX/UI-ontwerper in dienst genomen die werkt aan het omzetten van klantinput in grafische mock-ups. Op die manier kunnen de gebruikers al een idee krijgen van wat we precies denken dat we gaan bouwen, en feedback geven over de afstemming op hun behoefte en gebruikerservaring voordat een enkele regel code wordt vastgelegd. Afhankelijk van de omvang van de sprint variëren deze mock-ups van een set schermen die demo’s zijn en vervolgens door ons front-end team worden gebruikt om de ontwikkeling te starten, tot een volledig klikbaar prototype van het product met alle verschillende front-end elementen, processen en gebruikersstromen. 

Dit was verreweg de grootste verbetering die we hebben gemaakt, vooral voor de productiviteit van ons front-end team. We ontdekten dat klantevaluaties het ontwikkelingsproces vaak vertraagden, of er zelfs toe leidden dat functies halverwege de sprints werden herzien of opnieuw werden gebouwd om beter af te stemmen op het verzoek van de klant. Het zorgt ook voor een betere betrokkenheid van de eindgebruiker, omdat je ze veel eerder in het ontwikkelingstraject het potentieel van het project kunt laten zien. Waar normaal ongeveer 15% van de functies de gealloceerde tijdsinvestering zou overschrijden, hebben we dit nu teruggebracht tot 5% zoals geschat door de front-end ontwikkelaars zelf. 

Storyboard-feedback van belanghebbenden / gebruikers. 

Dit is een lastige om over te schrijven, omdat ik het gevoel heb dat wij zelf zeker nog verbeteringen kunnen doorvoeren als het gaat om het goed in kaart brengen van de use-cases en processen binnen de oplossingen die we bouwen. Hoe beter we de redenen en het doel begrijpen waarom en hoe een ​​klant onze oplossing gebruikt, hoe beter we een systeem voor die gebruiker kunnen laten werken. Om dit te vergemakkelijken, hebben we tot nu toe bijeenkomsten met key-users opgezet voor onze front-end ontwikkelaars en UX/UI-persoon om ervoor te zorgen dat we beter begrijpen hoe en waarom een ​​gebruiker onze producten gebruikt en hoe ze hun taken uitvoeren. 

Maar met een sprint van twee weken wordt de tijd die gemoeid is met het ‘storyboarden’ van deze gebruikers proportioneel behoorlijk en betaalt deze zich minder goed terug tijdens de daadwerkelijke ontwikkeling. Als ons team groeit, wordt het misschien economisch haalbaarder om hier een nog hogere prioriteit van te maken. 

Betere basis voor ‘early adapters’ en co-creatie. 

Iets dat we in de afgelopen anderhalf jaar hebben kunnen testen en bewijzen met een verscheidenheid aan gebruikers en partners, is dat deze korte evaluaties met klanten, evenals de hoge frequentie van tastbare deliverables, zorgt voor zeer vruchtbare grond voor co-creatie en het creëren van een band met klanten die hen tot ambassadeurs maakt van de oplossingen die je bouwt. Ik zou zeggen dat we op het gebied van marktonderzoek, concurrentieanalyse en financiering hebben geleerd hoe het klantgerichte agile ecosysteem ons kan helpen bij het bijsturen, draaien of volhouden van wat we doen. 

Wat is het volgende?

Met betrekking tot dit onderwerp komen er twee zeer belangrijke onderwerpen in me op die een logische uitbreiding zouden zijn van wat ik heb besproken. De eerste is de meest voor de hand liggende: 

Intern versus extern 

Vanwege de kennis die we hebben opgedaan over onze externe gebruikers en partners, zijn de geleerde lessen zeer goed geïmplementeerd in het hele ecosysteem van onze klant oplossingen. 

De ironie is dat voor de interne gebruikers, klanten, stakeholders deze dynamiek anders is. Natuurlijk implementeerden we de sprints van 2 weken en de UX/UI-gedreven prototypes. Toch blijft de verbinding van de oorspronkelijke visie van het product en de zakelijke behoeften een voortdurende uitdaging. Het belangrijkste probleem hier is naar mijn persoonlijke mening vooral de dynamiek tussen de twee teams. Op dit moment lijken de ontwikkelaars meer op de aanvragers dan op de gebruikers voor wie ze de oplossing bouwen, vanwege een gebrek aan concrete input voor de details van het eindresultaat. Dit vereist vooral wat veranderingen in processen rondom de sprint-planning en roadmapping, maar ook een soort cultuuromslag waarbij we kortere, concrete doelen stellen en een soort perfectionisme loslaten. Wat me bij het tweede punt brengt: 

Sneller falen 

Er is een verscheidenheid aan slogans rond snel falen, en met goede reden. In de afgelopen 18 maanden heb ik ook veel moeite gedaan om de dynamiek en mentaliteit van het team te veranderen van een perfectionistische, 100% complete, 100% zekere mentaliteit naar een meer agile, vooruitgang is vooruitgang mindset. Iets waar ik in een volgend artikel ook wat verder op in wil gaan. 

Het huidige kortere sprintformaat stelt ons in staat om gaandeweg de nodige aanpassingen te maken, wat betekent dat we kunnen beginnen met minder complete producten en deze meteen kunnen verbeteren. Historisch gezien, als een project eenmaal was voltooid, zouden resources onmiddellijk worden toegewezen aan andere (zeer belangrijke of langere termijn) projecten en dat wat werd opgeleverd zou in de loop van een paar jaar niet veel meer veranderen. Tegenwoordig zou elke sprint stapsgewijze verbeteringen moeten aanbrengen aan de oplossingen die er het meest toe doen. 

Het zou kunnen betekenen dat we flexibel moeten zijn en onze focus veel vaker moeten laten verschuiven van project naar project, of van oplossing naar oplossing dan we historisch moesten doen met onze monolithische aanpak. Maar is dat niet de ’tekstboek definitie’ van agile? 

Vond je deze blog van Timo leuk en wil je op de hoogte blijven van meer? 

Onze maandelijkse nieuwsbrief vertelt je over nieuwe blogs en ander leuk nieuws. Schrijf je hier in voor onze nieuwsbrief! 

Schrijf je hier in voor onze nieuwsbrief!