Deset stvari koje sam naučio kroz pet godina radnog iskustva kao developer

Sjećam se kao da je bilo jučer. Prvi radni dan, 03.08.2015. godine. Mlad, zelen, presretan što sam konačno dobio priliku za posao. Nisam ni slutio šta me sve čeka na bespućima developerskog posla dok tučem po tipkovnici kako bi zaradio novce za kruh.

Od tog dana je prošlo 5 godina. Sad mogu konačno staviti tu lijepu brojku na svoj CV i LinkedIN, pa još bezobrazno dodati i plus, da to izgleda ovako:

Software developer with 5+ years of experience.

Ipak, cijena ovih 5 godina iskustva nije baš bila jeftina. Potrošio sam poprilično živaca, naučio jesti stres za doručak, dobio par sijedih dlaka, stekao dosta znanja i isklesao svoje vještine na solidnu razinu. Zbog svega toga, smatram da mi je dužnost podijeliti nekoliko stvari koje sam naučio za to vrijeme pa sam sastavio listu 10 najvažnijih:

Kvaliteta radnog iskustva

Poznajem par osoba koje rade kao zaposlenici u nekih firmama jako dugo. Stekli su i poprilično zavidan status.

Jedna od tih osoba (za potrebe teksta nazovimo ga John Doe) ima takav status u firmi da je jedan moj kolega morao slati e-mail svom nadređenom kako bi ga pitao smije li se obratiti Johnu, jer ima nekih pitanja oko programskog koda koje je John napisao. Recimo da je John u svojoj firmi poput krava u Indiji. Ili možda bolje rečeno, John je sveti bik.

Gledano sa strane kvalitete njegovog rada, John je samo prosječan developer koji je pustio korijenje u firmi. Spominjao sam u jednom od svojih prethodnih članaka, termin „developer – uhljeb“ kojeg John savršeno utjelovljuje.

Godine iskustva ne znače ništa (bez kvalitete iskustva). Ako dugo radite jedne te iste stvari, ne znači da ste sve bolji. Ako ne učite ništa novo i ne širite svoje znanje, vi stagnirate.

Stagnacija je stvarna.

Ako se aktivno ne pokušavate poboljšati, vrijeme to neće učiniti automatski za vas.

Zato se svakih pola godine zapitajte jeste li napredovali u tom periodu i postali bolji developer nego što ste bili prije pola godine.

Feedback i mentorstvo

Bez obzira koliko mislili da ste vuk samotnjak, nećete se ravijati tako brzo sami kao kad radite zajedno u timu s kolegama.

Mogu iz iskustva reći da, čak i ako ste okruženi kolegama kojima ste Vi mentor, i dalje možete od njih nešto naučiti, jer ne postoji osoba koja o programiranju i određenoj tehnologiji zna ama baš sve. Uvijek se čuje neki koristan savjet, preporuka za neki library, iskustvo s nekim frameworkom s kojim niste imali priliku raditi i slično.

Naravno, velika je razlika raditi s osobom koja je na istoj razini znanja kao Vi i raditi s lead developerom ili CTO-om firme. Takvi iskusni igrači vam mogu, metaforički rečeno, opaliti 2-3 šamara u obliku povratne informacije na vaš programski kod, komentara na pull request, uputiti vas kako da posložite stvari u projektu tako da budu elegantnije i slično. Tako najviše i najbrže učite.

Povratne informacije i mentorstvo su privilegija.

Izbor alata

Zakon instrumenta ili teorija Maslovljevog čekića opisuje kognitivnu pristranost koja uključuje pretjerano oslanjanje na poznati alat. Abraham Maslow je rekao 1966. godine:

„Pretpostavljam da je primamljivo, ako je jedini alat koji imate čekić, postupati sa svime kao s čavlom.”

U IT-u je ovaj pojam poznat još i kao pristranost zlatnog čekića, “poznata tehnologija ili koncept koji se opsesivno primjenjuje na mnoge softverske probleme”. Uveden je u literaturu o informacijskoj tehnologiji 1998. godine kao anti-obrazac (programska praksa koju treba izbjegavati).

U redu je voljeti određeni programski jezik/tehnologiju, ali to vas ne čini boljim od bilo koga.

Pazite na pristranost zlatnog čekića. Vi ste osoba koja rješava probleme, a ne robot koji pravi sendviče. Preveliko oslanjanje na poznati ili omiljeni alat može dovesti do rješavanja problema na načine koji nisu korisni ili su čak destruktivni.

Zato gledajte na programske jezike/tehnologije/dizajn obrasce samo kao alate za rješavanje problema. Dobar majstor će imati uvijek set alata pri ruci za riješiti problem.

Ne pratiti “hype”

O mnogim temama u IT-u postoji poveći broj neistina na internetu. Primjer, guglate zbog čega je programski jezik X bolji od programskog jezika Y i Google će vam stvarno dati argumente zbog čega je programski jezik X bolji od programskog jezika Y. Možete pokušati i obrnuto, također ćete dobiti sličan rezultat u korist programskog jezika Y.

Prava istina je negdje između.

Internet je prepun mišljenja. Gledajte na to kao na hranu za razmišljanje, a ne kao na evanđelje. To što netko napiše članak na Mediumu da će Svelte biti najpopularniji JS framework za godinu dana je samo mišljenje autora članka.

Ponavljanje bez razumijevanje najnovije stvari koju pročitate na internetu ne čini vas pametnim. Konzumirajte sadržaj da biste ostali u toku, ali isto tako razmišljajte kritički.

Osnove su jako bitne!

Ništa vam nije izvan dosega kad svladate osnove. Možete započeti gdje god želite, ali ako se nalazite u velikoj muci, to bi moglo biti zato što vam nedostaju jaki temelji.

Kao primjer možemo navesti ključnu riječ „this“ u Javascriptu. Provjerite svoje znanje Javascripta s ovim malim primjerom ispod:

Nove i cool stvari temelje se na osnovama. Savladavanje osnova omogućuje vam da vidite „matricu“.

Burnout stvarno postoji!

Programiranje je mentalno zahtjevno. Stalni protok informacija je također nešto što umara čovjeka. Pritisak da ostanete u toku sa svim novitetima u IT svijetu, kojih je svaki dan sve više i više, je enorman. Depresija je stvarna kao i COVID-19.

Sve su ovo faktori koji dovode do sindroma izgaranja ,pa se treba naučiti nositi s tim i zatražiti godišnji odmor ili pomoć, kad se osjeti potreba.

Komunikacija je ključna

Biti senior developer ne znači biti najbolji programer. Ako mislite da biste trebali biti senior developer jer ste tehnička „zvijer“, promašili ste poantu. Jedna od karakteristika senior developera je i sposobnost komunikacije i razumijevanja situacije.

Imam bezbroj primjera gdje mi je komunikacija olakšala posao. Jedan od primjera je kad sam radio projekt za jednog klijenta koji je htio da što manje vremena potrošimo na pisanje koda i napravimo neke izmjene u kodu za posebnu vrstu korisnika koju su dobili. Trebalo je prikazati neke stvari na aplikaciji drugačije za tog posebnog korisnika u odnosu na obične korisnike. Klijent je također nešto malo radio na tom projektu pa je predložio da to napravimo na njegov način.Razumio sam njegovo stajalište, ali sam znao da ćemo s tim njegovim načinom izvedbe kratkoročno dobiti na vremenu, napraviti kaos u programskom kodu, naštimati da sve radi ali s bilo kakvom izmjenom u budućnosti (a izmjene u projektima su neizbježne) smo osuđeni da potrošimo 5x više vremena kako bi pospremili napravljeni kaos. To je ono što zovu tehnički dug u projektima.

Objasnio sam mu na lijep, metaforičan i slikovit način kako je to pogrešan pristup. Rekao sam mu da trebamo potrošiti malo više vremena kako bismo napravili stvari uredno zbog prethodno obrazloženih razloga. Ispočetka se bunio, ali sam bio uporan i na kraju je nevoljko pristao na moj prijedlog.

Nakon dva tjedna došao je novi posebni korisnik tom istom klijentu za kojeg je trebalo također prikazati drugačije neke stvari u aplikaciji, plus prikazati još neke stvari dodatno.

Na sreću, zbog toga što smo implementirali promjene u kodu da budu robusne i otporne na promjene u budućnosti, za tog novog korisnika sam potrošio svega pola sata vremena.  Klijent mi se zahvalio što sam ga odgovorio od njegove prve ideje i što smo napravili izmjene na bolji način.

Ovo je samo jedan primjer u moru njih, a komunikacija s ljudima u IT struci je ključna zbog toga što odražava zrelost i sposobnost razumijevanja druge strane. Bio to kolega, šef, klijent ili netko drugi.

Kvantiteta je važna koliko i kvaliteta

Koliko god klišejski zvučao, vječnim poliranjem nećete postati bolji. Iskustvo i znanje uglavnom proizlaze iz suočavanja s onim što se radi u pravom poslovnom svijetu i gdje se stvaraju projekti za više korisnika.

Iz toga se može zaključiti da je dobro biti „umjereni“ perfekcionista, pošto postoje rokovi za isporuku, project manageri, sprint ceremonije i ostale stvari koje vas tjeraju da isporučite zacrtano. Nemate baš previše vremena polirati stvari do iznemoglnosti pošto tijekom rješavanja bilo kojeg kompleksnijeg problema naletite na par prepreka koje vam oduzmu vremena. Jako je bitno da ste produktivni i možete riješiti određene probleme u zadanom roku, da pri tom ne probijate zadane granice za isporuku i slično.

Što više problema riješite, sljedeći sličan problem ćete riješiti za 5 minuta jer ste naučili „zamke“ rješavajući taj problem pri prvom susretu s njim. Što više eksperimentirate, to će problemi i taskovi djelovati manje zastrašujuće.

Strpljenje

Kako u svakom drugom poslu, tako i u IT-u morate raditi s ljudima. To može biti dobro ali ponekad može biti i loše. Kroz rad ćete se susresti sa svim mogućim vrstama ljudi, dobrodušnim, zlim, ravnodušnim, glupim, perfidnim, ljudima koji vas gledaju iskoristiti do maksimuma, ljudima koji vam žele pomoći i slično. Vaš zadatak je samo da obavite uredno posao za sve njih i ništa više.

Pojedini klijenti za koje radite vaše projekte, mogu biti genijalci u svojoj domeni (npr. turizam), ali mogu biti i totalni idioti za osnovne koncepte u IT struci.

Upoznao sam i radio projekte za par takvih i mogu reći da je jako izazovno. Ali ipak, klijent vas plaća pa ukoliko nešto ne razumije, treba mu ponoviti jednu te istu stvar 10 puta i objasniti zbog čega je to tako – ostanite profesionalni  i napravite to.

Winston Churchill je odlično objasnio ovakav način komunikacije s ljudima:

“Tact is the ability to tell someone to go to hell in such a way that they look forward to the trip.”

Tako da, nakon što masno opsujete i ispušete se, započnite odgovor na e-mail s pozitivnim naglaskom, dobrom vibrom i na kraju se obavezno zahvalite.

Smajlić je obavezan. 😊

Veze i odnosi

Iza računala stoje ljudi. Ne radi se samo o znanju i vještinama. Također se radi o uspostavljanju veza i njegovanju odnosa.

Kroz život, karijeru i poslove uvijek je dobro uspostaviti što više veza, poznanstava i prijateljstava s ljudima. Sutra će vas netko preporučiti, reći lijepu riječ za vas, pomoći vam ukoliko tražite posao i slično.

Nečije mišljenje o vama može zainteresirati treću osobu da vam se javi za izradu novog projekta, web stranice ili neke druge poslovne ponude.

Ne morate postati poznati na Instagramu, ali poznavati puno ljudi i biti u ok odnosima s njima vam može biti od velike koristi.

Dragi moji, to bi bilo to, dosta čavrljanja.

Moram dovršiti unit-test za svoj program za provjeru parnih i neparnih brojeva (ispod je kôd, ukoliko nekome zatreba) 😉

Podijeli

O autoru

Mensur Duraković