Analiza5 min čitanja

Generiranje koda pretvara programere u revizore tuđeg koda

Umjesto da rješavamo složene arhitektonske probleme, sve više vremena provodimo ispravljajući sitne greške koje stvaraju alati temeljeni na jezičnim modelima.

S

Autor

Shtef

Objavljeno

Ilustracija programera koji analizira generirani kod

Generiranje koda pretvara programere u revizore

Umjesto da rješavamo složene arhitektonske probleme, sve više vremena provodimo ispravljajući sitne greške koje stvaraju alati temeljeni na jezičnim modelima.

Svi smo vidjeli nevjerojatne demonstracije u kojima alati za generiranje koda u samo nekoliko sekundi stvaraju čitave funkcije, klase pa čak i kompletne korisničke komponente. Zaista je impresivno gledati kako se do tada prazan ekran puni linijama naizgled savršenog koda brzinom svjetlosti, dajući privid da je najteži dio posla odrađen. Međutim, stvarna situacija u svakodnevnom inženjerskom radu postaje znatno drugačija čim pređemo uske granice osnovnih, izoliranih i jednostavnih zadataka. Umjesto onog glasno obećanog, gotovo magičnog ubrzanja procesa razvoja softvera, mnogi se iskusni inženjeri i programeri danas nalaze u potpuno novoj i neočekivanoj ulozi. Naime, postali su revizori koda koji je napisao netko drugi, odnosno preciznije rečeno, nešto drugo. Ova suptilna, ali tektonska promjena u našim dnevnim obavezama mijenja samu bit onoga što znači biti inženjer u suvremenom tehnološkom okruženju, donoseći sa sobom niz izazova o kojima se rijetko javno raspravlja.

Prevladavajuća priča

Prevladavajuća priča cijele tehnološke industrije danas kaže da će generativni alati u vrlo bliskoj budućnosti u potpunosti preuzeti sve tehničke i repetitivne aspekte programiranja. Narativ koji agresivno dominira na apsolutno svim tehnološkim konferencijama, na naslovnicama portala i u medijima usmjerenim na poslovnu zajednicu, tvrdi da će ovi inovativni alati desetostruko, ako ne i stostruko, povećati produktivnost timova. Zagovornici ove teze uvjeravaju nas da će ovakav napredak omogućiti čak i osobama bez ikakvog formalnog tehničkog predznanja da razvijaju izuzetno složene softverske sustave. Prema tom utopijskom viđenju, dovoljno bi bilo samo precizno postavljanje upita na prirodnom jeziku, a sustav bi se sam pobrinuo za sve ostalo. U takvom zamišljenom svijetu, tradicionalno pisanje koda postaje zastarjela, pa čak i potpuno nepotrebna vještina, dok se primarni fokus svakog pojedinca u potpunosti seli na visoku razinu konceptualizacije i poslovno upravljanje idejama, ostavljajući implementacijske detalje strojevima.

Zašto je ta priča pogrešna ili nepotpuna

Taj dominantni narativ duboko je manjkav jer potpuno zanemaruje samu temeljnu prirodu dugoročnog razvoja i održavanja softvera. Programiranje, bez obzira na razinu apstrakcije, nikada u svojoj povijesti nije bilo samo besciljno tipkanje sintakse ili puko prevođenje misli u programske jezike. Ono je uvijek bilo, i prije svega ostaje, rigorozan proces izrazito preciznog definiranja poslovne logike, arhitekture i pažljivog upravljanja kompleksnim rubnim slučajevima. Moderni alati temeljeni na naprednim velikim jezičnim modelima zaista su izvrsni u pogađanju onog sljedećeg logičnog niza znakova na temelju ogromne količine podataka koje su vidjeli u svojoj prošlosti tijekom treniranja. Ipak, oni iz temelja nemaju nikakvo stvarno, duboko razumijevanje šire arhitekture sustava, sigurnosnih zahtjeva, niti specifičnih, često neizgovorenih poslovnih pravila koja vrijede isključivo za taj pojedini projekt na kojem trenutno radimo.

Kada takav alat u sekundi generira pedeset ili sto linija koda, to na prvi pogled djeluje kao ogromna ušteda vremena i resursa. Međutim, svaki odgovorni programer tada mora izuzetno pažljivo pročitati, proanalizirati i u potpunosti razumjeti svaku od tih linija. Potrebno je osigurati da taj generirani kod slučajno ne uvodi opasne sigurnosne propuste, da ne narušava ukupne performanse sustava i da zaista ispravno obrađuje sve moguće iznimke do kojih može doći u radu s korisnicima. Praksa pokazuje da ispravljanje suptilnih logičkih grešaka, skrivenih u tuđem, generiranom kodu, vrlo često zahtijeva znatno više vremena, fokusa i mentalnog napora nego što bi bilo potrebno za pisanje tog istog, možda i jednostavnijeg koda, potpuno od nule. Umjesto da djelujemo kao glavni arhitekti sustava koji stvaraju vrijednost, sve se više pretvaramo u iscrpljene lektore koji po cijele dane očajnički traže iglu u nepreglednom plastu sijena, pokušavajući otkriti zašto je jezični model odabrao baš taj pristup rješavanju problema.

Posljedice u stvarnom svijetu

Ovakva radikalna promjena svakodnevne inženjerske paradigme ima iznimno ozbiljne i dalekosežne posljedice za sve razvojne timove na tržištu. Gledano dugoročno, postoji ogromna opasnost da timovi izgube duboko i temeljito razumijevanje vlastitog izvornog koda i cjelokupne infrastrukture. Kada se inženjeri previše oslanjaju na automatsko dovršavanje složenih algoritama i struktura podataka, neminovno gube onu ključnu mišićnu memoriju te oštru tehničku intuiciju koja je apsolutno neophodna za brzo, efikasno i sigurno rješavanje kritičnih problema, posebice u onim trenucima pod visokim pritiskom kada se cijeli sustav iznenada sruši i kada sekunde znače velike financijske gubitke.

Još jedan problematičan aspekt ove situacije odnosi se na mlađe kolege. Naime, juniori i početnici u tehnološkoj industriji sada masovno gube jedinstvenu, dragocjenu priliku učiti kroz polagano i metodično rješavanje jednostavnijih tehničkih problema. Ako se apsolutno svaki osnovni i lakši zadatak rješava automatski uz pomoć modela, ti mladi programeri nikada nemaju pravu priliku izgraditi čvrsto, temeljno inženjersko znanje i samopouzdanje koje im je prijeko potrebno da bi sutra mogli samostalno rješavati one istinski teške probleme s kojima se ovi alati još uvijek ne mogu nositi. Dodatno, sve inner tvrtke koje naivno i slijepo vjeruju u agresivna obećanja o drastičnom smanjenju potrebe za ljudskim inženjerima vrlo bi se brzo mogle suočiti s nevjerojatno brzim i nekontroliranim rastom tehničkog duga. Krajnji rezultat takvog pristupa su masivni, krhki sustavi prepuni nepoznanica koje doslovno nitko u cijeloj organizaciji više ne može u potpunosti shvatiti niti pouzdano održavati u budućnosti.

Završni stav

Umjetna inteligencija, u svom trenutnom obliku, sasvim sigurno neće zamijeniti ljudske programere niti će ih učiniti suvišnima na tržištu rada, ali će definitivno i nepovratno promijeniti samu prirodu i fokus našeg svakodnevnog posla. Ovi moderni alati za generiranje koda uistinu su sjajni i moćni pomoćnici kada je u pitanju brza automatizacija raznih dosadnih, ponavljajućih i trivijalnih zadataka. Međutim, nikada i nipošto ne bismo smjeli dopustiti da oni, bez nadzora, preuzmu ključnu ulogu glavnog arhitekta naših sustava. Naš najvažniji i najvrjedniji zadatak kao inženjera i dalje čvrsto ostaje duboko razmišljanje, analiziranje i istinsko razumijevanje temeljnih problema koje rješavamo.


Komentar objavljen na portalu Umjetna Inteligencija Blog by ShtefAI, autor: Shtef

Povezano

Pročitajte i ovo

Još nekoliko objava koje šire kontekst oko tema, kompanija i AI trendova iz ove priče.

Ilustracija složenih inženjerskih sustava
Analiza

Zašto je integracija generativnih modela toliko teška

Pravi troškovi i skriveni inženjerski izazovi dodavanja generativne umjetne inteligencije u postojeće sustave koje marketinške priče rijetko spominju.

Ilustracija balona i financijskih grafova povezanih s tehnologijom
Analiza

Balon umjetne inteligencije i problem isplativosti

Zašto masovna infrastrukturna ulaganja u generativne modele dugoročno nisu ekonomski održiva bez jasnog povrata investicije.

Sam Altman govori o razvoju umjetne inteligencije
AI vijesti

Sam Altman smatra da je vrijeme za usporavanje AI razvoja

Izvršni direktor tvrtke OpenAI izjavio je da bi se tempo razvoja umjetne inteligencije trebao usporiti kako bi se društvo pripremilo.