Tri programerske pozicije - 100 definicija što obuhvaćaju. Ususret objavi matrice senioriteta development agencije Bornfight, iskoristili smo priliku razgovarati s nekoliko članova domaće IT zajednice ne bi li rasvijetlili što bi mogao biti standard za juniorski, middle ili seniorski posao programera. Evo što smo saznali...
Iako je u pitanju jedan specifičan slučaj, Bornfightov vodič dobar je povod za otvaranje teme koja se dugo provlači u programerskim kuloarima. Nijedan programer ili poslodavac neće vam dati jednak odgovor na pitanje što obuhvaća posao jednog junior, middle ili senior programera. Ipak, većina bi vam rekla da se senior “jednostavno prepozna” u timu. No, karijera programera ne počinje sa seniorskom razinom. Jedan junior u prijelazu na middle nekada teško može sam procijeniti koliko je napredovao i da li to zaslužuje unaprjeđenje.
Kroz mapiranje programerskih kompetencija te vrste iskustva i napretka potrebnih da se dođe do istih, matrica poput Bornfightove može poslužiti ne samo CEO-u, HR-u, voditeljima timova i odjela, već i samim zaposlenicima, kao jednostavan vodič za pozicioniranje, a uz koji bi i sami mogli provjeriti točnu razinu u kojoj se nalaze, što se od njih očekuje i što trebaju napraviti kako bi napredovali dalje.
Kako je za Netokraciju Srbija istaknuo programer s 20 godina iskustva – za razliku od kolega u drugim inženjerskim strukama, softverski inženjeri nikada nisu osnovali udruženje odnosno ceh koje bi brinulo o takvim stvarima. Upravo stoga developeri danas nemaju certifikate, etički kodeks ni standarde koji bi definirali senioritet u IT tvrtkama.
Stoga sam ususret objavi Bornfightovog vodiča, razgovarala i s dvije domaće IT tvrtke, konkretno s Lukom Drezgom, COO-om Ars Future, te Murom Kokotović, voditeljicom HR-a u CROZ-u, kako bi dobila bolji uvid u trenutnu situaciju na domaćoj sceni.

Naime, trenutno postoji par strukturiranih načina da se evaluira znanje developera. Jedan od njih je i primijenjeni Dreyfusov model usvajanja vještina koji identificira pet razina usavršavanja, a koji je Andy Hunt prilagodio softver developmentu. Zatim imamo model Meilir Page-Jones koja klasificira stručnost developera na sedam razina, a kojoj je produktivnost glavni kriterij evaluacije, pa i Programersku matricu kompetencija Sijina Josepha koja se vraća na poznatu klasifikaciju na tri razine: junior-middle-senior, kojoj dodaje i nultu razinu (intern).
Tomislav smatra, kao i mnogi, da su takve matrice ponešto kompleksne, a tako su došli i na ideju da objave svoju. Svojim vodičem, kako kažu, žele “napraviti višestruko jednostavniji model i totalno izmijeniti taj proces”.
Ne mičemo se mnogo od seniora, middlea i juniora…
U Bornfightovom vodiču svako je radno mjesto, bez obzira na odjel u kojem se nalazi, opisano kroz Junior, Middle i Senior pozicije (+Lead), te dodatno raspodijeljeno na 3 razine. A same odgovornosti su dodatno specificirane kroz zadatke, projekte, procese i rezultate.
Napredovanjem kroz razine senioriteta navedene u ovom vodiču, tvoj se primarni fokus pomiče od kategorije zadatka prema kategoriji rezultata, jer se očekuje da si cijeli sustav uspio tako dobro posložiti da jednostavnije odgovornosti koje dolaze prije na listi mogu preuzeti i mlađi članovi tima.
Sličan napredak u razini odgovornosti za svoje tvrtke spominju mi i moji sugovornici. Luka objašnjava kako oni također prate standardan format – studenti koji rade kod njih najčešće su zaposleni kao interni, dok nakon fakulteta slijedi junior, mid i senior razina. Iz CROZ-a od Mure pak saznajem da se oni ne drže stroge sistematizacije radnih mjesta niti imaju pravilnik o napredovanju te ona smatra da je u svakom slučaju bolje da takvo što prati i procjenjuje HR i people management, a ne “rule engine”. Naravno, u praksi se neke stvari uvriježe same po sebi pa se i u CROZ-a vide uobičajene razine unaprjeđenja programera:
Naše iskustvo je pokazalo da smo svi (i firma i zaposlenik) najsretniji kad seniori nastaju organski, kroz rast u CROZ-u (naravno, postoje iznimke, i to vrhunske…). Sve kreće od mladih dana i dobar dio naših seniora u CROZ je došao s titulom studenta. Zato jako puno truda ulažemo u ljetne studentske prakse. Radimo sa studentima koji nakon praksi postaju dio našeg tima i rastu od junior preko middle do senior developera.
A kad bi definirali, što bi uopće obuhvatilo programerski posao na te tri razine?
Juniori – učenje je majka napretka
Kako ističe i Bornfight u svom vodiču, juniori su dugoročna investicija, i svi bi htjeli da se unutar tvrtke razvijaju i dalje. Od Juniora u Bornfightu ne očekuju odgovornost za rezultate niti rad bez podrške iskusne osobe. Junior kod njih treba raditi prema zadanim uputama, pratiti pokazane procese, koristiti alate uz što manje grešaka i – prihvatiti feedback. Na ovoj razini naglasak je uvijek na učenju i provjeri, a slično vrijedi i za Ars Futurine Juniore:
Od osobe na ovoj poziciji očekujemo da se još uvijek uči snalaziti u tehnologijama u kojima radi, iz toga razloga uvijek ima mentora koji je direktno odgovoran za njen kod. Nekakav proces koji tu imamo postavljen, osim internih edukacija, su dosta česti i temeljiti code reviewovi.
Bornfight također u vodiču ističe bitan aspekt mentorstva na ovoj razini, s naglaskom da je juniorova odgovornost da izvuče maksimum iz svojeg mentora. Naravno, velika odgovornost je i na mentorima odnosno linijskim voditeljima koji će usmjeriti taj rast, dodaje Luka iz Ars Future:
Bitno je stimulirati razvoj na svakoj razini, kod nas recimo nije praksa da praktikanti ne pišu produkcijski kod. Čim se osoba malo osamostali, vidjet ćemo postoji li projekt na kojem može raditi, naravno uz nekoga višeg senioriteta. Smatramo da se osoba najviše može razviti kad se suoči sa stvarnim problemima na stvarnim projektima.
Što se tiče kompetencija, za Ars Futuru Junior bi morao poznavati osnove tehnologije u kojoj radi dok se očekuje da naprednije funkcionalnosti može odraditi uz pomoć iskusnijih developera.
No, ne zaboravimo da se u Bornfigtovom vodiču nalaze tri razine Juniorskih pozicija, bez posebne nomenklature, osim razina 1 ili 2 – svakim stupnjem pomalo se penju i odgovornosti i očekivanja juniora. Na prvoj razini obavljaju se zadaci po uputama, pita se za pomoć, sluša se savjete i kritike, da bi s vremenom Juniori postajali sve samostalniji u odrađivanju zadataka, preuzimaju više odgovornost te postaju i proaktivni kad su u pitanju preporuke mogućih rješenja. Kako naglašavaju na kraju treće Juniorske razine:
Nitko te neće proglasiti Middleom (ili bilo kojom sljedećom pozicijom), pa da tek onda počneš raditi to što se od Middlea očekuje. Naznake i inicijativu moraš pokazati već prije – sljedeću poziciju dobivaš kada već značajno po njoj djeluješ.
Middle – sve većim odgovornostima do napretka

Upravo takav put potvrđuje i CROZ, developer za njih postaje middle kad je – postao samostalan i može samostalno odrađivati posao. Iz Ars Future također na middle poziciji očekuju relativno viši nivo samostalnosti.
Ovo je osoba koja bi se u ovoj fazi već trebala solidno snalaziti u tehnologiji u kojoj radi i samostalno odrađivati taskove. Naravno to ne znači da se ta osoba još uvijek ne uči i da ne bi trebala postavljati pitanja, smatramo da je za razvoj pojedinca a i tima u kojem radi, vrlo bitna edukacija među članovima tima. Najviše možemo naučiti jedni od drugih.
Pa iako se još velik naglasak stavlja na timski razvoj i učenje, za Bornfightovog middle programera važno je da ga više nitko ne vodi za ruku, ali je duboko svjestan koliko još mora učiti. Njihova je ideja da middle treba biti “u potpunosti samostalan u radu te se svojim razvojem, iskustvom i radom dovesti u situaciju da može preuzeti odgovornost nad finalnim outputom projekata”. Sljedeći važan korak u napredovanju kroz tri razine kroz koje Bornfight unaprjeđuje svoje middle programere su: preuzimanje mentorstva ili dodatna uloga voditelja tima.
Slična stvar se događa i u CROZ-u. Njima je već u praksi pratiti zaposlenika u svim fazama života i osigurati prilike da izađe iz vlastite komfor zone, kroz preuzimanje dodatne odgovornosti, poput mentoriranja:
Gradimo kros-funkcionalne timove koje interno zovemo vlakići. 🙂 Odnosno, ako senior developer traži pojačanje u timu, neće dobiti drugog seniora nego juniora koji se želi razvijati u tom timu. S tim juniorom onda radi middle developer iz tima, a middle postaje taj senior kojeg smo tražili na početku priče.
Takav middle da bi došao do Bornfightove treće razine mora razumjeti “svaki detalj procesa prema kojem se radi na pojedinom projektu”. Osim toga mora biti proaktivan u rješavanju prepreka, unaprjeđivanju starih i predlaganju, testiranju i implementiranju novih procesa.
Senior – iskustvom do napretka

Jednom kada dođe do seniorske pozicije programer se osjeća kao da je napokon došao do zadnjeg levela u igri koja nema kraja. Napokon je opremljen i spreman, ali pred njim je još mnogo izazova i usavršavanja. Kako za ovu poziciju ističu u Bornfightovom vodiču, “kroz ono što radiš prošao si stotine puta i napravio mnogo grešaka – i na tom si iskustvu puno naučio”. A sad je red da na tom iskustvu donese ispravnu odluku, onu koja će donijeti maksimalan benefit za biznis s najmanjim mogućim troškom – zaključuje se u vodiču.
Znamo svi što donošenje odluka znači – preuzimanje odgovornosti. Za Ars Futuru seniorska pozicija također podrazumijeva, osim potpune samostalnosti, velikog znanja i spretnosti u tehnologijama – i najviše odgovornosti.
Senior developer ima jako puno iskustva, znanja i projekata iza sebe, to je osoba koja, bez problema, samostalno i proaktivno radi na projektu. Kod nas su project leadovi, dakle ljudi generalno zaduženi za razvoj projekata, upravo senior developeri, iako to naravno ovisi od osobe do osobe. Nema svaki senior želju ili sposobnosti preuzeti lead ulogu.
Upravo o preuzimanju takvih uloga dosta ovisi i napredovanje seniora u CROZ-u, dodaje Mura:
Kriterij je extraordinary achievement iz dva područja: tehničko znanje i/ili stvaranje novih middle programera kroz mentoriranje, edukaciju i unaprjeđivanje kolega. Naglašavam i/ili jer ne mora svatko imati oboje da bi bio senior. Neki se više nađu u tehničkoj izvrsnosti, neki u radu s ljudima. A neki oboje.
Senior, kako ističu iz Ars Future, osim što bi trebao imati napredno znanje tehnologije, trebao bi pratiti konvencije i trendove tehnologije u kojoj radi. Uz to, trebao bi moći prepoznavati probleme koji mogu nastati, poznavati arhitekture sustava te biti upoznat s radom drugih tehnologija na koje se oslanja.
Bornfight za seniore također u ključne karakteristike seniora stavlja rješavanje problema, predviđanje i prevenciju prepreka te odgovornost za uspješno završavanje projekata i ostvarenje ciljeva. Ukratko: “rješavaš što nitko drugi nije uspio riješiti”.
Tehničke prepreke standardu?
U redu. Popisali smo okvirne ideje toga što čini jednog junior, middle i senior programera. No, kako mjeriti pojmove poput samostalnosti, odgovornosti i proaktivnosti, a na čemu se temelje sve razine?
Bornfight nam tu sigurno čini uslugu popisivanjem specifičnih kriterija za svaku od pozicija na tri razine. Za Middle level 2 (The Go To) primjerice, čak možemo povući paralelu što bi odgovaralo tim pojmovima u konkretnom poslu. Za proaktivnost na toj razini middlea znači da programer počinje raditi na projektima koji ne spadaju u direktan core njegovog odjela, za samostalnost to znači da programer za sebe već kreira i unaprjeđuje korake i alate te dokazuje na svojim projektima da funkcioniraju, dok istovremeno ima odgovornost za svaki zadatak pronaći način kako ga riješiti i uspješno završavati projekte.
No, što je s tehnologijama? Kako pokazuju rezultati ankete Tomislava Grubišića o plaćama developera u Hrvatskoj za 2019. godinu, nije u svim tvrtkama niti tehnologijama (pogotovo ako su mlađe) isti broj godina iskustva preduvjet za istu poziciju. Tako primjerice iOS ili Java developeri mogu čak s dvije godine iskustva postati seniori, dok primjerice C++ programer da bi postao senior treba minimalno 5 i više godina iskustva.
A što s razlikama u veličini tvrtki? Korporacije i manje firme ne mogu imati isto mjerilo, nije nesvakidašnja situacija da programeri u prelasku iz korporacije u manju tvrtku gube razinu pozicije i obratno. Što je pak s vanjskim suradnicima –freelancerima, a što s inhouse programerima? Na koji način bi se moglo uopće obuhvatiti sve nijanse programerskog posla kada ih je tako teško staviti pod zajednički nazivnik? Uz sve to, uzmimo u obzir da vertikalno napredovanje nije jedini način napretka programera. Kako smo saznali od Infobipova dva programera, upravljanje nije jedini smjer, horizontalni napredak donosi priliku za više specijalizacija, a time i za posao važnu vještinu – viđenje šire slike projekta ili problema. Primjer za to je i sam CROZ, kaže Mura:
I kod nas ima ‘horizontalnog napredovanja’, ljudi isprobavaju razne uloge, specijalnosti i tehnologije iz našeg portfelja usluga, pa recimo imamo ljudi koji su prošli put developer-IT konzultant-sales ili project manager- agile coach.
Možemo li evaluirati napredak i znanje developera?
Bez obzira na ne postojanje nekog standarda ili ceha, Ars Futura, Bornfight i CROZ, kao i ostali poslodavci softverskih inženjera, dosad su našli načina kako evaluirati kompetencije svojih zaposlenika, ali i kako ih potaknuti na njihov dodatan razvoj. Iz CROZ-a ističu da svoje zaposlenike upoznaju s jasno raspisanim procedurama, prate njihov napredak kroz redovita follow up druženja i u startu ih uključuju u sve interne tehnološke inicijative:
Posebno brinemo o mehanizmima coachinga i razvoja pa tako već godinama organiziramo tech kave petkom na kojima pričamo o novim tehnološkim rješenjima i izazovima s kojima se ekipa susreće te Tech Thursday radionice gdje pojedini timovi ostatku ekipe predstavljaju projekte na kojima su radili. Uz sve tehnološke inicijative i edukacije, trudimo se kod ljudi razvijati i socijalne vještine kroz razne soft skills radionice koje pokrivaju teme od leadershipa i timskog rada do feedbacka.
Procjena napretka zaposlenika u Ars Futuri također se oslanja na uvid drugih ljudi – koji s tom osobom rade. Luka Drezga ističe da im u tome pomaže redovita komunikacija s klijentom te dobivanje povratnih informacija od kolega u timu i njihovih nadređenih. Bornfight pak od sada ima matricu koja će mu u tome pomagati. Ipak, ne može bez ljudi – matrica je tu samo kao alat. Kako objašnjavaju u vodiču, svaki član tima sa svojim voditeljem treba napraviti procjenu svog rada s obzirom na definiciju pozicije na kojoj se trenutno nalazi.
Kako vidimo, praćenje i definiranje napretka u IT tvrtkama ima svoje razlike, ovisno o kontekstu, ali u svakom pristupu prepoznajemo neke uobičajene prakse koje su se ustalile kroz godine razvoja industrije i tržišta. Neki će htjeti te prakse popisati, dodati im svoj pristup i kontekst radnih procesa – poput Bornfighta. Neki će se osloniti na HR, dok će treći kombinirati provjerene modele. Da li nam je stoga potreban generalni standard?
U razgovoru s nekoliko developera saznala sam i kako ih većina na razvijanje nekog standarda gleda skeptično. Razlike među osnovnom podjelom juniora, middlea i seniora će uvijek biti specifične ovisno o tvrtki, tehnologiji, vrsti radnog odnosa i sličnog. Skoro je nemoguće iznijeti jedno mjerilo koje će odgovarati svima, zaključuju. Uz to, standard bi mogao dovesti do toga da se doslovno popisuju kriteriji koje je netko ispunio ili nije – čime bi se podigla transparentnost, ali bi ona bila nauštrb dinamike programerskog posla i rada u timu.
Stvaranje standarda ima svoje prednosti i nedostatke, u svakom slučaju. No, možda je rješenje negdje između? Iako ne žele da im se nameće lista kriterija s checkboxevima, u tvrtkama u kojima nije jasan čitav proces, programerima bi bilo zgodno znati okvirnu matricu seniorskih razina koja se u tvrtki primjenjuje. Upravo bi zato vodič poput Bornfightovog mogao biti dobar presedan za domaću industriju, a čiji će primjer, nadam se, pratiti i mnogi drugi.
A za kraj, recite nam, biste li vi navijali za izradu standarda?
Sukladno članku 94. Zakona o elektroničkim medijima, komentiranje članaka na Netokraciji dopušteno je samo korisnicima koji ostave svoje ime i prezime te mail adresu i prihvate pravila ponašanja.
Pravila ponašanja
Na Netokraciji za vas stvaramo kvalitetan, autorski potpisan sadržaj i zaista se veselimo vašim kvalitetnim, kontruktivnim komentarima. Poštujmo stoga jedni druge prilikom komentiranja, kao i Zakon, držeći se sljedećih pravila ponašanja:
Kako koristimo podatke koje ostavljate? Bacite oko na našu izjavu o privatnosti.
Sve ostale komentare ćemo s guštom spaliti, jer ne zaslužuju svoje mjesto na internetu.