Bekentenis van een afgestudeerde met een zwakke CS-basis
Toen ik nog studeerde, dacht ik dat ik best goed was. Zonder zelfs maar te beseffen hoe belangrijk een stevige CS-basis is, was ik alleen maar bezig met goede cijfers halen.
Ik volgde mijn vakken op mijn manier behoorlijk serieus en had zelfs prijzen gewonnen bij programmeerwedstrijden en capstone-wedstrijden op school. Wanneer medestudenten vastliepen op codefouten, gaf ik vanaf de zijlijn advies en voelde ik me superieur. Maar als ik nu eerlijk ben: wat ik toen bouwde, was kinderspel.
Een echte database (DB) koppelen vond ik te lastig, dus sloeg ik data op in tekstbestanden (.txt) met komma’s (,) ertussen. En in plaats van een Raspberry Pi te gebruiken, waarvoor besturing op OS-niveau nodig is, koos ik voor Arduino, omdat dat met een paar regels code al werkt. Docenten prezen resultaten die er alleen aan de buitenkant overtuigend uitzagen, en ik vergiste me erin dat dat mijn echte niveau was.
Het sollicitatiegesprek doorstaan met stampwerk: het begin van de tragedie
Zodra ik de arbeidsmarkt op ging, viel dat ongefundeerde zelfvertrouwen compleet uit elkaar. Afwijzing na afwijzing volgde. Een prijs op een programmeerwedstrijd kon mijn wankele CS-basis niet verbergen.
Hoe groter mijn onzekerheid werd, hoe meer ik me vastklampte aan schijnkennis. Begrip kwam op de tweede plaats; ik stampte modelantwoorden erin als een machine, alleen maar om door gesprekken heen te komen. De lijstjes met “100 verwachte interviewvragen” van techblogs waren mijn leerboek geworden.
Als een interviewer vroeg: “Wat is het verschil tussen TCP en UDP?”, gaf ik antwoord als een automaat. “TCP is verbindingsgericht en betrouwbaar, maar trager; UDP is verbindingsloos en snel, maar minder betrouwbaar.”
In werkelijkheid wist ik totaal niet wat een pakket was of hoe 3-way handshaking echt werkte. Ironisch genoeg wist ik dankzij dat mechanische stampwerk interviewers toch te overtuigen, goede scores te halen en een baan te krijgen. Ik dacht dat het geluk was. Ik had geen idee dat het het begin was van een tragedie waarin ik in een keer de rekening van vier jaar gepresenteerd zou krijgen.

Overleven als fullstacker in een klein team
De plek waar ik terechtkwam was een klein team. Vriendelijke scheidslijnen zoals “frontend” of “backend” bestonden daar niet.
Vanaf mijn eerste werkdag stond ik tegenover een techstack die als een tsunami op me afkwam. Ik dacht dat het genoeg was om goed te zijn in Java of JavaScript. De werkelijkheid bestond uit het zwarte scherm van een Linux SSH-terminal, mysterieuze Docker-containers, GitLab CI/CD-pipelines, en daarnaast Spring Boot, Vue.js en Redis… Technologieen die ik als student had uitgesteld met “dat leer ik later wel” of had weggewuifd met “dat hoef ik niet te weten” vielen me nu van alle kanten aan.
De kennis die ik tijdens sollicitaties zo vlot opdreunde, bleek in de praktijk waardeloos. Of preciezer gezegd: ik wist niet hoe ik die moest toepassen. Om te begrijpen waarom mijn Docker-container steeds crashte (OOM), of waarom Redis zoveel geheugen vrat, had ik juist die CS-basis nodig die ik alleen voor sollicitaties uit mijn hoofd had geleerd.
Een kasteel gebouwd op zand
Uiteindelijk was ik veranderd in een ontwikkelaar die overal maar code kopieerde en plakte (Ctrl+C, V). Op de een of andere manier werkte de functionaliteit wel, maar ik had geen idee waarom.
Omdat ik de principes achter het gemak van frameworks niet kende, kon ik niets oplossen zodra er problemen ontstonden. Ik bouwde een wankel kasteel van glanzende frameworks op grond die verzwakt was door een broze CS-basis.

Re: Booting, terug naar het begin
Daarom besloot ik echt terug te gaan naar het begin. Belangrijker dan meteen nog een glanzend portfolio-item toevoegen, voelde het om eerst die fundamentele vraag op te lossen: “Hoe begrijpt en voert een computer mijn code eigenlijk uit?”
Deze blog is het rauwe verslag van een afgestudeerde met alleen een diploma die zijn CS-basis weer helemaal vanaf de grond opbouwt. Ik ga hier niet simpelweg Linux-commando’s of Docker-installatiehandleidingen opsommen. Ik wil het proces vastleggen van vragen stellen zoals de volgende, en stap voor stap antwoorden vinden.

Voorbij localhost
Het uiteindelijke doel is om Linux, Docker, CI/CD en zelfs cloudomgevingen met mijn eigen handen op te zetten en te beheersen. Ik wil de veilige kas van localhost verlaten en uitgroeien tot een engineer die ook in de ruige werkelijkheid van servers kan overleven.
Voor iedereen die, net als mijn vroegere zelf, zegt: “Ik heb het op school geleerd, maar ik weet het niet meer”, hoop ik dat dit verslag een klein herkenningspunt wordt, eentje die je ineens doet denken: “Aha, dus dit bedoelde de docent toen!”