AI alati u programiranju: Puno buke, premalo pravih rješenja
Umjetna inteligencija obećava programiranje bez napora, ali stvarni razvojni proces i dalje zahtijeva puno ručnog ispravljanja grešaka.
Tržište je preplavljeno obećanjima o tome kako će umjetna inteligencija potpuno promijeniti način na koji razvijamo softver. Svaki tjedan slušamo o novom alatu koji će navodno zamijeniti cijele timove programera, automatizirati pisanje koda i učiniti da se aplikacije stvaraju same od sebe jednostavnim upisivanjem nekoliko rečenica u chat sučelje. Od alata kao što su GitHub Copilot i ChatGPT pa sve do raznih autonomnih agenata, priča je uvijek ista: programiranje postaje stvar prošlosti, a inženjerske vještine više neće biti potrebne. No, svatko tko je zapravo pokušao izgraditi nešto kompleksnije od jednostavne "Hello World" skripte ili osnovne web stranice koristeći isključivo te alate, brzo je udario u zid stvarnosti. Umjesto obećanog razvoja bez napora, suočili su se s beskrajnim ispravljanjem grešaka koje alat nije predvidio, pokušajima prilagodbe loše strukturiranog koda i rješavanjem suptilnih problema koji zahtijevaju duboko razumijevanje arhitekture sustava.
Prevladavajuća priča
Marketinški materijali velikih tehnoloških kompanija, startupa i entuzijastičnih kreatora sadržaja prodaju vrlo privlačnu viziju. Prema toj viziji, proces razvoja softvera sveden je na jednostavnu komunikaciju: čovjek opisuje što želi na prirodnom jeziku, a umjetna inteligencija preuzima sve tehničke aspekte. Generira se kod, pišu se testovi, postavljaju se konfiguracije i aplikacija je spremna za produkciju. Ova priča sugerira da više ne moramo razumjeti kako rade baze podataka, kako optimizirati performanse ili kako strukturirati aplikaciju kako bi bila održiva. Tvrdi se da će umjetna inteligencija demokratizirati razvoj softvera do te mjere da će svatko, bez obzira na tehničko predznanje, moći postati kreator softvera na razini profesionalnog inženjera. Cijeli taj narativ često je popraćen demonstracijama koje izgledaju magično, ali koje su obično pažljivo režirane i fokusirane na vrlo specifične, jednostavne zadatke za koje su ti modeli i trenirani.
Zašto je ta priča pogrešna ili nepotpuna
Problem nastaje onog trenutka kada izađemo iz okvira pažljivo pripremljenih primjera i pokušamo riješiti stvarne poslovne probleme. Umjetna inteligencija danas je iznimno dobra u prepoznavanju uzoraka i generiranju koda na temelju tih uzoraka, ali apsolutno ne razumije širi kontekst. Ne zna zašto ste odabrali određenu arhitekturu, ne razumije poslovne procese koji stoje iza aplikacije i nema svijest o sigurnosnim implikacijama specifičnim za vaš slučaj.
Kada alat generira blok koda, taj kod često izgleda ispravno na prvi pogled, ali može sadržavati suptilne greške, koristiti zastarjele metode ili se oslanjati na pretpostavke koje ne vrijede u vašem sustavu. Što je projekt veći i kompleksniji, to je vjerojatnije da će umjetna inteligencija početi halucinirati ili proizvoditi kod koji je u konfliktu s ostatkom baze koda. Zato programiranje s AI alatima često ne izgleda kao rad s iskusnim kolegom, već više kao rad s vrlo brzim, samouvjerenim pripravnikom koji piše puno koda, ali zahtijeva stalni nadzor i provjeru svake linije.
Umjesto da smanje količinu posla, ovi alati često mijenjaju prirodu posla. Umjesto da sami pišemo kod, sada provodimo sate pokušavajući shvatiti zašto generirani kod ne radi onako kako bi trebao, pokušavajući natjerati alat da ispravi vlastitu grešku ili jednostavno brišemo sve što je alat napisao kako bismo to napravili sami od nule. Vještina koja postaje ključna nije samo pisanje koda, već čitanje, analiza i otklanjanje grešaka u tuđem, generiranom kodu. A to je zadatak koji često zahtijeva još dublje razumijevanje tehnologije od samog pisanja.
Posljedice u stvarnom svijetu
Posljedice ove pogrešne percepcije već se vide u industriji. Mnoge tvrtke i timovi pokušavaju ubrzati razvoj agresivnim usvajanjem AI alata, očekujući drastično povećanje produktivnosti. Kada to povećanje izostane ili se pretvori u tehnički dug i pad kvalitete, dolazi do frustracija. S druge strane, mlađi programeri i oni koji tek ulaze u industriju oslanjaju se na ove alate u tolikoj mjeri da ne razvijaju temeljne vještine potrebne za samostalno rješavanje problema i razumijevanje arhitekture. To stvara generaciju inženjera koji su ovisni o alatima, a ne razumiju osnove onoga što ti alati zapravo rade.
Kada se sustav pokvari u produkciji, AI alat vam neće moći reći zašto je došlo do "race conditiona" u vašoj bazi podataka ili zašto se aplikacija ruši pod opterećenjem na specifičan način. U tim trenucima potrebni su ljudi s iskustvom, intuicijom i dubokim razumijevanjem sustava, a te se vještine ne mogu automatizirati. Dugoročno, organizacije koje previše investiraju u automatizaciju na uštrb razvoja stručnosti svojih inženjera mogle bi se suočiti s ozbiljnim problemima u održavanju i skaliranju svojih sustava.
Završni stav
Umjetna inteligencija ne uništava softversko inženjerstvo, niti ga čini nepotrebnim. Ona samo mijenja alate koje koristimo. AI asistenti su sjajni u rješavanju rutinskih zadataka, generiranju predložaka i brzom pretraživanju dokumentacije, ali oni nisu i ne mogu biti zamjena za inženjersku prosudbu, dizajn sustava i kritičko razmišljanje. Razvoj softvera nikada se nije svodio samo na tipkanje koda, već na rješavanje kompleksnih problema, oblikovanje sustava koji su robusni, sigurni i sposobni rasti, te razumijevanje potreba korisnika i poslovnih ciljeva. Zato, umjesto da se bojimo da će nas alati zamijeniti ili da slijepo vjerujemo u obećanja o razvoju bez napora, trebamo ih prihvatiti kao ono što jesu – korisne alate, ali ipak samo alate, koji zahtijevaju vještog majstora da bi se pravilno koristili. Stvarno programiranje, sa svim svojim izazovima i kompleksnostima, ostaje čvrsto u ljudskim rukama.
Komentar objavljen na portalu Umjetna Inteligencija Blog by ShtefAI, autor: Shtef



