Kako učiti programiranje?

Kako učiti programiranje?

Više puta sam se suočio sa rečenicama i pitanjima tipa:

  • “Želim da naučim programirati ali ne znam gdje početi.”,
  • “Koji programski jezik da naučim? Previše ih je.”,
  • “Imam ideju ali ne znam koji programski jezik naučiti kako bih ideju realizovao/la.”, itd.

Ukoliko tražite odgovor na bilo koje od gore navedenih pitanja, u ovom članku imam namjeru da na minimiziran način i djelimično dam odgovore na gore navedeno. U slučaju da svi odgovori nisu baš u ovom članku, pogledajte i ostale članke na sajtu vezane za ovu oblast i vjerovatno ćete pronaći odgovor.


Prije nego nastavite čitati ovaj članak, trebate biti svjesni sljedeće činjenice:

U svijetu programiranja/IT svijetu novac ne dolazi samo od sjedenja i kodiranja (pisanju koda). Da biste dostigli nivo gdje možete mnogo zarađivati, morate naporno raditi i ozbiljno shvatiti svaki korak učenja i ne zanemarivati iste.

Prije nego započnete učenje, znajte da programiranje treba prevenstveno zavoljeti kako biste “lakše” izvršavali posao i rješavali probleme. Pod ovim smatram standardnu činjenicu: “Svima je najdraže raditi onaj posao koji vole.”


Na šta sve treba biti spreman?

Ako imate želju i ako ste spremni da “duboko zaronite” u svijet programiranja, trebali biste biti minimalno spremni na navedeno u sljedećoj listi:

  • Ne smijete žuriti ili preskakati lekcije koje trenutno učite. Svaka lekcija je specifična za sebe i može vam donijeti neki novi trik ili znanje koje niste prije imali
  • Kada učite neki novi koncept, prolazite kroz novu lekciju i slično, moj savjet je da naučite srž trenutnog i da se svakoj lekciji posvetite mnogo više iznad minimalnog vremena, ako stvarno želite da imate veoma dobre vještine. Pod ovim podrazumijevam da pored trenutno naučene lekcije, istražujete još više o njoj, vježbate zadatke na tu temu, itd.
  • Kada dosegnete dovoljan nivo znanja i vještina za rad na nekom projektu, bilo to početni projekat, projekat srednjeg nivoa ili ipak naprednijeg nivoa, budite spremni da ponekad ostanete do kasno budni (pogotovo ako pored tog projekta imate dodatne obaveze, npr. fakultet) kako biste riješili problem ili dovršili trenutni zadatak na kojem radite
  • Prilikom učenja će se sigurno dešavati da se počnete nervirati zbog nekog dijela koda, bilo to da nešto ne funkcioniše ispravno ili ne možete na prvu shvatiti koncept koji trenutno učite
  • Prilikom realizacije projekta, tačnije koraka kodiranja, može se desiti isto kao u prethodno navedenoj stavki. Međutim, dobro isplaniran projekat vam može donijeti mnogo bržu realizaciju. Uvijek budite svjesni da, figurativno rečeno, deset minuta dobrog planiranja skraćuje izvršavanje za pola, ako ne i više


Šta je potrebno za učenje i rad?

Kako biste efektivno učili i radili u ovoj oblasti, minimalno je potrebno:

  1. računar i pristup internetu
  2. želja i volja za stalnim učenjem novih koncepata i implementaciju istih
  3. strpljenje (ne može se uspjeti preko noći)
  4. poznavanje engleskog jezika (mnogo više materijala za učenje je na engleskom jeziku. Ne možete mnogo postići ako s vremenom ne naučite engleski jezik!)

Pored gore navedenog, možete sebi modifikovati ambijent za ugodan rad, imati neku standardnu muziku prilikom kodiranja, i slično.


Kako započeti učenje?

U sljedećoj listi se nalaze glavni naslovi u sljedećem dijelu članka:

  • Frontend ili backend? Koju stranu odabrati?
  • Koji jezik odabrati?
  • Resursi za učenje.

Frontend ili backend?

Ova tema je podijeljena na dva različita članka. U ovom dijelu ću samo površno objasniti šta je frontend, a šta backend.

Frontend programiranje se može opisati kao tip programiranja svega vidljivog korisniku i svega onoga sa čim korisnik može doći u interakciju. Npr. svako dugme u aplikaciji, pisanje, teksta, prikaz statistike, itd.

Frontend mnogo utiče na to kakvo će iskustvo korisnika biti prilikom korištenja aplikacije. Ako je iskustvo korisnika loše prilikom korištenja aplikacije, to znači da je zadovoljeno minimalno jedno od naredno navedenog: dizajn loše urađen, korištenje interfejsa nije jednostavno, potrebno je načiniti previše “koraka” (klikova) do tražene informacije, itd. Stoga, cijeli tim radi da što jednostavnije uradi to rješenje a da kompleksnost sakrije od korisnika.


Backend programiranje se opisuje kao tip programiranja onog dijela, npr. aplikacije, kojeg korisnik ne vidi a što u pozadini rješava zahtjeve korisnika koje “pošalje” putem interfejsa.

Primjer: Zamislite da koristite školsku aplikaciju u kojoj imate mogućnost, kao učenik, da pregledate sve svoje ocjene iz određenog predmeta.

Vaš zadatak je da putem korisničkog interfejsa (kojeg je za vas dizajnirao frontend tim) pristupite aplikaciji, odaberete željene opcije i klikom na dugme omogućite sebi pregled ociena. Ono što se prilikom klika na dugme pokrene nije nikakvo čudo nego neki backend kojeg je napisao, ni manje ni više nego, backend tim.

To je ustvari, kod koji je dobio znak od vašeg klika na dugme da izvrši određene funkcionalnosti na osnovu onoga što ste odabrali da pregledate. Taj isti kod će “povući” informacije iz baze i ponovo vama prikazati u interfejsu. To je suradnja između backenda i frontenda.


Koju stranu izabrati?

Oba termina sam u paragrafima iznad okvirno objasnio. Možete čak raditi i full-stack što je kombinacija backenda i frontenda. Međutim, u ovoj oblasti biste mnogo išli u širinu izučavanja i ne biste se toliko lako mogli specijalizovati u jednoj oblasti nego kad radite samo jednu od dvije objašnjene oblasti iznad.

Prije svega, želio bih da pročitate kratki vodič o tome šta obe strane trebaju naučiti tako što ćete kliknuti ovdje.


Par onako bitnih stvari

Veoma je bitno napomenuti da je specijalizacija u određenoj oblasti veoma bitna. Kada se specijalizujete u jednoj oblasti programiranja, možete da o njoj mnogo više učite nego da učite više oblasti odjednom. Pored te oblasti, neophodno je poznavanje i drugih oblasti bliskoj vašoj radi boljeg snalaženja.

Vjerovatno se sad pitate: “Koje su sve oblasti u kojima se mogu specijalizovati?” Na to pitanje je trenutno veoma teško, skoro nemoguće, dati odgovor.

Prvo trebate naučiti osnove, lako se snalaziti u radu s naučenima alatima, a zatim, kroz smišljanje ideja, vježbu, testiranje, itd., doći ćete sami do zaključka koja vam se oblast najviše dopada.


Koji jezik odabrati?

S obzirom da je ovaj članak namijenjen osobama koje žele naučiti programiranje, a ne onima koji se već dobro snalaze u korištenju programerskih alata, pokušat ću dati najosnovnije prijedloge koje biste mogli upotrijebiti da odaberete jezik sa kojim ćete započeti učenje.


Uopšteno

Ono što bih mogao svakom početniku preporučiti je da pređe ovaj kurs, i da dobro nauči sve koncepte koji su pređeni u kursu. Kurs je namijenjen početnicima, stoga, preporučujem da ponovite engleski jezik i da što prije započnete kurs jer se nećete pokajati. Početnicima bi trebalo više od dva mjeseca da savladaju cijeli kurs, ako žele da nauče mnogo o računarskoj nauci i programiranju.

Kurs je u potpunosti besplatan. Međutim, ako želite certifikat, morate platiti oko $90 (Američkih dolara) kako biste mogli dobiti certifikat.


Ukoliko želite pregledati najpoznatije programske jezike u 2018. godini, kliknite ovdje.


Frontend

Kada govorimo o frontend programiranju, neophodno je da minimalno poznajete:

  1. HTML
  2. CSS
  3. JavaScript.

To su jezici koji će vam omogućiti kreiranje korisničkog interfejsa koji će se izvršavati na mašini (računar) klijenta i njemu će biti prikazan. Ovi jezici su isključivo namijenjeni za kreiranje web sajtova, aplikacija, i slično.


HTML jezik vam služi da postavite sadržaj (materijal) na vašu stranicu. Zatim, koristite CSS kako biste rasporedili i uljepšali taj materijal. Trenutno, kada završite oba koraka, frontend dio sajta može biti dovoljan. Međutim, tu dolazi JavaScript koja vam omogućuje mnogo dodatnih opcija. Jedna od njih su animacije nad elementima (postoje i u CSS-u ali se mogu naprednije uraditi u JS).


Backend

Ako se želite baviti ovim poljem programiranja a ne znate koji jezik odabrati, možete odabrati jedan od navedenih jezika ispod:

  • Python,
  • JavaScript,
  • C++,
  • C#,
  • Java, itd.

U ovom dijelu sam samo nabrojao jezike. Bilo koji jezik od navedenih da izaberete, kada naučite osnove i kada se budete dobro snalazili u radu s jednim, relativno lako će vam biti preći na drugi jezik.
Više o backend programiranju možete pronaći u linku koji je naveden ispod.

S obzirom na to da su oba termina samo ugrubo objašnjena, možete pogledati vodiče za oba termina ispod:

  • Vodič za Frontend: link.
  • Vodič za Backend: link.

Resursi za učenje

Kada želite pronaći na internetu izvore za učenje nekog jezika, danas je veoma lako jer većina jezika ima barem dokumentaciju. Pored toga, postoji mnoštvo tutorijala koji će vam pomoći da savladate željeni jezik.

Uz malo truda, pronaći ćete dovoljno resursa za učenje jezika.

Stack overflow

Kada se budete suočavali s problemima prilikom učenja, bez sajta StackOverflow nećete moći. Pogotovo prilikom učenja osnova. Tu će vam se ukazati rješenje u 95% slučajeva.

Nekoliko drugih resursa za učenje

 

DIPF BaDnja

DIPF BaDnja