AI alati pretvaraju seniore u ispravljače tuđih grešaka
Umjesto da zamijene juniore, modeli prisiljavaju najiskusnije na čišćenje lošeg koda.
Kada su prvi veliki jezični modeli počeli pisati kod, obećanje je bilo jednostavno, elegantno i iznimno primamljivo: umjetna inteligencija preuzet će dosadne, ponavljajuće i trivijalne zadatke, dok će inženjeri napokon dobiti više vremena za rješavanje složenih i kreativnih problema. Ipak, nekoliko godina kasnije, stvarnost u mnogim razvojnim timovima i organizacijama izgleda potpuno drugačije. Umjesto da oslobode vrijeme i potaknu inovacije na višoj razini, AI alati polako mijenjaju samu prirodu inženjerskog posla. Najiskusniji stručnjaci, čije je vrijeme najdragocjenije za dugoročni uspjeh svakog projekta, sve više postaju samo visoko plaćeni recenzenti koji besciljno pregledavaju i ispravljaju osrednji kod generiran od strane strojeva.
Prevladavajuća priča
Tehnološka industrija i dalje snažno gura narativ prema kojem će AI programeri i razni agenti eksponencijalno povećati produktivnost svakog inženjerskog tima. Prema toj popularnoj priči, integracija alata poput GitHub Copilota, Claudea ili ChatGPT-a omogućuje svakom inženjeru, bez obzira na razinu iskustva i domensko znanje, da proizvodi softver brzinom koja je bila nezamisliva prije samo pet godina. Startupovi svakodnevno prodaju viziju u kojoj jedan jedini developer može samostalno izgraditi čitave skalabilne platforme u samo nekoliko dana, samo uz pomoć inteligentnih agenata koji neumorno pišu, testiraju i implementiraju kod.
Ovakva retorika posebno je privlačna i zavodljiva menadžmentu, direktorima i investitorima jer sugerira drastično i brzo smanjenje troškova razvoja. Mnogi su počeli iskreno vjerovati da uloga junior developera postaje suvišna, jer stroj sada može proizvesti desetke tisuća linija koda u sekundi, i to navodno uz zanemarive ili nikakve greške. Očekivanje je bilo prilično jednostavno: inženjeri će samo morati kratko pregledati opću arhitekturu, kliknuti na odobrenje i time bi se ubrzao cijeli ciklus isporuke softvera, od ideje do produkcije.
Zašto je ta priča pogrešna ili nepotpuna
Stvarnost svakodnevnog rada s generativnim kodom pokazuje duboke, temeljne i vrlo skrivene mane takvog pristupa. Problem zapravo leži u temeljnoj asimetriji između napora koji je potreban za puko generiranje koda i napora koji je potreban za čitanje, razumijevanje, provjeru i održavanje tog istog koda. AI može s lakoćom izbaciti stotine linija u samo nekoliko sekundi, ali detaljna provjera svake od tih linija i dalje zahtijeva koncentriranu ljudsku pažnju, i to na razini koja apsolutno ne oprašta nikakvu površnost.
Kada AI model napiše funkciju, on to čini na temelju statističkih obrazaca izvučenih iz ogromnih količina postojećeg koda na internetu. Međutim, model nipošto ne razumije poslovnu logiku vašeg specifičnog sustava, ne razmišlja proaktivno o dugoročnom tehničkom dugu, niti ima ikakvu svijest o suptilnim sigurnosnim propustima koji vrlo lako nastaju u kompleksnoj interakciji različitih softverskih modula. Rezultat je kod koji na prvi pogled često izgleda vrlo uvjerljivo, uredno formatirano, pa čak i prolazi osnovne automatske testove, ali duboko u sebi krije logičke rupe ili arhitektonske kompromise koje neiskusno oko jednostavno neće primijetiti.
Upravo se zato taj ogromni teret neizbježno prebacuje na najiskusnije članove tima. Senior inženjeri, umjesto da dizajniraju otporne sustave, usmjeravaju arhitekturu i mentoriraju mlađe kolege, sada provode iscrpljujuće sate dešifrirajući dugačke blokove generiranog koda koje im ponosno isporučuju manje iskusni kolege ohrabreni AI alatima. Čitanje tuđeg koda, a posebno koda koji nema nikakvu jasnu, koherentnu ljudsku namjeru i logiku iza sebe, kognitivno je iznimno zahtjevno. To nije programiranje u onom pravom, kreativnom smislu riječi; to je beskrajan, mukotrpan proces ispravljanja grešaka i refaktoriranja sustava koji od samog početka nisu bili optimalno niti ispravno postavljeni. Vrijeme koje je navodno ušteđeno na brzom tipkanju, višestruko se i neizbježno gubi na pronalaženju i ispravljanju suptilnih, teško uočljivih grešaka u samoj jezgri aplikacije.
Posljedice u stvarnom svijetu
Najveći gubitnici u ovakvom razvoju situacije su, ironično, upravo oni na koje su se organizacije najviše oslanjale – seniori. Njihov radni dan polako se pretvara u frustrirajuće iskustvo stalnog gašenja požara i preispitivanja koda koji je tehnički možda točan, ali je suštinski pogrešan za specifičan kontekst u kojem se koristi. To direktno dovodi do ubrzanog sagorijevanja vrhunskih stručnjaka, rapidnog pada motivacije i gubitka onog kreativnog, inženjerskog dijela posla koji mnoge uopće i drži u toj zahtjevnoj profesiji.
Dugoročno gledano, cijela softverska industrija ozbiljno pati. Tehnički dug se akumulira neviđenom, eksponencijalnom brzinom, skriven ispod slojeva generiranog koda. Taj kod prečesto sadrži potpuno nepotrebne ovisnosti, prekomplicirane i nečitljive logičke strukture te redundantne funkcije koje značajno otežavaju bilo kakve buduće nadogradnje sustava. Aplikacije postaju sve krhkije, a rješavanje neizbježnih incidenata u produkciji postaje prava noćna mora, jer više nitko u timu zapravo ne razumije svaki dio codebasea – jednostavno zato što ga nitko uistinu nije niti napisao.
Nadalje, ovakav pristup stvara ogroman i nepremostiv problem za razvoj novih, kvalitetnih stručnjaka. Ako se juniori oslanjaju isključivo na AI za rješavanje baš svakog problema s kojim se susretnu, oni u potpunosti preskaču one najvažnije, formativne faze učenja. Razumijevanje procesa dizajniranja sustava, prepoznavanje loših obrazaca i sposobnost dubinskog, analitičkog rješavanja problema u kodu su vještine koje se stječu isključivo teškim radom, pokušajima i greškama, a ne slijepim prepisivanjem generiranih rješenja. Kada današnji iskusni seniori naposljetku odu iz industrije, ostat ćemo s cijelom generacijom programera koji jako dobro znaju kako davati upute jezičnom modelu, ali ne znaju ni odakle početi popravljati kompleksan sustav kada model neizbježno pogriješi.
Završni stav
Umjetna inteligencija bez ikakve sumnje jest moćan i koristan alat u arsenalu svakog developera, ali njena trenutna, masovna primjena u razvoju softvera prečesto počiva na vrlo opasnoj iluziji da je brzina najvažnija. Pisanje samog koda uvijek je bilo tek jedan mali i zapravo relativno lak dio softverskog inženjerstva; pravo inženjerstvo oduvijek je bilo i ostalo razmišljanje o arhitekturi, pouzdanosti, rubnim slučajevima i dugoročnom održavanju sustava.
Ako kao industrija nastavimo tretirati čistu brzinu generiranja koda kao jedino i glavno mjerilo produktivnosti, mi zapravo osuđujemo naše najsposobnije i najvrednije stručnjake na nezahvalnu ulogu pukih lektora za nesavršene strojeve. Istovremeno, takvim pristupom direktno stvaramo temelje za ogromnu tehnološku krizu sutrašnjice, kada više nitko neće razumjeti sustave o kojima ovisimo. Krajnje je vrijeme da prestanemo optimizirati procese isključivo za brzinu pisanja, te da ponovno počnemo optimizirati za razumljivost, pouzdanost i istinsku kvalitetu onoga što zajednički stvaramo.
Komentar objavljen na portalu Umjetna Inteligencija Blog by ShtefAI, autor: Shtef



