3 sajta na kojima možete naučiti da programirate, zaraditi novac i dobiti posao developera

Pored knjiga, online ili offline kurseva i tutorijala, postoji još jedan zanimljiv način da naučite da pišete kȏd i steknete jake osnove iz algoritama i struktura podataka, kao i da poboljšate svoju brzinu implementacije i preciznost.

Aleksa Vidović - 20. Septembar, 2016.

Postoji mnogo načina da naučite programiranje. Pored formalnog obrazovanja, postoje i samouki, nezavisni načini za osposobljavanje za rad u ovoj oblasti. Jedan od dokaza da je moguće samostalno naučiti programiranje jeste i činjenica da polovina domaćih developera nema završen fakultet.

Takođe, poznato je da programeri često pričaju o tome kako celog života uče, i kako je programiranje karijera koja te tera da se stalno usavršavaš. Dakle, izvori znanja postoje i van ustanova, iako nam fakulteti pretvoreni u biznise govore drukčije.

Pored knjiga, online ili offline kurseva i tutorijala, postoji još jedan zanimljiv način da naučite da pišete kȏd i steknete jake osnove iz algoritama i struktura podataka, kao i da poboljšate svoju brzinu implementacije i preciznost.

Iako ovakav vid učenja može delovati previše izazovno za početnika zbog svoje kompetitivne prirode, zajednica okupljena na ovim platformama pruža veliku podršku svima koji žele nešto da nauče, a početnici su dobrodošli. Naravno, niko ne može da vežba i uči umesto vas, taj deo morate sami da odradite.

Online judge platforme

Online judge je vrsta platformi na internetu koje evaluiraju vaš programski kȏd, njegovu brzinu i korišćenje resursa računara.

Uglavnom rade tako što prvo izaberete problem koji želite da rešite. Dobijete tekst zadatka i specifikaciju inputa i outputa vašeg programa. Kada rešite zadatak aploudujete svoj izvorni kȏd i online judge ga testira u odnosu na unapred određene test slučajeve.

Za rešavanje zadataka uglavnom imate izbor između više programskih jezika. Najpopularniji su svakako C/C++ i Java, s tim što većina vrhunskih takmičara koristi C++ zbog brzine i moći koju STL (Standard Template Library) pokazuje prilikom rešavanja problema.

Na sajtovima kao što je hackerrank za probleme za vežbu možete koristi veoma veliki broj različitih jezika, što čini učenje dostupnim ljudima zainteresovanim za različite tehnologije.

Zadaci se najčešće rešavaju na dva načina.

Prvo, kao vežba. Većina ovih platformi ima veliku bazu zadataka za vežbu, koji su dizajnirani tako da vas nauče nekim važnim konceptima programiranja, ili su uzeti sa nekog od prošlih takmičenja koje je platforma organizovala.

Drugi način je da učestvujete na takmičenju. Kada uđete u zajednicu ljudi koji se bave kompetitivnim programiranjem online, shvatićete da ovih takmičenja ima mnogo.

Od codesprintova koji traju sat vremena i kao nagradu nude majicu ili šolju sa logoom platforme, pa sve do takmičenja koja traju po nekoliko dana i imaju nagradni fond od nekoliko hiljada dolara.

Ovo je odličan način i da nađete posao. Često neke velike firme organizuju takmičenja na ovim platformama, gde kao zadatke postavljaju realne probleme sa kojima se njihova kompanija susreće. Nagrade su velike, reda veličine nekoliko hiljada dolara, a najbolji često dobijaju ponude za posao.

Naravno, da li ćete i kako koristiti ove platforme jeste vaš izbor. Verujem da mogu da vam posluže, bilo kao dopuna nekom drugom kursu, bilo kao osnovni medijum za učenje.

Ovakvih sajtova ima mnogo, ali izdvajamo 3 koja se nalaze među najpopularnijima.

SPOJ

Sphere Online Judge je zamišljen da bude veoma jednostavan. Svi problemi su poređani u jednu veliku listu i rangirani prema dva faktora: težini razumevanja koncepta i težini implementacije.

Pod težinom koncepta misli se na komplikovanost ideje iz kompjuterskih nauka čije razumevanje vam je potrebno za rešavanje ovog problema. Često nije eksplicitno navedeno koji koncept je u pitanju, ali tu nastupa velika zajednica okupljena oko ove platforme. Svaki problem ima odeljak za diskusiju u kojem se uglavnom nađe neki iskusniji programer da uputi ostale šta treba da guglaju.

Težina implementacije govori koliko je teško “iskucati kȏd”. Ponekad se desi da je za zadatke čije je rešenje lako razumeti na konceptualnom nivou implementacija izluđujuće komplikovana. Sa druge strane, postoje ideje o kojima morate da čitate dva dana iz petnaest različitih izvora, ali jednom kada ih ukapirate, rešenje se implementira za 15 minuta.

Ovo govori i o edukativnoj vrednosti ovih platformi. Ako uložite dovoljno truda, one vas uče obema stranama programiranja: teorijskom delu, tako da ne budete samo “code monkey”, kao i praktičnom delu, implementaciji i pažnji za detalje, kako ne biste bili jedan od onih ljudi koji znaju sve samo u teoriji.

HackerRank

Odličan sajt za početnike, ali i za iskusnije programere. Rešavanjem zadataka unapređujete svoj rang, a problemi su podeljeni u kategorije i razvrstani po kompleksnosti.

Možete se okušati u oblasti koja vas najviše zanima, a neke od kategorija su veštačka inteligencija (građenje botova), dinamičko programiranje, grafovi i problemi sa stringovima.

Korisno je i što najpopularniji jezici imaju kategorije posvećene njima, gde kroz jednostavne zadatke možete naučiti sintaksu kao i implementaciju nekih bitnih koncepata u tom konkretnom jeziku. Takođe postoji i kategorija posvećena funkcionalnom programiranju o kom se ovih dana dosta govori, pa možete naučiti njegove principe rešavajući zanimljive izazove.

Od skoro je uvedena i posebna oblast za tutorijale, gde se možete prijaviti na 30 Days Of Code, ili 10 Days Of Statistics. To su serije izazova namenjene početnicima, i nakon prijavljivanja svakog dana vam se otvara po jedan novi izazov, sa malo detaljnijom postavkom i objašnjenjem zadatka.

Ipak, nemojte da vas pristupačnost ove platforme zavara, jer iako na mnoge načine pokušava da pomogne onima sa manje iskustva, hackerrank nudi izazov za svakoga. Samo potražite probleme označene sa “Expert”.

Hackerrank za većinu svojih zadataka nudi veliki broj jezika u kojima možete da ih rešite, a za učenje je posebno zanimljivo rešiti isti problem u dva različita jezika.

Ova platforma takođe oraganizuje i veliki broj takmičenja različitih tipova. Od kraćih code sprintova do nedeljnih takmičenja sa velikim nagradama. Takođe, kompanije mogu da organizuju svoja takmičenja na hackerranku, a pored toga što nude vredne nagrade, kompanije pokušavaju da regrutuju najbolje talente.

Top Coder

TopCoder je jedna od najvećih i najozbiljnijih platformi. Zamišljena je od samog svog početka kao platforma koja povezuje poslodavce i programere kroz realne izazove.

Pored programerskih, možete rešavati i izazove iz oblasti dizajna i data science-a.

Unutar ovih oblasti, takmičari mogu da rešavaju probleme za kompanije koje sarađuju sa TopCoderom.

Stvarni sistemi koje razvijaju kompanije podeljeni su u delove i njihovi razvojni problemi dati su u obliku izazova. Ovo omogućava svakom TopCoderu da radi upravo ono u čemu je najbolji, bio to grafički dizajn, prototipovanje, razvoj arhitekture, algoritama ili samo kodiranje.

Pored toga, postoje i redovna takmičenja poznata kao Single Round Matches (SRMs), koja su zabavna i namenjena da testiraju vaše umeće u različitim oblastima data science-a i programiranja (dinamičko programiranje, mašinsko učenje, itd.). Rangiranje se vrši po Elo sistemu.

Često se dešava da takmičari jedni drugima pomažu u online forumima u toku takmičenja, iako su direktni konkurenti. To samo govori o snazi i veličini ove zajednice.


Pogledajte još i:

Kako i odakle samostalno učiti programiranje

CS50 je najpopularniji kurs na Harvardu, Yale-u i internetu — evo šta smo naučili iz njega

Kako postati Junior Full Stack programer za najviše dve i po godine