2004.10.20
Twee metaforen voor Extreme Programming
by Karel Thönissen
Systeemontwikkeling als logistieke trein
Traditionele methoden trekken met de volledige projektgroep over de volle breedte als een groot leger over een heerbaan op naar het doel, om er dan meestal achter te komen dat het vijandelijke leger zich inmiddels verplaatst heeft. Met andere woorden: men heeft veel tijd en energie gestoken in de verplaatsing zonder gevechtskontakt te maken. Het doel is dus niet bereikt. In automatiseringstermen: er is veel energie en tijd verspild aan iets wat de klant in die vorm niet meer nodig heeft en wellicht ook in die vorm nooit nodig gehad heeft.
XP kiest voor het korte, snelle, smalle pad. Niet om snel gevechtskontakt te maken en alle doelstellingen in een keer te bereiken, maar vooral om snel te weten of de vijand zich inderdaad op de vermoede plek bevindt en of hij zich verplaatst. Deze verkenningsinlichtingen worden gebruikt om de energie en tijd zo goed mogelijk te besteden. In automatiseringstermen: de vroege opleveringen wordt gebruikt om zo snel mogelijk duidelijk te krijgen of de klant daadwerkelijk behoefte heeft aan het produkt, wat de eisen zijn en of deze eisen niet veranderen. 
Ponte Vecchiu spoorbrug , Corsica, Frankrijk, Gustave Eiffel
Systeemontwikkeling als bruggenbouw
Om een andere metafoor te gebruiken: een brug over een kloof bouwen kan op veel manieren: traditionele waterval model, prototyping en XP/evolutionair. Bij de traditionele methode wordt eerst uitgebreide planningen en bestekken gemaakt. Hieruit kan naar voren komen dat een 2x3 baans snelweg noodzakelijk is. Dan wordt begonnen met de bouw van de voorgestelde brug. Men begint mogelijk aan twee kanten van het ravijn aan de 6-baans brug, maar de brug is pas bruikbaar als het brugdek uiteindelijk gesloten wordt. Voor die tijd is er niets dat de oevers verbindt. Aan beide kanten moet een dure bouwplaats ingericht worden en mogelijk zelfs een klein dorp voor de huisvesting van de arbeiders. Bij technische problemen zijn alle tijd en geld weggegooid aan een dure 6-baans brug die onbruikbaar is. En als de aannemer failliet gaat op 95% van het einde, dan is er nog steeds geen bruikbare brug, omdat het dek niet gesloten is, al is het maar omdat de laatste 10 centimeter ontbreekt.
Bij prototyping wordt een snelle goedkope variant van de brug over het ravijn gebouwd. Hiermee wordt ervaring opgedaan. Dat kan het risiko op technische problemen bij de grote brug aanmerkelijk beperken. Met de ervaring op zak, wordt het prototype afgebroken en kan aan de bouw van het grote werk begonnen worden. Door de kennis van het prototype zijn de risiko's bij de bouw van het grote werk afgenomen en is mogelijk zelfs een snellere oplevering mogelijk dan bij de traditionele methoden. Echter het risiko is dat besluitnemers het verschil niet zien tussen een prototype en de werkelijke brug en het prototype en bedrijf nemen met alle gevolgen en gevaren van dien.
XP staat een andere aanpak voor. In plaats van een dure risikovolle 6-baans brug naar de overzijde, begint men met de bouw van een goedkope 1-baans brug. Alle energie wordt gekoncentreerd op deze eerste brug. De bouw duurt dus maar een zesde van de volledige brug. Ervaringen van de bouw van de eerste brug worden gebruikt bij de bouw van de tweede brug. Echter, in tegenstelling tot de prototyping aanpak is de eerste brug een volwaardige brug. Behalve technische ervaring krijgt men dus al heel vroeg rendement van de investering. Weliswaar nog niet voor 6 banen, maar al wel iets. Als op enig moment de geldkraan dicht gaat, dan heeft men in ieder geval een deel van de 6 banen. Misschien niet ideaal, maar beter dan helemaal niets. Maar misschien komt men er na die ene baan al achter dat de vraag verkeerd was ingeschat en de brug eigenlijk helemaal niet nodig is of niet op die plaats. In dat geval is nu een hoop geld bespaard. Tijdens de bouw van de volgende bruggen, kan de reeds aangelegde brug gebruikt worden om goedkoop materialen naar de overzijde van de kloof te brengen of om materialen vanaf de bestaande brug in de brug in aanbouw te takelen. Met andere woorden, de reeds opgeleverde funktionaliteit wordt gebruikt voor de konstruktie van nieuwe funktionaliteit.
|