Zašto izbor programskog jezika i frameworka nije tvoj najveći izazov
Sjećam se kraja osamdesetih i početka devedesetih godina, vremena kada je informatika bila u povojima i kada je izbor puta kojim ćete krenuti bio tako jednostavan. Tada smo na raspolaganju imali svega nekoliko programskih jezika a u svakom od njih su se razvijale jednostavne desktop aplikacije, bez miša, bez grafičkog interfejsa.
Izbor tehnologije se u to vrijeme svodio na odabir programskog jezika. Ako ste željeli da se bavite kompleksnim izračunima, odabrali biste Fortran. Ako ste željeli razvijati brze aplikacije koje optimalno koriste hardver, izbor bi pao na programski jezik C. Ako ste imali namjeru razvijati poslovne aplikacije koje su upravljale velikim setom podataka, izbor bi pao na neki od D-Base kompajlera. Ako ste htjeli prosto da se hvalite da ste programer a niste znali šta biste programirali, onda bi to bio Pascal. A da… Kontrol-Frikovi koji su imali bolesnu potrebu da svaki bit drže pod kontrolom bi se iživljavali nad asemblerom. I to je to. Prosto k’o pasulj.
Baš kada htjedoh reći „Pamtite li to vrijeme…“, sjetih se da je u tim osamdesetim godinama programer bio ugrožena vrsta koja bi, da kojim slučajem Bill Gates nije izmislio MS DOS, vjerovatno do danas već izumrla. Danas bi vadili naše ostatke i pokušavali rekonstruisati DNK. 🙂
Bilo je to teško ali istovremeno i lijepo vrijeme. Tako malo izbora smo imali da ni o čemu nismo morali brinuti nego smo se u miru mogli posvetiti uživanju u programiranju. Programeri tog vremena su jezik u kome programiraju tako dobro poznavali da su programski kod pisali s lakoćom kao da pišu dječje priče. Sintaksa jezika se vjekovima nije mijenjala a nove tehnologije nisu bile ni na horizontu.
Mnogo se toga promijenilo od tada do danas. Ako samo krenemo nabrajati programske jezike, umorit ćemo se prije nego idokle stignemo.. Java, Python, JavaScript, C, C++, C#. PHP, TypeScript, Swift, Kotlin, Golang, Rust, Ruby, R, MatLab, Perl, Scala, Haskell, Lua, Dart, Elixir, Erlang, F#, … Svake godine skoro svaki od ovih jezika doživi osvježenja koja donose nove zvečke.
Nad skoro svakim od ovih jezika su razvijeni različiti Framework alati koji nam omogućavaju lakši razvoj web aplikacija. Za Javu tako postoje Spring, SpringBoot, Play, Jakarta, Micronaut, Vert.x; Za Python Django, Flask, FastAPI, Tornado; Za PHP Laravel, Symphony, Codelgniter, Yii… I tako dalje… Spisak je nepregledan a tek smo zagrebali vrh ledenog brijega. Ništa kraći nije ni spisak frameworka koji se koriste za razvoj video igara. Pitanje pohrane i obrade podataka je tek priča za sebe.. Od relacionih baza koje kosite jednu paradigmu preko Dokument-orijentisanih i Key-Value baza pa do Realtime baza, Graf baza i do Bog-zna-kakvih-sve-vrsta baza podataka.
Ako već niste odustali od čitanja, evo obećat ću da više ni jedan naziv neke nove tehnologije neću spomenuti… iako, moram priznati da baš imam želju da se još malo pravim pametan. 🙂
I sada se s punim pravom možete pitati, gdje je uopšte smisao svega ovoga? Da li živ čovjek može uopšte (i treba) razmišljati o svim ovim tehnologijama? I na kraju, kako u šumi svih ovih tehnologija odabrati onu koju ću učiti a da pri tome ne napravim grešku u odabiru, ako je to uopšte moguće?
Koliko god se činilo da sva ova raznovrsnost tehnologija donosi ogromnu neizvjesnost i da učenje pogrešne tehnologije znači uložene godine života u nešto što možda na kraju bude beskorisno, istina zapravo nije tako crna.
Tehnologije koje malo prije nabrojah su doslovno kao marke automobila: Audi, BMW, Škoda, Renault, Citroen, Dacia, Tesla, Toyota, Kia, Leksus, i tako dalje… Lista nepregledna, isto kao i lista jezika, ali kada zanemarimo udobnost, pouzdanost, snagu motora, broj brzina… Ispod haube svaki od njih ima motor, i mjenjač, svaki ima volan, gas, kočnicu. Svaki vjetrobransko staklo čisti brisačima, svaki od njih ima retrovizor. I na svaki od njih se možete brzo navići, pod uslovom da ste naučili voziti bilo koji od njih.
Identična priča stoji i iza programskih jezika i različitih framework-a. Svaki jezik je na svoj način specifičan. Neki imaju lakšu sintaksu, kod nekih je za postizanje istog cilja potreban manji broj linija koda, neki se izvršavaju brže, neki su bolje projektovani za paralelizirane procese ali u suštini, svaki jezik i svaki web framework nastoji riješiti veoma slične probleme na skoro pa identičan način.
Bez obzira u kom frameworku ili jeziku sutra pisali programski kod, morate znati od kojih logičkih cjelina se aplikacija sastoji, kako organizovati vaš programski kod tako da može neograničeno rasti bez da se u njemu izgubite. Svaki framework mora pristupiti bazi podataka kroz određene alate koji poštuju jedan isti standard. Svaki od njih mora zaštititi vašu aplikaciju od zlonamjernih napada, koji su uvijek isti – i napadi i metode zaštite. Svaka aplikacija bi trebala biti multijezična, svaka na kraju mora biti kompatibilna sa svim modernim browserima. I na kraju, svaki moderni programski jezik je Objektno Orijentisan pa je samim time baziran na identičnim temeljima, poštuje iste principe i implementira identične temeljne koncepte.
Pitanje odabira tehnologije koju ćete prvu savladati je kao pitanje odabira automobila na kome ćete polagati vozački ispit. Kada birate auto-školu za sebe ili svoje dijete, ne tražite onu koja polaznike obučava na Audiju, jer ste naumili sutra kupiti baš Audi, nego tražite instruktora koji će vama ili vašoj djeci dati dobra temeljna znanja i izgraditi osjećaj za volan, gas, kočnicu i prostor koji vas okružuje.
Kada jednom položite vozački ispit, prestaje biti važno na kom automobilu ste polagali. Ono što ostaje bitno je: KAKAV STE VOZAČ POSTALI!
Mi u EDUTERIUM-u ne učimo ljude samo sintaksu jezika ili način korištenja nekog frameworka. Mi gradimo programere koji razumiju suštinu. Naš kurs je projektovan da razvije ono što ostaje kada sintaksa zastari i kada frameworki odu u zaborav – vještinu rješavanja problema, sposobnost razumijevanja kompleksnih sistema i arhitektonsko razmišljanje. Jer kada jedan framework zamijeni drugi, ono što će vas izdvojiti od mase nije poznavanje alata, već dubinsko razumijevanje principa koji stoje iza njih. To je ono što vam omogućava da ne samo preživite, već i predvodite promjene u ovoj industriji koja se neprestano mijenja.