25 jaar software development: wat ik heb geleerd
Een kwart eeuw geleden schreef ik mijn eerste regels code. Dit zijn de lessen die zijn blijven hangen. Niet over technologie, maar over het vak.
In 1999 begon ik met programmeren. De technologie van toen is grotendeels verdwenen, maar de lessen die ik leerde zijn gebleven. Dit zijn de belangrijkste.
De beste code is code die je niet schrijft
Vroeger was ik trots op complexe oplossingen. Slimme algoritmes, abstracte architecturen. Nu weet ik beter. Elke regel code is een regel die onderhouden moet worden. Die bugs kan bevatten. Die begrepen moet worden door de volgende developer.
De beste oplossing is vaak de eenvoudigste. Soms is dat een bestaande library. Soms is het een proces aanpassen zodat de software simpeler kan. Soms is het accepteren dat niet alles geautomatiseerd hoeft te worden.
Technologie verandert, problemen blijven
De talen en frameworks die ik in mijn carrière heb gebruikt zijn talloos. De meeste bestaan niet meer of zijn irrelevant geworden. Wat blijft zijn de onderliggende problemen.
Hoe structureer je data? Hoe ga je om met foutcondities? Hoe maak je iets dat een ander kan begrijpen? Hoe vertaal je een vaag idee naar werkende software?
Wie die vragen kan beantwoorden, kan elke technologie leren. Wie alleen een technologie kent, staat met lege handen als die verdwijnt.
Communicatie is het halve werk
De meeste mislukte projecten falen niet door technische problemen. Ze falen door miscommunicatie. De klant bedoelde iets anders dan de developer begreep. Aannames werden niet uitgesproken. Problemen werden te laat gemeld.
Ik besteed nu meer tijd aan praten dan aan typen. Begrijpen wat iemand echt nodig heeft. Terugkoppelen wat ik ga bouwen voordat ik begin. Eerlijk zijn als iets niet gaat lukken.
Eenvoud is moeilijk
Iedereen kan iets ingewikkelds bouwen. Het simpel houden is de kunst. Dat vraagt om discipline. Om nee zeggen tegen features die leuk zijn maar niet nodig. Om code weggooien die wel werkt maar te complex is.
Eenvoudige software is makkelijker te begrijpen, te testen, te onderhouden en uit te breiden. Complexiteit is een schuld die je jarenlang afbetaalt.
Fouten maken hoort erbij
Elke developer maakt fouten. Bugs, verkeerde inschattingen, slechte architectuurkeuzes. Het verschil zit in hoe je ermee omgaat.
Erken de fout. Leer ervan. Zorg dat hij niet nog een keer gebeurt. En wees mild voor anderen die fouten maken, want jij maakt ze ook.
De gebruiker heeft altijd gelijk
Niet letterlijk natuurlijk. Maar als een gebruiker iets niet snapt, is dat een probleem van de software, niet van de gebruiker.
Het is makkelijk om te denken dat mensen dom zijn als ze jouw briljante interface niet begrijpen. Het is nuttiger om te accepteren dat jouw interface blijkbaar niet zo briljant is.
Relaties zijn belangrijker dan projecten
De mooiste projecten in mijn carrière kwamen voort uit langdurige relaties. Klanten die terugkomen omdat ze weten wat ze aan me hebben. Samenwerkingen die groeien omdat er vertrouwen is opgebouwd.
Een project is eindig. Een goede relatie levert jarenlang werk op. Investeer daarin.
Tot slot
Vijfentwintig jaar is lang genoeg om te weten dat ik nog lang niet alles weet. De technologie blijft veranderen, de problemen blijven uitdagend, en er is altijd meer te leren.
Dat is ook wat het vak mooi maakt.