ai-engineer.sh
GitHub

Software Quality in the AI Era

Postoji rastući narativ da je kod postao jeftin jer AI može da ga generiše za sekunde. Komponente, API-ji, testovi, infrastruktura — sve se pokreće brže nego što bi pre nekoliko godina. Ali to proizvodi opasnu zabludu:

Faster code generation does not automatically produce better software systems.

U mnogim slučajevima, AI ubrzava jedan od najstarijih problema u softverskom inženjeringu: software entropy. U AI eri, kvalitet softvera je važniji, ne manje važan.

What software quality actually is

"Kvalitet softvera" se često meša sa površinskim osobinama — čistom sintaksom, modernim framework-ima, formatovanim kodom, testovima koji prolaze. Ništa od toga nije pogrešno, ali to nije definicija.

Korisnija perspektiva dolazi iz knjige Johna Ousterhouta A Philosophy of Software Design: dobar dizajn je o upravljanju složenošću. Ousterhout definiše složenost kao bilo šta vezano za strukturu sistema što ga čini teškim za razumevanje i izmenu, i identifikuje dva osnovna uzroka: dependencies i obscurity. Složenost se pojavljuje kao:

  • Change amplification — mala izmena zahteva dodirivanje mnogo mesta
  • Cognitive load — inženjeri moraju da drže previše stvari u glavi
  • Unknown unknowns — delovi koji će se pokvariti nisu čak ni vidljivi

Operativna posledica je jednostavna: visoko-kvalitetan sistem je onaj koji je lak za bezbedno menjanje. Povezani koncepti su grupisani, komponente imaju jasne odgovornosti, izmene su lokalizovane, a feedback loops brzo otkrivaju greške.

U praksi to znači da inženjeri mogu da:

  • isporučuju feature-e brže bez kvarenja okolnih
  • debug-uju sa sigurnošću
  • onboard-uju nove saradnike bez nedelja prenosa "plemenskog znanja"
  • razvijaju proizvod bez stalnog straha od regresije

Kada sistem izgubi tu osobinu, svaka buduća izmena postaje skuplja — a taj trošak se akumulira.

Software entropy

Softver prirodno degradira tokom vremena. Fenomen se zove software entropy, a knjiga The Pragmatic Programmer je popularizovala ovaj okvir.

Entropy nije znak nesposobnih inženjera. To je talog stalnog pritiska: rokova, incidenata, promenljivih zahteva, umora. Pod pritiskom, timovi optimizuju za isporučiti sad — dodaju quick fix-ove, privremene apstrakcije, dupliranu logiku, conditional complexity, arhitekturne prečice. Svaka odluka deluje bezopasno u izolaciji. Skupno pretvaraju čist sistem u krhki.

Zato zreli sistemi "deluju teško":

  • Male izmene zahtevaju dodirivanje mnogo fajlova
  • Regresije se pojavljuju na nepovezanim mestima
  • Inženjeri se plaše da menjaju kritične delove
  • Velocity tiho usporava

Entropy je kumulativna. Bez svesne kontra-sile, softver teži ka neredu.

Most commits improve features while damaging architecture

Oštra opservacija: ogromna većina commit-ova u bilo kom projektu dodaje funkcionalnost ili krpi bag-ove. Vrlo malo commit-ova pojednostavljuje arhitekturu, smanjuje coupling ili poboljšava apstrakcije.

Ta asimetrija je motor entropy-ja. Feature rad neprekidno podiže složenost; rad na održivosti se dešava samo povremeno. Tokom godina, projekat isporučuje spolja a degradira iznutra — sporija isporuka, veći PR-ovi, više bag-ova, teži onboarding.

Većina commit-ova radi ovoMalo commit-ova radi ovo
Dodaju feature-ePojednostavljuju arhitekturu
Krpe bag-ovePoboljšavaju apstrakcije
Ispunjavaju trenutne zahteveSmanjuju coupling
Jačaju testove
Poboljšavaju developer ergonomics

Refactoring is the counter-pressure

Refactoring nije kozmetika. To je primarni mehanizam za otpor entropy-ju. Dobro odrađen, on:

  • Pojednostavljuje narednu izmenu
  • Poboljšava jasnoću
  • Smanjuje accidental complexity
  • Vraća arhitektonski integritet

Jedan dobro ciljan refactor može uštedeti stotine inženjerskih sati u budućnosti. U AI-asistiranim okruženjima ovo je važnije, ne manje važno — jer AI agenti zavise od strukturne jasnoće da bi radili dobar posao.

AI changes the speed of entropy

AI dramatično ubrzava produkciju koda. To je njegova snaga. To je i njegov rizik.

AI je odličan u:

  • Generisanju boilerplate-a
  • Repliciranju postojećih obrazaca
  • Implementiranju ponavljajuće logike
  • Skaffolding-u novih modula

Ali teški problemi u softverskom inženjeringu nisu generisanje. To su:

  • System design
  • Architectural tradeoffs
  • Konceptualno modelovanje
  • Granice apstrakcija
  • Dugoročna održivost

Ovo ostaju slabe tačke za AI. Pa je rezultat:

AI increases the rate of software entropy unless the surrounding system is designed to resist it.

Ako loši obrasci već postoje u codebase-u, AI će ih replicirati na velikoj skali. Najbrži put do katastrofalno zapletenog codebase-a sada je AI agent koji entuzijastično radi unutar već zapletenog.

The codebase is the real prompt

Mnogi inženjeri pretpostavljaju da se ponašanje AI-ja kontroliše uglavnom kroz prompt-ove, instrukcije ili rules fajlove. U praksi, najjači uticaj na AI-generisani kod je sam postojeći codebase.

Agent tretira repository kao source of truth. To znači:

  • Naming konvencije se kopiraju
  • Arhitekturni obrasci se repliciraju
  • Anti-pattern-i se šire
  • Lokalne nedoslednosti postaju norma

Čak i kada eksplicitne instrukcije kažu drugačije, agent će često reflektovati obrasce koje vidi. Reći LLM-u "prati naše konvencije" ne pomaže ako konvencije u repo-u i same nisu konzistentne.

Implikacija je direktna: a healthy codebase improves AI output; a chaotic codebase poisons it.

AI performs worse than humans in bad codebases

Ljudski inženjeri imaju prednost koju AI nema: grade dugoročne mentalne modele. Kroz mesece uče skrivene konvencije, istorijski kontekst, arhitektonske slabosti, organizacione čudnoće — i kompenzuju loše sisteme akumuliranim razumevanjem.

AI agenti ne mogu to. Uglavnom su stateless. Ne internalizuju arhitekturu, ne nose trajno razumevanje kroz sesije, i muku muče sa fragmentovanim ili nedoslednim sistemima.

Posledica:

AI is often more sensitive to codebase quality than human developers.

U sistemima niskog kvaliteta, AI ima tendenciju da duplira logiku, pogrešno razume apstrakcije, proizvodi nedosledne implementacije i uvodi suptilne regresije. Loš codebase ne samo da usporava AI — ograničava koliko dobar njegov output ikada može biti.

Feedback loops become critical

Kako raste obim AI-generisanog koda, sistemi povratnih informacija oko njega postaju esencijalni. Bez njih, entropy se ubrzava nekontrolisano.

Inženjerska okruženja visokog kvaliteta već se oslanjaju na:

  • Snažne test suite-ove
  • Statičke tipove
  • Linting
  • CI pipeline-e
  • Code review
  • Arhitektonska ograničenja
  • Observability

Ovi mehanizmi daju brze signale za korekciju. AI agenti zavise od njih posebno jer ne mogu pouzdano da procene arhitektonski kvalitet sami. Što su feedback loops slabiji, to je high-speed generisanje koda opasnije. (Dublja analiza: Feedback Loops.)

Why "code is cheap" is misleading

Slogan sadrži delimičnu istinu. Pisanje sintakse postaje jeftinije. Održavanje sistema nije.

Skupi deo softverskog inženjeringa nikada nije bio kucanje koda. Skupi deo je očuvanje prilagodljivosti sistema tokom vremena. Kod niskog kvaliteta stvara skrivene troškove koji se pojavljuju kasnije:

  • Sporiji budući razvoj
  • Veći operativni rizik
  • Onboarding friction
  • Debugging složenost
  • Arhitektonska paraliza

Na kraju, čak i jednostavne izmene postanu bolne. Velocity se ruši. AI ovo ne rešava automatski — u mnogim slučajevima, ubrzava dolazak.

The new value of software engineering

Uloga inženjera se menja. Istorijski, vrednost inženjeringa je bila tesno vezana za brzinu implementacije. U AI eri, najveće leverage veštine postaju:

  • Architecture design
  • Razmišljanje o održivosti
  • Kvalitet apstrakcija
  • Dizajn feedback loops-a
  • System decomposition
  • Upravljanje entropy-jem

Prednost će dobiti inženjeri koji mogu da grade sisteme koji ostaju razumljivi, prilagodljivi i razvojni pod kontinuiranim AI-asistiranim razvojem — ne oni koji jednostavno mogu da brzo proizvode kod.

AI changes how software is written. It does not remove the need for software engineering discipline. If anything, it intensifies it. The faster code can be generated, the more important architecture becomes.

Further reading


Sledeće: kako izgraditi feedback loops na koje se AI oslanja — vidite Feedback Loops.

Pogledajte i: Tackling Big Tasks za razbijanje rada na vertical slice-eve.

Izmeni stranicu na GitHub-u