Ko radi ostalih 80% posla kad AI piše kod
Kad se pravi softver, postoji pet uloga, a AI coding agent pouzdano pokriva samo jednu od njih, ulogu programera. Ostale četiri, odlučivanje šta se pravi, odlučivanje šta se vidi, provera da li radi i održavanje toga da nastavi da radi, ostaju na tebi, i loša vest nije to što ih moraš raditi nego to što većina ljudi ne zna ni da postoje.
Šta odnosiš iz ove epizode
- Agent je prevodilac. Sve oko prevoda si ti.
- Klijent skoro nikad ne opisuje problem, nego rešenje koje je zamislio.
- Savršeno izvršen pogrešan zadatak je i dalje greška, i niko je neće primetiti.
- Nikad ne prihvataj output koji ne razumeš šta radi.
- Najviše vremena ide na dva kraja, na opis šta treba da se napravi i na proveru da li radi.
Koliko posla u razvoju softvera zaista radi AI coding agent?
Jednu ulogu od pet, dakle otprilike 20 procenata. Ostalih 80 procenata ostaje na čoveku.
Pet uloga koje uvek postoje, bez obzira na to da li ih neko naziva tim imenima ili ne: onaj koji odlučuje šta se pravi (product owner ili business analyst), onaj koji odlučuje šta se vidi i kako se odlučuje na ekranu (UX i UI dizajner), onaj koji piše kod (programer), onaj koji proverava da li stvarno radi (testiranje i QA), i onaj koji održava da nastavi da radi (DevOps). AI coding agent odlično pokriva treću. Kad se kaže da je agent zamenio razvoj softvera, misli se na tu jednu ulogu. Ako ostale četiri ne postoje kod tebe, one ne nestaju, samo ih niko ne radi, a to se vidi tek kada nešto pukne ili kada rešenje uradi tačno ono što si tražio, a ne ono što ti je trebalo.
Zašto savršeno urađen zadatak može da bude greška?
Zato što je zadatak bio pogrešan, a savršena izvedba to sakriva umesto da otkrije.
Konkretan primer sa sastanka. Klijent kaže da paušalci na onboarding-u treba da unesu ime firme, PIB, matični broj i adresu, i da bi bilo dobro da postoji šablon za fakturu sa svim tim podacima. Da sam to prosledio coding agentu, za pola sata bih dobio savršen formular, sa validacijom PIB-a i formatom matičnog broja, bez ijedne greške u kodu. I to bi bila greška. Niko je ne bi primetio, jer bi rešenje radilo tačno ono što je traženo. Klijent skoro nikad ne opisuje problem. Opisuje rešenje koje je zamislio, i to je u redu, to je njegov posao. Tvoj posao je da tražiš problem, pa da kroz razumevanje toga šta je tehnološki moguće dođeš do rešenja koje taj problem stvarno rešava.
Šta radi product owner ili business analyst?
Odlučuje šta se pravi i odgovoran je za ishod, ne za izvedbu.
Nazad na onaj formular. Umesto pet polja u koja korisnik kuca podatke, stao sam i pitao se zašto bi čovek to uopšte kucao. Ti podaci već negde postoje. Svaka firma u Srbiji ima rešenje iz APR-a i u njemu su svi ti podaci, PIB, matični broj, adresa, ime firme. Znači ne treba nam formular sa pet input polja i dugmetom, treba nam upload. To je potpuno druga funkcionalnost, a rešava isti problem bolje. Klikneš, izabereš rešenje iz APR-a, uploaduješ ga, i polja se popune sama. Tu odluku nije mogao da donese nijedan alat. Alatu kažeš napravi onboarding gde korisnik unosi to i to, i on to napravi savršeno. Čovek je taj koji može da se zapita da li se cela ta radnja može ukloniti.
Šta radi UX i UI dizajner kad kod piše agent?
Odlučuje šta se na ekranu vidi i šta se na tom ekranu odlučuje. To nije izbor boja.
Razlika je važna. Boje, fontovi i razmaci su deo koji agent radi bolje od nas i nema smisla da se bakćemo poravnanjem. Ono što ostaje čoveku je pitanje šta korisnik na tom ekranu treba da odluči i kako mu je najlakše da tu odluku donese. Kad kreiram novu fakturu, šta hoću da vidim, za kog klijenta, za koji obračunski period, da li mi sistem sam nudi tekući i prethodni mesec, gde stoje interni komentari, šta mogu da uradim posle generisanja, da dodam stavku ručno, da regenerišem, da pošaljem na odobrenje ili da obrišem. Da li je nešto toggle, radio dugme, klik ili prevlačenje. To su odluke o toku posla, ne o estetici, i one dolaze iz razumevanja kako ljudi taj posao stvarno rade.
Šta ostaje programeru kad agent piše kod?
Ovo je jedina od pet uloga koju ne moraš da popuniš. Agent piše kod i odličan je u tome.
Agent je prevodilac. Kažeš mu šta hoćeš na srpskom ili engleskom, on to pretvori u nešto što mašina razume. Ne moraš da učiš sintaksu, uslove, petlje, kako nešto radi na binarnom nivou. Ali postoji jedna zamka i ona je pravilo bez izuzetka: nikad ne prihvataj output koji ne razumeš šta radi. Ne moraš da znaš kako je nešto napisano u kodu. Moraš da znaš šta treba da se desi. Ta razlika je cela poenta. Ako ne umeš da opišeš očekivano ponašanje, nemaš način da utvrdiš da li je ono što si dobio tačno, pa prihvataš rezultat na poverenje. Tu se ne štedi vreme, tu se odlaže trošak i on stiže kasnije, skuplji.
Kako se testira nešto što je AI napisao?
Tako što testiraš input, ne kod. Kod obično radi. Ono što nisi predvideo je koje sve oblike ulaz može da ima.
Onaj upload rešenja iz APR-a radi preko OCR-a, tehnologije koja postoji godinama i nema veze sa AI, iste one koja na rampi u garaži pročita tablice. Ako je PDF izvorno generisan, podaci se izvlače lako. Ako je PDF skeniran, dakle slika bez tekstualnog sloja, sistem se zbuni i ne vrati ništa. To sam otkrio tako što sam uploadovao prvo generisan pa onda skeniran dokument. Kod je radio kako treba, ja nisam razmislio kakav sve ulaz može da stigne. Zato: kad ti nešto proradi, testiraj još šest puta. Na mobilnom i na desktopu, na Androidu i na iOS-u, u Chrome-u, Firefox-u i Safari-ju. Upiši slova tamo gde idu brojevi i brojeve tamo gde idu slova. Prioritet daj onome što košta najviše ako pukne.
Gde softver živi kad je napravljen?
Na serveru koji neko mora da postavi i održava. Ta uloga se zove DevOps i najviše se zapostavlja.
Sve što napraviš mora negde da stoji. Baza mora negde da stoji i mora da se poveže. Integracije sa drugim servisima neko mora da postavi. DevOps je osoba koja omogućava da programer neometano piše kod, dakle bavi se infrastrukturom softvera. Ovo je najkomplikovaniji deo za nekoga ko nikad nije programirao. Postoje rešenja koja dozvoljavaju i agentima da kreiraju servere i servise, na primer Railway i Cloudflare, koji su napravili priključak za agenta: ubaciš markdown fajl sa njihovog sajta, agent ga pročita i zna šta da poziva. To u januaru nije bilo moguće, sada jeste. Ali suština ostaje: stvari se kvare, verzije jezika i integracija se ažuriraju, i nekome to mora da bude posao.
Šta je minimalna dokumentacija koju treba da imaš?
Jedna strana teksta sa kritičnim putem, dakle spisak onoga što radiš kada rešenje stane.
Ne treba ti sistem za dokumentaciju ni proces ni alat. Treba ti jedno mesto na kom piše šta se pokreće, šta se gasi, kojim redom, i šta si poslednji put uradio kada je nešto puklo. Restartujem, ugasim, upalim, i verujte, često baš to i reši problem. Vrednost te jedne strane nije u tome što je pametna nego u tome što postoji u trenutku kada si pod pritiskom i kada ne razmišljaš jasno. Ista logika važi i za opis procesa pre nego što se išta napravi. Ono što nije zapisano ne postoji, jer za tri meseca nećeš pamtiti zašto je nešto tako postavljeno, a agent koji nastavlja rad na tom rešenju ima samo ono što mu daš.
Da li AI može da radi i ostale četiri uloge?
Može, i to je pošteno reći. Pitanje je kako će ih uraditi.
Model može da odradi i product deo i UX deo. Uradiće ih prosečno, jer nije treniran na tvom konkretnom problemu i ne zna kako izgleda tvoj konkretan proces. Neće se setiti da svaka firma u Srbiji ima rešenje iz APR-a i da se pet polja može zameniti jednim upload-om, zato što ne zna ni da postoji APR ni kako izgleda tvoj onboarding ni šta tvoje mušterije zapravo muči. Prosečno rešenje je često dovoljno, i tada slobodno pusti agenta. Ali ideja odakle rešenje dolazi je jedina vrednost koju u ovom trenutku možemo da ponudimo. Egzekucija, dakle pisanje koda, stvarno funkcioniše jako dobro i nema smisla braniti taj teren.
Gde ide najviše tvog vremena?
Na dva kraja, na početak i na kraj. Na opis šta treba da se napravi, i na proveru da li ono što je izašlo stvarno radi.
Sredina, dakle pisanje koda, je deo koji je pojeftinio i ubrzao se. To znači da se težište posla pomerilo ka ivicama. Na ulazu je brief, opis problema i željenog ishoda, ono što u prvoj epizodi prolazi kroz četiri pitanja. Na izlazu je testiranje, i tu verovatno treba da provedeš više vremena nego što misliš. Zamka je što na izlazu sve deluje gotovo. Vidiš ekran, klikneš, radi, i lako je zaključiti da je posao završen. Nije, jer si upravo isprobao jedan put kroz aplikaciju, onaj koji si sam zamislio dok si je pravio. Krajnji korisnik nikad ne ide tim putem.
Često postavljana pitanja
Da li mi treba dizajner ako pravim sam?
Ne za izgled. Boje, fontove i razmake agent radi dobro. Treba ti neko, najverovatnije ti, ko odlučuje šta se na ekranu odlučuje i kojim redom.
Šta je OCR i ima li veze sa veštačkom inteligencijom?
OCR je čitanje teksta sa slike. Postoji godinama i nema veze sa AI. Ista tehnologija čita tablice na rampi u garaži.
Zašto upload dokumenta ne radi uvek?
Ako je PDF izvorno generisan, tekst se izvlači lako. Ako je skeniran, to je slika bez tekstualnog sloja, pa nema šta da se pročita.
Gde da hostujem ono što napravim?
Railway i Cloudflare su dve opcije koje agentu daju uputstvo kako da sam napravi servise. Nijedno pominjanje nije sponzorisano.
Da li ovo znači da programeri više ne trebaju?
Ne. Znači da je jedna od pet uloga postala jeftina. Arhitektura, sistem dizajn i pregled koda su i dalje inženjerski posao.
Cheat sheet
Uz ovu epizodu ide PDF na jednoj strani sa svih pet uloga, šta svaka radi i minimalni saveti za svaku. Preuzmi cheat sheet.
Transkript
Uvod
Sedim na sastanku sa klijentom i klijent kaže: „Pa znaš kako, dođu tu paušalci i oni treba da unesu ime firme, PIB, matični broj, adresu. Onda bi bilo baš super kad bi imali neki šablon za fakturu, pa tu imaju sve te informacije, da to sve izgleda kako treba.”
I sad, da sam ja to uzeo i prosledio AI coding agentu, kom god, recimo Claude Code-u, za pola sata bismo dobili savršen formular. On bi to napravio bez greške, imala bi validacija za PIB, format matičnog broja. Sve bi bilo urađeno savršeno, ali bi to zapravo bila greška. I niko je ne bi primetio, zato što bi radilo tačno ono što je traženo.
Prošli put smo pričali o tome kako odabrati proces koji ćemo prvi automatizovati. Sada je moja pretpostavka da ste to odradili, da ste shvatili, ok, to je taj proces, idemo dalje. Sad vam je neophodno da razumete da kada se pravi softver postoji, ajde da kažem uprošćeno, pet uloga. Pet različitih ljudi koji su zaduženi za određene stvari tog softvera. I jako je bitno da se razume da AI agent može da radi jedno.
Mislim, može da radi i ostale, ali kad pričamo o AI coding agentima, on radi jedno, i to je uloga software developera. Ostale četiri role si zapravo ti, i to nije loša vest. Za mene je loša vest to što ne znaš ni da postoje te ostale četiri.
Rola broj jedan: product owner ili business analyst
Vratimo se na onaj formular sa početka. Klijent traži onboarding i kaže korisnik treba da ukuca PIB, matični broj, adresu, ime firme i tako dalje. I sad, umesto da napravim pet polja gde će klijent da kuca, ja razmislim i kažem, aha, zašto bi čovek to kuckao?
Mora da postoji negde gde pišu sve te informacije, i zapravo svaka firma u Srbiji ima rešenje iz APR-a u kom se nalaze svi ti podaci: PIB, matični broj, adresa, ime firme. Znači, ne treba nam formular sa pet input polja i submit. Zapravo nam treba upload. To je totalno drugačija funkcionalnost.
Jednostavno klikneš, izabereš svoje rešenje iz APR-a i uploaduješ ga. Tehnologija u pozadini se zove OCR. Ona postoji godinama i nema nikakve veze sa AI. To vam je ono u garaži kad dođete do rampe, pa ona pročita vaše tablice i samo se podigne. Evo, iščitao je sve iz rešenja, popunio mi je sve. Zamislite da je neko ova polja morao ručno da klikće i kuca. Čak ovde imate i sirov tekst koji je izvukao. Gotov onboarding.
Ali klijent nije tražio to. Klijent je tražio pet input polja, da onboarding traje pet sati, a ne da samo nešto uploadujemo, iščitamo sve i to je to.
To je ono o čemu sam već pričao. Klijent jako retko opisuje problem. On opisuje rešenje koje je zamislio, i to je stvarno u redu. Ja samo kažem, dajte mi problem, pa ću ja, razumevanjem toga šta je tehnološki moguće, doći do nečega što će biti rešenje tog problema. To je isto kao ono o čemu sam pričao u prošloj epizodi, o login-u. Klijent zamišlja Google login i Apple ID login, a ja sam mislio email i šifra. Kompletno ista stvar.
Rola u razvoju softvera koja se bavi ovim se zove product owner ili business analyst. Ovu odluku nije mogao da donese nijedan alat, jer alatu kažeš napravi mi onboarding proces, treba da korisnik unese to, to i to, i on to napravi, i savršeno ga napravi. Čovek je taj koji je mogao da razmisli, ej, pa to sve imamo u ovom dokumentu, da li postoji opcija da samo uploaduje dokument i da izvučemo sve.
Dakle, rola broj jedan, product owner, business analyst. To je onaj koji zna šta treba da se uradi. On je zadužen za outcome, za to šta će na kraju biti rešenje.
Rola broj dva: onaj koji odlučuje šta će da se vidi
Imali smo osobu koja odlučuje šta pravimo. Moramo da imamo i osobu koja odlučuje šta će da se vidi, odnosno ne kako izgleda, nego šta se na tim ekranima zapravo odlučuje. Kad kreiram novu fakturu, šta hoću da vidim, za kog klijenta je kreiram, za koji obračunski period.
Imamo ovde jednu olakšavajuću okolnost, da mi sistem sam nudi tekući mesec, prethodni mesec, interne komentare. Create invoice, on procesuira i kreira. Evo ga. Onda mogu da dodam nešto ručno ako sam zaboravio, da regenerišem, da submitujem ili da obrišem.
Ova rola je UX UI dizajner. To nije neko ko samo kaže biće ljubičasta boja, crvena boja, ova pozadina, ona pozadina. To je neko ko razmišlja šta se na tim ekranima odlučuje, kako je ljudima lakše da urade stvari, da li će biti toggle, radio dugme, swipe, scroll, klik, tap i tako dalje. Boje, fontovi, razmaci i takve stvari, to agent svakako radi bolje od nas i nema potrebe da se bakćemo poravnanjem.
Rola broj tri: programer
Programer, odnosno softverski inženjer. To je jedina rola koju ne moraš da popuniš. Agent piše kod i odličan je u tome. On je prevodilac. Ti kažeš šta hoćeš na srpskom ili engleskom, on to pretvori u nešto što mašina razume. Uopšte ne moraš da učiš sintaksu, if-ove, else-ove, kako to funkcioniše na binarnom nivou, API-je i tako dalje.
Ali ima jedna zamka, koja je jako bitna i dobar uvod u sledeću rolu, a to je da nikad ne prihvataš output koji ne razumeš šta radi. Ne moraš da znaš kako je konkretno napisano u kodu, ali moraš da znaš šta treba da se desi. To je jako bitno.
Rola broj četiri: onaj koji proverava
Hajde da se vratimo na onaj upload o kom sam pričao kao rešenje. Šta se desi kada OCR tehnologija pročita pogrešne reči ili cifre? Dešavalo mi se da, ako je PDF format izvorno generisan, jako lako iz njega izvučeš sve podatke. Ali ako je skeniran, iako je PDF, nemate meta podatke i onda ne može baš da razume sliku.
Kako sam to primetio? Tako što sam prvo uploadovao jedan potpuno generisan PDF, pa onda jedan skeniran. I tu sam video da zapravo ne pokrivam sve use case-ove. Kod radi kako treba, ali ja nisam razmislio kakav sve input može da dobije. On očekuje PDF sa meta podacima iz kog može da izvuče tekst, a ako to ne dobije, nego dobije ravnu sliku, JPEG, PNG, šta god, on se zbuni i vrati nazad ništa.
I u principu, ovo je rola, zajedno sa onom prvom, business analysis i product owner, gde ja mislim da treba da provedeš najviše vremena. Dakle input, šta treba da napišeš u briefu, i output, odnosno testiranje tog outputa. Možda čak i više vremena na ovom drugom nego što misliš. Jer kao, ma dobro, ovo radi, ali treba da istestiraš iz milion različitih uglova.
I fokusiraj se najviše na one stvari koje, ako puknu i ne rade kako treba, koštaće te puno. Uvek prioritizuješ stvari koje mogu da naprave mnogo veću štetu. Ako testiraš i kažeš u, radi, molim te testiraj još šest puta. Testiraj na mobilnom, testiraj na desktopu, na Androidu, na iOS-u, u Chrome-u, Firefox-u, Safari-ju.
Testiraj da u polje gde idu brojevi upišeš slova, da li će da prihvati. Tamo gde idu slova da upišeš brojeve. Tamo gde idu brojevi da upišeš negativan broj. Postoji gomila stvari koje možeš da istestiraš, i nikad ne znate kako će vaš krajnji korisnik koristiti aplikaciju koju ste napravili, tako da je ovo testiranje ekstremno bitno.
Rola broj pet: onaj koji održava
Rola koja je kompletno zapostavljena i koja je u suštini najveći problem ljudima koji se nikad nisu sreli sa programiranjem. Ne znam ni kako da je opišem bez da upotrebim ime, ali hajde, onaj koji održava.
Celo ovo rešenje koje si napravio mora negde da stoji, mora da bude na nekom serveru. Ako imaš integracije sa nekim servisima, te integracije mora neko da postavi i poveže. Baza negde mora da stoji i ona isto mora da se poveže. To se u programiranju zove DevOps. To je osoba koja omogućava programeru da neometano piše kod. Taj neko se bavi infrastrukturom softvera.
Pričaćemo o tome dosta, ovo je najkomplikovaniji deo. Postoje neka rešenja koja dozvoljavaju čak i agentima da kreiraju servere i servise. Railway je jedan od njih, nije sponzorisano. Cloudflare radi isto to. Bukvalno su napravili priključak za agenta. Ti ubaciš markdown fajl koji je na njihovom sajtu, agent iščita sve i tačno zna šta treba da poziva i da kreira.
To nije moglo ranije, kad sam ja tek krenuo tamo u januaru, ali sada već može. Ali najbolje je da razumete onoga koji održava stvari, jer stvari se kvare, pucaju, kontinuirano mora da se ažurira, ažuriraju se verzije programskih jezika i integracija.
Treba vam jedno mesto gde ćete da zapišete šta sve radite kad rešenje pukne ili stane. Jedna strana dokumentacije, bukvalno critical path. Restartujem, upalim, ugasim. I verujte mi, često to pali gasi funkcioniše.
Kontra
I znam da će dobar deo ljudi koji se ovim bavi reći, pa nije tačno, mogu modeli da ti urade i product deo posla i UX UI deo posla. I to je istina. Mogu. Ali znate kako će ih uraditi? Prosečno. Jer oni nisu trenirani na vašem specifičnom problemu. Oni ne razumeju kako izgleda vaš specifičan proces, tako da je najbolje da te ideje dolaze od vas. Ja mislim da je to jedina vrednost koju mi možemo da ponudimo. Cela ta egzekucija, pisanje koda i sve to, to stvarno funkcioniše jako dobro.
Kraj
Napravio sam jedan zgodan PDF, ajde da kažem cheat sheet, koji objašnjava ovih pet rola, šta svaka od njih radi, neke minimalne tips and tricks i šta je minimum. Jedna strana, ništa spektakularno. Link vam je u opisu videa. I sledeći put, odnosno u sledećoj epizodi, otvaramo alat.
Pozdrav svima.
