IT-jevaca ima manje nego poslova, tako da većina kolega brzo nađe svoje mesto pod digitalnim suncem. Nešto je teže početnicima koji traže prvi posao. Uzroke možemo tražiti u: neiskustvu kandidata, naduvanim finansijskim očekivanjima, pritiskom na industriju da sve bude odmah i sad, kao i preopterećenosti iskusnijih kolega koji bi trebalo da pomognu mlađima da uđu u profesionalne vode. Nezavisno od toga da li sam dobro prepoznao uzroke ili ne, svakako stoji da je taj prvi stepenik u karijeri najteži većini mladih koleginica i kolega.
Kako možemo da pomognemo mladim kolegama? Startit to radi kroz svoj mentorski program, a u ovom blog postu ću ukratko zapisati šta bi junior trebalo da zna da bi dobio ugovor o radu, a ne ponudu za praksu 🙂
 
U nastavku prolazimo listu konkretnijih znanja i veština za koje smatram da su bitne.
 

 

Soft skills

Pristojnost i komunikacija

Ukoliko tražite poštovanje, pokažite ga. Jasna i kulturna komunikacija, kako uživo, tako i e-mailom, sms-om i telefonom.
Lepo je našaliti se i biti “opušten”, međutim ima momenata kada to nije OK. Ukoliko je tu druga osoba za koju niste sigurni koju funkciju obavlja, budite za stepen formalniji nego što biste inače bili, slično se odnosi na emailove i svu pisanu dokumentaciju. Bilo kakve šale koje mogu da se protumače kao uvrede u bilo kom kontekstu izbegavati u širokom luku, psovke, neformalne pozdrave, nadimke koje ste sami smislili. Ljude zovite onako kako se sami predstavljaju, bilo u pisanom potpisu ili uživo. Neka imena imaju uobičajene skraćene verzije, ali možete sačekati nedelju dana sa tim.
Ukoliko 2 radna dana ne odgovorite na e-mail, pretpostaviću da niste zainteresovani, to ne znači da vam neću odgovoriti ako se “pojavite” trećeg dana, i ne znači da tako rade svi…

Neke firme imaju dress code, a i ako nemaju, preživećete dva sata u dugim pantalonama.

Motivacija i timski rad

Zainteresujte se za tehnologiju, nađite ono što vas inspiriše i što je vama lično zanimljivo. Ukoliko nešto radite samo zbog novca, to je posao, što je sasvim u redu, međutim ukoliko želite da budete stvarno dobri potrebno je da to što radite bude u skladu sa vama, vašim interesovanjima, pa i više od toga, onda je to poziv. Vredi se potruditi da nađete nešto što vas inspiriše, daćete mnogo, dobićete više.
Uključite se u zajednicu, slušajte predavanja, krećite se u krugovima ljudi koji se bave onime što biste vi želeli. Znam, teško je, ako nije u skladu sa vašom prirodom, ali je korisno 🙂
Nađite kolege na sličnom nivou i sa sličnim mukama, radite zajedno.

Procesi i metodologije

Uobičajeno je da se od početnika ne očekuje da se previše angažuju vezano za procese, planiranje, testiranje i ostale aktivnosti koje nisu strogo tehničke, ali treba imati na umu da proces utiče, kako na svakodnevni rad tehničkog tima, tako i na sam izlaz, proizvod na kome radimo. Tako da mislim da je potrebno uputiti se u procese, pročitati o metodologiji koja se koristi u timu ili kompaniji, i eventualno i pokušati da utičite na proces na neki način, naravno u početku jako strpljivo, jer je velika verovatnoća da niste u pravu.

Hard skills (tehnička znanja)

Informatika

Nekada se predmet u školi gde se učilo programiranje i IT zvao “Informatika” pa se zadržalo pitanje među iskusnijim kolegama: “Šta si ti imao iz informatike?”. Pitanje može da se odnosi na neko elementarno nepoznavanje računara, operativnih sistema, razlikovanje raznoraznih standarda kablova i slično koje ste pokazali. Ako hoćete profesionalno da se bavite IT-jem, lepo je da znate osnove funkcionisanja računara, da razlikujete kablove, uz osnove nekog operativnog sistema stižemo do pozitivne iz “Informatike”.

Za pet iz “Informatike” treba da znate:
– Setup računara od “nule”
– Da koristite najmanje jedan operativni sistem i elementarne alate na njemu: tekst editor, zapakujete i otvorite arhivu, prebacite sliku iz jednog formata u drugi.
– Da povežete nešto od opreme, npr. skener, i u struju i na računar 🙂
– Nešto osnovno linux shell-a
– Naučite da koristite google i “procenite” kvalitet izvora na koji ste naišli, Hint: stackoverflow je dobar izvor, ali kopirate kod iz “Answer” sekcije, ne iz “Question” 🙂

Source control

Postoje razni sistemi za upravljanje izvornim kodom i kolaboraciju, centralizovani, distribuirani, pobedio je GIT. GIT mora da se zna, možda može da se prođe uz “Git extensions” ili “Git for Windows”, ali jednostavno nije vredno izbegavanja, uložite nekoliko dana i da naučite osnove i posle nekoliko meseci prođite još jednom sa nekim od kolega i znaćete GIT dovoljno dobro. Evo tutorijala na linku:
https://www.freecodecamp.org/news/learn-the-basics-of-git-in-under-10-minutes-da548267cc91/

Computer science

Algoritmi i strukture podataka, to je osnova i elementarne stvari valja znati. Osnovne strukture podataka i kad se koja koristi, liste, stabla, hash tabele, efikasnost pronalaženja elementa. Poznavati algoritme za sortiranje i na njima naučiti efikasnost algoritma, po brzini i po korišćenju memorije, je dovoljno za početak.
Ukoliko elementarno vladate nekim C-olikim jezikom, uključujući JavaScript, ovo može da se nauči za mesec dana.

Osnove Web-a

Naučite osnove interneta i web-a: HTML, CSS i JavaScript, kao i osnove http-a, šta je to request/response, koji verb-ovi postoje. Ako naučite i šta je SSL i to oko sertifikata dobijate 5 bambija.

Programski jezik i framework

Naučite osnove o programskom jeziku koji radite i framework-u nad kojim se vrti, odnosno engine-a koji ga izvršava. Idealno je da znate nekoliko jezika koji su različiti po nekim bitnim parametrima. Govoriću samo o high-level jezicima:
– Npr. Java i C# su slični jezici nad različitim framework-om, paradigma je OOP (Objektno orijentisano progrmairanje), način na koji se izvršavaju, upravljanje memorijom… Ako znate kako radi jedan znate i drugi.
– Tu su Python i Ruby, interpretirani, dinamički tipovi… JavaScript spada u grupu intepretiranih i dinamičkih jezika, ali zbog toga što se prevashodno koristi za programiranje ponašanja web strana na klijentu ima neke svoje specifičnosti.
– Od domenski specifičnih jezika, najpoznatiji je SQL (Structured Query Language) koji se koristi za upravljanje Relacionim bazama podataka. SQL je jedini u srednjim godinama, međutim ne izgleda da će uskoro nestati. Ima jaku matematičku pozadinu i kao što je JavaScript nezaobilazan na Web-u, u server salama korporacija dominira SQL.

Industrijski standard je objektno orijentisano programiranje, možemo diskutovati o tome da li postoje adekvatnije paradigme i kada, za sada ostavimo to onima sa više iskustva. Za početak valja proči dizajn paterne (Design Patterns) i SOLID, akronim pet principa objektno orijentisanog programiranja, i vraćati im se sa više iskustva 🙂

Alati

Naučili ste osnove svega i izabrali jedan ili dva jezika. Sada usavršite alate koji se koriste do nivoa da znate osnovne skraćenice na tastaturi (keyboard shortcuts) i provežbajte ono što ste naučili u konkretnim jezicima i koristeći izabrani framework, do nivoa da se vidi da ste “svoj na svome”. Okačite primere na GitHub, uvežbaćete sve što ste učili, a biće i dostupno vašem budućem poslodavcu i/ili kolegi.
Pročitajte šta CI (continues integration) i CD (continues deployment).
Ukoliko kompanija koju ciljate koristi neki konkretan cloud provider, ne bi bilo loše da pogledate šta on ima od alata.


Bonus

Unit i drugi automatizovani testovi. Pročitajte šta su, napišite koji unit test.
Ukoliko imate nešto iskustva valja pogledati i neki funkcionalni ili jezik koji se koristi u data science i artificial inteligence poljima, kao što su F#, Python, R, Scala.
Ako ste više okrenuti ka korisničkom interfejsu, onda neki od framework-a za front, React ili VueJs, možda Flutter. Uzmite u obzir da ovakve biblioteke i okviri nekada dođu i prođu, međutim computer science i SQL su tu decenijama.
Ukoliko kodirate u JavaScript-u, naučite TypeScript, praktično nadskup JavaScript-a sa tipovima, mnogo znači na većim projektima, bar nama naviklim na strongly typed jezike 🙂
 
Obzirom da je sve više kvalitetnog materijala javno dostpuno, na primer Harvard CS50’s Introduction to Computer Science nema izgovora 🙂

Nadam se da nisam preskočio ništa veće, svakako su tu komentari.

Ne bih rekao da je previše teško, uspeo sam skoro sve ovo da naučim za samo 10 godina. Ovo je referenca na klasik Pitera Norviga 21 days koji svakako treba da pročitate 🙂

Čestitam, postali ste Junior software developer!

2 thoughts on “Šta treba da zna junior?

  1. Miloš Paunović says:

    Sažeto i potpuno tačno. Sada tačno znam šta ću preporučiti svim kolegama na početku karijere koji se pitaju “Šta mi zapravo treba da bih pošteno zagazio u IT sferu”.

  2. Bojan says:

    Jako dobar tekst. Ee da sam pročitao ovako nešto pre 10 godina. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *