Ogromna potražnja za programerima, koja je u zadnjih nekoliko godina postala fokusom globalnog, a samim time i domaćeg tržišta rada, dovela je do situacije u kojoj se programerima s jednom ili dvije godine radnog iskustva nude seniorske titule kako bi ih se privuklo u novu ili zadržalo u postojećoj kompaniji
Kako bismo saznali što zapravo znači biti senior programer, koje su odgovornosti seniora i koje su mogućnosti napredovanja kad se jednom dođe na tu poziciju, popričali smo s tri programera koji i po stažu i po znanju i po iskustvu spadaju u kategoriju seniora.
Boris Bralo, Tonći Tomić i Marko Vučetić se preko 20 godina aktivno bave programiranjem, a danas su ključan dio Mirea u kojem razvijaju napredne navigacijske sustave – kako za velike automobilske grupacije, tako i za proizvođače superautomobila.
Sva trojica se već više od 20 godina aktivno bavite programiranjem, a najveći dio tog vremena ste u Mireu. Što, po vama, čini senior programera?
BORIS: Godine rada su važne, jer ti kad izađeš s fakulteta ne znaš profesionalno programirati. Ti znaš raditi u nekom programskom jeziku, ali ne znaš to još praktično primijeniti. I to vrijedi za sve inženjerske pozicije.
Uz to, čitava se industrija brzo mijenja pa ti na fakultetu možeš naučiti samo temeljne stvari, dok ćeš pravo, profesionalno programiranje usvojiti upravo kroz rad.
MARKO: Da, godine su važne, ali ne same po sebi. Ima genijalaca koji mogu postati iznimno produktivni i efikasni u vrlo kratkom roku. Ali godine su važne zbog toga što se, kao što Boris kaže, tehnologija stalno mijenja i stalno dolaze neki novi trendovi. Tebi će godine iskustva omogućiti da u svoj toj buci lakše detektiraš ono što je važno za proizvod na kojem radiš i što ti može pomoći da postaneš bolji programer.
Po meni, odličan pokazatelj seniorskih vještina je mogućnost samostalne izrade jednog velikog i relativno kompleksnog programa. U Mireu često kažemo da je to program koji se sastoji od oko 5,000 linija koda. U tih 5,000 linija koda ti ne možeš napisati nešto što već samo po sebi nije kompleksno, ali kvaliteta tog koda će pokazati radi li se tu o senioru ili ne.
TONĆI: Ja to gledam ovako. Titula senior programera nije nešto što ćeš steći velikim postignućima, već se do nje dolazi iskustvom i angažmanom. Možeš ti biti i 20 godina u jednom poslu, ali ako samo odrađuješ projekte i rješavaš probleme koji padaju na tebe, nećeš biti senior. No ako iz svakog tog projekta i problema pokušavaš izvući i iskustvo i znanja koja su šira od samog programiranja, to će ti omogućiti da počneš razmišljati kao senior.
Što to znači? Kad dođe neki novi projekt, senior programer će brzo shvatiti koliko ljudi treba za taj projekt, koliko će trajati i gdje će dolaziti do najvećih problema – to su stvari koje nisu nužno vezane uz pisanje koda, ali one odvajaju seniore od juniora i programera na mid pozicijama. Po meni, senior programeri u neku ruku mogu biti čak i osobe koje se ne bave programiranjem ako su dovoljno dugo u tom miljeu i razumiju kako se proizvodi razvijaju – kad razumiju širu sliku i kako neki njihovi mali zadatci utječu na razvoj cijelog proizvoda.
Marko, spomenuo si efikasnost programera. Što se pod tim misli?
MARKO: Tu se ponajviše gleda samostalnost u radu. Programerima na juniorskim pozicijama ćeš morati eksplicitno reći i što trebaju dobiti kao rješenje i što točno moraju napraviti kako bi došli do tog željenog rješenja. Seniori će, s druge strane, najčešće imati samo okvirnu ideju što bi trebali dobiti kao rješenje, ali i potpunu slobodu kad je u pitanju odabir tehnologija i načina rada koji će ih dovesti do rješenja.
Upoznati ste sa stanjem na domaćem tržištu rada i raznim načinima na koje IT kompanije pokušavaju privući programere. Može li se postati senior programer nakon godinu dana rada?
TONĆI: Ne. Ali ne zbog toga što ti treba neka velika pamet da bi bio senior, već prvenstveno zbog iskustva. Ona priča o 10,000 sati je apsolutno primjenjiva na ovo – ali ponavljam, samo ako je u sve uključen i angažman. Ako godinama aktivno radiš na nečemu i želiš iz svakog dijela posla izvući nešto više, prije ili kasnije ćeš postati ona osoba koju će se pitati kojim putem treba krenuti u razvoju proizvoda. E to je senior.
Potražnja za programerima je eksplodirala u zadnjih par godina i meni je jasno da tržište diktira situaciju vezanu uz programere. Kao, treba nam više senior programera pa ćemo ih izmisliti, ali to ne znači ništa – te se titule lako podijele programerima bez ili s malo iskustva jer trenutna situacija to diktira, ali to nisu ljudi koje se može smatrati senior programerima.
Mislite li da je “razbacivanje” seniorskim titulama smanjilo vrijednost pravih seniora?
BORIS: Ja sam uvijek tražio da budem Software Evangelist. Šalu na stranu, u našoj je struci uvijek bilo različitih titula, ali one ništa pretjerano ne znače.
TONĆI: Meni je kao senior programeru potpuno svejedno tko se sve naziva seniorom jer kad programeri dođu na razgovor za posao, lako se shvati koliko osoba zna i radi li se tu o pravom senior programeru ili ne.
U našoj se industriji stalno mijenjaju i nazivi i titule i pozicije, ali na kraju dana to nema neku veliku važnost.
Kako se u Mireu postaje senior programer?
MARKO: Programeri su kod nas jako povezani i otvoreni jer ovdje vlada vrlo visoka razina povjerenja. Upravo zbog toga mi iskusniji znamo tko bi od mlađih programera mogao preuzeti i držati pod kontrolom izradu nekog većeg programa ili veće količine koda. A kako ih razvijamo? Tako što im dajemo sve kompleksnije zadatke i vjerujemo u njih da ih mogu uspješno riješiti.
BORIS: A na kraju se vidi rezultat, vidi se kvaliteta koda i koliko je toga trebalo popraviti – i sve je to proces napredovanja. Ti kad prođeš kroz kod, ti možeš vidjeti što nekim programerima bolje leži, gdje zapinju, gdje imaju najviše potencijala za napredovanje i što bi trebalo promijeniti.
TONĆI: Svi programeri koji su došli u Mireo i potom napredovali do seniorske razine su bili oni koji su proveli dovoljno dugo vremena s nama kako bi shvatili sve aspekte proizvoda na kojem rade i uz to ih je zanimala šira slika vezana uz taj proizvod.
Godine rada su važan uvjet, ali nisu jedini uvjet – programer jednostavno mora imati dovoljno vremena kako bi upoznao proizvod na kojem radi, susreo se različitim tipovima problema, isprobao neke nove pristupe, napravio i greške tijekom rada. Sve su to dijelovi onog iskustva o kojem sam pričao, i to treba proći da bi osoba počela razmišljati kao senior programer.
Za što ste kao senior programeri u Mireu vi izravno odgovorni, a što delegirate mlađim programerima?
TONĆI: Najčešće bude ovako – što si seniorniji, to ti se nakupi sve više stvari za koje si odgovoran.
Situacija je ovakva. Mlade programere možeš podijeliti po tome koliko razumiju i znaju programirati. Ovo će možda zvučati malo okrutno, ali ima ljudi od kojih ne možeš očekivati da će išta korisno raditi prvih godinu dana, ali takav je život – ljudi su završili fakultete, pametni su i hoće raditi, ali jednostavno nisu radili na nekim ozbiljnijim projektima i nemaju programerskog iskustva. Na nama starijima je odgovornost da ih uvedemo u sve i naučimo kako se radi.
S druge strane, imaš mlade koji rasturaju programiranje – koji dubinski poznaju tehnologije i na kojima se vidi da su radili nešto konkretnije. Ovdje je naš zadatak da njih prepoznamo na vrijeme i da im odmah damo da rade na ozbiljnim projektima jer će im inače biti dosadno i otići će. Ovaj set mladih je onaj na koje mi seniori možemo delegirati svoje programerske zadatke jer će im to biti zanimljivo. U Mireu njima uvijek dajemo veće dijelove projekta za koje su odgovorni – od pisanja koda, debuggiranja, testiranja…sve je na njima jer želimo da se na ovaj način što prije zainteresiraju za onu širu priču vezanu uz razvoj proizvoda.
Ono što ne možemo prebaciti na te mlade programere koji grizu, a što ih ponekad malo i frustrira, je da dizajniraju sustav od vrha. Taj dio posla je iznimno kompleksan i zahtijeva puno dublje poznavanje samog proizvoda nego što ga programer s jednom ili dvije godine iskustva ima, pa ih onda vrlo kontrolirano uvodimo u taj dio posla.
Kako osiguravate da se vaše znanje, iskustvo i vještine prenesu na mlađe članove tima?
TONĆI: Taj dio ne treba komplicirati. Ti ako si stariji, iskusniji i znaš nešto više, na tebi je da skužiš ako neki od mlađih kolega imaju problem, pa da da dođeš do njih i kažeš im – ja mislim da bi ovo bilo najbolje riješiti na ovakav način. Ne treba ti ništa kompleksnije od toga.
MARKO: I stalno im dajemo sve kompleksnije zadatke, izazove i probleme koje treba riješiti kako bismo vidjeli koliko su od toga usvojili i kako se snalaze.
Senior programere se nerijetko gura u upravljačke uloge i pozicije voditelja timova, jer se to smatra napredovanjem u karijeri. Vi ste odlični primjeri koji pokazuju da to ne mora biti jedini način napredovanja u karijeri. Kako Mireo potiče razvoj senior programera bez uvjetovanja da preuzimaju upravljačke uloge?
MARKO: Na seniorskoj razini sami biramo što želimo dodatno istraživati i kako želimo napredovati. Odlično je što programiranje stalno evoluira i tu će svatko od nas lako naći nešto što ga jako zanima.
BORIS: Mene sad najviše zanima Android i cijelo sam vrijeme u tome. Proučavam što se događa, što se mijenja, što možemo implementirati u naše trenutne sustave. A ostali znaju da se ja najviše bavim Androidom pa se oni mogu fokusirati na druge dijelove programiranja.
TONĆI: Senior programeri kod nas u Mireu imaju potpunu kontrolu nad svojim razvojem. Leonardo (CEO Mirea), Ivica (CTO Mirea) i ja smo se još prije 20 godina dogovorili da je moj posao programiranje. Dogovorili smo se da moj posao nije organizacija posla ili ljudi, već programiranje – kod ovih ostalih dijelova ja mogu pomoći, ali ja za to nisam odgovoran. I tako je već 20 godina – držimo se dogovora i sve funkcionira.
Tonći, ti unatoč tome jako blisko radiš sa svim ljudima u Mireu…
TONĆI: Jer je programiranje kolektivni posao. To mnogi mladi programeri ne razumiju. Ti možeš biti vrhunski programer, možeš rješavati najteže probleme, snalaziti se u svemu bez problema, ali ti nikad nećeš napraviti cijeli projekt sam – to je baš teško.
Kao programer, ti moraš raditi s ljudima, poznavati ljude, znati što su njihove jake i slabe strane da bi mogao podijeliti posao. To je sve dio programiranja, a ti kao senior programer moraš znati procijeniti koliko je netko drugi sposoban, što može preuzeti na sebe, kakav rezultat možeš očekivati i hoćemo li ostvariti cilj.
Mireo za programere ima razrađen sustav napredovanja kroz 5 razina i 10 ciljeva koji su kombinacija usvajanja programerskih i općih poslovnih vještina, pristupa poslu, preuzimanja većih odgovornosti i ostvarenih rezultata – kako se taj sustav napredovanja primjenjuje u stvarnim okolnostima i kako utječe na profesionalni razvoj programera?
TONĆI: Kad kompanija prijeđe neki broj od pet do šest zaposlenika koji se dobro poznaju i rade zajedno, ti moraš napraviti sustav napredovanja koji će biti objektivan. Ovaj sustav ciljeva postavljenih kroz pet razina koji imamo u Mireu je u ovom trenutku najbolje što smo mogli razviti. Mireo je kompanija u kojoj su programeri na prvom mjestu i poštuje se meritokracija, pa se ovakav način napredovanja odlično uklapa.
I dobro funkcionira jer svaka osoba u Mireu jasno vidi koje od tih 10 ciljeva trenutno zadovoljava, što još mora napraviti za sljedeće napredovanje i što će dobiti kad to ostvari. Na ovaj smo način smanjili mogućnost da pojedini ljudi budu nepravedno zakinuti – sve je vrlo objektivno i transparentno.
Nije li vam rad na istoj vrsti programskih rješenja nakon 20 godina postao dosadan?
MARKO: Mi ti nismo klasični senior programeri koji programiraju na poslu i onda dođu doma pa u potpunosti zaborave na programiranje. Mi osjećamo ne samo odgovornost, već i neku draž u ovom poslu i ovim proizvodima koje razvijamo. Nas programiranje veseli.
BORIS: U Mireu mi programeri radimo stvari jer su zabavne i jer su interesantne. A prodaja će ići kasnije.
TONĆI: To je nešto što govorim mladima – te stvari treba na vrijeme primijetiti. Ja sam nakon fakulteta bježao od poslova koji su mi se činili dosadni. To su bile devedesete i kad sam istraživao poslove, prva stvar koju sam gledao je bila na čemu se radi, koje se tehnologije koriste, kakvo je radno vrijeme, koji su ljudi u timu, rade li u firmi neki programeri koji mi imponiraju…
Od ranih sam dana pokušavao raditi ono što volim, pa sam i isprobavao neke nove dijelove programiranja. Primjerice, SQL mi se na početku činio grozan, pa sam malo isprobao i vidio da je dobro. Nikad se nisam vodio samo novcem i samo skakao u kompanije koje su nudile više jer to nije pametno – to dovodi do situacije u kojoj imaš 35 do 40 godina i zaradio si nešto novaca, ali ti se gadi programiranje. Ja tako nešto nisam nikad osjećao – i danas u slobodno vrijeme programiram zato što me to zabavlja i jer to volim.
Dok god ima nekih novih stvari za razviti, meni neće biti dosadno.
Uživate li u programiranju jer stalno poboljšavate kod ili vam imponira činjenica da vaš kod koriste milijuni ljudi, do kojih bi bilo teško doći bez superiornih rješenja?
BORIS: Uživamo u programiranju jer se u Mireu oduvijek pažljivo biraju problemi koje ćemo rješavati. Svijet je prepun problema koji se mogu riješiti programiranjem, ali ovdje uvijek radimo na problemima čije nas rješavanje veseli.
I ovdje se svi trude meni omogućiti da rješavam probleme koji mene vesele, Marku probleme koji njega vesele i Tonćiju probleme koji njega vesele. Zbog toga programeri u Mireu uživaju u svojem poslu i nakon 20 godina.
TONĆI: Ono što mene zabavlja je – kako napraviti neki novi dio programa ili zašto ovo ne radi ili kako ćemo organizirati da se novi projekt koji smo dogovorili izvede u roku od jedne godine.
A kad na sve to dodam utjecaj koji mi programeri imamo na razvoj samih proizvoda, i na rast Mirea kao cjeline – mogu reći da je to kombinacija koja me zabavlja i nakon 30 godina programiranja.
Vidite li potrebu da se znanje, iskustvo i vještine programera na neki način standardiziraju? Ima li podjela na junior, mid i senior razine uopće smisla?
TONĆI: Nema potrebe i nema puno smisla. Da, hijerarhijska organizacija mora postojati, ali mora biti jako plitka – to sve treba biti jedna vrlo neformalna stvar. Po meni, programeri jedni drugima trebaju pomagati bez obzira na razinu senioriteta, trebaju dijeliti kod, prenositi znanje i prekinuti svoj rad kako bi pomogli nekom drugom.
Samo treba doći i pitati – tako funkcionira programiranje i tako se razvijaju vrhunski proizvodi.