Ditt meddelande har skickats.
Vi behandlar din begäran och återkommer till dig så snart som möjligt.
Formuläret har skickats in framgångsrikt.
Ytterligare information finns i din brevlåda.
Som rapporter från hela branschen visar finns det nu en växande specialiserad sektor för ingenjörer som fokuserar på att korrigera AI-genererade kodfel.
Mönstret har blivit anmärkningsvärt konsekvent. Företag vänder sig till ChatGPT för att generera migreringsskript, integrationer eller hela funktioner, i hopp om att spara tid och sänka kostnaderna. Tekniken verkar trots allt vara snabb och tillgänglig.
Då fallerar systemen.
Och de ringer oss.
På senare tid har vi fått fler och fler sådana förfrågningar. Inte för att leverera en ny produkt, utan för att reda ut den röra som blev kvar efter att någon litade på en språkmodell med sin produktionskod.
Vid det här laget börjar det se ut som en egen nischindustri. Att åtgärda AI-genererade buggar är nu en fakturerbar tjänst. Och i vissa fall en mycket dyr sådan.
GitClears rapport för 2024 bekräftar vad vi har sett hos kunder: AI-kodningsverktyg snabbar upp leveranserna, men driver också på duplicering, minskar återanvändningen och ökar de långsiktiga underhållskostnaderna.
Låt oss dock vara tydliga, vi är inte "emot AI". Vi använder det också. Och det är till hjälp i rätt sammanhang, med rätt skyddsräcken. Men det som frustrerar mig med övertro på AI och dess utbredda konsekvenser - och förmodligen dig också - är det magiska tänkandet. Tanken att en språkmodell kan ersätta verkligt ingenjörsarbete.
Det kan den inte. Och som ordspråket säger, beviset ligger i pudding. När företag låtsas något annat, slutar det med att de betalar någon som oss för att städa upp det.
Så, hur ser ett av dessa saneringsjobb ut? Det här är vad AI-afficionados inte berättar för dig när det gäller förlorad tid och bortkastade pengar.
Meddelandet brukar komma in så här:
"Hej, kan du ta en titt på en mikrotjänst som vi byggt? Vi använde ChatGPT för att generera den första versionen. Vi skickade den till staging, och nu är vår RabbitMQ-kö helt översvämmad."
Men så här är det: symptomen dyker upp mycket senare. Ibland dagar senare. Och när de gör det är det sällan uppenbart att grundorsaken var AI-genererad kod. Det ser bara ut som om... något är fel.
Efter ett dussintal av dessa fall börjar mönster framträda:
Och när allt kollapsar lämnar naturligtvis inte AI en kommentar där det står: "Förresten, jag gissar här."
Den biten är ditt fel.
Den här kom från ett snabbväxande fintechbolag.
De rullade ut en ny version av sin kunddatamodell och delade upp ett stort JSONB-fält i Postgres i flera normaliserade tabeller. Ganska vanliga saker. Men med snäva tidsfrister och inte tillräckligt med händer bestämde sig en av utvecklarna för att "påskynda saker" genom att be ChatGPT att generera ett migreringsskript.
Det såg bra ut på ytan. Skriptet analyserade JSON, extraherade kontaktinformation och infogade den i en ny användare_kontakter
bord.
Så de körde det.
Ingen provkörning. Ingen backup. Direkt in i staging, som visade sig dela data med produktionen via en replika.
Några timmar senare började kundsupporten få e-postmeddelanden. Användare fick inte betalningsmeddelanden. Andra saknade telefonnummer i sina profiler. Det var då de ringde oss.
NULL
värden eller saknade nycklar i JSON-strukturen.PÅ KONFLIKT GÖR INGENTING
så alla misslyckade inmatningar ignorerades i tysthet.Den här kom från ett nystartat företag inom legal tech som bygger en plattform för dokumenthantering för advokatbyråer. En av deras kärnfunktioner var att integrera med en statlig e-aviseringstjänst - ett tredjeparts REST API med OAuth 2.0 och strikt hastighetsbegränsning: 50 förfrågningar per minut, inga undantag.
Istället för att ge integrationen till en erfaren backend-utvecklare bestämde sig någon i teamet för att "prototypa den" med ChatGPT. De släppte in OpenAPI-specifikationen, bad om en Python-klient och fick ett snyggt skript med förfrågningar
, försök igen logik med hjälp av ihärdighet
och uppdatering av token.
Såg bra ut på pappret. Så de skickade den.
Så här gick det faktiskt till:
X-prisbegränsning-återstående
eller Försök igen efteråt
rubriker. Den fortsatte bara att skicka förfrågningar i blindo.httpx.AsyncKlient
implementerade en semaforbaserad throttle, lade till exponentiell backoff med jitter och hanterade Försök igen efteråt
och hastighetsbegränsningsrubriker.Två ingenjörer, fördelat på två och en halv dag. Kostnad för kunden: cirka $3,900.
Det största problemet var att deras största kund - en advokatbyrå med tidskänsliga ansökningar - missade två inlämningsfönster i domstolarna på grund av avbrottet. Kunden var tvungen att begränsa skadan och erbjuda en rabatt för att behålla kontot.
Allt för att en språkmodell inte förstod skillnaden mellan "arbetskod" och "produktionsfärdig kod". Och bara så där, ett annat lager av AI teknisk skuld lades tyst till i stacken.
Vad som är värre är att koden ser korrekt ut. Den är syntaktiskt ren. Den passerar linters. Den kanske till och med täcks av ett grundläggande test. Men den saknar det enda som faktiskt betyder något: sammanhanget.
Det är därför de här buggarna inte dyker upp direkt. De väntar på fredagskvällsdriftsättningar, för högtrafikerade fönster, för sällsynta kantfall. Det är så den tekniska skulden AI ser ut - den är osynlig tills den förstör något kritiskt.
Vad de är inte bra på är design. Eller sammanhang. Eller säkra standardinställningar.
Det är därför vi har byggt våra arbetsflöden för att behandla LLM-utdata som förslag, inte som sanningskällor. Så här ser det ut i praktiken:
Rätt använt är det en tidsbesparing. Används det i blindo är det en tidsinställd bomb.
Låt dem hjälpa till med repetitiv kod. Låt dem föreslå lösningar. Men inte anförtro dem kritiska beslut. Alla koder som genereras av AI ska granskas av en senior ingenjör, inga undantag.
Oavsett om det är commit-taggar, metadata eller kommentarer i koden, klargöra vilka delar som kommer från AI. Det gör det lättare att granska, felsöka och förstå riskprofilen i ett senare skede.
Bestäm tillsammans i teamet var det är acceptabelt att använda LLM:er och var det inte är det. Boilerplate? Visst. Auth-flöden? Ja, kanske. Transaktionella system? Absolut inte utan granskning. Gör policyn tydlig och en del av dina tekniska standarder.
Om du låter AI-genererad kod röra produktionen måste du anta att något så småningom kommer att gå sönder. Lägg till syntetiska kontroller. Övervakare för hastighetsbegränsning. Spårning av beroenden. Gör det osynliga synligtsärskilt när den ursprungliga författaren inte är mänsklig.
De största AI-drivna misslyckanden vi har sett kom inte från "dålig" kod. De kom från tysta fel - saknade data, trasiga köer, omprövningsstormar - som inte upptäcktes på flera timmar. Investera i observerbarhet, reservlogik och rollbacks. Speciellt om du låter ChatGPT skriva migreringar.
Kort sagt, AI kan spara ditt team tid, men det kan inte ta ansvar.
Det är fortfarande ett mänskligt jobb.
Ditt meddelande har skickats.
Vi behandlar din begäran och återkommer till dig så snart som möjligt.
Genom att registrera dig godkänner du vår Integritetspolicy, inklusive användning av cookies och överföring av din personliga information.