Što se događa s juniorima?

AI danas radi ono što su nekad radili juniori — pitanje je samo tko će za deset godina biti senior.

poglavlje 7/1619 min čitanja2024 – danas
ti@kronika:~$ ./sviraj k8_7_junior.mp3

# da, poglavlje ima pjesmu. ne, nitko ne zna zašto.

Zamisli da si upravo diplomirao. Godina je 2025., možda 2026. CV ti je uredan, portfolio ima tri projekta s fakulteta i jedan koji si sam sklepao vikendom da imaš nešto pokazati. Šalješ prijave. I onda naletiš na oglas — ne za poziciju koju bi ti trebao dobiti, nego za onu iznad — i u njemu stoji da traže jednog seniora koji će, uz pomoć AI alata, raditi posao za koji su prije trebala tri čovjeka. Jedan od te trojice bio bi, nekad, ti.

Netko preko puta stola — recimo tvoj stric, ili susjed, ili neki tip s faksa koji je diplomirao prije dvadeset godina i sad je tehnički direktor — sluša tu priču i pita naizgled glupo pitanje: pa dobro, zar to nije uvijek tako? Netko negdje uvijek uči, netko negdje uvijek napreduje? I ti ćeš mu htjeti odgovoriti, ali odgovor nije jednostavan, jer ovaj put se ne mijenja samo alat. Mijenja se prva prečka na ljestvama — a ti stojiš baš na njoj.

Vidjeli smo u prethodnim poglavljima da AI danas radi upravo one poslove koje su nekad dobivali juniori: napiši test, popravi ovaj mali bug, odradi ovaj tiket, generiraj boilerplate da senior ne mora. Boilerplate je onaj standardni, repetitivni kod koji moraš napisati u gotovo svakom projektu — spajanje na bazu, prijava korisnika i slično — dosadan posao koji nitko ne voli, ali nekad je baš njega dobivao junior da se zagrije. To je bio posao od kojeg se uči — spor, dosadan, ponekad ponižavajuć, ali nužan. Sad taj posao radi model za nekoliko centi po zahtjevu, bez plaće, bez mentorstva, bez godišnjeg. Firme to vole. Pitanje je što se događa s ljudima kojima je taj posao trebao biti prva stepenica.

Ovo poglavlje neće ti reći da je sve u redu, jer nije baš sve u redu. Neće ti reći ni da je gotovo, jer nije ni to. Umjesto toga, postavit ćemo pitanja — ona ista koja bi postavio radoznali laik koji ne razumije zašto je ovo toliko komplicirano, ali osjeti da bi trebalo biti. Kako se, zapravo, postaje senior kad nestane posla na kojem se to nekad učilo? Je li ovo prvi put da se struka ovako trese? I — najvažnije, ono što svi zapravo pitaju kad skinu diplomatski ton — ima li nade za onog koji upravo ulazi?

Nema tu jeftine utjehe ni jeftine panike. Ima samo pitanje koje se, čini se, postavlja baš sada, baš tebi, i koje zaslužuje bolji odgovor od slijeganja ramenima.

Dobro, reci mi iskreno. Pratim ove tvoje priče o AI-ju koji piše kod, radi testove, popravlja bugove — i sve mi se čini da opisuješ upravo onaj posao kojim je nekad neki dvadesetsedmogodišnjak s godinu dana staža plaćao stanarinu. Je li to točno, ili ja sad panično spajam stvari koje nisu povezane?

Točno je, dijelom. I upravo to „dijelom” je ono što ovo pitanje čini opasnim — jer nije potpuna panika, ali nije ni potpuno umirujuće „ma ništa se ne mijenja”. Sjeti se poglavlja o boilerplateu i o testovima (bilo je to par poglavlja unatrag) — AI je stvarno dobar baš u onim zadacima koje se tradicionalno dodjeljuju juniorima. „Napiši CRUD endpoint za korisnike” — CRUD je samo skraćenica za četiri osnovne stvari koje svaka aplikacija radi s podacima: stvori, pročitaj, promijeni, obriši (Create, Read, Update, Delete), dakle najobičniji „dodaj korisnika, prikaži korisnika, obriši korisnika”. „Napiši test za ovu funkciju.” „Popravi ovaj null-pointer bug, evo stack tracea” — null-pointer bug je kad program pokuša posegnuti za podatkom koji jednostavno ne postoji, kao da otvoriš frižider po nešto što nikad nisi kupio, a stack trace je ispis koji ti govori točno gdje se u kodu to posezanje za nepostojećim dogodilo. To je posao. Realan, plaćen posao koji su generacije programera radile prve dvije-tri godine karijere, i AI ga danas radi u sekundama, bez pauze za ručak i bez potrebe da mu netko objasni git rebase tri puta.

Ali — i ovo je ključno — nije da AI „ukida” juniorski posao kao koncept. On ukida jedan sloj tog posla, onaj najmehaničkiji, i to je baš onaj sloj koji je firmama najlakše izbrojati u eurima.

Kako to misliš, izbrojati?

Ovako. Zamisli da si vlasnik firme i gledaš dvije opcije. Opcija jedan: zaposliš juniora. Plaćaš mu plaću od prvog dana, iako prve tri mjeseca ima produktivnost blizu nule — uči repozitorij (zamisli ga kao veliku ladicu u kojoj se čuva sav kod firme, sa svim verzijama i poviješću promjena), uči alate, uči zašto se stvari rade baš tako a ne drugačije. Dodatno plaćaš i seniora koji ga mentorira, što znači da senior sporije radi svoj posao dok objašnjava juniorov. Dakle, plaćaš dvoje ljudi da bi za par mjeseci imao produktivnost jednog i pol. Opcija dva: platiš pretplatu na AI alat koji od prvog dana ispisuje kod, testove, dokumentaciju — sporije od pravog seniora, ali brže od juniora, i ne treba mu tri mjeseca da nauči gdje je repozitorij.

To zvuči kao — nemoj se ljutiti — kao da govoriš da su firme kratkovidne.

Govorim baš to, i nisam prvi koji to kaže. Firme kratkovidno računaju otkad postoje firme, samo su ranije te odluke bile skuplje pa su sporije padale. Sad je odluka jeftina i brza, pa i posljedice dolaze jeftino i brzo — samo što posljedice ove odluke dolaze za pet, deset godina, a ušteda dolazi danas. To je klasična kratkoročna matematika, i vidjet ćemo je detaljnije u sljedećem pitanju, jer tu priča postaje stvarno neugodna.

A ti signali koje spominješ — jesu li stvarni, ili se meni samo čini da čitam previše alarmantnih naslova?

Stvarni su, i ne treba ih uljepšavati. Broj oglasa za juniorske pozicije u razvoju softvera pada, i to nije izolirana anomalija nego se lijepo uklapa u val otkaza i restrukturiranja o kojem smo već pisali (sjeti se poglavlja o masovnim otkazima, malo ranije u ovoj knjizi) — samo što se ovaj put ne kreše samo zbog viška kapaciteta iz pandemijskog buma, nego zato što je zadatak koji je junior radio postao jeftiniji izvesti na drugi način. Kad se te dvije stvari poklope — firma već traži gdje rezati, a AI baš tu nudi rez koji se lako opravda — juniorska pozicija je prva na popisu, ne zato što je nevrijedna, nego zato što je najlakše mjeriva.

Dobro. Onda mi je strah opravdan.

Jest, i neću ti reći da nije, jer bi to bila laž koja se lijepo čita a loše stari. Ali strah je tu samo pola priče. Druga polovica je pitanje koje slijedi odmah iza ovog, i puno je neugodnije od „hoće li biti posla” — jer pita „ako nema juniorskog posla, odakle dolaze sljedeći seniori?” A to, vjeruj mi, nije retoričko pitanje.

"Kako se onda postaje senior?"
§ 02

"Kako se onda postaje senior?"

Dobro pitanje, i to je pitanje koje se glasno postavlja na svakom drugom meetupu otkad je AI počeo pisati kod. Kako, zaboga, postaješ senior ako ti netko ukine posao na kojem se to uči?

Krenimo od nešto što djeluje kao trivijalna istina, a nije: senior programer nije senior zato što je pametniji od tebe. Senior je senior zato što je jednom, davno, u dvadeset i trećoj godini života, naletio na pogrešno napisanu petlju koja mu je srušila produkciju u petak u 16:47, i onda tri sata gledao logove dok mu je šef stajao iza leđa i disao mu za vrat. To iskustvo — ne inteligencija, ne diploma, iskustvo — je ono što se danas prodaje na intervjuima kao „senioritet”. Cijela profesija je, u suštini, jedan dugačak lanac situacija: netko ti dade mali, dosadan, nebitan problem, ti ga zabrljaš, netko ti pokaže gdje si zabrljao, i ti to ne zaboraviš. Ponovi to petsto puta kroz pet godina i imaš seniora.

Sad, pitanje koje bi svaki razuman laik postavio: ako AI radi upravo te male, dosadne, nebitne probleme — CRUD endpoint tu, null-pointer bug tamo — tko će za deset godina imati onih petsto ponovljenih situacija iza sebe? Odakle dolazi sljedeći senior, ako je stepenica na kojoj se on formirao maknuta iz ljestve?

I tu dolazimo do stvari koja se rijetko kaže naglas, jer zvuči kao paničarenje, a nije — riječ je o čisto strukturnom pitanju, bez emocija. Ljestve za penjanje u ovoj struci imaju donje prečke (juniorski poslovi), srednje prečke (mid-level, samostalan rad) i gornje (senior, arhitektura, mentorstvo). Cijeli sustav pretpostavlja da netko stoji na dnu i penje se. Ako firma odluči da joj donje prečke ne trebaju — jer to AI radi jeftinije i brže — ljestve ne postaju kraće. One postaju ljestve koje lebde. Prekrasna gornja polovica, nikakav temelj, i jednog dana, kad gornja polovica ode u penziju ili promijeni posao, nema nikoga da je zamijeni.

Sad dolazi dio koji ti moram objasniti pošteno, jer se lako preskoči: nije samo broj poslova problem. Problem je vrsta iskustva koju ti taj posao daje. U poglavlju o vibe codingu (K8, poglavlje 6) već smo se dotakli te teme — kad AI napiše kod koji radi, a ti ne znaš zašto radi, ti nisi ništa naučio, samo si dobio rezultat. Isto vrijedi i za muku oko debugiranja, dakle traženja i popravljanja grešaka u kodu. Kad ti AI riješi bug za tri sekunde, ti dobiješ ispravljen kod. Kad TI riješiš bug za tri sata, dobiješ ispravljen kod I mentalni model kako ta stvar zapravo funkcionira ispod haube. To drugo, ta muka, nije nuspojava učenja — ona JE učenje. Boli te jer učiš, ne učiš pa te onda ne boli.

Zamisli da učiš plivati tako da te netko vozi po bazenu na gumenom krokodilu. Stigneš do drugog kraja bazena brže i suše nego bilo koje dijete koje se stvarno mučilo mahati rukama i gutati vodu. Ali baciš li tog istog klinca u duboku vodu bez krokodila, potonut će. AI je taj krokodil. Prekrasan je dok je tu. Pitanje je što se događa kad ga jednog dana nema, a bazen je odjednom dubok i mračan, a produkcija — dakle onaj stvarni sustav koji u tom trenutku koriste stvarni ljudi, ne neka verzija za vježbu — gori.

I onda dolazi pitanje koje bi ti, kao radoznali laik, trebalo postaviti odmah nakon toga, jer je zapravo najvažnije od svih: tko će za deset godina znati popraviti ono što AI ne može? Jer AI, koliko god dobar bio, ne popravlja dobro stvari koje nikad prije nije vidio — čudne, zapetljane, specifične sustave stare petnaest godina, koje je pisalo dvanaest ljudi kroz tri generacije menadžmenta, gdje dokumentacija ne postoji i svaka promjena ima efekt leptira negdje trećem sustavu dalje. Takve situacije rješava netko koji je intuiciju gradio godinama, kroz baš onu vrstu muke o kojoj govorimo. Ako te muke nema, nema ni te intuicije. A sustavi te vrste ne izumiraju — naprotiv, iz godine u godinu ih je sve više, jer ih nitko ne briše, samo se dograđuju.

Dakle ne, nije individualni problem ako mladi programer danas teže dolazi do prve muke koja ga formira — one bdijenja nad tuđim CRUD endpointom u tri ujutro, dok traži zašto mu se stalno javlja null-pointer bug i pokušava razaznati stack trace koji ništa ne znači. To je strukturni problem cijele industrije, koji se rješava na razini tvrtki, škola i, iskreno, kulture struke — ne na razini pojedinca koji se „samo mora više potruditi”. Pitanje je otvoreno i nezgodno, i vratit ćemo mu se opet do kraja poglavlja, jer se lako ne zatvara jednom rečenicom koliko bismo svi to voljeli.

"Je li ovo prvi put?"
§ 03

"Je li ovo prvi put?"

Dobro pitanje — i pošteno pitanje. Jer čovjek koji ga je postavio vjerojatno već sluti odgovor prije nego ga izgovori: ne, nije. Nije prvi put. Sjećaš li se, davno, kad su ljudi programirali u strojnom kodu? Nule i jedinice, direktno u registre, čovjek koji je razmišljao u naponima i prekidačima. Onda su došli asembleri — mnemonici umjesto brojeva, MOV umjesto niza bitova — i cijela ta generacija koja je razmišljala u čistim nulama i jedinicama postala je, tehnički, nepotrebna. Danas taj sloj znanja postoji kod relativno male, specijalizirane skupine ljudi, uglavnom onih koji pišu firmware za senzore u perilicama i pacemakere. Svijet nije stao. Nastavio se, samo jednu razinu apstrakcije više.

Pa onda su došli viši programski jezici — C, Java, Python — i asembler je otišao istim putem. Danas malo tko od nas, uključujući mene, može ispravno napisati petlju u asembleru bez guglanja tri puta. I to je normalno. Nitko normalan ne plače nad tim. Onda su došli okviri i biblioteke — gotovi paketi kodova koje samo uzmeš i složiš, umjesto da sve pišeš od nule — pa danas veliki dio programera nema pojma što se stvarno događa ispod React kukica ili Spring Boot magije; samo znaju da funkcionira, i to im je dovoljno. Svaki taj korak je, u svom trenutku, bio kritiziran kao gubitak temeljnog znanja. I svaki put je netko rekao: pa ako nitko ne zna sklopiti procesor iz logičkih sklopova, kako će popraviti računalo kad se pokvari na najosnovnijoj razini? Odgovor je — netko će znati. Samo će ih biti manje, i bit će specijalizirani, i ostatak svijeta će živjeti dobro i bez toga znanja.

I baš tu je kvaka koja ovaj skok čini drugačijim od svih prijašnjih. Kad je asembler zamijenio strojni kod, čovjek je i dalje morao razumjeti logiku programa — samo je pisao MOV AX, 5 umjesto niza binarnih znamenki. Alat mu je skratio tipkanje, ne razmišljanje. Kad AI generira funkciju, on ne skraćuje tipkanje — on odrađuje i logiku. Junior koji od AI-ja traži „napiši mi paginaciju” ne uči kako paginacija radi na način na koji je junior iz 2003. učio kad je morao ručno računati offset i limit i triput zabrljati prije nego mu upali — a paginacija je, ako se pitaš, samo prikaz rezultata po stranicama (recimo 20 stavki po stranici), gdje offset kaže odakle se broji, a limit koliko se stavki uzima. On dobije rješenje. Rješenje koje radi. I to je upravo problem koji smo obradili u prošlom pitanju — muka je bila učenje, a AI je muku ugasio zajedno sa znanjem koje je iz nje izlazilo.

Ali — i ovo je taj »ali« koji povijest voli ubaciti kad je najmanje očekuješ — možda gledamo na krivom mjestu. Možda se juniorska vještina ne gasi, nego se seli jednu razinu gore, baš kao i svaki put prije. Junior danas možda ne treba znati napisati paginaciju od nule. Ali treba znati prepoznati kad je AI napisao lošu paginaciju, treba znati postaviti agentu pravi zadatak, razbiti veliki problem na male korake koje agent može odraditi, provjeriti rezultat, spojiti pet AI-generiranih komada u sustav koji stvarno radi. To nije trivijalna vještina. To je, iskreno, teža vještina od pisanja paginacije — jer traži da razumiješ problem dovoljno dobro da prepoznaš kad je rješenje pogrešno, bez da si ga sam napisao. Zove se to »orkestracija« u nekim krugovima, mrzim tu riječ, ali koncept stoji. Možda je to novi junior posao — ne pisati kod, nego voditi AI da ga napiše, i znati kad mu ne vjerovati.

Dakle — je li ovo prvi put? Ne, obrazac je stariji od svih nas: apstrakcija dođe, stari sloj znanja postane specijalizacija za malobrojne, svijet nastavi na novoj razini. Ali ovaj skok je veći od prijašnjih, jer ne apstrahira alat nego mišljenje, i jer se sve to događa brže nego ikad — asembler je vladao desetljećima, a ChatGPT je preokrenuo cijelu igru u samo dvije godine. Historija kaže: prilagodi se, uvijek se prilagodilo. Ali historija se nikad nije morala prilagoditi ovakvom tempu. To je razlika koju vrijedi zapamtiti prije nego prijeđemo na pitanje što, dovraga, onda učiti.

"Što onda učiti?"
§ 04

"Što onda učiti?"

Dobro, kaže laik, dosta filozofije o ljestvama i paradoksima. Konkretno — ako mene sad zanima ovo, što da učim? Sintaksu neću, kažeš, jer to AI zna bolje od mene. Pa što onda ostaje?

Ostaje, iskreno, ono što je uvijek bilo teže naučiti od sintakse — samo što se prije to moglo prešutjeti, jer je sintaksa oduzimala toliko vremena da nitko nije stigao do te druge razine dok ne bi već tri godine bio u struci. Čitanje koda — ne pisanje, čitanje. Netko drugi (ili nešto drugo) napiše petsto linija, a tvoj posao je da za deset minuta shvatiš što to radi, gdje će pući i zašto. Debug — ne guglanje poruke o pogrešci, nego onaj osjećaj za trag, gdje ćeš prvo posumnjati kad nešto ne valja. Arhitektura — kako složiti dijelove da za godinu dana ne postane katastrofa. Prosudba — je li ovo rješenje dobro, ili samo radi. I komunikacija — jer AI ne sjedi na sastanku i ne objašnjava produkt menadžeru zašto feature kasni tjedan dana.

Sve to zvuči kao soft skillovi, kaže laik, sumnjičavo. Pa jesu, dijelom. Ali nemoj ih zamijeniti s »biti drag na sastancima«. Čitanje koda i debug su brutalno tehničke vještine, samo se ne uče iz udžbenika sintakse — uče se gledanjem u tuđi kod dok ti curi iz nosa od frustracije. Samo što će taj tuđi kod, statistički, sve češće biti napisan od strane AI-ja.

Dobro, pita laik, znam sad ŠTO. Ali KAKO? Kako uči netko kome je AI na dohvat ruke od prvog dana, kad je najlakše — priznajmo — samo pitati i prepisati?

Tu, iskreno, nemam gotov odgovor — i nitko ga nema, jer je pitanje premlado da bi imalo odgovor. Ono što se zna: razlika između »učiti s AI-jem« i »biti ovisan o AI-ju« nije u tome koristiš li ga, nego zašto. Ako pitaš AI da ti objasni zašto nešto ne radi, pa onda sam popraviš — to je učenje, samo ubrzano. Ako pitaš AI da ti napiše rješenje, pa ga zalijepiš i pređeš dalje bez da pogledaš zašto je baš to rješenje — to je isto što i prepisivanje od kolege u zadnjoj klupi, samo brže i s ljepšim rukopisom. Model ne razlikuje ta dva slučaja. Ti moraš.

I evo gdje se ovo poglavlje tiče tebe osobno, ne samo statistike o masovnim otkazima. Ako ulaziš u struku danas, imaš alat koji tvoji prethodnici nisu imali — i to je stvarna prednost, ne treba je se stidjeti. Ali imaš i iskušenje koje oni nisu imali, jer njihov »AI« se zvao Stack Overflow (stranica gdje programeri desetljećima postavljaju pitanja i kradu tuđa rješenja, uz obaveznu svađu u komentarima), kolega u susjednom uredu i tri sata očaja nad terminalom. Ono treće — očaj — nije bio bug u sustavu učenja. Bio je feature.

Regija ima svoj poseban kut na ovo, jer onboarding (uvođenje novog kolege u posao i tim) kod nas rijetko izgleda kao u knjigama — nema uvijek formalnog mentora, nema uvijek strukturiranog plana prvih devedeset dana. Puno se učilo bacanjem u vatru i gledanjem tko ispliva. Sad se u tu vatru dodaje i AI koji dobaci privremenu plutajuću dasku — i pitanje je hoće li ta daska naučiti ljude plivati, ili će samo odgoditi trenutak kad shvate da ne znaju.

"Dakle, ima li nade?"
§ 05

"Dakle, ima li nade?"

Dobro. Zadnje pitanje, i najpoštenije je da ga postavim onako kako ga zapravo misliš: hoće li biti u redu?

Kratki odgovor: profesija se neće ugasiti. Duži odgovor: neće se ugasiti, ali će se promijeniti — i to tako da neke stvari koje su nam nekad bile normalne (prva godina posla u kojoj se smije griješiti na sigurnom, mentor koji ima vremena objasniti zašto je nešto loše napisano, ljestve s dovoljno prečki da se ne osjeti kao skok) jednostavno neće postojati u obliku na koji smo navikli. To se već događa. Nije nagađanje za 2040. godinu, nego proces koji je počeo prije nekoliko godina i traje baš sada, dok ovo čitaš.

I tu dolazimo do dijela koji ne volim, ali moram reći: nemam odgovor na pitanje tko će platiti to učenje ako ga ne plaća poslodavac kroz prvu godinu posla, kao što je dosad bio slučaj. Nemam odgovor na pitanje mijenja li se obrazovanje — fakulteti, bootcampovi (ubrzani tečajevi programiranja koji obećavaju posao za nekoliko mjeseci), sve to — ili će i dalje proizvoditi ljude spremne za posao koji polako nestaje. To nisu pitanja na koja glumim da znam odgovor samo da bih zvučao pametno. Iskreno ne znam. I sumnjam da bilo tko zna, unatoč tome što će ti neki konzultant za tisuću eura po satu tvrditi suprotno.

Ako ovo poglavlje boli — dobro. Trebalo je. Cijela ova knjiga do sad je pokazivala kako je svaka generacija programera mislila da je njezina kriza posljednja, i onda se pokazalo da nije (K1 do K8, čitava nit — asembleri, visoki jezici, frameworci, cloud, sve je nekome oduzelo posao, a nekome drugome dalo novi). Ali ta činjenica ne umiruje bol onome tko je sada, danas, junior i gleda oglase koji traže tri godine iskustva za poziciju koja se prije zvala „entry-level”, odnosno pozicija za početnike, bez iskustva. Iskustvo mnogih koji su prošli kroz prethodne krize kaže: prilagodi se. Iskustvo onih koji su usput ostali bez posla kaže: nije bilo tako jednostavno. Obje su istinite. To je poanta cijele ove sekcije.

Konstruktivni dio, bez uljepšavanja: oni koji nauče koristiti AI ne kao alat kojem prepuštaš posao, nego kao pripravnika kojeg nadgledaš, čiji rad provjeravaš, čije greške znaš prepoznati jer razumiješ zašto su greške — ti ljudi bit će sljedeći seniori. Ne zato što je to lijepa priča koju volim pričati, nego zato što je to logično: netko mora biti taj koji zna reći »ovo je krivo« kad AI samouvjereno izbaci nešto pogrešno. Problem je što taj put — kako od nule doći do te razine kad nema onih malih, sigurnih zadataka na kojima se to nekad učilo — još nitko nije zacrtao. Ne postoji priručnik. Ti koji ovo čitaš i tek ulaziš u struku, dijelom si pokusni kunić tog puta. Ti koji uvodiš druge u struku, dijelom si primoran izmišljati taj put u hodu.