Prateći aktualne trendove u programiranju i općenito nagli razvoj umjetne inteligencije zadnjih nekoliko godina u početku sam bio skeptičan oko mogućnosti umjetne inteligencije da generira nešto ozbiljno upotrebljivo. Moj općeniti dojam je bio da je to sve još godinama udaljeno od bilo kakve ozbiljne primjene. Razuvjerili su me rodica i njezin muž koji su oboje u softveraškim vodama. Kada sam zagrebao malo dublje ispod površine, ispalo je da ne samo da je umjetna inteligencija sposobna programirati, nego i da se pomoću besplatnih rješenja može napraviti sasvim ozbiljan projekt koji mi prije ne bi palo na pamet niti započeti. Nakon ovakvog iskustva, mogu samo zamisliti kakve mogućnosti otvara neka od zadnjih verzija profesionalnih AI vibe coding platformi.
Neke moje stare ideje koje sam neko vrijeme imao i koje nisam niti pokušao realizirati radi nedostatka vremena da se uhvatim nečeg zahtjevnijeg su mi pale na pamet kada sam eksperimentirao sa vibe programiranjem. To mi je bila početna točka.
Kontroverza programiranja pomoću umjetne inteligencije
Prvo da riješimo što je zapravo vibe programiranje: to je programiranje pomoću umjetne inteligencije (trenutno pomoću LLM, sutra već pomoću tko-zna-čega). Korisnik-programer se u ovakvom razvojnom okruženju puno manje treba brinuti oko izbora biblioteka, sintakse samog programskog koda, smještaja određenog dijela koda na specifično mjesto i konkretnu datoteku itd. Dojam je definitivno da je ovo više revolucija nego evolucija programiranja. Poznavanje programiranja je danas (u 2025. godini) i dalje velika prednost kada stvari pođu krivo. Ali nije nemoguće ni bez programerskog iskustva napraviti funkcionalnu aplikaciju, dapače – sasvim je moguće.
Ako netko misli da to onda nije pravo programiranje, neka malo razmisli je li C++ pravo programiranje ili je samo programiranje u asembleru “pravo programiranje”. Ili da odemo korak naprijed, i asembler je varanje i pojednostavljenje – zašto ne programirati u strojnom jeziku, a ne u asemblerskom? Vibe kodiranje je još jedan logičan korak u evoluciji i za onoga tko upravlja procesom kreiranja aplikacije može se reći da je programer. Koliko je neki zadatak lakše ili teže odraditi ovisi o alatima koji se koriste. Ni poljoprivrednici nisu prestali biti poljoprivrednici nakon industrijske revolucije i izuma motora i traktora.
U ovoj fazi razvoja umjetne inteligencije ključnim se pokazalo precizno formulirati promptove (naredbe koje dajemo umjetnoj inteligenciji). Druga bitna stvar je dovoljno često raditi backup jer umjetna inteligencija nije savršena i sklona je gubljenju konteksta, pogrešnim pretpostavkama i halucinacijama. Kako je davno rekao Konfucije: pretpostavka je majka svih zajeba ;-)
Argumenti o nedostatku sigurnosti i kvalitete aplikacija nastalih vibe programiranjem djelomično stoje, ali ima bezbroj primjera u kojima su sigurnost i kvaliteta loši i kod aplikacija nastalih klasičnim programiranjem. Sigurno je da će uz ovakvu dramatično povećanu efikasnost programiranja doći do vala hiperprodukcije aplikacija i logično je da će u tom valu većina biti ispodprosječne kvalitete. Na kraju će zakoni tržišta to sve dovesti u neku novu ravnotežu.
Aplikacija za prikaz akorda akord-i.web.app – Gemini i Google Firebase
Kada sam krenuo istraživati što se uopće može postići vibe programiranjem pala mi je na pamet jedna stara ideja o izradi aplikacije za prikaz akorda pjesama. Svirajući gitaru godinama skupio sam popriličnu zbirku akorda u obliku tekstualnih datoteka u kojima se najčešće iznad stihova nalaze i oznake akorda pratnje za tu pjesmu. Već sam odavno imao ideju da bi tu zbirku bilo zgodno upakirati u neku aplikaciju, ali sa mojim tadašnjim znanjem bilo je moguće samo napraviti neku serversku verziju koja bi generirala linkove, povlačila tekstualne datoteke sa servera i prikazivala ih kao web stranicu. Takvih zbirki na internetu ima na stotine, a sa hrvatskim pjesmama na desetine. I tako je ta ideja ostala na razini ideje do mog istraživanja vibe programiranja. Jednostavno je do sada za neki konkretan rezultat trebalo uložiti jako puno vremena i truda, sa aspekta uloženo/dobiveno je to bilo neisplativo.
Istražujući što umjetna inteligencija može napraviti sa mojom idejom brzo sam vidio da se moja stara ideja može realizirati neusporedivo brže nego prije vibe kodiranja. Sa već postojećim Google accountom otišao sam na Google Firebase Studio i kreirao novi projekt. Nakon malo više od pola sata sam već imao funkcionalni prototip aplikacije sa nekoliko pjesama u bazi. Nakon još nekoliko sati igranja bilo je svega, od nevjerice kolikom lakoćom je moguće postići funkcionalnu aplikaciju do razočarenja lutanjem umjetne inteligencije koja u nekoliko koraka uništi sve postignuto krivim pretpostavkama i halucinacijama.
Nakon dva neuspješna pokušaja koji su završili samouništenjem prototipa shvatio sam da je potrebno ući opreznije u izradu i često kreirati backup. Logičan izbor je bio GitHub na kojem sam ionako već imao account i na kojem sam već imao spremljen dio projekata. Nakon svakog značajnijeg pomaka sam kod projekta prebacivao na GitHub i tako kreirao backup koji mi je relativno često zatrebao da Google Gemini vratim sa krivog puta na ispravni. Gemini mi je čak sam sugerirao da za aplikaciju koju sam opisao u promptu koristim NextJS platformu koja se pokazala dobrom. Kasnije sam iz svojih razloga kreirao još jednu istu takvu aplikaciju korištenjem Angular platforme s kojom sam već imao iskustva.
Lakoća kojom je moguće (preduvjet je da znate što radite) kreirati funkcionalnu aplikaciju, usmjeriti model na programiranje obrade tekstualnih podataka ili kreirati korisničko sučelje je za mene bila šokantno iskustvo. Jednostavnim uputama kroz desetak promptova došao sam do sasvim funkcionalnog regex parsera koji odvaja retke sa stihovima od redaka sa akordima. Dosta vremena mi je otišlo na tu obradu teksta i prepoznavanje redaka sa akordima. Također, bilo je relativno lako napraviti prototip koda za transponiranje akorda, ali trebalo je par sati poraditi na pravoj funkcionalnoj verziji. Bez umjetne inteligencije je bilo puno sporije i teže uopće doći do nekakvog prototipa. Za nekoliko dana, uz prekide i obiteljski život je bilo moguće napraviti aplikaciju za koju mi je bez umjetne inteligencije bilo jasno da na njoj nema smisla ni započinjati raditi. Aplikaciju možete vidjeti u okviru ispod, ili na adresi https://akord-i.web.app/ otvorite aplikaciju u normalnom prozoru. Aplikacija je napravljena kao PWA, što znači da nakon što je otvorite na mobilnom uređaju ili tabletu imate mogućnost instalirati je, dodati ikonu aplikacije koja će se onda otvarati preko cijelog ekrana. Optimirana je za rad na mobilnim uređajima, mobitelima i tabletima.
Kalkulator mase metala – Claude.ai
Druga aplikacija koju sam napravio je zapravo bila moj usporedni test besplatnog Claude.ai servisa u odnosu na besplatni Gemini. Za to mi je kao baza poslužila moja stara aplikacija isprogramirana 2017. godine u angular.js frameworku. Aplikaciju sam svojedobno napravio da bih smanjio potrebu za stalnim otvaranjem tablice-kalkulatora u Excelu na tadašnjem radnom mjestu. Kolege koji danas rade taj posao su također koristili tu aplikaciju jer je bila jednostavna i efikasna. Da ne bih puno objašnjavao kontekst Claude-u dao sam mu link na postojeću aplikaciju i pitao kako je moguće unaprijediti i modernizirati tu aplikaciju.
Stara verzija aplikacije (https://sheshnjak.github.io/metal-mass-calculator-old/ ):Nova verzija aplikacije je nastala nakon 3-4 sata eksperimentiranja u Claude-u. Nakon toga sam pustio da se slegnu dojmovi i za par dana dodao još nekoliko optimizacija. Ovaj put sam želio zadržati angular kao bazu aplikacije, u novoj verziji zbog jednostavnosti održavanja i mogućnosti da aplikaciju zadržim na serveru GitHub Pages na staroj adresi. Kolege koji su koristili aplikaciju su pohvalili novu verziju koja nudi puno više mogućnosti, bez korištenja riječi ali što znači da sam uspio zadržati osnovnu funkcionalnost i efikasnost koje su najveća prednost.
Nova verzija aplikacije (https://sheshnjak.github.io/metal-mass-calculator/ ):
Aplikacija za zapisnički stol vaterpolo utakmice – Gemini
Najambicioznija aplikacija koju sam napravio je namijenjena za zapisnički stol vaterpolo utakmica. Ta aplikacija je dovoljno komplicirana da je postala tema za sebe, opisana na Aplikacija za zapisnički stol vaterpolo utakmice.
Aplikacija je napravljena kao PWA, što znači da nakon što je otvorite na mobilnom uređaju ili tabletu imate mogućnost instalirati je, dodati ikonu aplikacije koja će se onda otvarati preko cijelog ekrana. Za uređaje koji imaju fizičku tipkovnicu (ili spoje tipkovnicu Bluetooth tipkovnicu) postoje i praktične tipkovničke kratice iako je raspored elemenata optimiran za touchscreen uređaje tako da komande budu na dohvat prstima, a ključne informacije na gornjem dijelu ekrana.
Plan je da aplikacija bude besplatna bilo kome i da olakša život svima koji se na bilo koji način bave vaterpolom. U slučaju pitanja i prijedloga slobodno mi se obratite na email adresu sheshnjak@gmail.com .
Zaključak o vibe programiranju
Na kraju ovog teksta sa nekim primjerima mogu dati i svoj zaključak: ja rijetko nešto proglašavam revolucionarnim, ali ovaj put stvarno imamo priliku uživo gledati i sudjelovati u revoluciji programiranja. Neće umjetna inteligencija drastično promijeniti civilizaciju niti će uzrokovati katastrofu, ali će jako promijeniti neke segmente života. Na živote i karijere programera i djece koja planiraju postati programeri će svakako imati jako veliki utjecaj.
Očito se radi o novoj paradigmi u programiranju koja će imati svoje pozitivne i negativne utjecaje. S jedne strane svaki programer postaje puno produktivniji i efikasniji nego do sada. Poznavanje sintakse više nije nezaobilazno, važnije je imati širu sliku onoga što se želi postići. Ali isto tako, nove generacije programera koje stasaju u ovakvom okruženju će sigurno biti zakinute za neka osnovna znanja zbog kojih će jednog dana naići na problem koji neće moći razumjeti. Za pretpostaviti je da će umjetna inteligencija do tada biti dovoljno zrela tehnologija da će im moći sama sugerirati u čemu je problem sa njihovim promptom i zbog čega ne dobivaju rezultat koji očekuju.
Općenito, katastrofični članci koji najavljuju slom tržišta rada i smak svijeta zbog razvoja umjetne inteligencije sigurno su u krivu. Uostalom, kladio bih se da je većina tih članaka na ovaj ili onaj način prošla kroz algoritam umjetne inteligencije. Svaka starija generacija u onome novom što ne razumije u slijedećoj generaciji vidi opasnost za civilizaciju ili način života. Davno je Bob Dylan napisao: “Come mothers and fathers throughout the land / don’t criticize what you can’t understand”.
Promjena koja nam slijedi zbog razvoja umjetne inteligencije će biti manja od one koja je nastala kada je počela masovna primjena osobnih računala i razvoj interneta. Svakako će biti veća od one nastale uvođenjem mobitela i pametnih telefona. U odnosu na onu prvu veliku promjenu koja se uvođenjem računala i interneta valjala desetljećima i od svijeta napravila globalno selo, ova će kroz manje od desetljeća učiniti svoje. Nadam se samo da će masovno generiranje sadržaja web portala nastupom umjetne inteligencije postati toliko glupo da ih više nitko neće ni čitati pa će takva hiperprodukcija prestati. Trenutno su potencijali umjetne inteligencije takvi da na budućnost treba gledati izvan bilo kakvih okvira. Možda se razvije i web preglednik koji će automatski uz prikaz teksta kojeg imate otvorenog u prozoru pokazivati i blesimetar sa prikazom vjerojatnosti da ćete čitanjem teksta samo izgubiti vrijeme bez mogućnosti da nakon toga postanete išta pametniji ili informiraniji. Za takvu uslugu bih rado platio pretplatu. To bi stvarno bila inteligencija, bez obzira da li je umjetna.