U periodu od dve i po godine prešla sam put od potpunog neznanja o programiranju do pozicije full-stack JavaScript developera. Taj put bio je mnogo teži nego što je trebalo da bude.  

Ovaj članak namenjen je svima koji sanjaju o karijeri u programiranju ali nemaju predstavu odakle treba da krenu. Provešću vas kroz sopstveni put ka programiranju i strukturisaću uputstvo za učenje koje može biti od pomoći nekome ko ima težnje slične mojim.

Put od sna do jave

Pre dve i po godine nisam znala ništa o programiranju. Čak i par sitnica koje sam pokupila usput bile su pogrešno protumačene informacije. 

Moje formalno obrazovanje obuhvatalo je političke nauke a moje radno iskustvo bilo je šarenoliko — od prodaje do novinarstva. Nikako nisam uspevala da pronađem profesiju koja bi mi dala pravi osećaj svrhe. 

Do svoje 28. godine nisam nikada napisala ni jednu liniju koda, editovala post u WordPress-u niti napravila jednu jedinu animaciju. Sve što sam tada znala bilo je da želim da promenim karijeru, a programiranje mi je pomoglo da stvorim nešto što je bilo zaista moje

Moja strast ka stvaranju kompjuterskih igara povela me je na put iscrpnog istraživanja te oblasti, tokom koga sam zaključila da je web development najbolje mesto da počnem da gradim svoje veštine. 

Kada sam počela da učim o pravljenju softvera, ogromna količina dostupnog znanja i resursa me je u početku preplavila i bila sam zbunjena jer nisam pred sobom imala jasno definisan put za učenje. Informacije su bile izmešane i zbog toga sam često učila kompleksne i napredne stvari bez prethodnog osnovnog znanja koje je potrebno za njihovo razumevanje. 

Sada sam full-stack JavaScript developer i radim za kompaniju Florence Healthcare koja razvija softver za upotrebu u kliničkim istraživanjima. Podeliću sa vama čitav proces kako sam sama sebe naučila programiranju i kako i vi možete to uraditi, ali na mnogo lakši način. 

Počnite od osnova, i nemojte se obeshrabriti. 

HTML je dobra početna tačka u web developmentu. To nije programski jezik, nemojte upasti u tu zabludu. 

HTML je opisni jezik koji se koristi za pozicioniranje elemenata na web stranici. CSS koji je nerazdvojan od HTML-a koristi se za dizajniranje samih web elemenata. Zajedno, oni omogućavaju stvaranje jednostavnih sajtova kao što je ovaj jednostranični portfolio.

Ako tek započinjete svoj put učenja, nemojte preskakati bilo šta, čak ni stvari koje vam deluju previše jednostavne ili lake. Osnova web developmenta je najvažnija od svega što ćete naučiti. 

Mnogi početnici i samouki developeri prave istu grešku gde u početku zaobilaze najjednostavnije elemente i nikada se posle ne oporave od toga. Čak i ako se nikada nećete baviti front-end developmentom ili UI/UX dizajnom, morate imati dobro poznavanje HTML-a i CSS-a. 

Neki dobri kursevi koje treba razmotriti kada počinjete sa učenjem HTML-a i CSS-a su: 

Ova dva kursa trebalo bi da vam obezbede dovoljno informacija i znanja da započnete složenije front-end radove. Takođe igraju ulogu brzog početnog kursa koji će vam pomoći da uvidite da li zapravo uživate u kodiranju ili ne. 

Programiranje zahteva visok nivo istrajnosti, discipline i posvećenost detaljima. Moje lično mišljenje je da svako može to da nauči i postane dobar developer. Uspeh ne zavisi od talenta već od karaktera i istrajnosti. 

Da biste bili uspešan programer, morate znati kako da rešite probleme i morate uživati u tome. To je izazovan posao, osobito ako sami sebe učite kako da ga obavljate. 

Ako se najiskrenije ne zaljubite u programiranje, nemojte se baviti njime. Postoji mnogo poslova u softverskoj industriji koji su vezani za development ail ne zahtevaju programiranje (marketing, product development, podrška, QA testiranje i slično).

Međutim ako ste naučili neke prve osnove i uživali u njima, naredni koraci biće još bolji. 

Učenje „front-end” osnova. 

Iz mog iskustva, najbolji i najsveobuhvatniji resurs za samostalno učenje web developmenta je freeCodeCamp. Počnite od prvog poglavlja „Responsive Web Design”. 

Responsive Web Design će vam omogućiti da počnete da pravite i predstavljate vaše lične projekte. Ovi projekti biće najbolja referenca za vaše buduće poslodavce o vama i vašim veštinama. Obavezno uredite prikaz svojih projekata na portfolio stranici. Iz mog iskustva, codepen.io se pokazao kao zgodna opcija za hosting.

Git je obavezna alatka za praćenje verzija vašeg rada u modernom developmentu. Kako vaše znanje raste, potrudite se da replikujete ovaj obrazac sajta i postavite ga na GitHub-u.

Oblast „Front End Libraries Certification” na freeCodeCamp-u je odličan sledeći korak. Uložite potrebno vreme radeći na projektima u ovom odeljku, naporedo sa izazovima za kodiranje. Projekti traže više vremena, ali su takođe i najbolji način ne samo za kodiranje već i kao vežba rešavanja problema sa kojima se suočavate tokom razvoja nekog proizvoda. 

Brzi koraci za osnove „front-end-a”: 

  1. Prijavite se na freeCodeCamp
  2. Radite na projektima iz sekcije Responsive Web Design Projects naporedo sa izazovima za kodiranje
  3. Izložite svoje projekte na codepen.io ili drugoj hosting platformi po vašem izboru
  4. Steknite „Responsive Web Design” sertifikat na freeCodeCamp-u. 
  5. Upoznajte se sa Git-om
  6. Pokušajte da replicirate ovaj obrazac sajta i postavite svoj rad na  GitHub-u
  7. Radite na „Front End Libraries” projektima naporedo sa izazovima za kodiranje
  8. Steknite „Front End Libraries” sertifikat na freeCodeCamp-u

Strukture podataka i algoritmi

Sada sledi najteži deo koji ujedno donosi i najveće zadovoljstvo. Stvari postaju mnogo komplikovanije kada je reč o izgradnji struktura podataka i algoritama, ali nemojte se obeshrabriti. Kada svi elementi legnu na svoje mesto, taj osećaj je neobjašnjiv — pobedili ste. 

Počnite na freeCodeCamp-u, u odeljku pod naslovom „Javascript Algorithms and Data Structures” gde ćete steći osnovno znanje o ovoj temi kroz izazove za kodiranje. 

Po kompletiranju „Basic JavaScript-a” i „Basic Algorithm Scripting-a”, započnite rad sa HarvardX CS50-om na edX-u. Prvih pet nedelja je ključno, jer obuhvataju srž kompjuterskih nauka uz predmete poput struktura podataka (data structures), algoritama i upravljanje memorijom (memory managment). Kroz ovaj kurs naučićete i C programski jezik koji je osnova mnogih drugih jezika. 

Najvažnije, prioritet treba da vam bude razumevanje problema koje ćete rešavati kroz ove izazove. Sigurno ćete se negde zaglaviti. Moj savet je da malo varate i potražite rešenje, ali samo za delove na kojima ste se spotakli. Kroz ostalo prođite sami i rešite sve što možete svojim trudom. 

Brzi koraci za učenje o strukturi podataka i algoritmima: 

  1. Radite na zadacima u odeljcima „Javascript Algorithms” i „Data Structures” na freeCodeCamp-u.
  2. Prođite prvih 5 nedelja HarvardX CS50-a na edX-u

Ovladavanje osnovama „back-end-a”

Po završetku prvih pet nedelja CS50-a i kompletiranju „Javascript Algorithms” i „Data Structures” odeljaka na freeCodeCamp-u, napravite pauzu od opšteg znanja i počnite da učite o programiranju sa serverske strane (server-end programming)

Da biste naučili o osnovama „back-end-a”, u poglavlju „APIs and Microservices” na freeCodeCamp-u možete naći informacije o Node-u, Express-u i MongoDB-u. 

Pošto se upoznate sa osnovama back-end-a, sjajan sledeći korak je iscrpni kurs Learn Node koji je stvorio Ves Bos. Ovaj kurs pokriće mnoge ključne stvari koje su potrebne da bi se razvila moderna web aplikacija. 

Vratite se ostatku CS50-a i bacite se na Python. Pri kraju kursa, biće potrebno da priložite završni projekat koji će biti vaš najveći izazov do tog trenutka. Za mene je on imao sličan osećaj kao diplomiranje. Kada sam ga završila, osećala sam se spremnom za bilo šta. 

Brzi koraci za ovladavanje osnovama back-end programiranja:

  1. Radite na API i Microservices Projektima uporedo sa izazovima kodiranja
  2. Steknite sertifikat za API i Microservices na freeCodeCamp-u
  3. Prođite iscrpni kurs Learn Node koji je izradio Ves Bos
  4. Vratite se i završite ostatak HarvardX CS50-a na edX-u

Završavanje finalnog projekta

Da biste završili HarvardX CS50 kurs, morate da priložite završni projekat. Moj projekat bila je izrada web aplikacije za čuvanje beleški i recepata po imenu Procooking.

Procooking poseduje:

Aplikacija je izrađena pomoću sledećih alata:

Kada razvijete sopstvenu web aplikaciju, potrebno je da se uradi deployment. Možete ga besplatno uraditi koristeći Heroku ili nešto slično.

Brzi koraci za izradu završnog projekta:

  1. Izradite vaš završni projekat za HarvardX CS50
  2. Postavite vašu aplikaciju na web

Potraga za stručnim usavršavanjem

Sada kada ste postavili vaše projekte na GitHub-u i postavili na web vaš CS50 završni projekat, imate sve što vam je potrebno da izradite portfolio sajt i ažurirate vašu LinkedIn stranicu. Ja sam koristila WordPress da izradim svoj portfolio (koji od tada nije ažuriran).

Postovi na GitHub-u, završni projekat sa CS50, portfolio sajt i ažurirana LinkedIn stranica pomoći će vam da potražite vaš prvi pripravnički položaj u oblasti programiranja. 

Nemojte se suviše brinuti zbog stvari koje ne znate. Fokusirajte se na ono što ste do sada naučili. Uvek će biti prilike za sticanje novih znanja i menadžeri koji zapošljavaju su i sami toga svesni. Činjenica da ste završili sve ove kurseve i projekte prikazaće u pozitivnom svetlu vašu posvećenost, motivaciju i volju za učenjem. 

Kada je reč o potrazi za praksom i praktičnim iskustvom, šaljite vaš CV i portfolio svuda gde biste želeli da radite, bez obzira na to da li oglašavaju slobodna radna mesta ili ne. Ako kompanija i nema slobodnih pozicija u tom trenutku, uglavnom će vam na ljubazan način biti stavljeno do znanja da će vas imati na umu ako se nešto otvori. 

Da biste došli do posla koji je u ravni sa ciljevima koje ste postavili u svojoj karijeri, treba da imate uopštenu ideju o tome šta tražite u nekoj kompaniji kada je reč o tehnologijama, radnoj kulturi i projektima. Moja sklonost bila je ka radu u kompaniji koja stvara svoje sopstvene proizvode, jer sam na taj način mogla i sama da se razvijam kao developer zajedno sa proizvodom. 

Brzi koraci za traženje posla:

  1. Napravite vaš portfolio sajt
  2. Ažurirajte LinkedIn
  3. Ažurirajte CV
  4. Pošaljite vaš CV i portfolio na sva mesta gde biste želeli da radite
  5. Pronađite praksu koji je u skladu sa vašim interesovanjima oko tehnologija, radne kulture i proizvodima koji se razvijaju

Moje prvo pripravničko iskustvo 

Moja praksa bila je u malom timu developera u startap firmi vezanoj za klinička istraživanja iz SAD. Imala sam priliku da se rano susretnem sa čitavim razvojnim procesom radeći na složenom projektu sa malim timom. 

Tu sam i dalje kao software developer sa punim radnim vremenom i još uvek učim i razvijam se zajedno sa kompanijom. 

Na početku, sve je bilo izazovno. Od jednostavne postavke radne okoline do pisanja prvih linija koda. Moji rani dani prošli su uglavnom u čitanju o tehnologijama i konceptima kojima se vodila kompanija. 

Tada je svaki dan donosio nove izazove. Najbolji savet koji mogu da dam za taj period je da uvek postavljate pitanja. Ne treba da se sramite ako nešto ne znate, svi smo nekada bili u tom položaju. 

Ubrzo po početku rada, stigao je i moj prvi projekat koji se sastojao u implementiranju funkcije za pretraživanje. Tada sam i dalje bila praktikant i bilo je na meni da razradim kako dizajn tako i implementaciju. Otkrivanje najboljeg načina da se zadovolje poslovni zahtevi, a da funkcionalnost istovremeno ima dobre performanse bila je veliki izazov. 

Posao programera je jedan beskrajan proces učenja, što je jedna od stvari koje najviše volim u njemu. 

Pošto sam uspešno završila taj projekat, stigao je sledeći izazov, a potom i onaj posle njega. Svaki mi je doneo nova znanja i iskustva. 

Neki dodatni kursevi koji su mi bili korisni tokom pripravništva su i FrontendMastersMongoDB University, i 30-day vanilla JS coding challenge.

Nikada nemojte odustati od svog sna o programiranju

Promena karijere ka programiranju nije lak put, ali osećaj koji ćete imati kada vaš kod konačno proradi biće neuporediv sa bilo čim drugim. 

Kada naiđete na prepreku — što će se često dešavati, nemojte se obeshrabriti. Prevaziđite je i pronađite rešenje. Na kraju tog procesa čeka vas ogroman osećaj uspeha. 

Budite hrabri, nikada ne odustajte i srećno!