Razgovarali smo s Bojanom Madžarcem iz kompanije ASEE, senior fullstack software engineerom i zaljubljenikom u sve novo i sjajno u tech svijetu. U intervjuu nam je otkrio više o svojoj karijeri kao senior developeru, ključnim točkama na svom profesionalnom putu te prednostima i izazovima ove uloge. Bojan je također s nama podijelio sve o svojim najdražim projektima, važnosti timskog rada i razmjene znanja te kako usavršava svoje vještine držeći korak s brzim napretkom tehnologije. Savjetovao je mlade developere koji žele napredovati u karijeri te nam otkrio što nosi budućnost za njega.
Tko je Bojan?
Ufff, odmah s egzistencijalnim pitanjima. Karijerno i službeno, senior fullstack software engineer i generalno ljubitelj svega new and shiny u tech svijetu. Neslužbeno vozim motor, igram igrice i volim sve kaj vole mladi (iako se ne ubrajam u iste :)).
Bojane, možeš li nam reći nešto više o svojoj karijeri kao senior developeru? Kako si započeo i i koje su bile ključne točke na tvom profesionalnom putu?
Bavim se ovim već neko vrijeme i neke pivotalne uloge bi bile prvi posao i prelazak u ASEE te sami senioritet.
Da objasnim, gledajući generalnu IT industriju nakon što „upadneš“ naći novi posao je jednostavno, ali prvi posao je skroz drugi par opanaka. Moj prvi posao developera je bio u firmi koja se ne bavi developmentom ali ima svoje in-house developere radi svakojakih internih tool-ova potrebnih za rad. Interesantno iskustvo i prvo vatreno krštenje. Način rada se uvelike razlikovao od načina na koji sada radim, a i iskustvo rada u točnoj određenoj domeni na način koji odgovara proizvodnji a ne samom razvoju je u najmanju ruku bilo izazovno.
Druga pivotalna točka je prelazak u ASEE ili možda točnije, prilagodba na totalno drugačiji način rada. Odjednom nije važno da se nešto što prije završi (premda da se na lažemo, i to je uvijek važno :)), već treba uračunati i code quality, reliability, koliko je čitljiv sam code i koliko ga je jednostavno proširiti. Nije samo finalni produkt važan već i način na koji si došao do rješenja.
I tu dolazimo do zadnje točke. Total shift of mentality koji dolazi sa senioritetom. Više se ne očekuje da samo pišeš code, nego da nekako vidiš korak dva naprijed. Kako se to što radiš uklapa u širu sliku, gdje paše u arhitekturi, kako se odražava na buduće i trenutne klijente.
Kako bi opisao svoje iskustvo radeći kao senior developer? Koje su najveće prednosti i izazovi ove uloge?
Najveće prednosti su definitivno sloboda i puno širi spektar tehnologija, barem iz moje perspektive. Ne radiš više samo ono što ti se kaže, odgovornosti se šire puno dalje, CI/CD, code reviews, planiranje, mentoriranje… Sve to donosi neke izazove i tempo učenja postaje sve brži, ali to je ono što senioritet označava. Nitko od tebe ne očekuje da sve znaš, ali postoji očekivanje da možeš naučiti što ti treba i kada ti treba bez da te netko druži za ruku i usmjerava, očekuje se da kada vidiš što trebaš odraditi i shvatiš da to ne znaš (a puno češće ne budeš znao nego budeš) uzmeš odgovornost na sebe i naučiš.
Da bi bio senior nije ti više dopušteno biti code monkey, očekuje se neko shvaćanje koje nije samo code, treba shvaćati domenske teme. Ponekad moraš zaviriti i u um klijenta, shvatiti kako razmišlja i dokučiti kako će to što razvijaš on u konačnici koristiti. Naravno, i iskustvo ne škodi, treba preživjeti one dane kada si srušio produkciju i nešto naučiti iz toga (hopefully how not to do it again :)). Zvuči kao jako puno odgovornosti, i u jednu ruku i je, ali development je izazovan i uvijek bude puno prepreka pa ako nikada ne naučiš uživati u njima… well, you’re gonna have a bad time.
Koji su ti najdraži projekti na kojima si radio?
U ASEE sam u svom vremenu u kompaniji radio na dvije verzije iste aplikacije. CRM i kontakt centar rješenja ASEE Live 2.0 na kojemu sam počeo raditi kada je već bila odrasla aplikacija s puno klijenata i korisnika, a onda je uslijedila ona koja je meni prirodno draža i na kojoj sam jedan od lead dev-ova od starta – Live 3.0, odnosno the new and improved Live.
Kao senior developer, koliko je važno surađivati s drugim članovima tima? Kako promičete timski rad i razmjenu znanja unutar tima?
Programiranje je uvijek bio timski posao. Da, neke stvari možeš sam, ali kada aplikacija raste velikim tempom i kada development počne uzimati veliki zamah solo development nije više moguć. Ono što ti radiš počne se kositi s onim što netko drugi radi, više vas radi update na istom dijelu code-a, hotfixes i bugfixes počnu uzimati dio posla. Tako da koliko je važno… jako važno. Loš tim će odraditi posao, ali kvaliteta odrađenog bude uvijek bude upitna i ono što je važnije developer experience se sroza i ljudi odu.
Nekakva sinergija je uvijek potrebna. Posvađat ćete se, budete imali suprotna mišljenja, nekome ne bude tjedan pa bude kaskao. Sve se to dogodi, i nije moguće izbjeći takve stvari, važno je postaviti mentalitet tima da se gluposti dogode i da nije velika stvar kada se dogodi. Sve što se potrga može se i popraviti. A što se tiče samog timskog rada, nije se dogodilo jednom da sam koristio kolege kao rubber duck ili da su oni koristili mene. Isto tako ne bi bilo da smo se samo jednom našli na call-u da rantamo o problemima koje imamo. Dobra sinergija i ispušni ventili, no big secret there :).
Kako održavaš svoje vještine ukorak s brzim napretkom tehnologije i razvojem softvera? Koje alate ili metode koristiš za stalno usavršavanje?
Puno čitam, ali ono punoooo :). Prva neka velika zabluda je da moraš znati sve što je novo ili si gotov. To jednostavno nije istina, nitko normalan ne može pratiti sve nove tehnologije i tool-ove, na kraju krajeva moj posao nije da čitam nego da programiram. Rekavši to, ujutro uz kavu pročitam skoro svaki dan 2-3 članka o novim tehnologijama i metodologijama. Više da mi nekako ostanu u pozadini glave pa kada naletim na problem koji mi je stran, znam gdje da gledam za rješenje. Uvijek imaš one neke stvari koje primarno pratiš, npr. U Voice-u koristimo Laravel i golang uz neke dodatne jezike i tool-ove, te ih koristimo za event-based mikroservisni sustav. To samo znači da pokušavam biti up-to-date s tim spektrom znanja što je više moguće, sve ostalo što pročitam, a da mi ostane u glavi je samo bonus. Od nekih tool-ova koje koristim da bih ostao in-the-loop postoji jedna fenomenalna stvar koja se zove daily.dev. Ekstenzija za browser i stranica koja skuplja sve članke s popularnih dev stranica i sortira ih po mojim interesima. Da budem iskren, ne znam kako sam to radio prije i ne znam kako bih da sada nestane (ne plaćaju me za reklamu). Van toga, ako se dogodi da mi nešto pobudi interes aktivno to potražim, primjerice sada sam zapeo za networking i pentesting pa prolazim tečaj za CompTIA, da li budem išao polagati ili ne je sporedna stvar, ali i samo prolaženje tečajeva je super način za unaprijediti svoje znanje o temama koje znaš ili temama koje ne znaš, ali su interesantne.
Naravno, uvijek je veliki benefit kada radiš u firmi koja je spremna plaćati tvoje usavršavanje. Tako samo prošle godine, između ostalog, bili i na WeAreDevelopers konferenciji u Berlinu, što je bilo iznimno zanimljivo.
Kako biste savjetovali mlade developere koji žele napredovati u svojoj karijeri? Koje vještine ili osobine smatrate ključnima za uspjeh u razvoju softvera?
Ustrajnost, ustrajnost i samo ustrajnost. Programiranje nije tako teško kako bi neki ljudi voljeni misliti, ali nije ni tako jednostavno da samo pročitati o tome je dovoljno. Sit down and write code. Nema tu neke velike tajne. Razbijat ćeš glavu da shvatiš kako to sve radi i kako se uklapa u širu sliku tehnologije. Nije važno koje područje izabereš, prvih nekoliko mjeseci je uvijek napeto. Sve je novo, apstraktno i ako nikada nisi radio u tome… naporno. Ali nakon toga je isto tako, nakon pet godina iskustva lupat ćeš glavom o stol oko bug-a nekog koji bude ispao banalan, i nakon 10 i nakon 15. To je jednostavno dio posla, ali to ne znači da je nemoguće, to je samo jedan od izazova. Svaki developer vrijedan svoje plaće bude imao problema, dogodi se da tjedan dana gledaš u nešto sve dok napokon ne klikne i tu nema pomoći, ali svaki posao ima svoje izazove i u ovom konkretnom to je najveći. Tako da kao možda najbolji savjet koji mogu dati je „Dogodi se svima, nemoj si to predbacivati“.
Što je sljedeće za Bojana, što nosi budućnost?
Iskreno ne znam, uvijek imam neke karijerne poteze koje planiram oko pozicija koje preuzimam, ali ništa nije uklesano u kamen. Možda odem na management poziciju poput team lead-a, a možda se odlučim i za više tehničku poput software arhitekta. Sve nosi svoje benefite, i ne pokušavam se ograničiti na nešto. Do sada je taj mentalitet palio, ne vidim zašto ne bi i dalje :).