Connect with us

Tankeledare

AI Skriver Kod, Men Kan Din Infrastruktur Hålla Jämn Takt?

mm

Vi upplever en av de konstigaste inversionerna i software engineeringens historia. Under årtionden var målet determinism; att bygga system som beter sig på samma sätt varje gång. Nu lägger vi till probabilistiska AI-agenter på toppen av denna grund, som genererar kod i en alarmerande skala och hastighet. Och ärligt talat? Större delen av vår infrastruktur var inte byggd för detta.

Jag har tillbringat år med att arbeta på DevOps-verktyg, samförfattat forskning och hjälpt ingenjörsteam att nå sin högsta prestanda. Vad jag ser nu med AI-driven utveckling är mer än bara en evolution. Det exponerar varje spricka i våra befintliga arbetsflöden.

Problemet Är Redan Här

En 2025 GitClear-studie fann att nästan 7% av commits nu innehåller AI-genererad kod. Deras tidigare analys av 153 miljoner rader ändrad kod avslöjade kostnaden: “kodchurn” – kod som skrevs om eller raderades inom två veckor – fördubblades 2024 jämfört med pre-AI-baslinjen.

Säkerhetsimplikationerna är lika skarpa. Nyligen analys av 80 kuraterade kodningsuppgifter över mer än 100 stora språkmodeller fann att AI-genererad kod introducerar säkerhetsrisker i 45% av fallen. Den verkliga effekten? En av fem CISO rapporterar nu om stora incidenter som direkt orsakats av AI-genererad kod.

Hastighetsvinningarna är verkliga, men så är också stabilitetskostnaderna.

Förstärkningseffekten

En sak jag har lärt mig är att AI förstärker allt. Om du har bra metoder, gör AI dem bättre och snabbare. Om dina processer är röriga, förvärrar AI röran också. Detta speglar ett mönster som visas år efter år i DORA:s årliga DevOps-rapporter: färre variabler leder till bättre resultat. Framgångsrika team standardiserar på färre operativsystem, färre programmeringsspråk, färre sätt att göra saker på. De minskar komplexitet medvetet.

AI-agenter följer samma mönster. Ge dem en konsekvent miljö där Python betyder samma version på varje utvecklares maskin, där beroenden är låsta och spårade, och de excellerar. Tvinga dem att navigera 17 olika konfigurationer, var och en med subtila skillnader, och du bränner tokens på att förstå miljöegenskaper istället för att lösa verkliga problem.

Determinismens Paradoks

Detta skapar en fascinerande spänning. Under årtionden har datavetenskapen strävat efter determinism som det ultimata målet. Nu kör vi probabilistiska arbetsbelastningar, AI-modeller som bokstavligen inte kan garantera samma utdata två gånger, på toppen av system som är utformade för förutsägbarhet.

Min lösning? Håll så mycket av stacken deterministisk som möjligt. Om du kan upprätthålla 80% av din infrastruktur på en deterministisk nivå, har dina AI-agenter färre variabler att hantera. De spenderar inte kontextfönster på “Varför installerades inte detta beroende?” eller “Låt mig försöka med den här byggkommandot igen.” De fokuserar på det faktiska arbetet du ber dem att göra.

Tänk på det: när en agent försöker kompilera något och native-bindningar misslyckas för att ImageMagick inte är installerad, är det en token-expensiv omväg. Om din miljö redan innehåller allt som behövs (kompilatorer, bibliotek, hela beroendeträdet ner till libc), fungerar agenten bara. Inget felsökning, inget trial and error, bara framsteg.

Specifikation Och Validering Är Nyckeln

Vad som blir tydligt är att AI-driven utveckling tvingar oss att tänka mer på två historiskt undervärderade färdigheter: specifikation och validering. Du behöver artikulera vad du faktiskt bygger, och du behöver robusta sätt att verifiera att du fick det.

Jag har märkt något intressant: personer med produktlednings- eller produktutvecklingsbakgrund är ofta mer framgångsrika med AI-agenter just nu. De är redan tränade att tänka i termer av krav, framgångskriterier och avvägningar. De är bekväma med att fråga “Varför gjorde du det valet?” och anpassa sig efter resonemanget.

Validering, att veta om sakerna faktiskt är korrekta, har alltid varit software engineeringens svåraste problem. QA har varit kriminellt undervärderad i årtionden, men det är den mest utmanande delen: att bestämma om programvaran löser den faktiska användarbehovet. AI löser inte detta. Om något, gör det det mer kritiskt, eftersom du nu validerar probabilistiska utdata mot deterministiska krav.

Lita På, Men Verifiera (Och Kontrollera)

Det finns en känsla jag börjar omfamna: vi bör anta att kod genererad av AI är fientlig tills den bevisats vara annorlunda. Inte för att AI är elakt, utan för att vi helt enkelt inte vet. Vi kan inte granska varje rad när agenter genererar tusentals rader per dag.

Detta innebär att kontrollpunkterna flyttas. Om vi inte kan blockera allt på utvecklingstiden, behöver vi starkare kontroller vid körning. Operatörer, SRE, plattformsteam, vem som helst som är ansvarig för produktion, behöver bättre insyn i vad som körs, komplett beroendespårning och tydlig proveniens för varje artefakt.

Här är det reproducerbarhet blir avgörande. När du kan matematiskt bevisa att artefakten du testade lokalt är identisk med vad som körs i produktion—samma indata, samma utdata, samma beroendestängning—kan du börja fatta intelligenta beslut. Kanske behöver du inte köra om enhetstester i CI om du redan körde dem lokalt och ingenting har ändrats. Kanske kan du mappa testtäckning till kodändringar och hoppa över irrelevanta testsviter.

Vad Kommer Nästa

Vi är vid en vändpunkt. Team som redan hade bra metoder ser massiva produktivitetsvinningar med AI. Team som kämpade kämpar nu snabbare.

Infrastrukturen som driver AI-driven utveckling behöver byggas för reproducerbarhet från grunden. Inte skruvas på efteråt med skanningsverktyg och granskningar, utan inbyggd i hur utvecklare arbetar från dag ett. När din utvecklingsmiljö är identisk över Mac och Linux, när varje beroende är spårat och låst, när du har fullständig proveniens för varje artefakt, blir AI-agenter kraftmultiplikatorer istället för kaosgenererare.

Här är mitt största råd till team som försöker lyckas i AI-eran:

  • Standardisera brutalt. Färre variabler korrelerar med högre prestanda. Lås ner din tekniska stack, tvinga fram konsekventa miljöer över alla plattformar och eliminera konfigurationsdrift innan AI förstärker den. Om Python-versionsmismatch orsakar problem nu, kommer de att orsaka 10 gånger fler problem när AI genererar kod i skala.

  • Bygg validering in i ditt arbetsflöde, inte i slutet. Med AI som genererar kod snabbare än människor kan granska den, kan du inte lita på manuell kodgranskning ensam. Implementera automatiserad testning som validerar inte bara att koden körs, utan att den löser det faktiska kravet. Gör din CI/CD-pipeline till din säkerhetsnät, med starka grindar vid körning för produktionsdistributioner.

  • Investera i reproducerbarhet som infrastruktur. Behandla miljökonsekvens som en första klassens infrastrukturfråga. När du kan matematiskt bevisa att din lokala miljö, CI-miljö och produktionsmiljö är identiska, eliminerar du en hel klass av “fungerar på min maskin”-problem. Denna deterministiska grund är vad som tillåter dig att säkert lägga till probabilistiska AI-arbetsbelastningar ovanpå.

Frågan är inte om AI kommer att skriva mest av vår kod. Det gör det redan för många team. Frågan är om vår infrastruktur kan hålla jämna steg.

Michael Stahnke är en erfaren ingenjörsexekutiv, som har tillbringat de senaste 15+ åren med att arbeta i utvecklings- och operativa verktygsutrymmet där han också har bedrivit forskning och varit författare till Puppets State of DevOps-rapporter.

Michael är för närvarande VP of Engineering på Flox. Han var tidigare i seniora ingenjörsledningspositioner på CircleCI och Puppet, där han växte ingenjörsteam med 5x eller mer. Han har tillbringat tid med att bygga högpresterande team, organisationer och forskat om ingenjörseffektivitet, samt hackat på paketering och releasesystem. Han har talat på DevOps- och automationshändelser sedan 2007. Han grundade paketrepot Extra Packages for Enterprise Linux (EPEL) och skrev en bok om OpenSSH 2005.