Toen mijn vader opging voor het aannemers-examen was er om 11 uur koffiepauze. Er moest een garage begroot worden. Iedereen had een prijs in gedachten. ƒ3800. ƒ3960. Nee, zei weer een ander, ƒ3400. Mijn vader had alleen nog maar materialen uitgetrokken. Het laatste uur schreef hij dat netjes uit, vrij wanhopig, want de prijs berekenen, daar was hij nog lang niet aan toe.
Na zes weken kwam er toch een uitnodiging voor een mondeling. Mijn vader ging en bedankte de examinator voor zijn herkansing. “Hoezo?”, vroeg de examinator hem. Mijn vader antwoordde dat alle anderen al bij de pauze de prijs wisten, en hij niet.
De examinator antwoordde: “Meneer van der Leer, wie op de verkeerde manier begint zal nooit tot een goed einde komen. De anderen zijn gezakt. U bent één van de twee kandidaten die door zijn naar het mondeling!”.
En hij vervolgde “En, meneer van der Leer, vaak zult u ’s avonds door moeten werken, maar als u goed begint hebt u een kans dat u goed eindigt. Als u verkeerd begint zult u nooit slagen.”
Dat was vorige eeuw, maar het gaat nog steeds op: wie op de verkeerde manier begint komt nooit tot een goed einde. Het geldt voor begroten van bouwwerken, geldt voor projectvoering en geldt voor software schrijven.
Ik durf het bijna niet te zeggen, maar ik ben een beetje anti-agile. Niet dat ik pro waterval ben, want ik ga mee in de tijd. Dingen veranderen. Mijn vader deed zijn examen met potlood en papier, later gebruikte hij Excel en dat ging een stuk sneller.
En dat is precies wat ik mis bij agile. Agile staat voor mij bijna gelijk aan vlug wat doen en opleveren. Dat vlug doen, dat lukt prima met de toolsets van tegenwoordig. Dat opleveren ook. Wat ik mis is de diepgang: kan het systeem alle eisen verwezenlijken? Is het robuust genoeg, sluit het aan op de business processen?
Wat ik ook bij agile mis is de aandacht voor het grote geheel. Een agile team is in zichzelf gekeerd. Focus op productie en levering. Ja, als het om een eenvoudig dingetje gaat, dan is er niets aan de hand. Het zou best kunnen dat ik in mijn werk niet eens in aanraking kom met eenvoudige dingetjes. Dat daarom mijn beeld eenzijdig is. Want ik zie het wel keer op keer fout gaan.
Ik word als deskundige nogal eens betrokken bij projecten en software ontwikkelingen die “niet goed” gaan. Eufemisme. Ik zie vooral projecten die uit de bocht vliegen. Waar keer op keer een deadline niet gehaald wordt. Waar opgeleverde systemen in productie crashen.
En dan vraag ik me af: kan dat zomaar? Het antwoord: Ja, dat kan zomaar. Om een mij onbekende reden staat er niemand op die zegt: “Zo kan het niet langer!!”. Totdat de wal het schip keert.
Ik lees vaak over zulke mislukte projecten in de pers. Kijkend in de achteruitkijkspiegel is iedereen ervan overtuigd dat het nooit wat had kunnen worden. De stekker had er al jaren geleden uitgemoeten. Mislukken was vanaf het begin een gegeven.
En dan kom ik terug op het feit dat ik een beetje anti-agile ben.
Ik ben vooral anti-agile als iedereen staat te trappelen van ongeduld om te beginnen. Om elf uur ’s morgens de prijs weten van de garage. Een prijs die concreet is en de indruk wekt dat iemand deskundig is. En achteraf blijkt de prijs veel te laag omdat het dak vergeten is. Want het dak zag je niet als je naar de garage kijkt.
Met alle respect, het is mijn ervaring met software ontwikkeling dat snelle starts voorbode zijn van falen. Software kent, zoals garages, daken die je niet ziet vanaf de buitenkant. Eenmaal gebouwd en opgeleverd blijkt het product toch niet te voldoen aan elementaire eisen en is Leiden in last. Zie het dan maar eens te repareren, dat kost handenvol geld. En tijd. Tijd, waar niemand op gerekend had.
Waterval is evenmin de oplossing. Waarom zeg ik dat? Ik kan zeggen dat de wereld te snel verandert, waterval dus per definitie achterloopt, en dat gelooft iedereen. Dan maak ik me ervan af met een Jantje van Leiden. Vind ik.
Waterval is niet verkeerd omdat de wereld te snel verandert. Het is verkeerd omdat de wereld veranderd is. We leven al heel lang niet meer in de tijd van potlood en papier en van loopjongens die bestelbonnen naar de groothandel brengen. We bestellen op Internet. Vliegensvlug.
Maar nog steeds geldt in de aannemerij dat als je een te smalle deur bestelt, die geleverd en ingebouwd wordt. Dan kan er geen auto in. Zo’n kleinigheid maakt dat de garage praktisch gesproken opnieuw gebouwd moet worden.
Wat men bij agile software ontwikkeling uit het oog (en uit het hart) verliest is, dat vooraf nadenken noodzakelijk is. Het is alles zo makkelijk, het programmeren, als het fout gaat doen we het gewoon overnieuw en beter. Zo nodig nog een keer. Al die keren samen zorgen voor uitloop. Plus, dat het vertrouwen bij de gebruiker gaat tanen. Waarom dan, zo vraagt de gebruiker zich af, waarom kan zoiets eenvoudigs niet in één, hooguit twee keer goed? En is het uiteindelijk goed?
Het wordt pas echt vervelend als er wantrouwen ontstaat. Als de bouwers gaan stellen dat de gebruiker continu zijn eisen verandert, niet meewerkt, in feite, dat de gebruiker de schuld van alle uitloop en ellende is. De gebruiker pikt dat niet, voelt zich, m.i. terecht, aangevallen en de dialoog stokt. Dat is het moment waarop de buitenwereld duidelijk wordt dat het project een mislukking is.
Als het aan mij ligt beginnen we in een project niet met code kloppen voordat alle betrokken overtuigd zijn dat er een uitstekend begin ligt. Een begin dat veel meer omvat dan specificaties en ontwerp alleen. Ik vind dat er voor sommige delen voorbeelden moeten zijn, inzichtelijk voor iedereen. Dat de meest cruciale zaken tot in detail onderzocht zijn op wat goed is.
Laten we met elkaar afspreken dat we in 2021 alle projecten goed gaan beginnen.