Ga naar de homepage van beechLeaf

Growing

Steeds pogen we om informatiesystemen te bouwen in één ruk: een waterval-aanpak wordt dat ook wel genoemd. Dit gaat nogal eens mis. Om precies te zijn: ongeveer 25% van de ICT-projecten mislukt. Daarnaast wordt er in 50% van de gevallen wel iets opgeleverd, maar te laat, te duur of met minder gebruiksmogelijkheden. Maar 25% van alle projecten zijn een succes (zie ook de CHAOS research van de Standish Group.

"Kweken" is beter dan ontwikkelen

De waterval-aanpak, alles in één keer, gaat nogal eens mis. Een beter manier is in de natuur te zien. Kijk maar naar de jaarringen in de stam van een omgezaagde beukenboom. Die beuk is niet in één keer ontstaan, maar iedere jaar een stukje: iteratief en incrementeel. Ook in de ICT zullen we applicaties moeten "kweken", iedere keer een stukje, een increment. Dat heeft een aantal voordelen:

  • Je kunt risico's beter managen
  • Je kunt beter anticiperen op veranderende eisen
  • Je gebruikt een (leer)proces dat beter aansluit bij de menselijke psyche

Risico's beter managen

Een iteratie is een kortdurend deel van een ontwikkelproject, afhankelijk van de gebruikte ontwikkelmethode tussen de twee weken en de drie maanden. In een iteratie lever je een werkend deel van een applicatie op. Iedere iteratie die je doorloopt, ieder increment dat je ontwikkelt, levert gegevens op voor het beter uitvoeren van de volgende iteratie. Zowel qua product: "Hebben we gemaakt wat de klant wilde, of moet het de volgende keer anders?". Als qua proces: "Was dit de juiste manier om dit probleem aan te pakken, of moeten we de volgende keer bijsturen?". Hierdoor kun je in een project sneller bijsturen, en minimaliseer je sneller risico's.

Anticiperen op veranderende eisen

Een project inrichten als een "waterval", veronderstelt dat het product dat je moet opleveren aan het begin van het project in alle details te beschrijven valt. Waarna het ontworpen en ontwikkeld kan worden. Maar wat doen we als tijdens het project de opdrachtgever andere eisen gaat stellen? Als zijn business case verandert door concurrenten die een bedreiging vormen of door veranderende wetgeving? Een waterval-aanpak heeft hier geen instrumenten voor, het product is immers al volledig beschreven! Bij een iteratief en incrementeel proces doorloop je bij iedere iteratie de activiteiten voor het ontdekken en beschrijven van eisen, het analyseren ervan, het maken van een ontwerp en het uiteindelijke bouwen. Veranderende eisen kunnen dus automatisch meegenomen worden. Dat wil niet zeggen dat het makkelijker wordt om deze nieuwe eisen te realiseren, maar wel dat we dit via een gefaseerd en beheerst proces kunnen aanpakken.

Een leerproces dat past bij de menselijke psyche

"Als ik dit project nog een keer mocht doen, zou ik het in de helft van de tijd kunnen (en een betere applicatie opleveren)!", dat is een gedachte die ik regelmatig had aan het einde van weer een langlopend project. Herkenbaar? Zo zitten we als mens nu eenmaal in elkaar: tijdens de uitvoering van een project leren we. Na drie weken weet je meer over de applicatie die ontwikkeld moet worden dan na 1 week. Je hebt een beter zicht op hoe je het aan zou willen pakken. En niet alleen als projectmanager, informatie-analist of ontwikkelaar. Ook de opdrachtgever en de betrokken eindgebruikers maken dit mee. Daarom komen ze ook met wijzigingen in de eisen: ze begrijpen hun eigen vraag nu beter. In een iteratief proces, kun je aan het einde van iedere iteratie even achteroverhangen en reflecteren op de afgelopen periode. Hoe is het gegaan? Moet het anders? Hebben we nog een business case? Met dat wat we geleerd hebben in de afgelopen iteratie, kunnen we de volgende iteratie(s) beter inrichten, beheersen en uitvoeren.

Mooi verhaal, man. Maar kan ik hier ook iets mee?

Natuurlijk! Zorg in je ICT-projecten voor een ontwikkelproces dat iteratief en incrementeel werken ondersteunt. Alle moderne ontwikkelmethodes, zoals DSDM (Dynamic Systems Development Method) en RUP (Rational Unified Process), doen dit. Laat de waterval- of lineaire aanpak voor wat hij is, en leer itereren. Het is een andere mind set, maar iedereen kan het. En wees gerust: itereren is niet hetzelfde als stuurloos aanmodderen. Ieder iteratief proces kent heuristieken om iteraties in te richten en te beheersen.