AI native software engineering met Claude Code

Op donderdag 4 juni 2026 vond ophet Eonics HQ een Open Hack Night over een actueel thema: AI native software development. Collega Jan-Willem Keizer en ondernemer Barry van Someren deelden hoe zei beiden volwaardige SaaS applicaties naar productie brengen met behulp van agentic coding.

“Wie houdt er van PowerPoint?” Zo opende Jan Willem de avond. Geen handen. Dat zette meteen de toon, want wat volgde ging niet over slides maar over werkende code, een live deploy naar productie en de eerlijke chaos die daarbij hoort.

Sfeerbeeld: Open Hack Night over AI - Jan Willem Keizer aan het presenteren

 

Claude is een collega met permanent geheugenverlies

Jan-Willem Keizer was Java-developer en werkt nu als ai-consultant bij Delta Fiber. Hij begon met de bekentenis die veel mensen in de zaal herkenden: vibe coding voelt eerst als magie, en daarna merk je dat het voor een echt product, iets dat anderen gebruiken, niet goed genoeg is. Daar begon zijn zoektocht.

Zijn metafoor bleef hangen. Een LLM met een contextwindow is een ontwerper met geheugenverlies. Elke nieuwe sessie is alle kennis weg, en je legt voor de zoveelste keer uit hoe je het gebouwd wilt hebben. Zijn antwoord daarop is context engineering: zorg dat de agent elke keer precies genoeg context krijgt om te weten hoe het moet werken. Niet te veel, want persistente context eet je window op, maar zeker niet te weinig.

Concreet hangt hij dat op aan Spec Kit, een verzameling shell scripts en markdown files die hij al ruim een jaar gebruikt. Het maakt technische beslissingen expliciet, bespreekbaar en aanpasbaar: eerst een constitution met je principes, dan een spec per feature, clarify, plan, analyze, implement. Eén spec is bij hem altijd één afgeronde feature, en als ontwerper bepaal jij waar die grens ligt.

Het leukste deel was zijn lijst valkuilen, recht uit de loopgraven. Een paar die bleven plakken:

Claude Code is gebiast richting vooruitgang en wil pre-existing testfouten wegwuiven met “die zat er al, skippen”. Zachte instructies en reminders hielpen niet, een hook met een bash script die gewoon “nee, fixen” zegt wél. De hook heeft hij door Claude zelf laten schrijven.
LLM’s schrijven graag verbose code, vermoedelijk getraind op Stack Overflow en afgerekend per token. KISS staat daarom hard in zijn constitution, plus strenge linting met ESLint en PMD die bij elk checkpoint meedraait.
De agent wil standaardzaken zelf bouwen in plaats van de library te gebruiken die het al kan. Framework-first dus, en een MCP-server als Context7 die eerst de actuele documentatie raadpleegt zodat je niet op verouderde syntax uit de trainingsdata blijft hangen.
Oh, en de app die hij hiermee bouwde, met hulp van zijn vrienden van de Eonics Mastermind, wijst automatisch scheidsrechters toe aan wedstrijden. In zijn hobby is hij scheidsrechtercoördinator en deed hij dat met de hand, goed voor zes uur per keer. Die zes uur is nu weg.

LLM is a developer with amnesia

Guardrails, en een deploy op het scherpst van de snede

Barry van Someren runt zijn eigen bedrijf Coffee Sprout, hosting voor Java-applicaties, en is bij velen bekend van zijn Kubernetes-werk. Waar Jan-Willem inzoomde op structuur, ging Barry over controle: hoe houd je een agent die echt dingen mág doen veilig?

Hij liep langs de modi van Claude Code. Plan Mode is read-only en verandert niks zonder dat je het zegt, prima om mee te beginnen. Auto Mode is nieuwer en vraagt zichzelf bij elke stap af of iets veilig is, met je CLAUDE.md en instructies als kader. En dan is er de modus waarin de agent alles mag, die volgens Barry echt in een VM of dev container hoort en niet op je werklaptop. Zijn nuchtere waarschuwing: dit gaat allemaal naar de cloud, dus draai het niet op gevoelige klantdata, en zorg dat je keys zo kort geldig zijn dat een lek niet uitmaakt.

Toen kwam de live demo, en die was precies zo spannend als een live demo hoort te zijn. Het idee: vanaf zijn laptop een app naar een Kubernetes-cluster deployen, met Explorer agents die de kubeconfig opzoeken, Quarkus en JIB om een container image te bouwen zonder Docker, een push naar Harbor en certificaten via Kubernetes. De Harbor CLI wilde overal interactief om toestemming vragen, een token raakte zoek, kortom: alles ging mis. Dit illustreerde mooi het non-deterministische karakter van AI: Barry had dit op dezelfde dag drie keer eerder gedraaid en precies nu haperde het.

Wat de chaos waardevol maakte, waren de trucs die hij ertussendoor liet zien. Een work log skill die per sessie bijhoudt welk probleem hij hoe oploste, die hij al vier à vijf maanden verzamelt en periodiek samenvoegt tot nieuwe skills. Zo worden zijn eigen fouten de guardrails voor de volgende run. Sub-agents voor zijstapjes zodat je hoofdcontext schoon blijft. Een tweede agent die de eerste kritisch nakijkt, met de waarschuwing dat je ‘m moet vragen om te flaggen en terug te duwen, want zeg je “vind iets”, dan vindt een LLM altijd iets. En de Ralph Wiggum loop, waarbij je een doel zet en de agent net zo lang sessies laat draaien als nodig, zolang je heel precies bent over de eindstap, anders loopt hij eeuwig door.

Een LLM is non-deterministisch: op het moment van de demo gaat het natuurlijk net mis

Een LLM is non-deterministisch: op het moment van de demo gaat het natuurlijk net mis

De rode draad

Wat beide verhalen bond, zeiden ze allebei bijna letterlijk: de agent doet de engineering, maar wij zetten de standaarden. Je vertelt wat er gebouwd moet worden en hoe. Jan-Willem doet dat met context en specs, Barry met modi en guardrails, en allebei kwamen ze uit bij dezelfde plek. Het geheugenverlies krijg je niet weg, maar als ontwerper kun je wel sturen.

De rest, en vooral hoe die deploy uiteindelijk afliep, zie je het beste in de video. Kom je de volgende keer ook langs?