Er was eens… een tijd waarin de term software ontwikkeling synoniem stond voor één programmeur die de code schreef om een probleem op te lossen of een procedure te automatiseren. Tegenwoordig zijn de systemen zo groot en complex dat teams van architecten, analisten, programmeurs, testers en gebruikers intensief moeten samenwerken om de miljoenen lijnen, op maat gemaakte code, te kunnen schrijven waarop hele bedrijven moeten kunnen vertrouwen.
Het principe van Scrum is de erkenning van het feit dat verandering de enige constante is en dat het probleem nooit voor 100 procent begrepen of gedefinieerd kan worden. Hierdoor kan het team zich volledig richten op het snel reageren op nieuwe requirements en snel leveren van software.
De release cyclus voor het ontwikkelen van nieuwe releases, service packs die nieuwe functionaliteit toevoegen en patches voor fixes, varieert enorm, afhankelijk van de soort applicatie of het type feature. Van uren voor een live website, tot vele maanden voor een complexere applicatie. Hierbij kun je uitgaan van een iteratieve benadering om bepaalde features te optimaliseren. Deze benadering werkt op zich goed, tot je steeds nauwkeuriger moet kunnen voorspellen (en dat moet) wat je klanten in de toekomst, wanneer je product live gaat, nodig zullen hebben. Door het toepassen van Scrum, is het mogelijk dit ‘voortschrijdend inzicht’ optimaal te omarmen en je ontwikkelcyclus te verkorten.
Kwaliteiten
Agile gaat over interactie, samenwerking en het faciliteren van verandering binnen het ontwikkelproces. Scrum is de manier waarop een team op een iteratieve manier software oplevert, de juiste focus houdt, en zich tegelijkertijd constant aanpast aan verandering en andere nieuwe inzichten die worden verkregen door de iteratieve samenwerking. Deze manier van werken stelt elk individu binnen het team in staat bij te dragen en sturing te geven aan het proces.
Samenwerken gebeurt natuurlijk al, maar een bijkomend voordeel is dat je door deze vorm kunt experimenteren met een steeds roulerende rol van scrum master. Hierdoor kunnen mensen in ontwikkelteams hun leiderschapskwaliteiten in praktijk brengen of bijvoorbeeld hun presentatievaardigheden verbeteren. Dit is overigens geen must, niet iedereen heeft de ambitie om deze rol te vervullen.
‘Collaboration’
Taalkundig gezien, impliceert ‘collaboration’ min of meer gelijkwaardige partners die samen werken en hun taak uitvoeren om tot een gezamenlijk doel te komen. Gestructureerde methoden van collaboration stimuleren introspectie van gedrag en communicatie. Het interessante hieraan is dat deze methoden specifiek tot doel hebben het succes van teams te vergroten om gemeenschappelijk problemen op te lossen.
Vaak zal de mate van samenwerking binnen en tussen de scrum-teams intensiever worden, al verschilt de mate waarin per team en is het afhankelijk van het type werk dat zij doen. De kunst is de juiste balans te vinden tussen het bijdragen aan de onderlinge samenwerking en een scherp oog voor efficiency. Dit betekent bijvoorbeeld dat je ervoor zorgt dat de echte experts op een bepaald gebied zich bij hun leest kunnen houden. Het tijdig zorgen voor de benodigde ondersteuning kan dan een voorwaarde zijn om hun expertise op de meest slimme manier te kunnen blijven inzetten.
Online en fysiek
Een andere uitdaging is het op nieuwe manieren toepassen van features. Dit heeft invloed op de samenwerking tussen de teams, zeker als je tegelijkertijd werkt aan verschillende releases, service packs en patches. Hoewel de teams zich elk richten op hun eigen onderdeel, moet niet worden vergeten dat zij samen één product vormen. Alhoewel er wordt gedeeld en samengewerkt via systemen, is het aan te bevelen ook een ‘live’ moment aan je sprint formaliteiten toe te voegen.
Ik noem dit zelf de ‘sprint pitch’. Hierin delen teams op een vast moment tijdens een sprint in slechts een paar minuten de twee belangrijkste van de user stories waar zij op dat moment aan werken. Afhankelijk van het aantal teams heeft de organisatie dus in een kwestie van minuten een overzicht van de belangrijkste stories.
Deze sprint-pitches vergroten niet alleen de samenwerking, maar zijn ook een manier om optimaal gebruik te maken van de kennis in de hoofden van mensen. Zo leer je weer van elkaar. Daarnaast zijn mensen hierdoor zichtbaarder en daardoor voor elkaar makkelijker benaderbaar. Ook kun je de samenwerking intensiveren in de zin dat het team meer contact heeft met de product eigenaar én andere delen van de organisatie. Dit leidt tot kansen voor verbetering, maar je moet dan ook wel bereid zijn om hier iets mee te doen. Niet alleen de it-skills, maar ook andere vaardigheden komen dan om de hoek kijken. Communicatie is een nog belangrijker onderdeel van het proces geworden. Binnen en tussen de teams, maar ook met de klant.
Een voorbeeld hiervan is het meedenken met de business. Het hebben van gesprekken met de klant om duidelijkheid te scheppen over de gevolgen van hun verzoeken voor het proces, maar ook over organisatorische zaken die hierop van invloed zijn, zoals sales, administratie, financiën , support en product management. Dit biedt de mogelijkheid om een meer strategische en adviserende rol te spelen.
Andere methoden
Natuurlijk zijn er ook andere methoden, zoals eXtreme Programming (XP) en Kanban, die ook de Agile-principes toepassen. Terwijl het met Scrum draait om een ‘empowered’-team dat samen werkt om software op te leveren, richt XP zich meer op het verbeteren van kwaliteit door veelvuldige software releases op te leveren. Kanban is een meer feature-gerichte benadering waarbij je ook gebruik kunt maken van Scrum, maar de focus ligt op de feature.
Capaciteit
Natuurlijk heb je als ontwikkelteam ook te maken met maintenance en support. Om te voorkomen dat eventuele productieproblemen het reguliere ontwikkelproces verstoren, kun je hiervoor capaciteit reserveren. Het vaststellen van het aantal storypoints dat je wilt reserveren gebeurt meestal in overleg met de producteigenaar en kan per organisatie of per project verschillen.
De grootste winst van de keuze voor Scrum is vaak die op de duur van de ontwikkelcyclus. Daarnaast biedt het kansen om ook op andere onderdelen verbeteringen door te voeren, zowel op het technologische als op het organisatorische vlak. Belangrijk om rekening mee te houden is dat een procesverandering doorvoeren ook een menselijk proces is. Dit vereist geduld. Het kost veel tijd om te blijven herhalen, maar het is van cruciaal belang. ‘Never leave someone behind’.
Do’s en dont’s
Een misvatting is dat met Agile alles mogelijk is. Het is een duidelijke methode en de stappen die nodig zijn, zijn bedoeld om grip te creëren op het proces. De formaliteiten en Scrum hebben een doel, die je kunt aanpassen zolang je aan het doel voldoet. Dit doel moet wel door iedereen begrepen en ondersteund worden. Een ander probleem is te denken dat de ontwikkelmethode alleen geldt voor het technische deel van de organisatie. Integendeel: iedereen moet beseffen hoe dit wordt toegepast en wat zijn of haar rol hierin is. En dan is het belangrijk de organisatie duidelijk te maken dat het mogelijk is om prioriteiten te veranderen, maar dat dit altijd ten koste gaat van iets anders. Maar het kán wel.
Belangrijkste valkuilen:
- Communicatie;
- Draagvlak vanuit de organisatie;
- Handhaving van het proces.
Tips:
- Communicatie: zorg dat je intern van elkaar weet wie waarmee bezig is, maar ook intensief contact met de klant onderhoudt;
- Organisatie: wees niet bang om de organisatie aan te passen als daar voor aanleiding zou zijn door de nieuwe methodologie;
- Team: begin met een team dat samen blijft evalueren en verder toepast, ook buiten het team;
- Verwar de rol van scrum master niet met die van een lijnmanager, de scrum master bewaakt en faciliteert slechts het proces;
- Maak afspraken en kom deze ook na, en maak nieuwe afspraken waar nodig;
- Zorg dat er een duidelijke beschrijving van het proces beschikbaar is.
Tot slot…
Scrum democratiseert het ontwikkelproces. Dit betekent dat het management de controle over het team moet kunnen loslaten. Organisaties die hier moeite mee hebben, gebruiken de dagelijkse Scrums bijvoorbeeld als status updates, wat ze niet zijn. Het loslaten van deze controle is een leerproces. Een mooi voorbeeld is er een van vandaag. Bij de koffiemachine sprak ik met drie mensen van het lab, die werken in twee verschillende teams. Zij stelden voor om een cross team review process in te voeren, om de samenwerking binnen het lab verder te vergroten. Dit is voor mij het bewijs dat dit een levend proces is, dat door deze mensen zelf werd verbeterd, bij de koffiemachine! En daar ben ik trots op.
Veel plezier met Scrummen. En als je wilt sparren, stuur me een e-mail.