Uw bericht is verzonden.
We verwerken je aanvraag en nemen zo snel mogelijk contact met je op.
Het formulier is succesvol verzonden.
Meer informatie vindt u in uw mailbox.
Zoals rapporten uit de hele industrie aangeven, is er nu een groeiende gespecialiseerde sector voor ingenieurs die zich richten op het corrigeren van AI gegenereerde codefouten.
Het patroon is opvallend consistent geworden. Bedrijven wenden zich tot ChatGPT om migratiescripts, integraties of volledige functies te genereren, in de hoop tijd te besparen en kosten te besparen. De technologie lijkt immers snel en toegankelijk.
Dan falen de systemen.
En ze bellen ons.
De laatste tijd krijgen we steeds meer van dit soort verzoeken. Niet om een nieuw product te leveren, maar om de rommel te ontwarren die achterbleef nadat iemand een taalmodel vertrouwde met zijn productiecode.
Op dit moment begint het op een eigen niche-industrie te lijken. Het repareren van door AI gegenereerde bugs is nu een declarabele service. En in sommige gevallen een hele dure.
GitClear's 2024 rapport bevestigt wat we bij klanten hebben gezien: AI codeertools versnellen de levering, maar voeden ook dubbel werk, verminderen hergebruik en drijven de onderhoudskosten op lange termijn op.
Maar laten we duidelijk zijn, we zijn niet "tegen AI". Wij gebruiken het ook. En het is nuttig in de juiste context, met de juiste voorzorgsmaatregelen. Maar wat mij frustreert aan het overdreven vertrouwen op AI en de wijdverspreide implicaties ervan - en waarschijnlijk jou ook - is het magische denken. Het idee dat een taalmodel het echte ingenieurswerk kan vervangen.
Dat kan niet. En zoals het gezegde luidt: the proof is in the pudding. Als bedrijven het tegendeel beweren, betalen ze uiteindelijk iemand zoals wij om het op te ruimen.
Hoe ziet zo'n opruimklus eruit? Dit is wat de AI-afficionados je niet vertellen als het gaat om verloren tijd en geldverspilling.
De boodschap komt meestal als volgt binnen:
"Hé, kun je eens kijken naar een microservice die we hebben gebouwd? We hebben ChatGPT gebruikt om de eerste versie te genereren. We hebben het naar staging gepushed en nu is onze RabbitMQ wachtrij helemaal overspoeld."
Maar het zit zo: de symptomen komen pas veel later. Soms dagen later. En als ze dat doen, is het zelden duidelijk dat de hoofdoorzaak AI gegenereerde code was. Het lijkt er gewoon op... dat er iets niet klopt.
Na een dozijn van deze gevallen beginnen zich patronen af te tekenen:
En natuurlijk, als alles instort, laat de AI geen commentaar achter waarin staat: "Trouwens, ik gok hier."
Dat deel is voor jou.
Deze kwam van een snelgroeiend fintechbedrijf.
Ze waren bezig met het uitrollen van een nieuwe versie van hun klantgegevensmodel, waarbij één groot JSONB-veld in Postgres werd opgesplitst in meerdere genormaliseerde tabellen. Vrij standaard werk. Maar met krappe deadlines en te weinig handen, besloot een van de ontwikkelaars om "de zaken te versnellen" door ChatGPT te vragen een migratiescript te genereren.
Aan de oppervlakte zag het er goed uit. Het script parste de JSON, haalde de contactinformatie eruit en voegde deze in een nieuwe user_contacts
tafel.
Dus ze voerden het uit.
Geen generale repetitie. Geen back-up. Rechtstreeks naar de staging, die, zo bleek, gegevens deelde met de productie via een replica.
Een paar uur later kreeg de klantenservice e-mails. Gebruikers ontvingen geen betalingsmeldingen. Anderen hadden ontbrekende telefoonnummers in hun profiel. Toen hebben ze ons gebeld.
We hebben het probleem getraceerd naar het script. Het deed de basisextractie, maar het maakte drie fatale aannames:
NULL
waarden of ontbrekende sleutels in de JSON-structuur.ON CONFLICT DO NOTHING
, dus alle mislukte invoegingen werden stilzwijgend genegeerd.Resultaat: over 18% van de contactgegevens was verloren gegaan of beschadigd. Geen logboeken. Geen foutmeldingen. Gewoon stil gegevensverlies.
We stelden een klein team samen om de rommel te ontwarren. Dit is wat we deden:
Twee ingenieurs, drie dagen. Kosten voor de klant: ongeveer $4,500 in service fees.
But the bigger hit came from customer fallout. Failed notifications led to missed payments and churn. The client told us they spent at least $10,000 on support tickets, SLA compensation, and goodwill credits over that one botched script.
The ironic thing is that a senior developer could’ve written the correct migration in maybe four hours. But the promise of AI speed ended up costing them two weeks of cleanup and reputation damage.
Deze kwam van een startup die een platform voor documentbeheer voor advocatenkantoren bouwt. Een van hun belangrijkste functies was de integratie met een e-notificatiedienst van de overheid - een REST API van een derde partij met OAuth 2.0 en strikte beperking van de snelheid: 50 verzoeken per minuut, geen uitzonderingen.
In plaats van de integratie toe te wijzen aan een ervaren backend ontwikkelaar, besloot iemand in het team het te "prototypen" met behulp van ChatGPT. Ze lieten de OpenAPI spec vallen, vroegen om een Python client en kregen een schoon uitziend script met requests
, logica voor opnieuw proberen met tenacity
, en token verversen.
Zag er goed uit op papier. Dus verscheepten ze het.
Dit is wat er echt is gebeurd:
X-RateLimit-Remaining
of Retry-After
headers. Het bleef maar blindelings verzoeken sturen.httpx.AsyncClient
, een op semaforen gebaseerde throttle geïmplementeerd, exponentiële backoff met jitter toegevoegd en op de juiste manier omgegaan met Retry-After
en rate-limit headers.Twee ingenieurs, verspreid over tweeënhalve dag. Kosten voor de klant: ongeveer $3,900.
Het grotere probleem is dat hun grootste klant - een advocatenkantoor met tijdgevoelige dossiers - twee indieningstermijnen miste door de storing. De klant moest de schade beperken en een korting aanbieden om de klant te behouden.
En dat allemaal omdat een taalmodel het verschil tussen "werkende code" en "productieklare code" niet begreep. En zo werd er stilletjes nog een laag AI technische schuld aan de stapel toegevoegd.
The scary part isn’t that these things go wrong. It’s how predictable it’s all becoming.
Every one of these incidents follows the same pattern. A developer asks ChatGPT for a code snippet. It returns something that works just well enough not to throw errors. They wire it into the system, maybe clean it up a little, and ship it, assuming that if it compiles and runs, it must be safe.
But here’s the catch: Large language models don’t know your system.
They don’t know how your services interact.
They don’t know your latency budget, your deployment pipeline, your observability setup, or your production traffic patterns.
They generate the most likely-looking code based on patterns in their training data. That’s all. There’s no awareness. No guarantees. No intuition for system design.
And the output often reflects that:
Wat nog erger is, is dat de code er correct uitziet. Het is syntactisch schoon. Het voldoet aan linters. Het zou zelfs kunnen worden gedekt door een basistest. Maar het mist dat ene ding dat er echt toe doet: context.
Daarom duiken deze bugs niet meteen op. Ze wachten op implementaties op vrijdagavond, op drukbezochte vensters, op zeldzame randgevallen. Dat is de aard van AI technische schuld - het is onzichtbaar totdat het iets kritisch breekt.
As we mentioned earlier, we use AI too. Pretty much every engineer on our team has a Copilot-like setup running locally. It’s fast, helpful, and honestly, a great way to skip the boring parts.
But here’s the difference: nothing makes it into the main branch without going through a senior engineer, and in most cases, a CI pipeline that knows what to look for.
LLMs are great at:
Wat ze niet goed in is, is design. Of context. Of veilige standaardinstellingen.
Daarom hebben we onze workflows zo ontworpen dat LLM-uitvoer wordt behandeld als suggesties, niet als een bron van waarheid. Zo ziet dat er in de praktijk uit:
Als je het goed gebruikt, bespaart het tijd. Blind gebruikt, is het een tijdbom.
We’re not here to tell you to ban AI tools. That ship has sailed.
But giving a language model commit access? That’s just asking for trouble.
Here’s what we recommend instead:
Laat ze helpen met repetitieve code. Laat ze oplossingen voorstellen. Maar vertrouw ze geen kritieke beslissingen toe. Elke code die wordt gegenereerd door AI moet worden beoordeeld door een senior engineer, geen uitzonderingen.
Of het nu commit tags, metadata of commentaar in de code is, duidelijk maken welke onderdelen afkomstig zijn van AI. Dat maakt het eenvoudiger om later controles uit te voeren, fouten op te sporen en het risicoprofiel te begrijpen.
Beslis als team waar het acceptabel is om LLM's te gebruiken en waar niet. Boilerplate? Natuurlijk. Auth flows? Misschien. Transactionele systemen? Absoluut niet zonder herziening. Maak het beleid expliciet en onderdeel van je engineeringstandaarden.
Als je AI gegenereerde code in productie laat komen, moet je ervan uitgaan dat er uiteindelijk iets kapot gaat. Voeg synthetische controles toe. Rate-limit monitors. Bijhouden van afhankelijkheden. Maak het onzichtbare zichtbaar, vooral als de oorspronkelijke auteur geen mens is.
De grootste AI-fouten die we hebben gezien kwamen niet van "slechte" code. Ze kwamen van stille fouten - ontbrekende gegevens, kapotte wachtrijen, retry stormen - die urenlang onopgemerkt bleven. Investeer in waarneembaarheid, fallback logica en rollbacks. Vooral als je ChatGPT migraties laat schrijven.
Kortom, AI kan uw team tijd besparen, maar het kan geen verantwoordelijkheid nemen.
Dat is nog steeds mensenwerk.
AI can help you move faster. But it can’t think for you.
It doesn’t understand your architecture. It doesn’t know what “done” means in your context. And it definitely doesn’t care if your data pipeline silently breaks on a Friday night.
That’s why, as CTOs, we need to stay focused on system resilience, not just speed.
It’s tempting to let AI handle the boring parts. And sometimes that’s fine. But every shortcut comes with a tradeoff. When AI-generated code slips through unchecked, it often becomes AI technical debt. The kind you don’t see until your ops team is firefighting in production.
If you’ve already run into that wall, you’re not alone. We’ve helped teams recover from everything from broken migrations to API disasters. We don’t just refactor code. We help refactor the thinking behind it.
Because in the end, that’s what actually makes systems reliable.
Uw bericht is verzonden.
We verwerken je aanvraag en nemen zo snel mogelijk contact met je op.
Door u aan te melden gaat u akkoord met onze Privacybeleidmet inbegrip van het gebruik van cookies en de overdracht van uw persoonlijke gegevens.