AI generirani kod i rastuća tempirana bomba tehničkog duga
Slijepo oslanjanje na alate za generiranje koda stvara kratkoročnu iluziju brzine koja će dugoročno urušiti stabilnost softverskih sustava.
Programeri danas daleko više vremena provode analizirajući, čitajući i razumijevajući tuđi kod nego pišući vlastiti. Paradoksalno, unatoč toj poznatoj činjenici, softverska industrija postala je potpuno opsjednuta alatima koji generiraju ogromne količine linija koda brže nego što je to ikada bilo moguće. Moderni asistenti i napredni jezični modeli nude obećanja o višestrukom povećanju produktivnosti, obećavajući rješavanje svih prepreka u razvoju. Ono o čemu industrija glasno šuti jest ogromna cijena koja neizbježno dolazi na naplatu dugo nakon što se taj kod implementira u produkciju. Prividna brzina isporuke zasljepljuje timove, dok se u pozadini gomilaju problemi koji će u budućnosti zahtijevati masovna restrukturiranja i neplanirane financijske troškove.
Prevladavajuća priča
Narativ koji trenutno dominira tehnološkim sektorom iznimno je jednostavan, atraktivan i, na prvi pogled, potpuno logičan. Alati bazirani na velikim jezičnim modelima napokon oslobađaju programere od onih najdosadnijih, repetitivnih zadataka koji iscrpljuju energiju i smanjuju fokus na bitne arhitektonske odluke. Umjesto mukotrpnog pretraživanja dokumentacije ili čitanja beskonačnih rasprava na raznim forumima, umjetna inteligencija u sekundi isporučuje gotovu, naizgled savršenu funkciju direktno u razvojnu okolinu.
Zagovornici ovog pristupa s velikim entuzijazmom tvrde da upravo ta automatizacija omogućuje razvojnim timovima neviđenu brzinu. Oni vjeruju da će se softverski proizvodi, zahvaljujući ovim alatima, izbacivati na tržište u rekordnim rokovima, drastično smanjujući početne troškove razvoja. Startup kompanije u tome vide sveti gral koji će im omogućiti da s malim timom postignu ono za što su nekada trebale stotine inženjera. Cijeli se ekosustav trenutno gradi na pretpostavci da je više napisanog koda u kraćem vremenu direktno proporcionalno većoj kvaliteti i bržem rastu.
Zašto je ta priča pogrešna ili nepotpuna
Problem, koji se vrlo vješto ignorira u ovim entuzijastičnim raspravama, leži u samoj srži održavanja softvera. Kada programer samostalno, kroz razmišljanje i pokušaje, piše kod, on u svojoj glavi gradi složen mentalni model cijelog sustava. On dubinski razumije zašto je određena arhitektonska odluka donesena, svjestan je njenih prednosti, ali i njenih inherentnih granica. S druge strane, kada umjetna inteligencija u trenutku izbaci pedeset ili sto linija koda, inženjer ih najčešće samo površno pregleda. Ako kod uspješno prođe osnovne automatske testove i zadovolji trenutačnu funkcionalnost, on se bez puno pitanja prihvaća i šalje u produkciju.
Tijekom vremena, zbog ovakvog pristupa, cijela aplikacija postepeno postaje Frankensteinova slagalica. Sustav se sastoji od tisuća međusobno nepovezanih, stilski različitih rješenja koja nemaju zajedničku filozofiju niti koheziju. Takav kod gubi svoju strukturu. Tehnički dug, koji je prisutan u svakom projektu, u ovom se scenariju gomila doslovno eksponencijalno, jer zapravo više nitko u timu ne razumije svaki dio sustava u dubinu.
Ovo neizbježno dovodi do situacija gdje svaka nova promjena nosi ogroman rizik od lomljenja nečeg drugog na potpuno neočekivanom mjestu. Kada se pojavi kritičan bug u produkcijskom okruženju, vrijeme potrebno za pronalazak uzroka, dijagnostiku i konačni popravak drastično se povećava. Umjesto da inženjeri rješavaju problem, oni se bore s dešifriranjem složenih blokova koda koje nitko nikada nije uistinu razumio, već su samo kopirani iz prijedloga koji je generirao asistent.
Posljedice u stvarnom svijetu
Stvarni gubitnici u ovoj nepromišljenoj utrci bit će kompleksni, dugoročni projekti i inženjeri koji će te iste sustave morati održavati i nadograđivati za tri ili pet godina. Startupi će, istina, možda zaista brže lansirati svoju prvu verziju proizvoda i privući početne korisnike, no oni će naići na neprobojni zid čim se pojavi potreba za skaliranjem poslovanja ili dodavanjem značajno kompleksnijih funkcionalnosti. Ono što se u početku slavilo kao fantastična produktivnost u pisanju, vrlo brzo će se pretvoriti u apsolutnu noćnu moru u fazama čitanja, analize i refaktoriranja koda. Troškovi održavanja takvih sustava mogli bi nadmašiti sve početne uštede, dovodeći do potrebe za potpunim prepisivanjem aplikacija iz temelja.
S druge strane medalje, najveći dobitnici bit će iskusni, stariji inženjeri koji posjeduju duboko znanje o arhitekturi sustava i znaju kako analitički pristupiti rješavanju problema. Njihova specifična vještina čitanja, razumijevanja i otklanjanja grešaka u tuđem kodu postat će cjenjenija i traženija nego ikad prije. Upravo će oni biti ti koji će morati čistiti kaos i stabilizirati sustave koje su za sobom ostavili neiskusni, ali izrazito brzi developeri koji su se previše oslanjali na savjete svojih digitalnih asistenata.
Završni stav
Brzina samog tipkanja i pisanja linija koda zapravo nikada nije bila glavno usko grlo u razvoju kvalitetnog softvera. Pravo i jedino usko grlo oduvijek su bili duboko razumijevanje domene, pažljiv dizajn arhitekture i sposobnost predviđanja budućih problema. Oslanjanje na generirani kod bez kritičkog razmišljanja i potpunog razumijevanja pozadine nije nikakva revolucionarna inovacija. To je naprosto uzimanje tehničkog kredita s ogromnom kamatnom stopom, zaduživanje koje će neizbježno i vrlo bolno doći na naplatu cijeloj industriji.
Komentar objavljen na portalu Umjetna Inteligencija Blog by ShtefAI, autor: Shtef



