Waarom een senior programmeur simpele code schrijft

In mijn allereerste baan, al wel een poosje geleden, was ik programmeur. Junior programmeur zelfs, met de inkt van mijn doctoraal diploma nog nat. Ik mocht gelijk beginnen met wat nieuwe code, en ik deed mijn best. Aan het eind van de dag keek de team leider ernaar, en hij fronste. Hij zei “dat heb je wel mooi gemaakt, heel compact. Maar ik weet niet of alle externe programmeurs die hier het onderhoud doen, er heel blij mee zijn. Die zijn niet allemaal even goed opgeleid”. Dit was in de tijd dat een academische opleiding voor een programmeur nog niet de norm was. “Ik wil je vragen om het wat minder compact te maken, wat meer verboos, wat meer regels, zodat iedereen het snel begrijpt”. Ik deed wat ‘ie had gevraagd, en ik heb bij dat bedrijf, een kleine bank, nog heel veel code gemaakt.

Pas veel later begreep ik de kloe van het verhaal. Veel later, toen ik veel code had gezien die door anderen was gemaakt, goede en minder goede code, code van beginners en code van ervaren programmeurs, begon ik te zien dat die team leider wel een punt had.

Code (source code, software) is niet moeilijk te lezen, als je de taal kent. Een heel programma, of een heel systeem, doet wel een beroep op je hersencelletjes om het allemaal in één beeld te bevatten. Dat is waarom een programmeur die in een flow zit niet om zes uur naar huis gaat: het is zonde om het werk niet af te maken als de hersencelletjes het hele model van de software net mooi hebben opgeslagen. De volgende ochtend kost het weer tijd om de flow op gang te krijgen en het model weer uit te beelden in je hoofd.

Code is niet moeilijk te lezen, als ze mooi is opgeschreven, als ze zo is opgeschreven dat je er snel doorheen leest. Vaak betekent dat dat het visueel goed gestructureerd is, met genoeg open ruimte. Maar soms zijn er een paar regels waar een programmeur heeft gedacht “waarom 20 regels schrijven als het ook in één kan?” Die ene regel is dan wel heel vernuftig, maar je moet er wel een paar keer naar kijken en even nadenken voordat je ziet wat er gebeurt. Dat verstoort je leestempo. En waarom zou je code zo compact mogelijk maken? Niet voor de computer, die vertaalt je code, of ze nu compact is of ellenlang uitgesponnen, tot precies dezelfde instructies. Denk aan de handleiding van de magnetron. Je kunt die samenvatten in tien regels, of je kunt er een mooi handzaam boekje van maken. Als je snel iets wilt opwarmen, dan pak je dat boekje, en ga je niet een uur zitten puzzelen op die tien regels. Terwijl die tien regels ongetwijfeld veel “knapper” zijn.

Afgelopen jaar heb ik een project gedaan waarin ik code heb gezien van veel verschillende applicaties, gemaakt door verschillende mensen, verschillende bedrijven. Dan valt op dat je code die is geschreven volgens algemene standaarden veel sneller doorhebt. Het valt ook op dat je code die iets meer breedsprakig is, sneller leest en sneller doorhebt. Ik zeg “iets meer”, je kunt ook overdrijven. Je moet de juiste balans vinden tussen lekker compact en toch snel te lezen.

Inmiddels ben ik zo ver dat ik code meestal maar simpel opschrijf. Ik gebruik Lambda expressies omdat ze handig zijn, maar waar ze verwarrend zouden zijn, schrijf ik alles wel gewoon uit. Ik gebruik de Java stream API omdat die efficient en mooi is, maar er zijn gevallen dat de code er wat onnodig onoverzichtelijk van wordt, dan doe ik het anders. Ik schrijf code met in mijn achterhoofd “over twee jaar kijkt een nieuw iemand naar deze code, met de opdracht binnen een uur een bug te fixen”.

Ik heb soms het idee dat jonge slimme programmeurs helemaal tot het gaatje gaan in het schrijven van ultra-compacte code omdat ze denken dat ze iets te bewijzen hebben. “Ik ben goed in mijn vak als ik de laatste snufjes demonstreer en laat zien dat ik ook de laatste paar letters in mijn code kan wegwerken”. Zoals ik in mijn eerste baan dacht dat ik iets te bewijzen had, tegenover de oude rotten in mijn team. Ik zou zeggen, probeer je liever te bewijzen tegenover de mensen die na jou komen, die jouw code gaan onderhouden.

Ik probeer simpele code te schrijven. Code waarvan ik hoop dat een ander, misschien over vele jaren, in één oogopslag ziet wat het doet. Omdat ik ook vaak die “ander” ben geweest die heeft zitten puzzelen om onnavolgbaar complexe code te analyseren die uiteindelijk iets heel eenvoudigs bleek te doen.

Christine verdwaalt in De Digitale Stad

DDS2

 

Op 15 januari 1994 las ik in de Volkskrant een artikeltje van ene Francisco van Jole. Het ging over een experiment in Amsterdam, iets met internet en de gemeente Amsterdam en De Balie. Ook iets met hackers. “De Digitale Stad” heette het. Er stond een telefoonnummer bij. Ik werd nieuwsgierig en ik belde met het modem dat aan mijn laptop zat. In gesprek. Nog een keer in gesprek. Maar na een keer of vijf kreeg ik verbinding. Het geruis en gepiep dat ik kende van het inbellen op bulletin boards en op de modems van de UvA waarlangs ik normaal toegang tot internet had. Toen het lawaai stopte, verscheen er een schermpje. Ik denk dat er een schermpje kwam waarmee ik een account kon aanmaken, maar ik weet dat niet meer. Ik kwam uiteindelijk op een scherm met 10 opties (het screenshot is van later, ik kan het originele niet meer vinden). Ik zat een poosje te kijken. Ik klikte op “Een Plein”. Mijn leven is nooit meer hetzelfde geweest.

“Het Plein” was een soort chatbox. Een soort Twitter, maar dan heel anders. Teksten kwamen in rap tempo voorbij, blijkbaar ingetypt door mensen die net als ik het telefoonnummer in de krant hadden gebeld met hun modem. Ik typte “hallo”. Het spervuur van tekstjes van anderen ging gewoon door. Ik typte nogmaals “hallo”. Onmiddellijk kwam er een antwoord: “dat zei je net ook al”. Hmm. Apart. Ik deed ctrl-X en kwam weer in het menu. Nu dan maar “Het Postkantoor” proberen. Daarmee kwam ik in Elm, een email programma dat ik kende van Unix systemen. In de Inbox stond een welkomst berichtje van De Digitale Stad. Ik meen dat het was ondertekend door Marleen Stikker, maar dat weet ik niet meer, het is 25 jaar geleden en de tijd is sinds die zaterdagmiddag zo vreselijk snel gegaan. Ik stuurde een mailtje naar David, een AI wetenschapper aan GMU in de VS, de enige van wie ik zo snel het email adres kon bedenken. Dan maar “De Kiosk”. In de Kiosk kwam ik terecht bij artikelen van het NRC en van de Automatiseringsgids. Handig om die zo via je laptop te kunnen lezen. Dan “Openbaar Forum”. Een klein menu met titels als “dds.technopolis” en “dds.dds”, en “dds.misc”. Usenet was dat, een forum-iets dat op Unix systemen werd/wordt gebruikt als discussieforum, vergelijkbaar met de web forums van vandaag, maar dan heel anders. Usenet Groups is tegenwoordig ook toegankelijk als “Google Groups”.

In “dds.technopolis” las ik een stukje van prof. Egbert Dommering over internet en juridische aspecten en zo. Een nogal theoretisch stukje. Ik geloof niet dat er reacties onder stonden. O ja, eentje, van Marianne van den Boomen, die de moderator was van deze groep. De bedoeling was te bediscussiëren wat de invloed van het internet zou gaan zijn op de democratie, op onze samenleving, op alles. Ik postte dus maar een reactie, met de strekking “denk je dat het nuttig is op usenet zo’n enorm lang stuk te posten?”

Terug naar “Het Plein” dus. Weer “hallo”, weer “dat had je al gezegd”. Maar nu meer reacties, en binnen vijf minuten was ik in een geanimeerd gesprek gewikkeld met figuren als “MrJoost” en “MrFanatic”, en een Renate, en heel veel anderen. Na een kwartiertje of zo werd de chat ruw afgebroken, mijn verbinding werd verbroken. Terug inbellen was lastig, pas na 20 keer bellen was ik weer ingelogd. Navraag op het plein leerde me dat De Digitale Stad iedereen die inbelt er na een half uur uit gooide, om andere mensen ook een kans te geven mee te doen. Er waren veel meer inbellers dan modems. Ik heb heel wat keren opnieuw ingelogd die avond, en toen het tegen drieën wat rustiger werd, zette ik mijn laptop uit. Om een uur of twee had ik van Jole’s stukje gelezen, en nu 13 uur later was ik perplex. Wat is dit allemaal? Maar ook vastbesloten: hier wil ik meer van weten.

Ik wist ook wat meer, intussen. Op het plein hoorde ik dat op Salto TV een live uitzending was over De Digitale Stad. Ik zette dat aan, en ik hoorde Diana Ozon praten met vaag uitziende figuren achter computers, in De Balie, over DDS. Er verschenen tekstjes onderin beeld, die van Het Plein bleken te komen. Als ik wat intypte op Het Plein, verscheen dat soms in beeld, en dan praatte Ozon daarover met de vage jongelui in De Balie. Maar op Het Plein (dat IRC was, Internet Relay Chat, dat bestaat nog steeds) werd over Ozon gepraat, en over De Balie. Het was het eerste multi-mediale gesprek dat ik heb meegemaakt: een gesprek dat simultaan via internet en TV verloopt. Heel bijzonder. Later nooit meer zo gezien.

‘s Zondags besloot ik dat al dat opnieuw inbellen maar zonde van de tijd was, en ik meldde me aan bij hacktic.nl. Dat had men mij op IRC aangeraden, neem een account bij Hacktic dan blijf je gewoon ingelogd. De kosten konden het niet zijn, het kostte 5 gulden per uur. Pas later realiseerde ik me dat als je vier uur per avond bent ingelogd en het kost 5 gulden per uur, dat je dan aan het eind van de maand een flinke rekening krijgt. Die maanden heb ik Hacktic flink gesponsord.

Twee weken later was er een bijeenkomst van De Digitale Stad in De Balie. Daar ontmoette ik de mensen die ik kende van het plein en het forum. Marleen Stikker, die vanuit De Balie één van de initiatiefneemsters was van DDS. Felipe Rodriguez, die vanuit Hacktic de technische kennis en infrastructuur leverde. Joost Flint, die de hele zaterdag heen en weer fietste tussen de drukkerij en boekhandel Scheltema om nieuwe boekjes te brengen, de “handleiding Digitale Stad”. Ze vlogen bij Scheltema sneller de deur uit dan Flint ze kon aanslepen, ehm, aanfietsen.

Ik ontmoette ook Marianne van den Boomen, de moderator van dds.technopolis, de discussie over “internet en politiek en samenleving”. Ze zei “je bent in het echt heel anders, online ben je zo’n opgewonden standje”. Ik hoor het haar nog zeggen. Op het eerste gezicht ging DDS over techniek. Over computers, modems, servers, unix, van alles. Met name Marleen en Marianne legden echter een heel ander accent. DDS was geen techniek. Het was een community. Een gemeenschap die online ontmoet, discussieert, doet, van alles. Een beetje zoals “The Well”, waarover Howard Rheingold een boek had geschreven, “The Virtual Community”. DDS wás een virtual community. Het was een stad zonder fysieke grenzen, zonder locatie, zonder beperkingen. Marleen vertelde over Donna Haraway en haar Cyborg Manifesto. Bedenk wel, dit was 1994.

Het belangrijkste dat ik heb geleerd van Marianne en Marleen is dat internet, en online communities, en “online” in het algemeen, wordt bepaald door metaforen. De Digitale Stad maakte met de stadsmetafoor van een computernetwerk een bloeiende gemeenschap. De Digitale Metro was een bouwwerk onder de bodem van De Digitale Stad, het was ook een moo waar honderden enthousiastelingen bouwden aan hun eigen digitale structuren. En bouwden aan vriendschappen en relaties tussen mensen. Het Plein was een ontmoetingsplek waar mensen elkaar via modem-piepjes ontmoetten, maar dat niet alleen: al snel gingen we samen regelmatig pannekoeken eten, steeds in een andere stad in Nederland. MrJoost bleek ondanks zijn vervaarlijke naam een heel vriendelijke jongeman. MrFanatic bleek een beetje verlegen.

De Digitale Stad heeft langer bestaan dan de tien weken die oorspronkelijk gepland waren. Maar toch ook niet heel lang: na een paar jaar ging iedereen weer z’n eigen weg, nu met alle bagage die DDS ons gegeven had. Marianne ging verder met de metaforen, uiteindelijk is ze in 2014 gepromoveerd aan de RUU op een proefschrift over online metaforen: Transcoding the digital : how metaphors matter in new media. Inmiddels was ze heel ernstig ziek geworden, en niet lang na haar promotie is ze veel te jong overleden. Ze leeft voort, niet alleen in de boeken die ze heeft geschreven, maar ook in wat ze voor het internet heeft betekend: het internet is geen techniek, geen technologie, geen netwerk, geen computer. Het is een metafoor van onze samenleving.

 

Ik heb iets met React gemaakt

Zaterdag heb ik wat met React geknutseld, en een UI gemaakt op een database met berichtjes. De berichtjes worden via een API beschikbaar gesteld aan derden. Ik had dit voor een klant gemaakt, als een soort proof of concept. En als een oefening voor mijn web site over “Het nichtje van Tante Thérèse“.

Het voorbeeldje staat hier. Het is werk in uitvoering, bij voorbaat excuses als het niet werkt omdat bijvoorbeeld de server ergens over is gestruikeld.