Meer dan een zwarte doos

In een overmoedige bui heb ik eens geroepen: de basis van programmeren kun je jezelf in een weekendje aanleren. En in zekere zin is dat ook zo. Als je eenmaal doorhebt hoe je een variabele declareert en loopjes construeert en conditionaliteit introduceert, dan kom je een heel eind met je eerste programmaatje. Gefeliciteerd, je bent een computerprogrammeur!

Maar: zal dat eerste programmaatje ook een goed programma zijn? Op het eerste gezicht is dat misschien een vreemde vraag. Een programma dat doet wat het moet doen – bijvoorbeeld twee getallen bij elkaar optellen – is toch per definitie een goed programma? Nou, nee. Want in de werkelijke wereld veranderen de eisen die aan een computerprogramma worden gesteld voortdurend. Daar waar eenvoudigweg optellen gisteren voldoende was, staat voor vandaag aftrekken op de wensenlijst. En morgen vermenigvuldigen en delen, overmorgen het berekenen van de radius van een cirkel. Is je programma tegen zulke nieuwe wensen bestand? Of dondert de boel in elkaar, zodra je de eenvoudigste aanpassing probeert te doen? En kun je jezelf dan uit de penarie helpen die je zelf hebt gecreëerd?

Dat een goed computerprogramma meer is dan een zwarte doos die – op wat voor manier dan ook – input omzet in de juiste output, is een les die alle aspirant-softwareontwikkelaars op een harde manier leren. Voor hen heeft universitair professor Perdita Stevens een handzaam boekje geschreven: How to Write Good Programs. Het boek richt zich in het bijzonder op studenten die worstelen met hun eerste programmeercursus. Maar de tips die ze in het boek uiteenzet zijn waardevol voor iedereen die zich met het schrijven van code bezighoudt. Ze beperkt zich ook niet tot één doelgroep: haar tips zijn gelardeerd met voorbeelden in Python, Java en Haskell.

Boeken over goede codeerpraktijken zijn er in overvloed, en veel van de tips die Stevens geeft, zullen gevorderde softwareontwikkelaars dan ook bekend in de oren klinken. Zorg als eerste dat je code compileert: schrijf het skelet van je functies voordat je aan de inhoud begint. Maak je code leesbaar, bijvoorbeeld door descriptieve naamgeving te gebruiken. Herhaal jezelf niet: wie code dupliceert, heeft een dubbele onderhoudslast. Refactor je code regelmatig: naarmate je meer leert, zul je nieuwe en efficiëntere manieren vinden om dezelfde taken uit te voeren. En: test. Test, test, test. Geautomatiseerde testen zijn de snelste en goedkoopste manier om te controleren dat je nieuwste aanpassing de werking van je programma niet naar de verdoemenis heeft geholpen.

Stevens’ boek onderscheidt zich van andere codeerboeken doordat ze minimale kennis veronderstelt bij haar lezers. Ze behandelt het concept programma, het verhelderen van welk probleem je op wil lossen en het uitkiezen van een ontwikkelomgeving vóórdat ze aan haar concrete codeertips toekomt. Met name het hoofdstuk over het ongedaan maken van fouten is een zegening voor de beginnende programmeur. Maar weinig dingen zijn zo frustrerend als het per ongeluk weggooien van werkende code of – erger nog – je programma niet meer in werkende staat terug kunnen krijgen. En voor hen die het programmeren uiteindelijk redelijk onder de knie hebben gekregen, maar moeite hebben met hun schoolwerk, sluit Stevens af met twee hoofdstukken over hoe je goed scoort op huiswerkopdrachten en tentamens.

De basis van een programmeren kost je misschien een weekendje, maar een goed programma leren schrijven, dat is een proces van jaren. Waarom? Het besef dat een goed programma meer is dan een werkend programma, daalt pas na veel vallen en opstaan in. Studenten en beginnend programmeurs die meer uit hun strubbelingen willen halen, doen er daarom goed aan How to Write Good Programs aandachtig te lezen. Want wie tijd en moeite investeert in het goed krijgen van een programma, ontwikkelt niet alleen beter en sneller, maar ook met veel meer plezier. Voor je het weet zeg je tegen jezelf: gefeliciteerd, je bent niet zomaar een computerprogrammeur, je bent een heuse softwareontwikkelaar!

Deze recensie verscheen oorspronkelijk op De Leesclub van Alles.

boeken · clean code · recensies · zelfstudie