Ik heb een app met Vibecode gemaakt en dit is wat ik heb geleerd.

Ik heb een 'productie'-app gebouwd met behulp van Vibecoding. Er werden 97.089 regels gegenereerd. Slechts 25.056 haalden de productie. Vier volledige refactors. De AI faalde niet vanwege slechte prompts. Het faalde omdat AI vergeet, context verliest en dubbele logica creëert, hoe goed je het ook begeleidt.

4 maanden geleden   •   5 min lezen

Door Remco Loup.
Foto door Gabriel Barletta / Unsplash
Inhoudsopgave

Ik heb een 'productie'-app gebouwd met behulp van Vibecoding. Er werden 97.089 regels gegenereerd. Slechts 25.056 haalden de productie. Vier volledige refactors. De AI faalde niet vanwege slechte prompts. Het faalde omdat AI vergeet, context verliest en dubbele logica creëert, hoe goed je het ook begeleidt. Vibecoding gaat niet over AI voor je laten bouwen. Het gaat erom dat je je systeem goed genoeg kent om de ruis te filteren. Zonder die kennis lever je alleen maar gissingen.


Wat Vibecoding eigenlijk betekent

Mensen denken dat vibecoding betekent dat je AI je app laat bouwen terwijl je toekijkt. De realiteit is echter dat dit helemaal niet het geval is als je een echt werkend product nodig hebt dat elke keer het verwachte resultaat oplevert.

Vibecoding betekent nog steeds dat je de controle neemt. Je geeft nauwkeurig aanwijzingen. Je experimenteert. Je begeleidt. Je filtert. Het blijft hands-on werk, alleen met een andere hefboomwerking.

"A fool with a tool is still a fool"

En als je niet weet wat je doet? Het resultaat is hetzelfde als altijd: een puinhoop. Vibecoding zonder de juiste kennis is gewoonweg verkeerd. En het grootste probleem met AI is dat het steeds maar weer code na code na code blijft produceren. Het doet gewoon wat je vraagt. Het is daar niet kritisch over. Dus als je niet weet wat je doet, spreek je jezelf voortdurend tegen met geprogrammeerde functionaliteit die nooit samenwerkt binnen je app.

AI is koning in fallbacks. Ik zou 5 verschillende fallbacks hebben gehad voor elke api-oproep die mislukt. Moeten we niet gewoon de juiste manier laten werken in plaats van fallbacks te maken? AI is ook lui, het onderdrukt liever meldingen dan ze op te lossen. Vooral als het niet meteen de eerste keer werkt.

Ik heb een productie-app gebouwd met AI (maar niet vanwege AI)

Ik heb Windsurf gebruikt om een volledige applicatie te bouwen. Zonder menselijke ontwikkelaars. Zonder dat ik zelf code heb geschreven. We gebruiken Sonnet 4.5 als onze kennisbron.

Het resultaat na veel frustratie: een volledig productiespel met backend-logica, inlogprocedures, asynchrone gegevensschrijfacties, e-mailwachtrijen, beheerdersbeveiliging, monitoring en cartesiaanse algoritmen die worden bijgewerkt op basis van gebruikersinteractie.

De AI heeft alles geschreven. Ik heb geen enkele regel code aangeraakt. Dus zelfs de eenvoudigste css-wijziging. Ik laat de AI het doen.

Maar wat niemand vaak vertelt, is dat ik het hele project vier keer volledig moest herzien. En niet omdat ik slecht had geprikkeld. Ik gebruikte KISS-principes, DRY-normen en PSR-richtlijnen. We schreven beslissingen op en maakten vooraf implementatiedocumenten. We gebruikten richtlijnen voor de talen die we gebruikten.

Uiteindelijk maakte het niet uit.

AI vergeet dingen. Het verliest de context uit het oog. Het begint dubbele functies te creëren zonder te beseffen dat het die logica drie bestanden geleden al heeft geschreven. Hoe complexer uw project wordt, hoe meer het afdrijft. En hoe meer het niet in één keer goed wordt gedaan, hoe meer AI denkt dat het achterwaartse compatibiliteit moet behouden, waardoor uw code nog ingewikkelder wordt. Het maakt niet uit hoe u het de eerste keer aanstuurt of met projectregels.

Na vier volledige refactors heb ik geleerd: AI vergeet de context niet. Het heeft die nooit gehad ;).

De enige reden waarom de definitieve versie werkt, is omdat ik precies wist wat ik aan het bouwen was. Ik had het systeem in mijn hoofd. Ik kon zien wanneer AI zichzelf herhaalde. Ik wist wanneer ik het moest stoppen, wanneer ik het moest omleiden, wanneer ik opnieuw moest beginnen. Ik heb elk bestand gecontroleerd op dubbele fallback-gegevens, duplicaten, enzovoort. Ik heb ook het zeer nuttige npm-pakket knip gebruikt.

https://www.npmjs.com/package/knip

Je kunt niets in productie nemen zonder je product te begrijpen. Punt uit. En je moet accepteren dat het oplossen van bugs afhankelijk is van je AI om het te repareren zonder iets anders te breken. Veel succes daarmee...

De gegevens vertellen de rest van ons verhaal.

Tijdens onze Vibecoding produceerde Windsurf:

  • 97.089 regels code gegenereerd
  • 2.925 prompts verzonden
  • 5.693 credits gebruikt
  • 15.734 toolaanroepen (inclusief 7.000 codewijzigingen)

Wat er uiteindelijk in productie is genomen:

  • 25.056 regels code

Meer dan 70.000 regels werden geschrapt, vervangen of geherstructureerd.

Nu zou je kunnen denken dat dit betekent dat je alleen maar "AI beter moet begeleiden" of "nauwkeuriger moet aansturen". Dat is niet wat ik wilde zeggen.

Het punt is:je kunt AI-uitingen op dit moment niet voorkomen.Hoe goed je ook prompt. Hoe gestructureerd je aanpak ook is. AI zal overproduceren. Het zal redundante code genereren. Het zal uit het oog verliezen wat het al heeft gebouwd. Het zal ruis creëren. AI is gebouwd om altijd een vorm van AI-verbale diarree te produceren.

Die meer dan 70.000 regels verspilde output? Dat is geen bug. Dat is de huidige staat van Vibecoding.

En als je je systeem niet goed genoeg kent om te herkennen wat rommel is en wat niet, dan verstuur je alles en kun je zelfs met AI nooit debuggen. Of erger nog, je bent wekenlang bezig met het debuggen van een codebase die je niet begrijpt.

De kosten per 1000 credits bedragen ongeveer 35 dollar. De ontwikkeling van dit spel heeft me 210 dollar gekost. Elk bedrijf dat grote taalmodellen levert, lijdt verlies. De code die ik heb geproduceerd, zou minstens 210 x 10 = 2100 dollar hebben gekost. Ik vraag me zelfs af of ze toen wel geld hebben verdiend.

Afgezien van het geld, is dit onze kostbare elektriciteit echt waard? Ik vraag me af of dit haalbaar is als je de werkelijke prijs betaalt.

Wat mensen verkeerd begrijpen

AI is geen magie. Het is een 'slimme', snelle assistent. Maar het begrijpt niet wat belangrijk is voor uw bedrijf. Het begrijpt geen randgevallen, beperkingen, risico's, gevolgen voor de prestaties of beveiligingskwetsbaarheden.

Dat is jouw taak!

In mijn geval hielp AI om iets echts te bouwen. Maar de AI zorgde niet voor de beveiliging van het admin-paneel. Het ontwierp niet de logica voor de mailwachtrij. Het besliste niet wanneer asynchrone schrijfbewerkingen moesten worden uitgesteld. Dat deed ik. Door kritisch te zijn en de juiste vragen te stellen op basis van mijn ervaring uit het verleden.

Zonder die richting zou het hele ding zijn ingestort.

En ik zie dit patroon overal terugkomen. Teams die AI-producten bouwen zonder eigenaarschap of richting, alleen maar om te kunnen zeggen dat ze 'iets met AI hebben gedaan'. Het is oppervlakkig. Het is kwetsbaar. Het is niet schaalbaar.

"You're not building products. You're laundering prompts into deployments"

Hoe vaak hoor je niet van hogerhand: we moeten iets doen met AI. We lopen achter. Achter op wat?

De valkuil van de klantenservice

Dan is er ook nog de hype rond AI-klantenservice. Bedrijven beweren dat het perfect is voor 24/7 ondersteuning, snellere reacties en minder personeel.

Maar als je een bot nodig hebt om met je klanten te communiceren, ligt je echte probleem waarschijnlijk ergens anders. AI lost gebrekkige processen niet op. Het verbergt ze. Tijdelijk.

Als je denkt dat minder menselijk contact een overwinning is, heb je al verloren. Als het beantwoorden van vragen veel tijd kost, moet je misschien eerst kijken naar andere redenen waarom mensen zoveel vragen hebben en daar verbeteringen in aanbrengen.

Het eigenlijke punt

Vibecoding is gewoon een hulpmiddel. Dat is alles. Een heel cool hulpmiddel in de juiste handen, maar nog steeds een hulpmiddel. Het is vooral geschikt voor prototyping, maar met een goede dosis kennis kun je misschien standalone apps produceren die echt werken, die je in ieder geval zelf kunt testen en waarvan het resultaat traceerbaar is naar de code die op een transparante manier is geschreven.

Het vervangt het denken niet. Het moet het versterken en ervoor zorgen dat je niet minder gaat nadenken.

Als je het goed gebruikt, kan het krachtig zijn. Maar je moet nog steeds weten wat je wilt bouwen. Je moet de structuur beheersen. Je moet de ruis filteren. Je moet AI-uitingen herkennen wanneer je ze ziet. Je moet het proces leiden.

Anders bouw je geen prototype. Je doet alleen maar gissingen.

De toekomst draait niet om AI. De bedrijven die ertoe doen, blijven mensgericht. Ze begrijpen het probleem voordat ze de tool kiezen. En ze blijven de enige vraag stellen die telt voordat ze AI inschakelen om hen te helpen:

Wat proberen we eigenlijk op te lossen?

Vertel het verder

Blijf lezen