Wim_Couwenberg_06

Wim Couwenberg 

19 December 2009

Er zijn veel modellen en formele methodes voor softwareontwikkeling. Volg een waterval of werk iteratief. Programmeer extreem of lenig. Voor wie in strak en planbaar gelooft, was er al het V-model. Ik voeg daar nu mijn eigen model aan toe: het U-model.

Kort gezegd komt mijn model erop neer dat om van A naar B te komen je door een diep dal zult moeten gaan. Er zit weinig theorie achter, maar wel veel ervaring. Ik denk dat ieder project van meer dan een tiental regels code het U-model volgt, of het nu gaat om nieuwbouw of verbouwing, kort of lang, eenpersoons of multisite.

Het U-model lijkt enkel een leuke anekdote, maar dat is het niet. Als je doorhebt dat projecten een U-curve moeten doorlopen, kun je er je voordeel mee doen. Gaat een project van A rechtdoor naar B, dan is dat een reden om het zaakje niet te vertrouwen. Aan een goed product moet getwijfeld zijn en dat is het centrale thema van mijn model.

Het U-model kent drie kenmerkende fases: de weg omlaag, de bodem en de klim. De afdaling lijkt niet het zwaarst, maar is zeker het meest verraderlijk. Op dat traject kunnen cruciale fouten worden gemaakt die een project – en opvolgers ervan – na een lang en pijnlijk proces om zeep zullen helpen. De afdaling zet meestal snel in na een enthousiaste start. De realiteit biedt minder houvast dan voorzien. Hoe meer details je kent, hoe meer er onduidelijk blijkt te worden. Iedere stap brengt het doel verder weg.

Het echte gevaar is het ontkennen van deze schuifpartij: we kunnen niet omlaag want het plan zegt rechtuit! Deze opvatting leidt bijvoorbeeld tot overbemanning in een neergaande fase. Met een enorme inspanning wordt uiteindelijk een Trojaans paard binnengehaald. Dit lijkt de wet van Brooks (meer bemanning vertraagt een vertraagd project), maar is het niet: het project is niet vertraagd, maar heeft geen kans gekregen. Omdat ook slechte software werkt, wordt de schade pas veel te laat duidelijk.

Voor veel projecten ligt het uiterste beslispunt om te kiezen tussen behouden of vernieuwen ook nog eens op de neergaande poot. Je weet dus niet waar je echt aan begint. Maar juist dit inzicht helpt om een betere afweging te maken. Met zwakke knieën geen innovatie. Hoewel pijnlijk, levert een goede afdaling een reëel beeld op van een project en dat is veel waard. Maar doe het met een kleine club.

De bodem zal iedereen herkennen. Niets lijkt meer te kloppen en de architectuur is alleen nog een plaatje aan de muur, terwijl de tijd maar doorloopt. Het is wel een essentiële periode voor ieder project.

Behalve het diepste dal van de U is de bodem ook het keerpunt. Dit punt wordt op gevoel bereikt. Er is geen bewijs, maar ideeën en concepten beginnen in elkaar te klikken. Door kritisch te zijn en zo nodig diep te snijden, komt de zaak in beweging. In een-tweetjes met collega‘s fileer je de problemen. Interfaces worden bijgesteld en verantwoordelijkheden beter verdeeld. Andere accenten maken een hoop code veel simpeler of zelfs overbodig. In deze fase borg je het eindproduct. Pas nu is het design stabiel en zijn interfaces scherp. Draag deze inzichten uit door bijvoorbeeld de architectuurplaat aan te passen.

Daarna is de klim de makkelijkste etappe. Als het licht eenmaal aan is, blijkt er een prima begaanbaar pad omhoog te zijn. Veel meer is hier eigenlijk niet over te zeggen. Zelfs opschalen werkt in deze fase goed omdat het nu niet meer stuk kan. Recentelijk bleek een kwartier uitleg genoeg om voorheen problematische functionaliteit te laten implementeren.

Ik denk trouwens niet dat het U-model uniek is voor software. Voor het schrijven van een column leg ik eenzelfde weg af. Of ben ik nog niet boven?