Geen regels om de regels, maar een kritische houding

“Software ontwikkeling kan zoveel beter en leuker”. Met die boodschap inspireert trainer en spreker Dan North ontwikkelaars en hun managers. Zijn presentatiestijl wordt beschreven als ‘Eddie Izzard gecombineerd met de Architect van de Matrix.’ North is vooral bekend als de bedenker van Behavior-Driven Development (BDD) en Accelerated Agile, waarmee hij BDD uitbreidt tot effectiever werken in de hele organisatie.

Ontwikkelingen
Voordat North als zelfstandig ondernemer lezingen en cursussen ging geven, werkte hij twintig jaar lang als developer en ondersteunde hij CEO’s in de organisatie van het developmentproces. “Dat was heel leuk om te doen, maar na een paar jaar kwam ik erachter dat ik mezelf overbodig had gemaakt, de organisatie liep gesmeerd zonder mij.” North besloot toen om voor zichzelf te beginnen. “Ik heb in de jaren dat ik werkte geleerd dat software development heel effectief kan verlopen. Door alle veranderingen in de IT duren processen veel minder lang dan vroeger. Neem bijvoorbeeld het compileren van software: dat duurde in de jaren negentig nog uren. Nu doe je dat in je IDE elke seconde, na iedere toetsaanslag.” North is duidelijk enthousiast over dergelijke ontwikkelingen. “Het vreemde is dat veel organisaties niet zijn meegegaan met deze ontwikkelingen. Het developmentproces zelf is in al die jaren nog maar nauwelijks veranderd. Dat kan dus veel effectiever.”

Agile
Dat ontwikkelen beter kan, is op zich geen nieuws. Dat zie je aan de opkomst van Agile. Maar de Agile-beweging is inmiddels alweer meer dan vijftien jaar oud. “Het heeft lang geduurd voordat organisaties dit gingen doorvoeren. Sommigen beginnen nu pas met de omslag. Terwijl Agile eigenlijk al weer verouderd is. Er is sindsdien alweer zoveel veranderd, dat het inmiddels nog weer effectiever kan.”

 

Bijzonder ervaring
Hoe effectief het kan, leerde North toen hij in 2009 in een klein team bij een handelshuis ging werken. Zelf noemt hij dit team in zijn blog de “most insanely effective delivery machine I’ve ever been part of”. Een handjevol techneuten met een handvol handelaren, die state-of-the-art handelssystemen bouwden in een paar weken. Iets wat onmogelijk leek, bleek in dit team wel degelijk mogelijk. Norths nieuwsgierigheid was dan ook gewekt. Daarom gaf hij zijn ogen goed de kost. In zijn blog ‘Accelerating Agile’ beschrijft North zijn waarnemingen: de agile values werden gebruikt zonder slaaf te worden van de Agile practices (met hoofdletter A).

Samenwerking ging écht boven onderhandelingen over contracten en onderhandelingen over afleverdata. De handelaar en ontwikkelaar zaten daadwerkelijk aan dezelfde kant van de onderhandelingstafel in plaats van tegenover elkaar. Werkende software ging écht boven documentatie, hoewel er uiteraard wel werd gedocumenteerd waar nodig.  Er werd écht gereageerd op ontwikkelingen in plaats van wanhopig vast te houden aan het projectplan. En men luisterde écht naar elkaar en waardeerde elkaars meningen meer dan het proces en de tooling. Volgens het boekje dus; precies volgens het Agile Manifest. Maar dan nog effectiever en nog sneller.

Accelerated Agile
Naar aanleiding van zijn ervaringen ontwikkelde North BDD, een Agile-softwaredevelment techniek, waarbij test cases zo worden geschreven dat ze ook leesbaar zijn voor niet-programmeurs. En vervolgens kwam  Accelerated Agile, dat zich veel meer richt op de uitvoering van het hele ontwikkelproces, ook op het organisatieniveau. Als je North daarover hoort praten en over de geweldige resultaten die sommige developmentteams daarmee bereiken, vraag je je direct af: waarom zijn er nog teams die niet zo effectief werken?

“Accelerated Agile is niet voor beginnende ontwikkelaars”, geeft North toe. Hij vergelijkt het met autorijden: je neemt geen cursus om te leren racen en stuntrijden, voordat je gewoon hebt leren rijden. Dat zou gevaarlijke situaties opleveren. Zo is het ook met zijn cursus. “Ik vraag steeds naar eerdere ervaringen van ontwikkelaars en laat zien hoe ze daarvan kunnen leren.” Deelnemers aan de training leren om anders te kijken en te reageren. De keuzes die ze maken baseren ze op context en oorzaak, niet op regels die nu eenmaal altijd al gelden. Daarmee worden developers die Accelerated Agile gaan toepassen niet automatisch beter dan developers die op de ‘ouderwetse’ manier werken. “Formule-1 rijders rijden ook niet beter, maar anders.”

Sceptisch
Sceptici van Accelerated Agile merkten in een reactie op Dan’s blog op: ‘leuk verhaal, maar je hebt gewoon geluk gehad met die mensen. Dat kun je echt niet overal bereiken.’ Zij lijken gelijk te hebben, als alleen gevorderde ontwikkelaars Accelerated Agile kunnen leren toepassen. ‘Ook organisaties met beginners kunnen hier veel van leren en effectiever gaan werken,’ benadrukt North. ‘Het gaat om de principes van Agile: aanpassen is belangrijker dan altijd het plan volgen. Niet de regels volgen om de regels, maar kritisch denken. Daar gaat het om, ook als de regels “Agile principes” heten. De cursus gaat over de vraag hoe je dat goed kan toepassen. Als in een team maar een paar mensen hun gewoontes en manier van werken veranderen, kan het hele team daar zijn voordeel al mee doen en kan het werkproces sneller en effectiever.’

Bang voor onzekerheid
Dat nog steeds lang niet alle bedrijven zo effectief werken als mogelijk is met Accelerated Agile, kan North wel begrijpen. “Mensen zijn bang voor onzekerheid. Daarom hebben we regels nodig en streven we naar een heel gedetailleerd projectplan, zo precies mogelijk. Maar dat kan leiden tot vertragingen, omdat we koste wat het kost aan dat plan willen vasthouden. Dat was immers zoals het is afgesproken, daar is immers over nagedacht. Dat geeft zekerheid.” North weet zeker dat dat anders kan. “Je kunt in het projectplan best afspraken vastleggen, zonder alles vast te leggen. Je moet wel accuraat zijn, maar niet té precies.” Daarmee is echter niet alles gezegd. “Je moet ook regelmatig opnieuw kijken of het plan nog wel haalbaar en handig is. Zo niet, dan moet je het plan gewoon aanpassen. Flexibel zijn dus.”

Bovendien denkt North dat de manier van denken bij ontwikkelaars en hun managers moet veranderen. “Vroeger moest je eerst goed bedenken hoe je het aan ging pakken, voordat je iets ging doen.” Er is echter in de laatste twintig jaar veel veranderd in de infrastructuur. “Tegenwoordig kun je ideeën heel gemakkelijk uitproberen. Je kunt dus verschillende ideeën snel testen en dan besluiten welk idee je uit gaat werken. Dat kost niet veel geld, maar gebeurt nog heel weinig. Terwijl je daar uiteindelijk veel tijd en geld mee kan besparen.”

Unit tests of acceptance tests?
De boodschap van North is dus: wees flexibel en let steeds op de context. Bijvoorbeeld bij het bepalen of en hoeveel acceptance tests en traditionele unittests nodig zijn. Java Magazine was benieuwd of North vond dat die twee naast elkaar konden bestaan en in welke verdeling die dan voor moesten komen. De reactie van North: “Ah, ze willen getallen!” Die is hij niet van plan te geven. “Ze moeten zeker naast elkaar bestaan. Je moet controleren of dat wat je gemaakt hebt, werkt vanuit het gebruikersperspectief en of het doet wat het moet doen. Maar je moet natuurlijk ook controleren of de code doet wat het moet doen. Daar gaat het in de cursus ook over: als je de code in precies de juiste units opknipt, doe je een functional test, integration test en unit test in één. Daarmee wordt je testing proces veel meer rechttoe rechtaan. Maar dat doen we in de praktijk meestal niet.”

“Om terug te komen op de vraag: ik wil geen mening hebben over de verdeling tussen beide, want het hangt af van de context. De proportie van acceptance tests moet in verhouding staan met de complexiteit van het betreffende domein en de functionaliteit daarvan. Voor unit tests moet je je afvragen hoe groot het risico is als de units niet werken. Hoe groter dat risico, hoe beter je wilt testen. Daar moet je de strategie op aanpassen.” Geen aanbeveling over proporties dus en ook geen concrete getallen. Opnieuw blijkt de mantra van North: wees flexibel en kijk naar de context.

 

Ervaringen van een cursist
Op 7 en 8 november 2013 was Dan North in Hilversum te gast bij Xebia Nederland, onderdeel van een internationale IT consultancy organisatie waar vakmanschap en kennismanagement de sleutel tot succes zijn. Zij zijn leidend in development en craftsmanship. Trainingen die niet door zomaar een trainer gegeven worden, maar door goeroes op hun gebied. Goeroes zoals North. Hij gaf bij Xebia een training over Accelerating Agile. Arjan Molenaar, zelf werkzaam als software engineer bij Xebia, was één van de cursisten. “Ik vond het heel bijzonder dat hij zo’n breed spectrum behandelde. Hij gaat echt van techniek tot organisatieniveau en alles wat daar tussen ligt.” Molenaar heeft veel aan de training gehad. “Veel van wat hij noemde was herkenbaar. Iets wat je al langer als onderbuikgevoel had, maar nu beter kunt duiden. Ik heb dan ook nog nooit zoveel aantekeningen gemaakt als bij deze cursus.” North gaf ook concrete handvatten om dat onderbuikgevoel te concretiseren en ermee aan het werk te gaan in de organisatie. Tijdens de cursus werd geen letter geprogrammeerd. “Het ging om het ecosysteem, om de vraag hoe je techniek en organisatie op elkaar kunt laten aansluiten.” North komt volgend jaar opnieuw naar Nederland om met Xebia deze training te organiseren.

 

Dan North heeft 20 jaar ervaring met coaching, programmeren en consultancy. Hij is de bedenker van Behavior driven development. Tegenwoordig heeft hij een eigen bedrijf, Dan North & Associates Ltd (DNA). Op zijn website http://dannorth.net/ is meer informatie over zijn werk te vinden. Hier houdt hij ook een blog bij waar hij meer vertelt over zijn ideeën en ervaringen.