U poslednje vreme javlja mi se sve više juniora, koji se teže zapošljavaju od iskusnijih im kolega. Pošto sam taj deo razumela, odlučih da se obratim drugoj strani - senioru, koji je programirao, mentorisao, zapošljavao. A bio je i junior nekada davno, gle čuda.
Strahinja Dević je tehnički direktor Car:GO-a. Nakon višegodišnjeg korporativnog iskustva, otisnuo se u startup priču, sa željom da napravi nešto gotivnije od Gugla u Srbiji. U svojoj karijeri ima više neprospavanih noći od onih u snu, ali se ponosi time. Protagonista je teorije da istinski senior inženjer mora da ima back-up plan - ili kafić ili poljoprivreda.
Svoje višegodišnje IT iskustvo pretočio je u vrlo konkretne savete za one koji se tek zaljubljuju u kod. Primetićete, vrlo je pričljiv, ali gre’ota je bila prekinuti ga.
„Knjige, braćo moja, a ne zvona i praporci.“ Misliš li da je formalno obrazovanje neophodno u IT-ju?
Mislim da je jako bitno, ne nužno i neophodno. Igrom slučaja znam nekoliko sjajnih IT ljudi bez formalnog obrazovanja. Ali to je zaista redak slučaj.
Pošto je cilj ovog teksta da ohrabrimo i pomognemo mlađim kolegama, a ovo je vrlo široka tema, reći ću - učite matematiku :) Fakultetsko obrazovanje nije najbitnije, ali nam fakultet govori da neko ima radnu naviku i ume sistematski da pristupi problemu. Kurs od dva meseca nam govori da neko ide linijom manjeg otpora.
Da sutra odlučim da želim da budem programerka, koji bi bio tvoj prvi savet? Samo oštro i roditeljski :)
Zašto želiš da programiraš?
Vrlo jednostavno - da li stvarno imaš motiv za to koji je validan, kad ima toliko lepih profesija… :)
Realno - prvi savet zaista jeste pitanje - zašto? Ono što vam niko ne kaže kada ulazite u IT jeste da ne postoji quick road i da je to zaista život odricanja i konstantnog učenja. Tako bi trebalo da je u svim branšama, ali tehnologija brže napreduje od prava i medicine, rapidno se širi i jako je surova ukoliko nisi spreman na konstantno učenje i eksperimentisanje.
Prvi savet, ako zaista želiš, jeste - počni od osnova i gledaj da ne kratiš put i ne klikćeš na reklame za uporedni horoskop tebe i simpatije umesto principa objektnog programiranja :)
Ozbiljan problem društva jeste preskakanje uspona i davanje celokupnog smisla „vrhu planine“. I to se jako odražava, kako na IT, tako i na ostale sfere života.
Dosta kompanija ne zapošljava juniore, jer im je to „skupo“. Misliš li da greše u toj proceni?
Mislim da je to luksuz, nažalost. Često čujem „Ja bih i besplatno radio”, što je jako simpatično, ali model biznisa nije takav. Junior oduzima vreme već oskudnom seniorskom kadru. Nije problem platiti neku cifru za platu, nego naći nekoga ko će posvetiti pažnju i vreme tom junioru. Vrlo plastično - junior me košta 30% seniorskog vremena. A seniora ne mogu da nađem, jer svima trebaju… I ulazimo u „vrzino kolo“. Ima jedna izreka koja kaže da je najjeftinije ono što se plati parama. To je, nažalost, jako tačno u ovom slučaju.
Veće firme imaju taj luksuz, jer su generalno inertnije, tromije, rade mnogo duže projekte i imaju više kadra na raspolaganju, koji deli odgovornost oko obuke i mogu to da izbalansiraju i absorbuju.
Isto jako bitno, rekao bih da je definicija „juniora“ olako shvaćena. Po meni junior mora da bude sposoban da uči, da pristupa problemu, da ima osnovno znanje patterna i programiranja. Samu sintaksu će lako naučiti. Junior koji bi da uči i radi, čak i besplatno ili uz neku stipendiju je zapravo praktikant. Što je isto ok, svi smo mi počinjali, ali treba slomiti to u sebi i naučiti sebe da mora da se uči i trudi.
Mediji i razne institucije upitnog kvaliteta su napravili hajp oko toga da su svi IT inženjeri super plaćeni posle tri meseca kursa. A to, razume se, nije istina, ni kod nas, niti igde u svetu.
Gradivo koje je takvo da svako može da ga savlada, nedostatak učenja osnovnih polaznih tačaka u programiranju zbog famoznih 100 dana kursa, i generalno stigma oko toga da to može svako su napravile nerealnu sliku i generisala nerealna očekivanja. To je sindrom „Novak Đoković je uspešan teniser i dobro plaćen, moje dete će na tenis”. Novak Đoković je najbolji na svetu u tome što radi, i mediji su, logično, ispratili tu priču. Nisu ispratili priču njegovog brata koji nije uspeo, uprkos istim ulaganjima…. Takav je slučaj i u IT-ju.
Najmanje je oglasa za posao u juniorskoj kategoriji. Gde i kako se zapošljavaju juniori?
U velikim firmama, ali i tu su kapaciteti ograničeni. Rade se neki sitniji projekti freelance, pomaže se drugaru ili članu porodice u nekom projektu…
Postoji određen broj firmi koje su spremne da daju šansu mlađima. U principu, ako ste dovoljno zainteresovani i znate ponešto, manje firme neće imati problem da vas prime na probni rad. Ali to znači raspitati se čime se ta firma bavi, naučiti nešto o problemu koji rešavaju, probati naći paralelu između toga i nečega sa čime si se susreo (što kroz čitanje, što kroz projekte na fakultetu itd), i to je zalog za taj intervju. I ako vas ne prime, i dalje ste bar u nekoj meri pristupili problemu o kome ne znate puno, a to vas definitivno čeka.
U većini slučajeva, nažalost, dolazi do toga da kandidat dođe sa stavom ja-pa-ja, ja bih rešio to bolje itd, što je naravno problem, jer pokušavate da se predstavite kao neko ko bi da nauči, a ne neko ko sve zna.
Kako su izgledali tvoji prvi IT koraci?
Jezivo? Trapavo? Iskreno, prilično sam se nemoćno osećao. Imao sam tu sreću da sam prvi zvaničan posao dobio tako što su me regrutovali direktno sa faksa po preporuci. Ogroman mi je problem bio što sam bio sam, bez prilike da se obratim za pomoć i negde gde nikoga nisam poznavao. I baš sam imao problem da dolazim na vreme na posao :) Ali tužna priča na stranu :)
U početku sam zbog nekih dodatnih aktivnosti na faksu, kao i smera studija, imao dosta fakultetskih projekata iza sebe. Plus je sistem školovanja bio takav da su fakulteti i firme imali dogovore o praksi, pa sam koliko toliko imao neku predstavu kako to izgleda. I onda sam otišao na posao i shvatio da nemam pojma ništa, da su me štedeli do tada i da neću biti povlašćen jer sam nov i mlad. Kasnije sam shvatio da je to sve ok, i prirodno.
U principu ja jako volim svoj posao, i oduvek sam hteo da budem to što sam danas. I sad me vuče kod, i sad me vuče da učim, i sad me mrzi devojka jer se ne viđamo… Ali mislim da vredi, sad kad napravim retrospektivu. Samo uporno.
Po vokaciji sam security inženjer, a u tom slučaju se zahteva baš širok spektar znanja i primena istog. Bio mi je problem da skopčam da je ok guglati neke stvari, čak i osnovne, kao i da shvatim da je ok pitati, ako si probao sve tebi logične opcije i nisi rešio problem. To je po meni zapravo najbitnije što junior mora da savlada - u kojoj meri pokušavaš sam, a kada se obraćaš za pomoć.
I nije ništa lično ako prestane da se koristi tvoj kod ili ako dobiješ zamerke na code review-u, mora tako. Ja sam, recimo, jako lično shvatao code review… :)
Šta te danas inspiriše, a šta motiviše kao programera?
Ja jako volim CarGo. Stvarno. Motiviše me što sam deo jedne zdrave priče, u kojoj su mladi (koliko toliko) ljudi :)
Volim da sednem i rešim problem, jako volim tehnologiju. Sama ideja da stvaramo nešto novo, i da za 2-5-10 godina svet neće moći da se zamisli bez toga što je neki Strahinja seo i napisao u 3 ujutru iz ćoška na terasi iz bloka.
Tvoj stav o „jack of all trades, master of none“ programerima? Da li je ovaj pravac mudar ili sulud?
Uh… Moj stav je: jak svuda znači slab svuda. Kao kad igraš igricu pa braniš bazu, imaš stražarske kule okolo za svaki slučaj, ali vojska je u dubini i usmerena da odgovori specifičnom zahtevu...
Iako je sada trend tzv. unified inženjering, nekako iz prakse znam da nije održiv sistem. Ja verujem u “T” shaped razvoj. Imaš core skill koji je najjači, a o drugim stvarima si sve više informisan i unapređuješ ih. Ukratko, ok je biti sposoban da uskočiš i pomogneš, suludo je očekivati da si svuda dobar i da ćeš sve o svemu znati. I uvek je bolje da možeš sve da uradiš u Javi, nego po malo u Javi, Pythonu i Node-u.
Yoda reče „Patience you must have, my young Padawan.“ Da li je strpljen junior i spasen?
Apsolutno. Ja bih dodao i da ne treba učiti iz neproverenih izvora, jer stičeš pogrešne navike. Copy - paste sa Stackoverflow-a nije baš dobra praksa, jer ima tona gluposti i tamo…
Ako si u poslu čista srca i sa pravim razlogom, samo polako i doći će sve na svoje mesto, i kad pogledaš imaćeš lep život. Nećeš biti naspavan, osedećeš, ljudi će misliti da si arogantan i čudan, ali ćeš biti srećan. A to je jako bitno, zar ne? :)
Intervju za posao je stresan sam po sebi. Hajde, probaj da smanjiš anksioznost juniorima. Šta mogu da očekuju na prvom razgovoru za posao?
Stresan je za obe strane :) There is a big secret revealed, ali pssst.
Zavisi od stila ispitivača, zaista. Ali neka uobičajena stvar jeste da znaš šta ti stoji u CV-u :) Zatim, da možeš da me provedeš kroz tvoje projekte, koliko god da su bazični i da možemo da diskutujemo o rešenjima, problemima, kapacitetima, nekim odlukama. U principu, moj zadatak kao intervjuera jeste da nađem neki najmanji zajednički sa kandidatom, i da možemo da diskutujemo na temu. Jako mi je važno da vidim do koje mere neko usvaja znanja, kako razmišlja, kako dolazi do zaključaka… Isto tako, skroz je legitimno nešto ne znati, nije legitimno lupiti.
Jednom prilikom sam dobio odgovor od kandidata da je cloud iznad Atlanskog okeana, jer su tamo međunarodne vode…
Kakav junior bi te impresionirao na razgovoru za posao?
Dobar? :) Nije sve u kodu. Želim nekoga ko grize jer hoće da pokaže da je sposoban. Neću da se neko uvlači, hoću da razmišlja svojom glavom i da vidim kako se to mišljenje formira. A to tako jednostavno zvuči.
Ono što juniori danas ne znaju je šta su starije generacije uradile za njih, i kakav su sistem postavile. I tu zapravo ne uključujem moju generaciju, mi smo samo nastavili kako treba.
Kod nas u zemlji je do relativno skoro postojao “informatičar” koji je u stvari doživljavan kao mitsko biće sposobno da telepatski komunicira sa računarom. Eventualno da napravi web sajt, instalira Windows i Office i napravi shared foldere u LAN-u.
Starije generacije su se izborile za status cele profesije, nadalje smo dovodili svetska imena u industriji, školovali i doškolovavali ljude i generalno uspostavili sistem.
Impresionirao bi me junior koji doživljava profesiju kao ono što jeste, kao priliku da nauči puno i da reši realne probleme, a ne kao način da se uzme brza para i u procesu degradira trud hiljada drugih pre i posle njega.
Razumevanje koda ili što više ispisanih redova?
Apsolutno razumevanje koda. Same linije su rutina. Uostalom, svi možemo da jednu liniju koda pretvorimo u 5 :)
Svaka postavka „Video sam online da tako treba” ili „Meni su rekli da tako treba” je pogrešna. Možda bi zaista trebalo tako, ali me interesuje da li znaš zašto je to tako. Da li si probao drugačije da rešiš problem? Lično poznajem nekoliko sjajnih inženjera koji imaju po 50 linija koda godišnje, a i dalje njihovi projekti ne mogu bez njih…
Pored umetnosti kodiranja, koje veštine ceniš kod programera?
Organizovanost i dokumentovanost. I lojalnost.
Postoji nešto sablasno lepo u tome da očekuješ da ćeš biti zamenjen ili da ćeš zaboraviti šta si radio, pa se kladiš protiv sebe :) Isto važi i za imenovanje varijabli. Kada vidim kod sa a, b, okwrg ili nedeskriptivnim funkcijama, po automatizmu se iznerviram, preventivno :)
U stvari jako cenim normalne ljude. To je baš poseban kvalitet, ljudi sa kojima može da se radi. Jer ako vidimo da si korektan, bićemo i mi (i pod „mi“ mislim na bilo koji kolektiv).
Strahinju, ali i još seniora voljnih da podele svoje iskustvo, možeš pronaći u HelloWorld Viber zajednici, kao i u našoj novoj grupi HelloJunior, namenjenoj upravo početnicima i juniorima.