Preskoči na sadržaj
{ stoic_dev }
Nazad na program

Šta je web programiranje i odakle početi?

Programiranje? Kreni odavde

Šta frontend, a šta bekend i odakle da počneš. Pročitaj ovaj tekst pre nego što kreneš da učiš

Programiranje je širok pojam. Termin koji se preširoko koristi, često i pogrešno.

Programiranje je veština razumevanja i pisanja određenog programskog jezika i njegovo korišćenje u svrhe izrade različitih vidova digitalnih proizvoda.

Postoje različita polja u programiranju, a ovaj tekst će pokriti njegovu najzastupljeniju granu — web programiranje.

Web programiranje je branša programiranja čiji se kod izvršava "na internetu" ili pregledaču (browser-u). Rezultat istog su različiti web sajtovi, servisi ili aplikacije koje danas svakodnevno koristiš, kao što su Facebook, Netflix, Instagram i slično.

Ali instagram imam kao aplikaciju na telefonu?

Da — ali aplikacija je samo omotač. Sve što u njoj vidiš, svaka slika i svaki komentar, živi na nekom serveru i putem interneta se servira do tebe (klijenta).

Ovde dolazimo do glavne podele u poslu današnjeg modernog programiranja.

Backend i Frontend

Zavisno od toga gde se kod izvršava, postoji bekend i frontend podela. Backend je deo koda koji se izvršava "u pozadini", bez vidnih promena za korisnika. To je kod koji je zadužen za logiku i snabdevanje podacima aplikacije koju koristiš. Takođe, objašnjen kao serverski kod. Ti podaci se putem interneta isporučuju aplikaciji koju koristiš.

Uzmimo Instagram za primer

Slike i video snimci koje gledaš moraju odnekle da dođu, uprošćeno one se nalaze na kompjuterskoj mašini (serveru) koji pripada kompaniji Meta. Te podatke je nekako potrebno poslati i pretvoriti u izgled kakav danas vidiš kad otvoriš aplikaciju.

Bekend kod je taj koji te fotografije, snimke, tekstualne opise i sl. upakuje u određenom formatu (najčešće .json) i šalje, a frontend je taj koji koristi te podatke i vizuelno ih obrađuje za krajnjeg korisnika.

Dakle uloga bekenda je da servira, a frontenda, da prezentuje u nešto korisniku razumljivo. Takođe, objašnjen kao klijentski kod. U analogiji restorana, bekend bi bio kuvar koji sprema jelo u kuhinji, a frontend, konobar koji to jelo prezentuje gostu u tanjiru.

Za šta da se opredelim?

Ne postoji pravilo. Osobe koje su vizuelne po prirodi i vole da rezultat njihovog rada bude nešto opipljivo, češće se opredele za frontend. Dok osobe koje naginju ka konfiguraciji i nije im bitno da odmah vizuelno vide rezultat svog rada, već uživaju u samom inženjeringu često se pronalaze na bekend strani koda. Oba pravca imaju svoje prednosti i mane.

Bekend je nešto uređeniji od celog frontend ekosistema. Ima pravila i ustaljene prakse koje je lakše pratiti jer donose koherentnije zadovoljstvo u programiranju (Developer Experience).

Bekendaši često ističu da tehnologije u kojima pišu kod sadrže određeni sklad i set pravila, počev od organizacije foldera i fajlova do drugih ozbiljnijih konvencija (poput autentifikacije, tj login sistema), što im u mnogome omogućava da se fokusiraju na bitne stvari i ne troše vreme na konvencije.

Na frontend strani je nešto haotičnija situacija. Ogroman bum u kvalitetu web aplikacije i premeštanje sa nativnih aplikacija (aplikacije koje se instaliraju) na browser softver, sa sobom je doneo i veliku potražnju za frontendom.

Ekosistem je ovo ispratio nizom neustanovljenih praksi i pravila, gomilom biblioteka i tehnologija koje se veoma često menjaju, pa je samim tim na programeru da postavlja određena pravila ili prakse i pronalazi najbolja rešenja. Ipak zadržava određenu lepotu inženjeringa koji sve to treba da prikaže u nešto korisniku razumljivo i korisno.

Različit set tehnologija, pravila i njihova količina uticali su na to danas imamo ovu podelu, gde su određeni inženjeri fokusirani na frontend, a drugi na bekend.

U velikim sistemima, poput Netflix-a ili Google Docs aplikacija, ovakva podela je posebno značajna, gde je često nemoguće da jedan čovek može pokriti oba dela.

Razumevanjem ove osnove podele, lakše ćeš odabrati svoj put dalje.

FullStack je dobar početak

Zvuči paradoksalno, znam, međutim full stack programiranje je odličan način da vidite šta Vam više leži. Možda se i zadržite na istom.

Postoje tehnologije (kao što je Laravel u PHP-u ili Next.js u JavaScript-u) koje daju mogućnost da korišćenjem istog programskog jezika dobijete gotov proizvod. Uz neko poznavanje bekenda, osnova JavaScript-a, HTML-a i CSS-a, dobićete dobar uvid u to šta vam više leži. Bar površinski.

I dalje postoje samo frontend tehnologije kao što su React, Vue.js ili Solid koje bi Vam ukazale drugačije zadovoljstvo pisanja frontend koda, ali zahtevaju nešto duži period oprobavanja i učenja i idu van samih osnova.

Osnove fullstack-a su svakako nešto što bi svaki web inženjer trebalo da pokrije. Bilo da na kraju radiš na jednoj strani stack-a ili drugoj (bekenda ili frontenda).

Uvek su u prednosti bili inženjeri koji su imali uvid u to kako druga strana funkcioniše. Ako razumeš i jedno i drugo, sutradan na poslu ćeš znati kako da svom kolegi najbolje upakuješ podatke za prikaz na frontendu, suprotno, kako funkcioniše određeni proces na bekendu ti može dati uvid u to zašto nešto može izazvati bag na frontendu ako se ne reši na dobar način.

Ne postoji jedan idealan jezik

Postoje jezici koje je lakše savladati od drugih. Međutim, ne postoji jedan savršen jezik. Danas se veliki broj programskih jezika koristi u realnom svetu, te bilo da se opredeliš za Rust, JavaScript ili PHP, moći ćeš da pronađeš njegovu primenu.

JavaScript nije loš početak

Kontroverzno mišljenje danas i tema o kojoj se razmatra, ali zbog svoje popularnosti i lakoće savladavanja, JavaScript je dobio svoje mesto na bekend delu stack-a, iako primarno korišćen kao frontend. To mu daje mogućnost izvršavanja i na serveru i browser-u, što ga čini dobrim jezikom za učenje i početak, jer daje mogućnost pisanja i bekend i frontend koda.

Danas gomila velikih kompanija svoje bekend i frontend servise održava baš u JavaScript-u (ili TypeScript-u, o čemu će biti reči u nekom od narednih tekstova). Fokusom na određenu tehnologiju JavaScript-a, možeš steći znanja iz frontenda i bekenda, te samim tim daje dobru osnovu za razumevanje web-a generalno.

Python je u potražnji

Rastom i razvijanjem LLM-ova i AI tehnologija, Python iako već popularan, dodatno je u potražnji poslednjih godina, kako je ovo jedan od najkorišćenijih programskih jezika za treniranje mašinskih modela i svoje primene u nauci o podacima. Veoma je pristupačan zbog svoje sintakse i često okarakterisan dobrim za početnike.

Ono što zaista prenosiš iz jezika u jezik nisu ključne reči i sintaksa, nego razumevanje ispod njih: kako web radi, kako teče komunikacija između klijenta i servera, gde žive podaci i zašto nešto pukne. To važi i za JavaScript, i Python, i bilo koji drugi jezik. Zato je izbor jezika sekundaran. Jezik je alat koji ćeš kroz karijeru možda menjati više puta, a osnove i inženjerski pristup stvarima nosiš sa sobom.

Pa... Gde da počnem? I šta sa AI-em?

Iako sam spomenuo da je fullstack dobar početak. Smatram da je usmerenje ka jednoj strani neminovno. Samim tim negovanje bekenda ili frontenda će te brže dovesti do savladavanja određene tehnologije.

Ovde AI i dobre osnove dolaze do izražaja. Fullstack je važan zbog svoje prirode gde učiš kako web radi, kako se odvija komunikacija između bekenda i frontenda. Dok većim fokusom na jednu stranu dobijaš brži put do savladavanja određene tehnologije i stičeš ekspertizu, ova podloga uz pomoć AI ti može pomoći da savladaš drugi deo stack-a.

Recimo da si se primarno odlučio za bekend. Znaš da se povežeš sa bazom, uradiš login i registraciju, stručnjak si za brzu isporuku podataka, ali nisi preterano vešt u frontendu. Tvoje fullstack osnove ti daju dobar uvid u to šta želiš da postigneš, a AI ti ovde može biti od pomoći da frontend izguraš do kraja. Daje ti mogućnost da zadržiš ekspertizu nad određenim stack-om, a opet dovoljno dobru podlogu i mogućnost da razumeš generisani kod i napraviš celu aplikaciju.

Dakle, AI ti pomaže tek kada imaš osnove. Bez njih ne umeš da proceniš da li je ono što ti je izbacio dobro rešenje ili bag koji te čeka za dve nedelje.

FullStack je na ceni

Ipak, bitno je napomenuti da kroz poslednjih par godina uviđam potražnju za Fullstack aplikacijama. Kompanije forsiraju korišćenje AI asistenata kako bi programerima nametnuli obe uloge, pod izgovorom da su brži u pisanju koda.

Ovo u praksi, naravno, nije savršeno (što je tema za neki od drugih tekstova), ali dobra fullstack osnova te može izdvojiti i pozicionirati bolje na tržištu.