Over filosofie en software ontwikkelen
Als mensen mij vragen waarom ik softwareontwikkelaar ben geworden, dan zeg ik: omdat ik geld nodig had. Als ze me vragen hoe ik softwareontwikkelaar ben geworden, dan zeg ik: door te liegen op mijn cv. Als ze me vragen hoe lang ik nog softwareontwikkelaar blijf: voorlopig nog wel even.
Dat is het korte verhaal. Het lange verhaal gaat als volgt.
Baantjes
Toen ik klaar was met de middelbare school, wist ik niet goed wat ik wilde worden. Maar ik wist wel dat ik filosofie interessant vond. Dus ging ik filosofie studeren.
Toen ik klaar was met mijn studie filosofie, wist ik nog steeds niet goed wat ik wilde worden. Maar ik wist wel dat ik filosofie interessant vond.
Een tijd lang heb ik in de horeca gewerkt. Ik heb stage gelopen op een filmfestival. Ik heb zelfs een tijdje wat excelletjes lopen updaten voor de opleiding psychologie, die halsoverkop een gigantische toestroom studenten in moest zien te dammen met een numerus fixus.
Dat waren steeds baantjes voor een paar maanden, en daarna was het geld op.
Traineeship
Regelmatig zat ik met mijn vrouw – ze was toen nog mijn vriendin, maar nu is ze mijn vrouw – regelmatig zat ik met haar op het balkon van onze veel te krappe studentenkamer. Dan braken we ons hoofd over de vraag wat we met mij aan moesten.
Op een gegeven moment opperde één van ons, ik weet niet meer wie: misschien is de IT wat, daar zit toch geld in?
Mijn vrouw – vriendin, bedoel ik; later mijn vrouw – vond meteen dat ik een vierjarige opleiding moest doen tot programmeur. Ik zei: ho ho, laten we eerst eens kijken wat dat überhaupt voorstelt.
Die avond bestelde ik het boek Programmeren voor Dummies.
De dag erop – letterlijk: De. Dag. Erop. – werd ik opgebeld door een recruiter, of ik interesse had in een traineeship tot softwareontwikkelaar. “Nou,” zei ik, “je komt precies op tijd. Maar, eh, hoe ben je eigenlijk bij mij uitgekomen?”
Ze had mijn CV voor haar neus gekregen. En daarop stond dat ik programmeur was geweest bij een filmfestival. En het updaten van die excelletjes voor psychologie heette beheerder ICT.
De les die ik hiervan leerde, is: lieg op je CV – of overdrijf op zijn minst.
Sollicitatie
Maar toen ik de recruiter kwam te spreken, bekende ik onmiddellijk helemaal niets te weten van softwareontwikkeling. Ik zei: “Ik heb het boek Programmeren voor Dummies besteld,” – niet gelezen; besteld – “verder dan dat reikt mijn ervaring niet.”
Maar klaarblijkelijk was ik charmant genoeg om niet onmiddellijk afgewezen te worden.
Voor mijn sollicitatieprocedure hackte ik een programmaatje in elkaar waarmee je rekensommetjes kon oefenen in de console. Het programma hing van codeduplicatie aan elkaar, en als je een letter invoerde in plaats van een cijfer, dan crashte de boel.
Later leerde ik: zo wordt veel professionele software ook ontwikkeld. Dus mocht ik het traineeship doen.
De rest is, zoals dat heet, geschiedenis.
Moeilijk
Als filosoof leerde ik: dat wat op het eerste gezicht eenvoudig lijkt, blijkt bij nader inzien enorm complex. Dit is een goede les om te leren vóórdat je je eerste blik werpt op de code van om het even welk in productie draaiende systeem.
Software ontwikkelen is moeilijk, bleek. Socrates zei: ik weet dat ik niets weet. De eerste paar maanden van mijn baan als softwareontwikkelaar, was ik sterk van dat sentiment doordrongen.
Het duurde zeker een jaar of twee voordat ik het gevoel had dat ik het enigszins onder de knie had, programmeren. Al die tijd had ik niets aan mijn filosofieachtergrond. Alle ruimte in mijn hoofd werd opgeslokt door mijn worstelingen met syntax en architectuur en proces.
En bugs. Heel veel bugs.
Wat is een softwareontwikkelaar?
Ik was bezig code te leren schrijven. Want ik dacht dat dat is wat een softwareontwikkelaar is: iemand die code schrijft.
En inderdaad, een softwareontwikkelaar schrijft code. Maar dat is niet wat een softwareontwikkelaar is. Een softwareontwikkelaar is iemand die problemen oplost. Dat diegene code schrijft om die problemen op te lossen, is een bijkomstigheid – haast een bijkomstigheid.
Zo bezien, is een filosofiestudie geen verkeerd vertrekpunt. De waarde die zo’n studie voor een softwareontwikkelaar heeft, ligt niet het opdoen van inhoudelijke kennis. Hij ligt in de analytische vaardigheden die je je eigen maakt terwijl je die kennis opdoet.
(De waarde van zo’n studie an sich ligt voor een groot deel natuurlijk wél in de inhoud.)
Waarom
Een filosoof creëert problemen; een softwareontwikkelaar wordt betaald om problemen op te lossen.
Maar het is niet zo dat het vermogen problemen te creëren een negatieve eigenschap is voor een softwareontwikkelaar. Integendeel, wie geoefend is in het creëren van problemen, creëert robuuster oplossingen.
Een filosoof wil niet alleen weten hoe het in elkaar zit, maar ook waarom het zus en zo in elkaar zit. Ook dat is een waardevolle eigenschap voor een softwareontwikkelaar.
Een programmeur wil graag de nieuwste technieken gebruiken omdat hij graag de nieuwste technieken wil gebruiken. Een filosoof wil graag weten waarom hij deze of gene techniek zou moeten willen gebruiken. En besluit geregeld, op basis van wat hij over dat waarom leert, niet de nieuwste techniek te gebruiken.
Helderheid
Filosofen houden van het creëren van inzicht, van helderheid. Wie een probleem helder en welonderscheiden in zicht heeft, is in staat een zo eenvoudig mogelijke oplossing te formuleren. Wanneer een probleem duister en verward is, zal de “oplossing” complex en ondoorgrondelijk zijn.
Wie regelmatig code refactort, zal een idee hebben van wat dat inhoudt. En wie dat niet doet al helemaal.
Eén van de grootste zegeningen die de studie filosofie mij heeft gegeven, is het voeden en aanscherpen van een reflectieve houding. Want het is die voortdurende reflectie die mij in positieve zin onderscheidt van veel “traditionele” ontwikkelaars.
Ik zal niet beweren een goede ontwikkelaar te zijn – dat is aan andere mensen, als zij dat zo vinden. Maar ik durf wel te stellen dat ik geen slechte ontwikkelaar ben. En dat ben ik niet omdat ik regelmatig ophoud code te schrijven en me af te vragen waarom ik eigenlijk de dingen doe die ik doe, of de dingen laat die ik laat.
Verwondering
In zekere zin ben ik nooit opgehouden te filosoferen. (– Volgens Aristoteles begint filosofie met verwondering. Softwareontwikkeling begint vaak net zo. Ik ken geen ontwikkelaar die niet bijna dagelijks uitroept: waarom zit deze code in hemelsnaam zo in elkaar?!)
En daarom verwacht ik nog wel een tijdje softwareontwikkelaar te blijven.
(Notities gemaakt naar aanleiding van deelname aan een alumnipanel, georganiseerd door mijn vroegere studievereniging.)