Novi problem softverske industrije nije AI, nego površnost
Umjetna inteligencija sve bolje piše kod, ali to ne znači da je softversko inženjerstvo postalo jednostavnije. Naprotiv, tek sada se jasnije vidi razlika između onoga tko zna dobiti rješenje i onoga tko razumije sustav koji gradi.
U javnosti se često raspravlja hoće li AI zamijeniti programere. To pitanje zvuči veliko, ali je zapravo loše postavljeno. AI već danas može napisati funkciju, test, skriptu, klasu, dokumentaciju, pa i cijelu aplikaciju ako mu se dobro opiše što treba napraviti. Ali softversko inženjerstvo nikada nije bilo samo pisanje linija koda.
Kod je samo završni oblik jedne odluke. Iza njega stoji razumijevanje problema, arhitektura sustava, sigurnosni model, podaci, poslovni procesi, korisničko ponašanje, ograničenja infrastrukture i odgovornost za posljedice. AI može proizvesti sintaktički uredan kod, ali ne razumije stvarni kontekst u kojem taj kod radi. Ne zna što se događa kada sustav padne u produkciji, kada se pogrešno obrade osobni podaci, kada integracija zakaže, kada se pojavi sigurnosni incident ili kada loša arhitekturalna odluka godinama povećava trošak održavanja.
Zato problem nije AI. Problem je površnost.
Površnost se vidi onda kada se generirani kod prihvati zato što izgleda dobro. Vidi se kada developer ne zna objasniti što je model napravio, ali svejedno šalje promjenu u repozitorij. Vidi se kada menadžment mjeri produktivnost brojem commitova, zatvorenih ticketa ili količinom proizvedenog koda, a ne stabilnošću, sigurnošću i stvarnom vrijednošću koju sustav isporučuje korisnicima.
Više koda ne znači bolji softver. Ponekad znači upravo suprotno. Možemo imati više funkcionalnosti na papiru, više pull requestova, više automatiziranih testova i više dojmova produktivnosti, a da sustav istodobno postaje krhkiji, teži za održavanje i sigurnosno rizičniji. AI može ubrzati razvoj, ali može jednako brzo ubrzati i gomilanje tehničkog duga.
Posebno je opasan kod koji izgleda uvjerljivo. Loš ljudski kod često se lako prepozna. Neuredan je, nespretan, nelogičan. AI generirani kod zna biti puno podmukliji. Djeluje čisto, samouvjereno i tehnički korektno, ali može sadržavati pogrešnu pretpostavku, loš model podataka, nesigurnu obradu ulaza, nepostojeću funkciju, nepotrebno dupliciranje logike ili rješenje koje prolazi osnovni test, ali pada u stvarnom životu.
Tu se mijenja vrijednost inženjera. Vrijednost više nije samo u tome da netko brzo napiše kod. Vrijednost je u tome da zna procijeniti što taj kod radi, gdje može puknuti, koliko ga je teško održavati, može li se sigurno skalirati, kako se ponaša u rubnim slučajevima i što znači za cijeli sustav. U vremenu kada se kod može generirati gotovo trenutno, najskuplja vještina postaje provjera.
To posebno vrijedi za sigurnost. AI modeli često reproduciraju obrasce koje su vidjeli u podacima na kojima su trenirani. Ako su ti obrasci nesigurni, zastarjeli ili arhitekturalno loši, dobit ćemo uredno zapakiran problem. U sigurnosno osjetljivim sustavima to nije mala stvar. Kod koji obrađuje osobne podatke, financijske transakcije, javne evidencije, zdravstvene informacije ili kritične poslovne procese ne smije u produkciju samo zato što ga je alat brzo napisao.
S druge strane, bilo bi pogrešno AI promatrati samo kao prijetnju. On je iznimno koristan alat. Može ubrzati rutinski rad, pomoći kod analize postojećeg koda, predložiti testove, pronaći rubne slučajeve, objasniti nepoznatu biblioteku, generirati dokumentaciju i smanjiti vrijeme potrebno za istraživanje. Ali alat je koristan samo onoliko koliko je zreo onaj tko ga koristi. Dobar inženjer s AI alatom može biti bolji. Površan inženjer s AI alatom može biti samo brži u proizvodnji problema.
Posebno je važno pitanje juniora. Softverska industrija je godinama imala prirodan put učenja. Početnici su radili jednostavnije zadatke, griješili, dobivali komentare na kod, učili od iskusnijih i postupno razvijali osjećaj za sustav. Ako se taj sloj rada potpuno prepusti AI alatima, postavlja se neugodno pitanje, gdje će novi ljudi steći iskustvo?
Ne može se postati senior preskakanjem faze nerazumijevanja. Inženjerska intuicija nastaje kroz praksu, pogreške, revizije i odgovornost. Ako tvrtke danas zaključe da im juniori više nisu potrebni jer AI može napisati jednostavan kod, kratkoročno će možda smanjiti trošak. Dugoročno će oslabiti vlastitu kadrovsku bazu. Za nekoliko godina imat će manje ljudi koji razumiju sustave dovoljno duboko da ih mogu voditi, popravljati i braniti.
Zato se mora promijeniti i mentorstvo. Junior više ne treba učiti samo kako napisati petlju, klasu ili SQL upit. Mora učiti kako razmišljati o problemu, kako postaviti dobar zahtjev, kako provjeriti AI prijedlog, kako čitati tuđi kod, kako prepoznati sigurnosni rizik i kako objasniti zašto neko rješenje nije prihvatljivo. Revizija koda više nije dovoljna. Treba revidirati i način na koji je rješenje nastalo.
I fakulteti će se morati prilagoditi. Nema smisla studentima samo zabraniti AI alate i praviti se da se svijet nije promijenio. Ali još je gore pretvoriti obrazovanje u vježbu promptanja bez razumijevanja temelja. Student mora znati koristiti AI, ali mora razumjeti algoritme, strukture podataka, baze podataka, mreže, operacijske sustave, sigurnost, testiranje i arhitekturu. Bez toga ne postaje inženjer, nego korisnik alata koji ne zna procijeniti rezultat.
Organizacije također ne smiju ući u ovu promjenu stihijski. Nije dovoljno kupiti licence i očekivati veću produktivnost. Treba definirati koji se alati smiju koristiti, koji se podaci ne smiju unositi u modele, kako se provjerava AI generirani kod, kako se upravlja open source ovisnostima, tko preuzima odgovornost za promjenu i kako se dokumentira uloga AI alata u razvoju. Ako toga nema, AI ne uvodi red, nego povećava kaos.
Zato je možda najvažnija promjena mentalna. Softverska industrija mora prestati brkati aktivnost i vrijednost. Nije cilj proizvesti više koda. Cilj je proizvesti bolji, sigurniji i održiviji sustav. Ako AI pomaže u tome, treba ga koristiti. Ako samo povećava količinu neprovjerenog koda, onda nije ubrzanje, nego rizik.
AI neće uništiti softversko inženjerstvo. Prije će uništiti iluziju da je softversko inženjerstvo samo tipkanje koda. Oni koji su svoju vrijednost gradili samo na sintaksi i poznavanju alata bit će pod pritiskom. Oni koji razumiju sustave, sigurnost, podatke, arhitekturu, poslovni kontekst i odgovornost bit će važniji nego prije.
Kod će biti sve lakše generirati. Razumijevanje će biti sve teže glumiti.
Upravo zato novi problem softverske industrije nije AI. Novi problem je površnost koju AI čini bržom, vidljivijom i opasnijom.
Ratio Technica
Kontakt: ivan0x2a [at] gmail [dot] com