Ken je deze opmerking op Quora nog (die ook een meme werd)?
(Bron: Quora)
In de pre-grote taalmodel (LLM) In het Stack Overflow-tijdperk was de uitdaging groot Welke codefragmenten om effectief over te nemen en aan te passen. Hoewel het genereren van code triviaal eenvoudig is geworden, ligt de diepere uitdaging in het identificeren en betrouwbaar integreren van hoogwaardige, bedrijfscode in productieomgevingen.
Dit artikel onderzoekt de valkuilen en praktische beperkingen die worden waargenomen wanneer ingenieurs moderne codeermiddelen gebruiken voor praktijkwerk in ondernemingen, waarbij de meer complexe problemen worden aangepakt die verband houden met bedrijfsintegratie, schaalbaarheid, toegankelijkheid, evoluerende beveiligingspraktijken, gegevensprivacy en onderhoudbaarheid. realtime operationele instellingen. We hopen de hype in evenwicht te brengen en een meer technisch gefundeerd beeld te geven van de mogelijkheden van AI-codeermiddelen.
Beperkt begrip van domein- en servicebeperkingen
AI-agenten hebben grote moeite met het ontwerpen van schaalbare systemen vanwege de totale explosie aan keuzes en het kritieke gebrek aan bedrijfsspecifieke context. Om het probleem in brede zin te beschrijven: de codebases en monorepo’s van grote bedrijven zijn vaak te groot om agenten er rechtstreeks van te laten leren, en cruciale kennis kan vaak gefragmenteerd zijn in interne documentatie en individuele expertise.
Meer specifiek ondervinden veel populaire encryptiemiddelen servicebeperkingen die hun effectiviteit in grootschalige omgevingen belemmeren. Indexeringsfuncties werken mogelijk niet of nemen af in kwaliteit voor opslagplaatsen met meer dan 2.500 bestanden of vanwege geheugenbeperkingen. Bovendien worden bestanden die groter zijn dan 500 KB vaak uitgesloten van indexeren/zoeken, wat gevolgen heeft voor gevestigde producten met grotere, tientallen jaren oude codebestanden (hoewel nieuwere projecten hier weliswaar minder vaak mee te maken kunnen krijgen).
Voor complexe taken waarbij uitgebreide bestandscontexten of refactoring betrokken zijn, wordt van ontwikkelaars verwacht dat ze de relevante bestanden leveren en ook expliciet de refactoringprocedure en de omliggende build-/opdrachtreeksen definiëren om de implementatie te valideren zonder functieregressies te introduceren.
Gebrek aan context en hardwaregebruik
Agenten voor kunstmatige intelligentie hebben een ernstig gebrek aan bewustzijn aangetoond met betrekking tot OS-, opdrachtregel- en omgevingsinstallaties (conda/venv). Deze tekortkoming kan leiden tot frustrerende ervaringen, zoals de agent die probeert Linux-opdrachten uit te voeren via PowerShell, wat consequent kan resulteren in fouten met de opdracht niet herkend. Bovendien vertonen agenten vaak inconsistente “wachttolerantie” bij het lezen van opdrachtuitvoer, waardoor voortijdig wordt verklaard dat ze de resultaten niet kunnen lezen (en overgaan tot opnieuw proberen/overslaan) voordat een opdracht zelfs maar is voltooid, vooral op langzamere machines.
Het gaat niet zomaar om drukte kenmerken; de duivel zit eerder in deze praktische details. Deze ervaringsverschillen manifesteren zich als echte wrijvingspunten en vereisen constante menselijke waakzaamheid om de activiteit van de agent in realtime te volgen. Anders kan de agent de aanvankelijke informatie over de tooloproep negeren en voortijdig crashen, of doorgaan met een onvolledige oplossing waarbij sommige/alle wijzigingen moeten worden teruggedraaid, aanwijzingen opnieuw moeten worden ingeschakeld en tokens moeten worden verspild. Het is niet gegarandeerd dat u op vrijdagavond een verzoek verzendt en verwacht dat er tijdens uw controle op maandagochtend code-updates zullen plaatsvinden.
Hallucinaties voorbij herhaald acties
Het werken met AI-codeermiddelen brengt vaak een langdurige uitdaging van hallucinaties of onjuiste of onvolledige informatie (zoals kleine codefragmenten) met zich mee binnen een grotere reeks wijzigingen die door een ontwikkelaar met triviale tot minimale inspanning moeten worden opgelost. Wat echter vooral problematisch wordt, is wanneer er sprake is van slecht gedrag herhaald binnen een enkele thread, waardoor gebruikers gedwongen worden een nieuwe thread te starten en alle context opnieuw te verstrekken of handmatig in te grijpen om de agent te “deblokkeren”.
Tijdens het instellen van de code voor een Python-functie kwam een agent die belast was met het implementeren van complexe wijzigingen in de productiegereedheid bijvoorbeeld een bestand tegen (zie hieronder) met speciale tekens (haakjes, punt, asterisk). Deze karakters zijn heel gebruikelijk in de computerwereld om aan te duiden softwareversies.

(Afbeelding handmatig gemaakt met standaardcode. Bron: Microsoft Leer EN Bewerk het hosts-bestand van de toepassing (host.json) in de Azure-portal)
De agent heeft deze waarde ten onrechte gemarkeerd als onveilig of kwaadaardig, waardoor het hele generatieproces werd verbroken. Deze verkeerde identificatie van een vijandige aanval vond vier tot vijf keer plaats, ondanks meerdere pogingen om opnieuw te starten of door te gaan met bewerken. Dit versieformaat is in feite een boilerplate, aanwezig in een Python HTTP-triggercodesjabloon. De enige effectieve oplossing was om de agent hiertoe opdracht te geven Niet lees het bestand en vraag hem in plaats daarvan eenvoudigweg de gewenste configuratie op te geven en hem te verzekeren dat de ontwikkelaar hem handmatig aan dat bestand zal toevoegen, bevestigen en hem zal vragen door te gaan met de resterende codewijzigingen.
Het onvermogen om binnen dezelfde thread een herhaaldelijk defecte agent-outputlus te doorbreken, benadrukt een praktische beperking die aanzienlijke ontwikkelingstijd verspilt. In wezen besteden ontwikkelaars nu de neiging om tijd te besteden aan het debuggen/verfijnen van door AI gegenereerde code in plaats van aan Stack Overflow-codefragmenten of hun eigen codefragmenten.
Gebrek aan codeerpraktijken op bedrijfsniveau
Best practices voor beveiliging: Encryptieagenten gebruiken vaak minder veilige authenticatiemethoden, zoals sleutelgebaseerde authenticatie (clientgeheimen) in plaats van moderne op identiteit gebaseerde oplossingen (zoals Login ID of federatieve inloggegevens). Dit toezicht kan aanzienlijke kwetsbaarheden introduceren en de onderhoudskosten verhogen, omdat sleutelbeheer en -rotatie complexe taken zijn die in bedrijfsomgevingen steeds beperkter worden.
Verouderde SDK’s en het wiel opnieuw uitvinden: Agenten maken mogelijk niet consequent gebruik van de nieuwste SDK-methoden, maar genereren in plaats daarvan implementaties die gedetailleerder en moeilijker te onderhouden zijn. Op basis van het Azure Function-voorbeeld hebben de agenten code gegenereerd met behulp van de reeds bestaande SDK v1 voor lees-/schrijfbewerkingen, in plaats van de veel schonere en beter onderhoudbare SDK v2-code. Ontwikkelaars moeten de nieuwste best practices online onderzoeken om een mentale kaart te krijgen van de afhankelijkheden en de beoogde implementatie die onderhoud op de lange termijn garandeert en de komende inspanningen op het gebied van technologiemigratie vermindert.
Beperkte intentieherkenning en repetitieve code: Zelfs voor kleinere modulaire taken (die over het algemeen worden aangemoedigd om hallucinaties of foutopsporingstijd te minimaliseren), zoals het uitbreiden van een bestaande functiedefinitie, kunnen agenten instructies volgen letterlijk en een logica produceren die bijna repetitief is, zonder te anticiperen op het naderende onduidelijk behoeften van de ontwikkelaar. Dat wil zeggen dat de agent bij deze modulaire taken mogelijk niet automatisch vergelijkbare logica in gedeelde functies identificeert en refactort in gedeelde functies of klassedefinities verbetert, wat leidt tot technologieschulden en moeilijker te beheren codebases, vooral bij vibe-codering of luie ontwikkelaars.
Simpel gezegd: de virale YouTube-video’s die de snelle nul-op-één-app-ontwikkeling laten zien vanuit een boodschap van één zin slagen er eenvoudigweg niet in om de complexe uitdagingen van productiesoftware te vatten, waarbij beveiliging, schaalbaarheid, onderhoudbaarheid en toekomstbestendige ontwerparchitecturen van het grootste belang zijn.
Bevestiging bias uitlijning
Voorkeur voor bevestiging is een groot probleem, aangezien LLM’s vaak de premissen van de gebruiker bevestigen, zelfs als de gebruiker twijfel uit en de agent vraagt om zijn begrip te verfijnen of alternatieve ideeën voor te stellen. Deze neiging van modellen om zich aan te passen aan wat de gebruiker volgens hen wil horen, leidt tot een verminderde algehele uitvoerkwaliteit, vooral voor meer objectieve/technische taken zoals coderen.
Er is uitgebreide literatuur om te suggereren dat als een model begint met het geven van een verklaring als “Je hebt absoluut gelijk!”, de rest van de uitvoertokens de neiging heeft deze verklaring te rechtvaardigen.
Constante behoefte om te babysitten
Ondanks de aantrekkingskracht van autonome codering vereist de realiteit van AI-agenten in bedrijfsontwikkeling vaak constante menselijke waakzaamheid. Instanties zoals een agent die probeert Linux-opdrachten uit te voeren op PowerShell, vals-positieve beveiligingsvlaggen of het introduceren van onnauwkeurigheden vanwege domeinspecifieke redenen benadrukken kritieke hiaten; ontwikkelaars kunnen simpelweg niet weglopen. In plaats daarvan moeten ze voortdurend het redeneerproces in de gaten houden en codetoevoegingen uit meerdere bestanden begrijpen om te voorkomen dat ze tijd verspillen met slechte antwoorden.
De slechtst mogelijke ervaring met agents is dat een ontwikkelaar code-updates van meerdere bestanden vol met bugs accepteert, maar dat de tijd bij het debuggen verdampt vanwege hoe “mooi” de code eruit ziet. Dit kan ook aanleiding geven verzonken kostenmisvatting te hopen dat de code na slechts een paar reparaties werkt, vooral wanneer de updates meerdere bestanden in een complexe/onbekende codebase beïnvloeden met verbindingen met meerdere onafhankelijke services.
Het is alsof je samenwerkt met een 10-jarig wonderkind dat een schat aan kennis in zijn hoofd heeft en zelfs elk onderdeel van de gebruikersintentie aanpakt, maar prioriteit geeft aan het presenteren van die kennis om het echte probleem op te lossen en de vooruitziende blik mist die nodig is voor succes in praktijksituaties.
Deze behoefte aan ‘babysitten’, gecombineerd met de frustrerende herhaling van hallucinaties, betekent dat de tijd die wordt besteed aan het debuggen van door AI gegenereerde code de verwachte tijdsbesparing door het gebruik van de agent kan overschaduwen. Het spreekt voor zich dat ontwikkelaars bij grote bedrijven zeer bewust en strategisch moeten omgaan met het gebruik van moderne tools en gebruiksscenario’s.
Conclusie
Het lijdt geen twijfel dat AI-codeermiddelen niets minder dan revolutionair zijn geweest, door het versnellen van prototyping, het automatiseren van standaardcodering en het transformeren van de manier waarop ontwikkelaars bouwen. De echte uitdaging is nu niet het genereren van code, maar het weten wat moet worden verzonden, hoe deze moet worden beveiligd en waar deze kan worden geschaald. Slimme teams leren de hype te filteren, agenten strategisch in te zetten en hun technisch oordeel te verdubbelen.
Als CEO van GitHub Thomas Dohmke merkte dit onlangs op: Meer geavanceerde ontwikkelaars zijn “overgestapt van het schrijven van code naar het ontwerpen en verifiëren van het implementatiewerk van AI-agenten.” In het tijdperk van agenten behoort succes niet toe aan degenen die weten hoe ze moeten programmeren, maar aan degenen die weten hoe ze systemen moeten ontwerpen die lang meegaan.
Rahul Raja is een software-ingenieur bij LinkedIn.
Advitya Gemawat is machine learning (ML)-ingenieur bij Microsoft.
Noot van de redactie: De meningen in dit artikel zijn de persoonlijke meningen van de auteurs en weerspiegelen niet de mening van hun werkgevers.



