Pitanje za programere

Opet cu kao papagaj, ali treba prvo da naucis da programiras, da naucis dosta o arhitekturi softvera, bazama podataka, operativnim sistemima, mreznim protokolima.......
Programski jezik je samo alat. Za backend u Srbiji, najpopularniji su ti i dalje Java i C#, i dovoljno je jedan od ova dva da dobro poznajes.
Plus ovo sto sam ti napisao u prvoj recenici.
 
^ Šta po tebi jedan back-end programer treba da zna o operativnim sistemima i mrežama?

Da li su to znanja koja su potrebna za administraciju sistema ili više misliš na dublje znanje o funkcionisanju?
 
Kao backend programer, radices ono sto ti samo ime kaze: programiraces onaj deo web aplikacije koji se vrti pozadi (back-end), tacnije koji se izvrsava na serveru.
To znaci da moras da imas elementarno znanje iz serverskih operativnih sistema, posebno onog dela koji se odnosi na funkcionisanje Web Servera (programa koji se izvrsava na serveru, a na kojem ce da se vrti tvoja web aplikacija). Na primer, za Linux servere, moras nesto da znas o Apach-u, za Windows servere moras nesto da znas o IIS-u, a ne bi bilo lose i da imas osnovno poznavanje i Active Directory-a i DNS-a, jer web aplikacija se ne mora samo razvijati za Internet (spoljni svet), vec i za Eterneth.
Sto se tice mreza, moras da znas osnovno o protkolima, bar da razlikujes http, https, TCP-IP, da znas sta je to FTP, SFTP, FTPS, i slicno (samo da znas sta je i zasto to postoji, nista previse u detalje).
Neophodno ti je i osnovno znanje iz bezbednosti, kako bi uspesno shvatio zasto nesto mora "bas tako da se uradi". Da znas malo o autentikaciji, autorizaciji, kako funkcionisu neke stvari poput OAUTH-a, sta je to Security Token, itd.
Ali nista od toga previse u dubinu, cisto da budes upoznat sa pojmovima i nacinom rada, jer za sve te stvari ti ces koristiti neke gotove implementacije (importujes library i koristis klase i interfejse). Ali treba da znas zasto to mora da se koristi, i sta time zelis da postignes.
Takodje, moras da znas u kom formatu ce podaci da se razmenjuju izmedju backend i frontenda (XML i JSON), i da znas elementarno o toj strukturi podataka.
 
Meni je problem donekle to što jako često nema konsenzusa u samoj struci oko standardizovanog načina rada. Istina je da se isti problem moze rešiti na više različitih načina, ali nekad su stavovi potpuno suprostavljeni, tako da ne znaš koga da poslušaš.

Jedni recimo tvrde da u okviru data layer-a treba da budu samo podaci, nikakva poslovna logika ne treba da bude implementarana na samoj bazi. Drugi naprotiv tvrde potpuno suprotno, da treba implementirati poslovnu logiku u okviru samih baza, koliko je to moguće.
 
Meni je problem donekle to što jako često nema konsenzusa u samoj struci oko standardizovanog načina rada. Istina je da se isti problem moze rešiti na više različitih načina, ali nekad su stavovi potpuno suprostavljeni, tako da ne znaš koga da poslušaš.

Jedni recimo tvrde da u okviru data layer-a treba da budu samo podaci, nikakva poslovna logika ne treba da bude implementarana na samoj bazi. Drugi naprotiv tvrde potpuno suprotno, da treba implementirati poslovnu logiku u okviru samih baza, koliko je to moguće.

BL mora biti implementiran nezavisno od DL-a. To je toliko elementarno da tu nema rasprave :)
 
Generalno, Stored Procedure se koriste zbog performansi - posto su one unapred kompajlirane, kao neka vrsta podprograma. Mislim da nije samo do slozenosti upita, vec vise do kolicine podataka koja se obracuje pri nekoj akciji nad bazom, ono sto bi odlucilo da li koristiti Stored Procedure ili ne. Svakako, treba ih koristiti sto je vise moguce, i svuda gde mogu da pomognu, ali za neke jednostavne stvari, sam ORM (Hibernate (java), NHibernate ili EntityFramework (.NET), ), u kombinaciji sa Repository patternom, ce da odradi skoro sav jednostavan posao nad bazom i to poluautomatski :)
 
Poslednja izmena:
Mene recimo više privlači oblast BI sistema, izveštavanja, analize podataka, rada sa bazama podataka.

Ja ne bih izjednačio poziciju Data Analyst-a sa pozicijom SQL Developer-a. Po meni je ova prva pozicija nekako uopštena, nije vezana isključivo za rad u SQL-u već i podrazumeva i druge programske jezike poput R-a.

Zato se trudim da savladam što bolje baze, poslovne procese, sql (konkretno sam se orijentisao na MS SQL Server).

Kakav opseg znanja je po vama potreban za poziciju SQL Developer-a? Smatrate li da će se u budućnosti za izveštavanje i poslovnu analitiku i dalje masovno koristiti sistemi za upravljanje relacionim bazama podataka ili će preovladati nove tehnologije?

Meni je T-SQL na ovom nivou na kome ga sada poznajem sasvim ok (pošto ne koristim kompleksne upite), ali stekao sam utisak da ga mnogi smatraju previše teškim kada je u pitanju kompleksniji rad sa podacima.
 
Poslednja izmena:
Vidi, trenutno smo osudjeni na relacione baze podataka i na T-SQL. I ko zna koliko dugo cemo biti, jer nekog revolucionarnog napretka jos uvek nema, ali nikad se ne zna, u IT-u uvek stvari iskoce odjednom - pojavi se ekipa sa nekog univerziteta i objavi neko dostignuce, i to za par meseci postane novi standard.
Sve u svemu, T-SQL ti kao alat za "kopanje" po podacima ne gine. Sto se tice Data Analyst-a, nemam iskustva osim onoga sto sam procitao na wikipediji, ali ono, kontam da je to high level analize podataka, i da je usko vezan za konkretni poslovni proces u kojem ce se ti podaci koristititi. I slazem se, definitivno su to dve razlicite stvari ( Data Analyst i SQL developer), medjutim, vrhunski je ako se dobro obucis i za jedno i drugo, jer to je ono sto ce te uciniti vrlo brzo "seniorom" i poslodavci ce se otimati o tebe ;)
 
Da li su nerelacione baze podataka poput MangoDB-a još uvek egzotika? Nisu zastupljene previše

Dokle god neko od velikih igraca ne pocne ozbiljno da radi sa objektnim bazama, nema revolucije. Najveci igraci (Apple, Microsoft, Google, Oracle) i dalje se cvrsto drze RDBMS-a. Kada bar dva od ova cetiri velika igraca, pocnu da se ozbiljno bave time, znaci da je vreme i nama developerima da se ukljucimo u tok.
Do tada, drzi se SQL-a i klasicne analize.
 

Back
Top