Umjetna inteligencija uništava vještinu softverske arhitekture
Generiranje linija koda postalo je važnije od promišljenog dizajniranja sustava.
Danas je lakše nego ikad prije napisati tisuće linija koda u samo nekoliko minuta. Alati kao što su GitHub Copilot, Claude i ChatGPT omogućuju programerima ubrzano stvaranje funkcija, komponenti i skripti. Na prvi pogled, ovo izgleda kao ostvarenje sna svakog softverskog inženjera – naporni, repetitivni dijelovi posla nestaju. No, ispod površine te brzine krije se ozbiljan problem. U našoj žurbi da automatiziramo pisanje koda, počeli smo zanemarivati najvažniji dio inženjerskog posla: osmišljavanje, strukturiranje i održavanje robusne softverske arhitekture.
Umjesto da rješavamo temeljne probleme sustava, mi ih danas samo brže zatrpavamo lošim kodom.
Prevladavajuća priča
Industrija tehnologije, a posebno proizvođači AI alata za programiranje, neumorno nam plasiraju istu priču. Tvrde da će umjetna inteligencija potpuno osloboditi inženjere rutinskih zadataka, omogućujući im da se posvete isključivo "kreativnom radu na visokoj razini". Prema tom narativu, junior inženjeri postaju produktivni poput seniora, dok seniori postaju svojevrsni "10x inženjeri" koji mogu samostalno izgraditi cijele platforme u nekoliko tjedana.
Ideja je da brzina razvoja eksponencijalno raste, dok troškovi padaju. Menadžment je oduševljen jer se rokovi skraćuju, a startupi obećavaju isporuku nevjerojatno složenih proizvoda s mikroskopskim timovima. Količina koda (lines of code - LOC) koju pojedinac može proizvesti danas se često slavi kao ultimativno mjerilo produktivnosti. Što brže model generira predložak, to smo navodno bolji.
Zašto je ta priča pogrešna ili nepotpuna
Problem s ovom pričom je što potpuno zanemaruje stvarnu prirodu softverskog inženjerstva. Pisanje novog koda zapravo je najmanji, najlakši i najjeftiniji dio životnog ciklusa bilo koje aplikacije. Ono što je doista skupo – i financijski i vremenski – jest čitanje, razumijevanje, održavanje i nadogradnja postojećeg koda.
Kada AI alati u nekoliko sekundi izbace blok od pet stotina linija koda, oni rješavaju trenutni, lokalni problem programera. Međutim, oni ne razumiju širi kontekst vašeg sustava. Ne znaju zašto ste odabrali određeni obrazac (pattern), ne mare za dosljednost imenovanja na razini cijelog projekta i apsolutno nemaju pojma o poslovnoj logici koja stoji iza vaše domene.
Rezultat je ono što bih nazvao "arhitekturom zakrpi". Umjesto da inženjer sjedne, razmisli o problemu i dizajnira elegantno rješenje koje se savršeno uklapa u postojeći sustav, on prihvaća prvo rješenje koje AI ponudi. Kada to rješenje naiđe na rubni slučaj (edge case), programer traži od AI-ja da generira novu zakrpu za taj specifični slučaj. Slojevi se gomilaju. Apstrakcije postaju besmislene. Sustav gubi svoju koheziju i pretvara se u nepreglednu hrpu neoptimiziranog, generičkog koda koji je previše kompliciran da bi ga ijedan ljudski mozak u potpunosti shvatio.
Brzina pisanja koju dobivamo danas plaća se brutalnom kamatom u obliku tehničkog duga sutra.
Posljedice u stvarnom svijetu
Posljedice ovog trenda već su vidljive, iako se o njima rijetko javno govori. Prvi na udaru su, paradoksalno, senior inženjeri. Umjesto da se bave arhitekturom i dugoročnom vizijom projekta, oni sve više vremena provode kao "ispravljači" – pregledavaju i popravljaju ogromne količine osrednjeg koda koji su generirali AI alati u rukama manje iskusnih kolega.
S druge strane, junior inženjeri su najveći gubitnici dugoročno. Oslanjajući se previše na AI, oni propuštaju ključnu fazu učenja. Ne suočavaju se s frustracijom traženja elegantnog rješenja. Ne uče iz vlastitih grešaka u dizajnu jer AI odmah nudi "gotovo" rješenje. Preskakanjem te muke gubi se razvoj dubokog, intuitivnog razumijevanja kako sustavi zapravo funkcioniraju. Postajemo majstori u spajanju tuđih komponenti, ali zaboravljamo kako izgraditi vlastite iz temelja.
Za tvrtke, ovo znači da aplikacije postaju krhke. Svaka nova nadogradnja postaje rizična, a proces debagiranja (debugging) pretvara se u noćnu moru jer nitko u timu u potpunosti ne razumije zašto je određeni dio sustava napisan baš na taj način. U konačnici, projekti koji su "ubrzani" AI alatima na početku, suočavaju se s drastičnim usporavanjem razvoja u kasnijim fazama.
Završni stav
Umjetna inteligencija je fantastičan alat, ali je užasan arhitekt. Moramo se prestati diviti količini koda koju ovi modeli mogu generirati i početi vrednovati promišljenost s kojom pristupamo rješavanju problema. Softversko inženjerstvo nije natjecanje u brzini tipkanja; to je vještina apstraktnog razmišljanja i dizajna sustava koji mogu izdržati test vremena. Ako nastavimo delegirati taj ključni kognitivni napor strojevima koji ne razumiju kontekst, završit ćemo s brdom neodrživog koda i cijelom generacijom programera koji ga ne znaju popraviti.
Komentar objavljen na portalu Umjetna Inteligencija Blog by ShtefAI, autor: Shtef



