Od Copilota do agentskog kodiranja
Prvo je AI dovršavao redak. Sad piše cijelu funkciju, pokreće testove, čita greške — i sam ih popravlja. Ti samo gledaš.
Pamtiš onaj osjećaj kad ti Copilot dovrši redak i pomisliš: e, pa dobro, ovo je zgodno? Za one koji ga nisu sreli — Copilot je AI alat koji gleda što upravo pišeš i predlaže kako bi rečenicu koda mogao nastaviti, malo kao autocorrect na mobitelu, samo za programere i, začudo, često pametniji. Bilo je to jučer, tehnički. Kalendarski dvije godine, a u godinama softvera cijela geološka era. Tada je stroj bio pripravnik koji ti šapće kraj rečenice preko ramena — ti pišeš, on nagađa, ti prihvatiš ili odbiješ, život ide dalje. Lijepo, korisno, ali suštinski: ti si i dalje taj koji tuca po tipkovnici od jutra do večeri.
Onda je netko postavio pitanje koje je zvučalo bezazleno: a što ako stroj ne čeka da mu daš redak, nego uzme cijeli zadatak? Napravi mi ovu značajku. Ne dovrši mi „if” (onu osnovnu naredbu tipa „ako se dogodi ovo, učini ono”, temeljni ciglu-blok svakog programa), nego mi napravi cijeli modul, testiraj ga, i ako ne radi — sam se pokupi i popravi. Zvuči kao znanstvena fantastika izgovorena na sastanku, od onih rečenica koje inženjeri obično dočekaju podignutom obrvom i tihim „da, baš”. Samo što ovaj put nitko nije podigao obrvu dovoljno dugo, jer je odgovor stigao prije nego što je pitanje uspjelo sjesti.
Cursor, Claude Code, Windsurf i sve brojnija rodbina — to su nazivi novih alata koji tu ideju provode u djelo, svaki svojeg proizvođača, svi s istom ambicijom. Ne dovršavaju redak — oni otvaraju datoteku, čitaju cijeli projekt, pišu funkciju, pokreću je, gledaju što je puklo i sami se vraćaju da to poprave. Petlju koju je nekad vodio čovjek — napiši, pokreni, vidi grešku, popravi — sad vodi stroj, a čovjek stoji malo dalje i gleda. Ne kao gledatelj u kinu, nego kao režiser koji je upravo rekao „akcija” i sad se nada da glumac neće zabrljati scenu.
Za jedne je to oslobođenje o kojem su sanjali od prvog dana staža — konačno misliš o problemu, a ne o zagradi koja nedostaje. Za druge je to polagano, elegantno oduzimanje zanata za koji su se školovali, kao da im netko govori: tvoje ruke više nisu potrebne, samo tvoja prosudba, hvala, sjedni tamo i čekaj da završimo.
Ovo poglavlje je kronika te promjene dok se još događa — nema epiloga, nema udaljenosti od dvadeset godina koja stvari uredno posloži u priču sa smislom. Pišemo o ovome sad, uživo, dok se termini još ne slažu i dok ni sama struka nije sigurna hoće li ovo nazvati revolucijom ili nesporazumom koji je otišao predaleko. Jedno je sigurno: redak po redak, to je bila prošlost. Ono što slijedi piše se u rečenicama, ne u znakovima — a hoće li ih čitati onaj koji ih je ‚napisao', to je pitanje koje ćemo ostaviti da nas malo poduže progoni.
Sjećaš se Copilota? Prošlo poglavlje, prije jedno dvije godine po internom kalendaru ove knjige, a po tvom osjećaju vremena — jučer. Autocomplete s pretenzijama, rekli smo, i to je bilo fer.
E pa, dok si ti to čitao, netko je u pozadini presložio cijelu priču. Ne dovršavanje retka — dovršavanje zadatka. Ti alati sad ne čekaju da ti stigneš do sredine linije. Kažeš im: „Dodaj mi mogućnost da korisnik resetira lozinku preko e-maila.” I odu. Ne pitaju te ništa (dobro, možda pitaju jedno pitanje, ako su fensi), i vrate se — s gotovom značajkom. Ne s prijedlogom retka. Sa značajkom.
Ključna razlika — ona koja razdvaja igračku od alata koji ti stvarno mijenja radni dan — nije u tome što agent piše više teksta. Copilot je i prije mogao izbaciti pet redaka odjednom, pa što. Razlika je u tome što agent radi u petlji. Ono o čemu smo pričali još u prvom poglavlju ove knjige, kad smo objašnjavali da programiranje u biti jest neprekidno testiranje pretpostavki — napiši, pokreni, gledaj što je puklo, popravi, ponovi — sad je izmješteno iz tvoje glave u agentov proces. On napiše kod. On otvori terminal (onaj crni prozor s tekstom u kojem se s računalom razgovara bez miša, ako ga nikad nisi vidio). On pokrene testove. On pročita grešku — crvenu, neugodnu, onu koju bi ti prokleo dok je gledaš u ponoć. Popravi je. Pokrene ponovo. I tako, dok ne bude zeleno.
Demonstracija, da bude konkretno, ne apstraktno: staviš zadatak — „napravi mi stranicu za prijavu, s validacijom e-maila, s porukom o grešci ako lozinka ne odgovara, i testom koji sve to provjeri”. Agent otvori editor. Kreira komponentu (u prijevodu: samostalni dio sučelja, recimo baš tu kućicu za prijavu, koji se može posložiti s drugima kao Lego kockica). Napiše stil, napiše logiku validacije, napiše test. Pokrene test. Test pukne — recimo, zaboravio je slučaj s praznim poljem. Vidi to. Popravi. Pokrene opet. Zeleno. Sve to dok si ti stigao popiti pola kave.
I tu negdje, tiho, bez fanfara i bez objave za medije koja to naglašava, pomiče se sama definicija onoga što znači „pisati kod”. Copilot je bio suradnik koji ti šapće dovršetak rečenice. Ovo je nešto drugo. Ovo je suradnik kojem daš zadatak i on ode odraditi smjenu, dok ti — pa, dok ti radiš što? To je pitanje na koje ćemo odgovoriti, sloj po sloj, u ostatku ovog poglavlja. Zasad samo zapamti sliku: redak je postao rečenica, rečenica je postala zadatak, zadatak je postao — petlja koju više ne vrtiš ti.

Developer kao urednik i arhitekt
Dobro, sad kad smo ustanovili da agent radi u petlji — napiši, pokreni, pogledaj grešku, popravi — treba se zapitati što onda, zaboga, radi čovjek koji je sve to donedavno radio sam. Odgovor je trijezan i ne sviđa se svima: čovjek se preselio jedan kat više. S kata gdje se piše kod, na kat gdje se piše ono što kod treba postići. Zvuči kao unapređenje. Zvuči kao da si od radnika na traci postao predradnik. I dijelom jesi — ali predradnik koji ne smije prestati gledati traku, jer ako pusti pogled, traka će mu isporučiti nešto što izgleda savršeno, a onda će se srušiti za tjedan dana.
Mehanika je, demistificirano, jednostavna: ti definiraš cilj i ograničenja — »napravi endpoint koji prima ovo, validira ono, vrati grešku ako nedostaje treće« (endpoint je samo fensi riječ za adresu na koju se šalje zahtjev, poput poštanskog sandučića na koji stigne pismo i onda netko — u ovom slučaju kod — mora odlučiti što s njim) — agent piše implementaciju, a ti onda radiš ono što se u zanatu uvijek zvalo posao voditelja projekta, samo sad ga radi jedan čovjek s jednim prozorom otvorenim. Opisuješ, dobivaš, provjeravaš, vraćaš primjedbe, opisuješ ponovo. To je ciklus. I taj ciklus, ako ga gledaš malo izdaleka, izgleda točno kao odnos glavnog urednika i pisca u redakciji koja mora izaći sutra ujutro. Pisac (agent) ima stil, brzinu i beskrajnu energiju. Urednik (ti) ima ukus, kontekst i — što je ključno — odgovornost ako tekst ode u tisak s greškom.
Ovo nije nova metafora u ovoj knjizi. Sjećaš se onog trenutka kad je Copilot počeo dovršavati redak, a ti si samo pritisnuo Tab i osjetio se pametnijim nego što si bio? To sitno Tab-dovršavanje bilo je najava iste dinamike — od pisca prema uredniku, samo u minijaturi. E sad se taj korak pretvorio u cijeli hodnik. Tab za jedan redak bio je uvod. Ovo, gdje agent napiše čitav modul i sam odluči kako će nazvati varijable, jest glavna radnja.
I tu dolazimo do dijela koji je stvarno bitan, jer se lako progleda kroz maglu oduševljenja: vještine koje su nekad definirale dobrog programera — pamćenje sintakse, brzina tipkanja, poznavanje trikova jezika — postaju sve manje relevantne. Umjesto toga, sve više vrijedi nešto što se nije moglo naučiti iz „cheat-sheeta” (onog spomen-listića s prečicama i trikovima kojeg su svi programeri nekad imali zalijepljenog uz monitor ili otvorenog u drugom prozoru): umijeće razbijanja velikog, mutnog problema na male, jasne komade koje agent može progutati bez gušenja. Dekompozicija. Zvuči kao fensi riječ za „podijeli posao na korake”, i jest — ali pokazalo se da je upravo to razlika između developera koji s agentom napravi novu funkcionalnost u satu i onog koji se muči tri dana jer je agentu dao jedan zahtjev veličine cijele aplikacije i onda se čudio zašto je dobio kaos.
Druga vještina koja iznenada postaje valuta: čitanje tuđeg koda. Ne tvog. Tuđeg — a agentov kod je, po svim mjerilima koje su developeri nekad koristili za „tuđi kod”, upravo to. Netko (nešto) je to napisao po svojoj logici, svojim navikama, svojim (statistički prosječnim) obrascima, i tvoj posao je da to pročitaš dovoljno pažljivo da prepoznaš kad logika štima i kad samo izgleda da štima. To je vještina koju su developeri desetljećima trenirali usput, gunđajući, kad su naslijedili projekt od kolege koji je otišao u drugu firmu, ili kad su otvorili modul koji nitko nije dirao tri godine i svi se pravili da ne postoji. Sad je to punoradna disciplina, ne nuspojava.
I treća vještina, ona koja zvuči apstraktno dok je ne osjetiš na svojoj koži: prosudba. Arhitektura. Ne „kako napisati funkciju” nego „treba li ova funkcija uopće postojati, ili je to znak da je cijeli dizajn krenuo u krivom smjeru”. Agent ti to neće reći. Agent će ti, sretno i bez pitanja, napisati funkciju koju si tražio, čak i ako je ta funkcija loša ideja u temeljima. On je izvršitelj, ne savjetnik — makar zvuči poput jednog i drugog kad ti odgovori pristojnom rečenicom umjesto crvenog podcrtavanja koje bi ti nekad ispalilo stari kompajler kad zabrljaš.
Za sada je bitno ovo: podjela rada se promijenila, i to brzo — brže nego što se struka ikad prije prilagođavala. Nisi prestao biti programer. Prestao si biti onaj koji tipka svaki redak. Postao si onaj koji odlučuje što se tipka, i onaj koji, na kraju dana, potpisuje da je sve to — dobro. Pitanje je samo koliko dugo taj potpis još znači ono što je nekad značio, kad ga stavljaš na kod koji nisi ni pročitao do kraja. Ali to je priča za malo poslije.

Što radi dobro, što loše
Dobro, sad kad znamo tko je urednik a tko pisac, postavlja se logično pitanje — kakav je taj pisac, zapravo? Jer AI agent nije ni genijalni programer koji nikad ne griješi, ni šarlatan koji samo glumi da znade kucati. Negdje je između. I to negdje-između ima savršeno predvidljiv oblik, čim ga jednom vidiš.
Tamo gdje agent blista — sjajno je, iskreno — jest sve što je već netko drugi napisao tisuću puta prije. Boilerplate. Postavljanje projekta, konfiguracija, autentikacija po standardnom obrascu, CRUD endpoint koji radi ono što CRUD endpointi rade otkad su CRUD endpointi izmišljeni (CRUD je samo kratica za create, read, update, delete — dodaj podatak, pročitaj ga, promijeni ga, obriši ga, ona ista četiri koraka koja svaka aplikacija na svijetu, od Facebooka do popisa tvojih obveza, radi iznova i iznova). Reci mu „napravi mi login formu s validacijom” i dobit ćeš je za dvadeset sekundi, urednu, radnu, dosadnu — u dobrom smislu. Isto s poznatim obrascima: sortiranje, paginacija, parsiranje JSON-a, standardni error handling. Agent je pojeo cijeli internet tuđeg koda i sad ti taj internet vraća, filtriran i složen. Prototipovi mu isto idu od ruke — nabaci mu ideju, on ti za pet minuta napravi nešto što možeš kliknuti i pokazati šefu, čak ako to nikad ne ide u produkciju. I testovi — pisanje testova je posao koji svi mrze i koji je uglavnom mehaničko ponavljanje istog obrasca s drugim ulaznim podacima, što je upravo ono za što je agent stvoren.
Ima i jedna sitnica koja zvuči trivijalno, a nije: „kako se ovo radi u X”. Novi framework, nepoznata biblioteka, jezik koji nisi dirao deset godina — umjesto da čitaš dokumentaciju kao normalan čovjek, pitaš agenta i on ti napiše radni primjer u tom dijalektu. Nije to mudrost. To je memorija bez umora, što je često isto korisno.
Tu počinje ono što stvarno boli: suptilni bugovi. Ne onaj kod koji ne radi — to bar vidiš, crveno je, pukne, gotovo. Nego kod koji radi. Skoro. U devet od deset slučajeva. Onaj deseti slučaj je tako zvani edge case — rubna, rijetka situacija koja se lako zaboravi testirati, poput onog jednog kupca koji u polje za ime upiše emoji umjesto slova — slučaj koji nitko nije spomenuo agentu jer nitko nije znao da postoji, dok se ne dogodi u produkciji, u petak, u 17:45.
Arhitektura velikih sustava je druga priča — i tu agent iskreno gubi kompas. Napisati funkciju je jedno; odlučiti kako se dvadeset servisa međusobno dogovara, gdje ide granica odgovornosti, što se sprema u međuspremnik (cache) a što ne, kako sustav stari kroz pet godina održavanja — to traži pregled koji nadilazi ono što stane u kontekstni prozor, onu količinu teksta i koda koju model može odjednom „držati u glavi” dok radi, koliko god taj prozor narastao. Agent ne vidi cijelu šumu. Vidi jako detaljno drvo pred sobom i sretno tvrdi da je to cijela šuma.
I onda ta stvar koju smo već upoznali kao halucinacije chatbota, kad je to bilo samo simpatičan kviz-fail — sad je ozbiljnija, jer ovo nije chatbot koji izmišlja činjenicu o povijesti. Ovo je kod koji izgleda potpuno točno. Sintaksa savršena, imena varijabli razumna, komentari uredni — a poziva funkciju koja ne postoji, ili implementira algoritam koji na papiru radi a u praksi tiho krade jedan bajt tu, jedan tamo. „Izgleda točno ali nije” je najopasnija kategorija greške koju poznaje ova struka, jer te ne tjera da provjeriš. Tjera te da povjeruješ.
Dakle ni čarolija, ni prijevara. Alat s profilom, kao svaki alat — čekić je sjajan za čavle i katastrofalan za staklo, i nitko ne piše tužnu pjesmu o tome. Pitanje nije „je li AI dobar programer”. Pitanje je jesi li ti dovoljno dobar urednik da znaš gdje mu vjerovati, a gdje čitati redak po redak kao da ti život o tome ovisi. Ponekad i ovisi.

Produktivnost: stvarnost vs marketing
Svaka objava novog agentskog alata dolazi s brojkom. Uvijek s brojkom. Netko je u internom istraživanju izmjerio da su developeri s alatom X bili dvostruko brži. Netko drugi tvrdi deset puta brže, ali to je onaj netko koji taj alat i prodaje, pa uzmi sol, cijelu solanu zapravo. Marketinški materijal za agentsko kodiranje čita se kao reklama za dijetu — prije/poslije fotografija, samo umjesto trbušnjaka imaš »commit history« (povijest svih promjena koje su ušle u kod, redak po redak, datum po datum) sa deset puta manje redaka i deset puta više samopouzdanja.
Onda dođu ozbiljniji ljudi s tabelama i mjerenjima, i slika se, kako to već biva, zamuti. Jedna studija kaže da je pisanje nove funkcionalnosti brže. Druga, iz iste godine, mjeri isti alat i dobiva da je ukupno vrijeme do gotovog, provjerenog i „mergiranog” koda (mergirano znači spojeno u glavnu verziju programa — ono finalno „ušlo je u pogon”) dulje. Nije to kontradikcija koliko izgleda; mjere se različite stvari. Brzina TIPKANJA prvog nacrta i brzina ISPORUKE koda koji ne pada u produkciji (produkcija je ona prava, živa verzija programa koju koriste stvarni ljudi, ne verzija na kojoj se samo testira) u tri ujutro su dvije različite discipline, i agent je fenomenalan u prvoj, a u drugoj — ovisi.
Onaj obrazac 70/30 iz prošlog okvira nije slučajnost, nego gotovo geometrijsko pravilo ove ere. Ne zato što je agent glup. Zato što je zadnjih 30 posto softvera UVIJEK bilo najteže, i prije agenata, i poslije njih. Alat je promijenio brzinu prvog dijela krivulje. Drugi dio krivulje je isti onaj pakleni brijeg na koji su se developeri penjali od 1970-ih.
A onda postoji trošak koji se ne vidi na nijednom nadzornom zaslonu s brojem generiranih redaka. Kad ti pišeš kod, ti ga, htio ne htio, i razumiješ — barem u trenutku kad ga pišeš, ta mentalna mapa postoji u tvojoj glavi. Kad agent napiše petsto redaka za tebe u tri minute, ta mapa ne postoji. Kod radi. Testovi prolaze. Ali ako se za mjesec dana nešto slomi na tom mjestu, otvaraš datoteku kao arheolog koji je upravo otkopao tuđu grobnicu — sve je tu, oznake i ukrasi i simboli, samo nemaš pojma što točno znače, jer nisi ti bio taj koji ih je urezao.
To je novi tip tehničkog duga, i lijepo je što ćemo mu se posvetiti kasnije u ovoj knjizi jer zaslužuje puno više od jedne rečenice — dug koji ne dolazi od loše arhitekture ili žurbe, nego od koda koji nitko u timu stvarno nije pročitao, samo odobrio. Za sada samo zapamti obrazac: brže do prvog dojma, sporije (ili isto, ili gore — ovisno koga pitaš) do stvarno gotovog. Marketing broji minute do demonstracije. Stvarnost broji dane do produkcije koja ne pada.

Što ostaje čovjeku (zasad)
Sredina 2026. Ako sad zastaneš i pogledaš sliku iz zraka, izgleda ovako: AI piše sve više redaka, čovjek donosi sve manje odluka o TOME KAKO, a sve više odluka o TOME ŠTO. Zvuči kao mala razlika. Nije. To je razlika između zanata i rukovođenja, između onoga koji kuha i onoga koji naruči jelo i onda presudi je li dobro ili nije. Developer 2026. sve manje piše petlju koja prolazi kroz niz podataka, a sve više piše rečenicu tipa „treba mi endpoint koji vraća zadnjih deset narudžbi, sortirano po datumu, i da ne puca kad je lista prazna”. Agent to odradi. Čovjek pročita — ili bi trebao pročitati, o tome više kasnije — i kaže da ili ne.
I sad dolazi ta rečenica koju ćeš čuti na svakoj konferenciji, u svakom LinkedIn postu, iz usta svakog VP-a (direktora, po domaću) koji je zadnji kod napisao 2009.: programiranje se demokratizira. E, pa dobro došao u klub — ovo je, ako brojimo, deveti ili deseti put da čujemo istu rečenicu u ovoj enciklopediji. BASIC je trebao pretvoriti svakog školarca u programera. VisiCalc je pretvorio računovođu u analitičara bez da napiše ijedan for-loop (petlju koja ponavlja isti korak dok ne prođe kroz sve podatke). No-code platforme su obećavale da nikad više nećeš morati zvati developera za landing page. Svaki put ista priča, ista euforija, isti val panike u struci koja se osjeća suvišnom. I svaki put se ispostavi da se posao ne gasi, nego mijenja oblik. Barjak se samo pomakne malo dalje.
Samo što ovaj put pomak nije mali. Ranije se demokratizacija ticala TKO smije programirati. Sad se tiče ČEGA programiranje uopće jest. Kad je Excel oslobodio računovođu od pisanja vlastitih programa za proračune, i dalje je netko negdje pisao te programe. Kad agent piše cijelu funkciju umjesto tebe, ti si taj netko koji je ostao — samo što tvoj posao više nije pisanje, nego prosudba. A prosudba je, kao vještina, čudna stvar: ne uči se tipkanjem, uči se gledanjem tuđeg (ili AI-jevog) rada i primjećivanjem kad nešto smrdi. To je vještina koju su seniori razvijali godinama gledajući loš kod. Pitanje koje cijela struka sad postavlja glasi: kako je junior razvija kad agent piše umjesto njega prije nego što je stigao vidjeti dovoljno lošeg koda da prepozna dobar?
Ali ostavimo panika-euforiju sat vremena po strani, jer postoji jedno pitanje koje je važnije od oba, i koje se ovdje samo nazire, kao sjena iza vrata. Cijela ova sekcija počiva na jednoj tihoj pretpostavci: da čovjek REVIDIRA što je agent napravio. Da ta petlja pisac-urednik stvarno postoji u praksi, ne samo u opisu posla. Ali što ako ne revidira? Što ako je agent napisao petsto redaka, testovi su prošli, deadline je jučer bio, i ti samo klikneš „merge” — onaj gumb kojim se napisani kod spaji u glavnu, službenu verziju projekta i od tog trenutka postaje dio proizvoda koji ljudi stvarno koriste — bez da si te redke zapravo pročitao? Tko je onda taj koji programira? Agent? Ti? Nitko?
To pitanje — što se stvarno događa kad AI piše a čovjek ne čita — nećemo riješiti ovdje. Zaslužuje svoju sudnicu, s optužnicom i dokazima, jer je previše nezgodno za usputnu rečenicu na kraju poglavlja. Za sad zapamti samo obrazac: demokratizacija se, kao i devet puta prije, nastavlja — i baš kad si pomislio da je stigla do kraja, do onih koji znaju barem malo programirati pa im agent samo skida dosadan dio posla, dogodit će se sljedeći korak. Onaj gdje ti uopće ne treba znati što je petlja (naredba koja ponavlja isti dio koda dok je uvjet ispunjen), ni funkcija, ni endpoint. Samo treba znati što želiš. Zove se vibe coding, i tamo idemo sljedeće.