Het met de hand schrijven van code in lagere programmeertalen, zoals C, Java, C++ en C#, is een nobel ambacht (vroeger noemden we deze talen 3gl’s – third generation languages). Het vereist tenslotte heel wat vaardigheid en geduld om hier een serieuze applicatie mee te bouwen. En zeker als er naast de 3gl gebruik gemaakt moet worden van complexe api’s, zoals EJB, JMS, ADO.NET en Corba
De vraag is alleen of het goed is voor de productiviteit. Het antwoord is helaas: nee. Uit diverse rad-races (rapid application development) is keer op keer gebleken dat de productiviteit van een team, dat werkt met een 3gl, schril afsteekt bij die van een team dat een 4gl of generator hanteert. Daarnaast is het ook zeer onderhoudsintensief. Als er nieuwe versies van de api’s beschikbaar komen waarin faciliteiten zijn toegevoegd om de schaalbaarheid of prestatie te verbeteren, dan maakt de bestaande applicatie daar geen gebruik van. De code moet met de hand aangepast worden om die voordelen te kunnen benutten. Dit is bijvoorbeeld al diverse malen gebeurd met Java-applicaties die EJB gebruikten. Met elke nieuwe versie moest veel code herschreven worden.
Wordt het dus niet tijd dit ambacht te vervangen? Het maken van auto’s is ook geen handwerk meer, maar wordt door grote machines en robots uitgevoerd. Een met de hand gemaakte auto zou nu waarschijnlijk onbetaalbaar zijn.
De productiviteit kan op diverse wijzen verhoogd worden. Er kunnen generatoren ingezet worden, er kan overgeschakeld worden op het kopen van kant-en-klare applicaties (die tegenwoordig met de ongelukkige afkorting cots – commercial off the shelf – aangeduid worden), of er kan gekozen worden voor frameworks.
De laatste twee jaar komen er steeds meer generatoren op de markt. Producten als CA’s Advantage Gen, Borland’s Together CC, Compuware’s Optimalj en Oracle’s jDeveloper genereren vanuit UML of UML-achtige specificaties 3gl-code. Daarnaast zijn er ook producten die vanuit proprietary specificaties 3gl-code genereren, zoals Radventure’s Fenix, Edcubed’s TET en IBM’s Visual Gen for Java. Het is bewezen dat dit de productiviteit verhoogt.
Uiteraard zal er kritiek zijn op de efficiëntie en prestatie van die gegenereerde code. Sommigen zullen beweren dat gegenereerde code altijd minder efficiënt zal zijn dan met de hand geschreven code. En eigenlijk hebben ze ook gelijk. Maar hoeveel tijd en geld kost dat? En hebben organisaties tegenwoordig wel die tijd en dat geld? Laten we eerlijk zijn, die generatoren worden ook niet door de minste programmeurs geschreven.
Ook cots is een serieus alternatief. En gezien de immer groeiende populariteit van leveranciers als JD Edwards, Peoplesoft en SAP, kiezen al veel organisaties hier voor. Ze moeten dan alleen niet alle potentiële tijdwinst weggooien door twee jaren te ‘customizen’. Misschien is het op de lange termijn wel goedkoper om de organisatie aan de software aan te passen dan andersom.
En ook ‘frameworks’ kunnen gebruikt worden om het met de hand schrijven van code te minimaliseren. Frameworks kunnen gezien worden als alternatief dat ligt tussen zelfbouw en cots in.
In deze tijd waarin het economisch wat minder gaat, zal het management een groot belang hechten aan productiviteit: met minder mensen meer werk produceren. Het ambachtelijk programmeren in 3gl’s is niet goed voor de productiviteit en het onderhoud. Zal door de genoemde alternatieven deze ambacht uiteindelijk gaan behoren tot het rijtje uitgestorven ambachten? Zal het samen met kantklossen, leer looien, en andere folkloristische vaardigheden van de aardbodem verdwijnen?
Misschien zien we het in de toekomst alleen nog beoefend worden op markten, feesten en bazaars en, natuurlijk, als de koningin jarig is. Ik ben benieuwd of we in de toekomst op Willem-Alexanders verjaardag naast de dames in Zeeuwse kleren 3gl-programmeurs achter pc’s zien zitten. Ik zie hem al over hun ruggen meekijken en denken: ach, dat waren nog eens tijden.< BR>
Rick F. van der Lans is onafhankelijk adviseur, een internationaal bekend spreker en auteur van diverse boeken, tevens gespecialiseerd in softwareontwikkeling, datawarehousing en internet.