Vodič za backend programiranje

Vodič za backend programiranje

U ovom članku će biti mnogo nabrojanih stvari ali ću pokušati da sve objasnim što detaljnije kako bi početnici mogli shvatiti kojim “putem” trebaju ići i na koji način da se posvete backend programiranju.


Sam vodič je većim dijelom orjentisan na backend programiranje weba. Međutim, prilikom učenja, shvatit ćete da li želite ići putem web razvojnog programera ili nekim drugim putem. Isto tako, predlažem da pročitate koje znanje treba da posjeduje svaki programer, bez obzira na to da li je orjentisan za backend ili za frontend stranu, a zatim nastavi sa čitanjem ovog članka.

Btino je naglasiti da je članak namijenjen ne samo bližoj budućnosti vašeg početka programiranja, nego nekoliko mjeseci učenja backend programiranja.


Sadržaj

  1. Odaberite jezik
  2. Vježbajte ono što ste naučili
  3. Naučite kako koristiti menadžer paketa
  4. Standardi i najbolje prakse
  5. Napravite i distribuirajte neki paket/biblioteku
  6. Naučite testiranje
    1. Pišite testove za praktične primjene
  7. Naučite relacione baze
  8. Napravite jednostavnu aplikaciju
  9. Naučite frejmvork
    1. Napravite aplikaciju u naučenom frejmvorku
  10. Naučite neku “NoSQL” bazu
  11. Kreirajte RESTful API
  12. Naučite metodologije autentikacije/autorizacije


Odaberite jezik

 

 

Postoji mnogo različitih programskih jezika koji se koriste u različite namjene. Zbog toga, početnicima je veoma teško izabrati jezik koji će učiti. Mnogi pročitaju dosta članaka o jezicima ali nikada ne dobiju čistu sliku u glavi o tome šta bi tačno trebali učiti.

 

 

Kada sam bio na mjestu početnika, suočio sam se sa istim problemom. Stoga, u ovom članku ću pokušati da razjasnim stvari i da nakon čitanja trenutnog naslova možete odabrati željeni jezik i započeti učenje.

 

 

Bitno je napomenuti to da, bilo koji jezik kojeg izaberete u narednom dijelu, ne možete pogriješiti iz razloga što su svi jezici dobri i za početnike a i za veoma napredan rad u istim.

 

 


 

 

Skriptni jezici

 

 

Dobra činjenica skriptnih jezika je ta da možete relativno brzo napraviti manji program za testiranje i slično. Međutim, oni se ne koriste samo za to. Koristeći iste, možete praviti veoma moćne aplikacije, sajtove, itd. na različitim platformama.

 

 

Python

 

 

Python programski jezik je interpretiran jezik, visokog nivoa i široke namjene. Ovaj jezik se sve više upotrebljava za uvod početnika u programiranje zbog toga što je njegova sintaksa (način na koji se piše kod) veoma jednostavna i dok se čita ista, veoma je slična engleskom jeziku.

 

 

 

 

Jezik je obogaćen sa veoma mnogo biblioteka koje će vam odlično poslužiti. Isto tako, sadrži odlične frejmvorke za razvoj web aplikacija, desktop aplikacija, mobilnih, itd.
Bez ikakvih problema se može koristiti za kreiranje igara, automatizaciju procesa, itd.

 

 

Posjetite oficijalni sajt Python programskog jezika kako biste dobili više informacija.

 

 


 

 

Ruby

 

 

Ruby programski jezik je dinamički, objektno orjentisani jezik koji kombinuje sintaksu inspirisanu programskim jezikom Perl i nekim osobinama Smalltalka.

 

 

 

 

Kao u Pythonu, veoma slične radnje možete izvršavati i u Ruby jeziku.

 

 

Iz ova dva primjera možemo zaključiti sljedeće: nije bitno koji jezik izaberete nego je bitno da isti što bolje naučite i koristite na najbolji mogući način!

 

 

Još neki jezici koje možete izabrati su PHP, Node.js (koji koristi JavaScript na serveru), opcionalno možete uz Node.js naučiti i TypeScript što je ustvari *tipizirani* JavaScript. To znači da prilikom kodiranja možete odrediti sve tipove podataka.

 

 


 

 

Funkcionalni jezici

 

 

Funkcionalni jezici su, po mom mišljenju, dobri za dvije stvari: umjetnu inteligenciju igre i matematičko računanje. Dobri su za umjetnu inteligenciju igre zbog toga što imaju veoma dobar način manipulacije, barem u jezicima “Lisp” i “Scheme”, a za matematičko računanje zbog njihove sintakse.

 

 

 

 

Neke od jezika koje možete naučiti su:

 

 

  • Elixir,
  • Scala,
  • Erlang,
  • Clojure,
  • Haskell, itd.

 

 


 

 

Ostale opcije

 

 

Pored prethodno nabrojanih jezika, možete učiti i sljedeće:

 

 

  • Java; Jezik je veoma moćan, sa kojim možete napraviti skoro sve što želite. Ovaj jezik je nativni jezik Android operativnog sistema što vam omogućujete da u okviru tog sistema pravite što želite. Najviše se kreiraju igre i aplikacije u okviru navedenog sistema. Koristi se i za web, servere, itd.
  • Bilo koji jezik u .NET frejmvorku:
    • C++,
    • C#,
    • Visual Basic,
    • F#, itd.
  • Golang,
  • Rust, itd.

 

 


 

 

Važno

Za početnike, ako tek stupate u backend programiranje, preporučio bih vam da odaberete jedan od skriptnih jezika. Ako ste već radili backend sa skriptnim jezicima, onda ne birajte još jedan skriptni jezik nego odaberite Golang, Rust ili Clojure, to će vam dati potpuno novu perspektivu.

 

 


 

 

Vježbajte ono što ste naučili

 

 

Prilikom učenja jezika, nije dovoljno samo pratiti tutorijale, učiti iz knjiga i slično.

 

 

Kako biste naučili programirati, morate što više programirati!

 

 

Postoji mnogo resursa za vježbanje i učenje a neki od njih su:

 

 

 

 

Nekoliko ideja:

 

 

  • Napravite program koji će “pokupiti” (eng. fetch) i sačuvati objave na Redditu (npr. /r/Programming),
  • Program koji će vam dati strukturu direktorija u JSON formatu,
  • Program koji čita JSON fajl odozgo i kreira strukturu direktorija,
  • Razmislite o nekom poslu kojeg radite svaki dan i napravite automatizaciju istog.

 

 


 

 

Naučite kako se koristi menadžer paketa

 

 

U ovom dijelu ne trebate samo naučiti kako se koristi menadžer pakera nego trebate nastaviti koristiti isti u svakom mogućem trenutku kada vam zatreba.

 

 

 

 

Menadžer paketa vam pomaže da omogućite vanjske ovisnosti u vašu aplikaciju i da distribuirate vaš paket. Ako trenutno čitate ovo a niste učili ništa o menadžerima paketa, vjerovatno vam nije jasno. Kada budete učili, do ovog dijela ćete se sigurno sresti s nekim od njih i koristiti barem u nekoliko slučajeva.

 

 


 

 

Standardi i najbolje prakse

 

 

Svaki jezik ima svoje standarde i najbolje prakse za kreiranje nečega. Izučavajte ih u jeziku kojeg ste izabrali. Na primjer, PHP ima PHP-FIG i PSR, Python ima PEP8, itd.

 

 

Čitajte i o najboljim praksama za sigurnost. Pročitajte OWASP vodiče i shvatite različite propuste sigurnosti i kako ih izbjegnuti u jeziku vašeg izbora.

 

 


 

 

Napravite i distribuirajte neki paket/biblioteku

 

 

Tečno ćete pisati pisati kod u jeziku vašeg odabira dok stignete do ovog nivoa. Vjerovatno ćete imati i ideju koju biblioteku ili paket da napravite.

 

 

Distribuirajte to kako bi drugi mogli koristiti vaš paket ili biblioteku. Ne zaboravite pratiti standarde i najbolje prakse koje ste naučili do sad prilikom kreiranja paketa.

 

 

Pristupite i doprinesite nekom projektu otvorenog koda. Projekat otvorenog koda podrazumijeva dostupnost koda široj publici i mogućnost iste publike da modifikuje isti.

GitHub je odlična platforma na kojoj možete pronaći takve projekte.

 

 


 

 

 

 

Naučite testiranje

 

 

Postoji nekoliko različitih tipova testiranja, ali za sad, naučite kako pisati Unit i testove integracije u jeziku vašeg izbora.
Izučite različite terminologije testiranja kao što su “mock”, “stub”, itd.

 

 

Postoji više različitih opcije za različite upotrebe, u zavisnosti od toga koji ste jezik izabrali. Guglajte, pogledajte koje sve opcije postoje i izaberite onu koja vam se dopadne.

 

 

PHP – PHPUnit, PHPSpec, Codeception
Node.js – Mocha, Chai, Sinon, Mockery, itd.

 

 


 

 

Pišite testove za praktične primjene

 

 

 

 

Pišite “unit” testove za praktične primjene u vašim kodovima. Prilikom guglanja, naučit ćete mnogo više o testiranju nego iz ovog članka, ovo je samo vodič o onome što trebate sami izučavati.

 

 


 

 

Naučite relacione baze

 

 

Postoji više opcija za učenje relacionih baza. Međutim, ako naučite jednu, ostale će biti lako naučiti.
Za početak možete izabrati “MySQL” ali naučite po čemu su različite relacione baze i slučajeve korištenja.

 

 

 

 

Neke dodatne opcije:

 

 

  • MariaDB,
  • PostgreSQL,
  • MSSQL, itd.

 

 


 

 

Napravite jednostavnu aplikaciju

 

 

Napravite jednostavnu aplikaciju koristeći sve što ste naučili do sad. Trebala bi da sadrži registraciju, prijavu i CRUD (objašnjenje u nastavku). Napravite npr. blog, gdje se svi mogu registrovati i napraviti javni profil. Tu će biti mogućnosti da kreiraju, modifikuju i brišu objave i javni profil će biti prikazan sa objavama kreiraim od strane korisnika.

 

 

 

 

Značenje CRUD-a: Do sad ste mogli i pretpostaviti a to je:

 

 

  • C – Create: kreiraj,
  • R – Read: čitaj,
  • U – Update: ažuriraj,
  • D – Delete: obriši.

 

 


 

 

Naučite frejmvork

 

 

Kada ste završili sa prethodnom aplikacijom, naučite neki frejmvork koji će vam mnogo pomoći pri izradi ostalih aplikacija, a isto tako ćete veoma lako naći posao ako dobro poznajete barem jedan frejmvork.

 

 

 

 

Na slici iznad se nalazi više frejmvorka koji su veoma moćni a neki od njih su:

 

 

  • Node.js
  • Ruby on Rails,
  • Django,
  • Flask,
  • Express, itd.

 

 


 

 

Napravite aplikaciju u naučenom frejmvorku

 

 

Pretpostavljam da kada dosegnete ovaj nivo, imat ćete mnogo ideja o tome kako da napravite neku aplikaciju.

 

 

Možete napraviti nedavno pomenutu aplikaciju koristeći frejmvork kojeg ste naucili ili da osmislite neku svoju ideju za aplikaciju.
Možete prije svega guglati, vjerovatno ćete dobiti neku ideju na osnovu toga.

 

 


 

 

Naučite “NoSQL” bazu

 

 

 

 

Prije svega, istražite o tome šta su “NoSQL” baze, na koji način se razlikuju od relacionih baza i za šta su potrebne.
Postoji nekoliko različitih opcija. Pregledajte te opcije i shvatite po čemu se razlikuju.

 

 

Predlažem da odaberete MongoDB za početak.

 

 


 

 

Kreirajte RESTful API

 

 

 

 

U linku možete pročitati o tome šta je ovaj tip API-a. Napravite API koristeći jezik po vašem izboru.

 

 

Ako se u budućnosti budete bavili backend programiranjem, često ćete koristiti gotove API-e ili ćete ipak nekad kreirati API za vlastite potrebe.

 

 


 

 

Naučite metodologije autentikacije/autorizacije

 

 

Naučite razlike ovih metodologija i kako ih možete primijeniti.
Preporučio bih sljedeće:

 

 

  • OAuth,
  • Basic Authentication,
  • Token Authentication,
  • JWT,
  • OpenID.

 

 

Zaključak

 

 

Nije sve nabrojano iznad. Prilikom učenja nailazit ćete i na pojmove koji nisu nabrojani, uzmite u obzir i te pojmove.

 

 

Vježbajte što više možete kako biste kasnije imali koristi od toga!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DIPF BaDnja

DIPF BaDnja