Man is niet "agile" als… Hybride modellen
De gesprekken die ik met collega's, lezers van mijn blog en een professor van de Pennsylvania State University over zulke obstakels heb gevoerd, hebben gepassioneerde discussies opgeroepen over de relatieve waarde en bruikbaarheid van hybride modellen.
Waterval
Klassieke methoden voor softwareontwikkeling zijn als een waterval die begint met het definiëren van de vereisten en eindigt met de implementatie. Het werk wordt in afzonderlijke stappen langs de treden van deze waterval uitgevoerd – vergelijkbaar met lopendebandwerk in de autoproductie. Het product is pas functioneel wanneer het aan het einde van de band komt. In dit model worden bepaalde werkzaamheden steeds opnieuw door dezelfde gespecialiseerde vakmensen uitgevoerd. Henry Ford heeft de automarkt met deze methode gerevolutioneerd.
Deze manier van softwareontwikkeling kan echter ook allerlei negatief gedrag in de hand werken. De reden hiervoor is over het algemeen de onverenigbaarheid van lopendebandwerk (bijv. in de productie) en dynamischer werk dat meer op onderzoek en ontwikkeling gericht is. Een voorbeeld van zulk negatief gedrag is het oneigenlijke gebruik van zogenaamde "Stage Gates" (mijlpalen tussen de afzonderlijke fasen). Vaak werken teams gewoon door, ook al schrijft de methode eigenlijk voor dat je op een beslissing voor een Stage Gate zou moeten wachten. Het probleem is echter dat ze nooit op tijd klaar zouden zijn als ze op een beslissing zouden wachten. Managers weten ALTIJD wat er aan de hand is, maar geven er de voorkeur aan geen vragen te stellen. De reden hiervoor is doorgaans niet dat iemand in het proces slecht werk levert, maar eerder dat het proces zelf slecht is.
Agile is anders
Agile doorbreekt deze waterval en verdeelt het werk in kleinere onderdelen. Deze kleinere delen worden vervolgens met behulp van korte Sprints ontworpen, ontwikkeld, getest en opgeleverd, om directe feedback te ontvangen. Door het "nieuwe" proces is er geen reden meer om de stopborden van de Stage Gates te negeren.
Hybride modellen moeten het beste uit de klassieke en agile frameworks benutten en zo optimaal aansluiten bij de huidige cultuur en structuur van de organisatie. Agile methoden willen aanpassen aan een organisatie die eigenlijk op klassieke methoden is ingericht, is het punt waar zich vaak problemen insluipen. De noodzakelijke compromissen staan vaak haaks op de uitgangspunten van de agile waarden en principes.
Voorbeelden van zulke uitgangspunten in Agile zijn stabiele teams, eigen verantwoordelijkheid en het opleveren van werkende software aan het einde van elke Sprint. Het is makkelijker om afstand te nemen van deze waarden en principes dan om de cultuur en structuur van de organisatie te veranderen. Een van de meest voorkomende (en schadelijkste) compromissen is te zien bij organisaties die blijven werken met dynamisch samengestelde teams (vaak matrixorganisaties genoemd). Stabiele teams vereisen vaak het herontwerpen van organisatiegrenzen en een nauwkeurigere beoordeling van de capaciteiten.
Dit zijn de typische problemen die – als ze niet worden aangepakt – een organisatie ertoe kunnen verleiden om mengvormen van klassieke en agile methoden te gebruiken:
Silo's: Wanneer afzonderlijke groepen van elkaar gescheiden zijn, is er meer planning en coördinatie nodig om ervoor te zorgen dat de juiste mensen op het juiste moment beschikbaar zijn – ook bij vertragingen. Grote ontwikkelorganisaties hebben de rol van een scheduler (werkplanner) of een expediter (termijnbewaker) in hun organigram opgenomen om met dit soort problemen om te gaan.
Te mager: Veel ontwikkelorganisaties lijden onder jarenlange bezuinigingen en hebben veel minder mensen beschikbaar dan nodig is om het werk af te ronden waartoe ze zich verplicht hebben. De medewerkers werken actief aan meerdere verschillende projecten om de indruk te wekken dat er voortgang wordt geboekt op een hele reeks gebieden. Wisselen tussen verschillende taken is uiterst inefficiënt en vermindert de geleverde waarde, wat vaak tot nog hogere druk leidt om de kosten te verlagen.
Gebrek aan focus: Leidinggevenden in ontwikkelorganisaties hebben vaak de neiging om alle projecten die worden voorgesteld te accepteren en uit te voeren. Dit wordt ook wel het "ja-knikker-syndroom" genoemd. Het komt meestal voor bij organisaties die niet over een sterk portfoliomanagement beschikken. Uiteindelijk betekent dit dat teams en medewerkers tot multitasking worden gedwongen, wat op zijn beurt tot inefficiëntie leidt.
Te weinig automatisering: Ik heb nog nooit een ontwikkelmethode leren kennen die je niet op kleine schaal met pen en papier had kunnen uitvoeren. Een grotere schaal wordt echter pas mogelijk door automatisering. Stel je bijvoorbeeld voor dat je enkele duizenden regressietests met de hand zou moeten schrijven. Om de tests uit te kunnen voeren, zou je of heel veel tijd of heel veel mensen nodig hebben. Veel mensen betekent normaal gesproken ook meer teams, meer teamgrenzen, meer hiërarchie en meer overhead – dat kan er mogelijk toe leiden dat er minder tests worden uitgevoerd, omdat je je aan een deadline of een bepaald budget moet houden.
De waarden en principes waarop Agile is gebaseerd, zijn echt belangrijk. Ze beïnvloeden het gedrag, zodat je je meer richt op het sneller leveren van waarde. De vier waarden in het Agile Manifest worden als paren weergegeven. Zo luidt de eerste van de vier waarden bijvoorbeeld: "Mensen en hun onderlinge interactie boven processen en hulpmiddelen". De zaken aan de linkerkant hebben een hogere waarde dan die aan de rechterkant (ook al hebben die natuurlijk ook nog waarde). Door hybride modellen ontstaan vaak compromissen die het zwaartepunt van de punten aan de linkerkant meer richting het midden of zelfs weer terug naar de punten aan de rechterkant verschuiven.
Hybride modellen zijn niet per definitie fout of slecht
Maar als je je daarbij van de fundamentele agile waarden en principes verwijdert, in plaats van moeilijke thema's in de organisatie aan te pakken, zijn dat vaak slechts uitwijkmanoeuvres. Of je het hier nu mee eens bent of niet, jouw gedachten over dit onderwerp zijn belangrijk en sturen het gesprek over wat Agile is en wat niet.
Deze tekst is afkomstig uit de blog van SPaMCAST en werd door ons vanuit het Duits vertaald.