Generiek

maandag, 3 mei 2004
Programmeurs hebben een hekel aan programmeren.

Dat lijkt wat tegenstrijdig, maar toch is het zo.

Dat levert seconden winst op bij het ontwikkelen maar kost uren aan extra inspanning in de onderhoudsfase. Dat is niet erg, want programmeurs puzzelen graag. Liever een uurtje puzzelen dan een paar seconden typen. Gefeliciteerd.

Dezelfde puzzel-type tegenstelling zie je terug in het groot. Een programmeur die 2x een soortgelijk statement moet intypen gaat onmiddellijk een uurtje puzzelen. Stel je eens voor dat je een paar seconden zou verspillen om een derde soortgelijk statement te typen! Dat kan natuurlijk niet.

De oplossing is maar al te vaak iets generieks.

De generieke oplossing

De generieke oplossing is meestal iets met parameters in een bestandje of database tabel. Het is best ingewikkeld om zoiets generieks te bouwen. Het is een heerlijke puzzel dus programmeurs zijn er dol op. Aan de projectleider verkopen ze het met als argument: Het gaat ons in de toekomst veel tijd besparen.

Niemand rekent uit hoeveel seconden typwerk het werkelijk bespaart, dat zou alle puzzelpret maar bederven. Het enthousiasme is groot, de generieke oplossing komt.

Schuiven

Oeps, iemand moet het bestandje of de tabel gaan vullen. Helaas blijkt dat vervelend typewerk te zijn, wat weer seconden kost. De oplossing is eenvoudig: We schuiven dat typewerk naar een beheerder.

Die beheerder krijgt de generieke oplossing wat koud op zijn dak. Tien tegen één dat de oplossing slechts geschikt blijkt voor programmeurs. Er moet een korte opleiding bij en iemand moet een gebruiksaanwijzig schrijven. He bah, weer vervelend typewerk.

In productie

Uiteindelijk, met veel pijn en moeite gaat de generieke oplossing werken. Het is een heel gedoe, want de testinspanning blijkt meer dan verdubbeld: Uiteindelijk gaat de boel in productie. Niemand rekent na hoeveel tijd er besteed is aan de generieke oplossing. Over de oorspronkelijke seconden typewerk hoor je helemaal niemand meer.

De praktijk

De praktijk blijkt weerbarstiger dan gedacht. Er komen allerlei uitzonderingen boven die de generieke oplossing steeds minder generiek maken. De set van parameters gaat steeds meer op een aparte programmertaal lijken.

De oorspronkelijke programmeurs hebben inmiddels plaats gemaakt voor nieuwe. Voor hen is de generieke oplossing alleen maar lastig, een YAPL (Yet Another Programming Language):

De cyclus

Na een jaar of 3 is de hele ontwikkelomgeving en programmeertaal verouderd. De toekomst bleek korter dan gedacht. De hele boel gaat het ronde archief in, maakt plaats voor iets nieuws. De besparingen zijn nooit gehaald. Niemand weet zich nog het oorspronkelijke argument van tijdsbesparing te herinneren. En dat is misschien maar beter ook...

De programmeurs werken met hun nieuwe omgeving. En... merken dat ze telkens hetzelfde zitten te typen. Hmm, zou dat niet generiek opgelost kunnen worden?

Advies

Wil een programmeur een generieke oplossing?

Tot de volgende, handgetypte noot,
Henk Jan Nootenboom