Više o temi iz naslova doznajte iz intervjua koji smo vodili sa Željkom Margetom, Lead Sotfware Engineerom u EPAM Hrvatska
Za početak, možete li nam reći nešto o svojoj strasti za IT?
Ukratko, IT je moja strast, ili preciznije rečeno, razvoj softwarea. Koliko god to možda otrcano zvučalo, ali nakon “službenih” osam sati, svaki slobodan trenutak provodim ili radeći na nekom od “pet” projekata ili čitajući što god mi padne pod ruku vezano za industriju, a pogotovo za kodiranje i arhitekturu softwarea (naravno, koliko mi kćerkica dozvoli, većinom kasno u noć). Ne mogu se zamisliti da radim nešto drugo, i prilično sam siguran da ne bih bio toliko strastven oko nekog drugog zanimanja. Znao sam razmišljati zašto je tome tako, i najbolji odgovor do kojeg sam došao je taj da me opušta stvaranje virtualnih svjetova u kojima svaka stvar ima svoje mjesto i funkciju, a zajedno čine nešto veće od samog skupa individualnih dijelova. Jednostavno rečeno, kodiranje me opušta. Nisam doživio takav stimulans radeći bilo što drugo, pustim neku dobru glazbu u slušalice i prijeđem u zen mode.
Dok programirate, ima li trenutaka kada pomislite “baš volim biti developer”?
Rekao bih vjerojatno stalno, ili bar veliku većinu vremena. Još kao klinac sam sanjao kako bi nevjerojatno bilo raditi na velikim projektima za neku veliku kompaniju, i vjerujem da mi se san u velikoj mjeri ostvario. Da dodam još jednu otrcanu izreku, ako radiš što voliš, nećeš raditi dana u životu. Iskreno, klinac u meni još uvijek ne vjeruje da me plaćaju da radim to što radim (samo nemojte ovo reći mojim nadređenima). Šalu na stranu, u trenutačnom kompetitivnom tržištu rada, moram priznati da sam dio povlaštene grupe u tom smislu. Naravno da ima trenutaka kada se možda nakupi puno posla ili se zasitite projektom, ali iskreno bih rekao da je klinac u meni veliku većinu vremena zadovoljan i ne planira raditi nešto drugo.
Kako ste se našli u svijetu Jave?
To je zanimljiva priča, ili barem meni, hahaha… Dugo vremena sam se primarno bavio C#-om, dok se stjecajem okolnosti nije otvorila pozicija Java developera kod jednog od prijašnjih poslodavaca. Pokretao se novi projekt, bleeding edge tehnologije, pogotovo u to vrijeme; Kubernetes, Kafka, event-driven mikroservisna arhitektura, i još par buzzworda, da ne pretjerujem s nabrajanjem. Budući da se radilo o korporativnom okruženju, Java je bila očiti izbor zbog mnogo razloga, a i bili smo većinski Java shop, tako da nije bilo potrebno previše vagati opcije. Projekt mi se činio jako zanimljivim, pa sam se odlučio prijaviti na natječaj, i kako kažu, ostalo je povijest.
Tadašnji voditelj me upoznao sa Spring Bootom i bio sam zakačen. Par anotacija tu i tamo i stvari magično rade. Doslovno sam progutao sve do čega sam došao vezano uz Spring u sljedeća 3 mjeseca, proučio ga u detalje i to me još više zaljubilo u Javu. Jezici su dosta slični, Java je imala veliki utjecaj na C#, tako da je bitnija razlika bila u frameworku. Open source community je mislim veliki dio moje zaljubljenosti u Javu, što god trebali, velika je vjerojatnost da ćete naći battle-proven library ili framework koji će vam odgovarati, pa možete i vratiti nešto communityju doprinoseći natrag projektima koje koristite. Tako da, rekao bih da je tu sve počelo, i dužan sam svom voditelju što me upoznao sa svijetom Jave. S vremenom sam otkrio i druge frameworke, druge paradigme, pa i druge JVM jezike, ali Java još uvijek igra jako veliku ulogu, pogotovo u mom poslovnom životu.
Java se inicijalno pojavila prije 25 godina. Mislite li da će nastaviti “vladati svijetom” i narednih 25 godina?
Teško pitanje, ali moje mišljenje je da hoće ili će barem biti u samom vrhu, kao što je i slučaj danas. Od Jave 8, otkad se povećala frekvencija izlazaka novih verzija, jezik je dosta (barem po mom mišljenju) napredovao i modernizirao se. Pa i unutar JVM svijeta, počnimo sa Scalom, pa nakon nje i s Kotlinom, koji su oba jako zanimljivi jezici, čija je inicijalna svrha i bila napraviti “bolju” Javu. Samo da se ogradim, volim koristiti sva tri jezika, pa možda nisam najobjektivniji, ali mislim da je Java izrazito napredovala zadnjih godina.
Od lambdi, record-a, djelomičnog pattern matchinga, pa i novih stvari koje su trenutno preview, ali će uskoro biti releaseane, kao što su virtualni (green) threadovi i strukturirani concurrency. Mislim da je jezik evoluirao na način da se ukloni dosta boilerplatea i uzore definitivno vidim u Scali i Kotlinu, pa i izvan JVM-a, u jezicima kao što su Go i sl.
A i ako uzmemo u obzir da je community ogroman i izrazito aktivan, samo da spomenem neke od projekata osim Springa, kao što su Vert.x na temelju kojeg je Red Hat izgradio cijeli Quarkus ekosustav, reaktivni stack koji je počeo sa RxJavom i nastavio s Project Reactorom, pa native stvari i GraalVM, mislim da je budućnost Jave dosta svijetla.
Ima li nešto što Vas je iznenadilo u tom području tijekom posljednjih godina?
Mislim da me možda najviše iznenadila nova kadenca Jave, ako pogledate, za prvih 7 verzija Jave je trebalo 16 godina, Java 8 je izašla 2014., a trenutno smo na verziji 19. I to nisu bili samo releasevi da bi se podigla verzija, svaki je nečime pridonio evoluciji jezika. Jako me zanima sto će buduće verzije donijeti.
Kako ste se odlučili za EPAM Croatia? Kakve mogućnosti za razvoj karijere tamo vidite?
EPAM je velika kompanija, globalno imamo više od 60,000 zaposlenih, i samim time imamo i pristup ogromnom broju projekata, a s druge strane nismo tipična agencija, radimo i na vlastitim proizvodima koji često počnu kao startup, a prerastu u komercijalne projekte. EPAM znaju zvati developer’s developers, i mogu potvrditi da radimo na projektima za neke od najpoznatijih big tech kompanija. Jednostavno rečeno, mislim da mi nikad neće biti dosadno u EPAM-u, upravo zato što tijekom karijere imam mogućnost raditi na različitim projektima, različitim tehnologijama i u krajnjoj liniji s različitim ljudima.
Pravo ugodno iznenađenje je bilo nakon što sam se zaposlio i počeo se upoznavati s kulturom. Od onboardinga, dostupnih edukacija, internih sustava… Stvari su po mom mišljenju jako dobro posložene i informacije su dostupne svima. Što se tiče mogućnosti za razvoj karijere, i tu su stvari jako dobro i transparentno posložene. Dapače, vaš resource manager i people advisor vas informiraju i potiču na odabir puta u EPAM-u. Mislim da postoji opcija za razvoj za svaki tip developera, sve je na vama kojim tempom i u kojem smjeru se želite razvijati.
Možete li nam opisati kulturu developmenta u EPAM-u?
Kultura developmenta u EPAM-u zasniva se na agilnim principima, odnosno EngX kulturi s kojim se svaki zaposlenik upoznaje tijekom svog onboardinga. Primarni cilj je pružiti klijentu novu vrijednost i veliki naglasak je na kvaliteti isporučenog. Mislim da ne postoji tehnologija u svijetu koja se ne primjenjuje na nekom od projekata. Dosta velik naglasak je i na cloud tehnologijama, i svaki developer ima pristup certifikacijskim programima, bilo da se radi o AWS-u, Google Cloudu ili Microsoft Azuru. Iz osobnog iskustva mogu posvjedočiti i da su zdravi odnosi u timu jako bitni, a ljudi su uvijek spremni pomoći i odgovoriti.
Što Vam je, kao Lead software developeru, točno posao?
Praksa u EPAM-u je da Lead developeri preuzimaju ulogu Development Team Leada na projektima, tako da na trenutnom projektu organiziram zadatke za BE i FE developere, radim code review, evaluacije članova tima, donosim tehničke odluke i naravno pišem kod.
Koje kvalitete developer mora imati da bi u EPAM-u bio uspješan na nekom projektu?
Na prvo mjesto bih vjerojatno stavio strast prema svom poslu i zdrav timski duh. Tehničko znanje je naravno uvijek dobro došlo, ali to je nešto što se može nadograditi, mislim da su strast prema poslu koji radimo i želja za znanjem ključni, sve drugo se onda može prirodno razvijati.
Što je najuzbudljiviji dio Vašeg posla?
Pretočiti nešto što se razvijalo u mojoj glavi u konkretan sustav, pogotovo ako taj sustav pruža stvarnu korist klijentu i zatim kad se svi dijelovi slože u funkcionalnu cjelinu. Naravno i release ciklusi znaju biti dosta uzbudljivi, kad je cijeli tim pod pritiskom i ovisimo jedni o drugima kako bismo isporučili funkcionalnost koju smo se obvezali isporučiti. Ponekad stvarno morate biti agilni i brzo se prilagođavati neplaniranim situacijama.
Ako biste morali opisati svoju ulogu kroz tri tehnologije ili platforme, koje bi to bile?
JVM, Kubernetes i AWS.
A koji Vam je omiljeni alat za development?
IntelliJ IDEA. Koristio sam dosta alata u dosadašnjoj karijeri, a ponajviše volim raditi s JetBrains proizvodima.
Kako unaprjeđujete svoje tehničke vještine?
Čitajući sve što mi padne pod ruku, treba biti otvorena uma i istraživati i stvari kojima se možda trenutno ne bavimo ili nam nisu trenutno u fokusu. Može se dosta toga naučiti proučavajući kako se neke stvari rade na možda drukčiji način od onog na koji smo navikli, ili možda smatramo da je najbolji. Prednost je i što EPAM stvarno stavlja naglasak na razvoj svakog zaposlenika, tako da svi imamo pristup LinkedIn Learning platformi i možemo se registrirati za razne edukacije koje nam pomažu u daljnjem profesionalnom razvoju.
Imate li savjet koji biste dali nekome s vještinama u Javi, ako se gleda zaposliti u EPAM-u?
Prijavite se na natječaj. Mislim da vam nikad neće biti dosadno jer je projekata stvarno jako puno. Ako vam neki projekt možda ne odgovara najbolje, postoji službena procedura rotacije na druge projekte. Budite sigurni u svoje tehničke vještine i pokažite što znate, bez pritiska. I naravno, dođite saznati nešto više na naš sljedeći Java Night meetup na kojem ću imati izlaganje na temu Jave i Kubernetesa. Detalje možete naći na ovom mjestu.