Šta je novo?

Kako da postanem dobar Web programer / dizajner

kUdtiHaEX

Super ridža
Administrator
Učlanjen(a)
18.07.2001
Poruke
18,055
Poena
1,365
Moja oprema  
CPU & Cooler
Intel® Core™ i5-9500F, NZXT Kraken Z63
GPU
Asus GTX 2070 Super
Storage
Samsung 980 Pro NVMe 1 TB
Kućište
NZXT H210i
Monitor
LG C2 42"
Miš & tastatura
Logitech G502, Keychron K8, Nuphy Air75, Ducky TKL One 2
Ostale periferije
Glupi HP štampač
Laptop
Apple Macbook Pro 14" M1
Tablet
Apple iPad Pro 11"
Mobilni telefon
Apple iPhone 13 Pro Max
Pametni uređaji
Apple Watch Ultra
Pristup internetu
  1. Kablovski internet
Kako da postanem dobar Web programer / dizajner

Na pisanje ovog teksta naterla me je temperatura - 38 stepeni koliko toplomer trenutno meri. Pored nje, vidim da ima dosta pitanja ovde - kako da postanem Web stagod. Ja se Web stagod poslom bavim od svoje, hm, 18. godine, dakle vec punih 9. Od staticnih HTML sajtova u vreme PHP v3 do dinamickih, skalabilnih cloud web servisa dug je put i mogu vam reci da sam ih napisao i uradio na stotine. U ovom dugackom ali nadam se poucnom i korisnom tekstu, pokusacu da opisem neke osnovne stvari vezane za Web posao.
Podelicemo temu na sledece kategorije:
1. Web kao posao - dobre i lose stvari
2. Raspodela posla u Web projektima
3. Web programeri (backend programeri)
4. UX dizjaneri i frontend programeri
5. Kako da zaradim?
6. Q & A

1. Web kao posao - dobre i lose stvari
Svi vi koji citate ovo ste sigurno upoznali do sada nekoga ko je "Web dizajner i rastura se od posla i para". Da, Web je danas unosan posao ali je takodje i jako sirok pojam. Raditi na Webu znaci mnogo toga:
a) baviti se web / UX dizajnom
b) baviti se frontend programiranjem
c) baviti se backend programiranjem
d) baviti se pruzanjem infrastrukture kao servisa (IaaS) iliti hostingom
e) baviti se Web konsaltingom
f) baviti se Web marketingom
g) SEO

Ovo bih izdvojio kao najmasovnije i realno najvaznije tipove poslova. Dakle, biti dobar u Webu je jednako komplikovano kao biti dobar auto mehanicar - tipova i marki automobila je mnogo, svi rade na manje-vise isti nacin ali hej, ne popravljaju se svi na isti nacin niti svima pasuju isti delovi.

Ako zelite da se bavite nekim od ovih poslova, prvo treba da vidite gde sebe pronalazite. Ne postoji jednostavan posao koji donosi pare! Da bi ste postali profesionalac u svojoj oblasti potrebno je:
1) jako mnogo truda, rada i odricanja
2) volje za napredak, ucenje
3) ucenje
4) ucenje
5) ucenje

Dakle, ne zaludjujte se da cete postati pro za 1 mesec i poceti da zaradjujete ko dobar pornop glumac. Web je vrlo zajeban ne samo zbog svojih specificnosti vec i zbog druge strane - klijenata. Raditi sa ljudima je jedan od najtezih poslova i umeti naci dobar balans je za mnoge ljude jako tesko.

Stoga, ako zelite da se posvetite Webu, odaberite svoj posao. Ne mozete biti i kucac fiskalnih racuna, konobar, dostavljac voca i perac prozora. Zaboravite. To ce vas dovesti do toga da cete biti devojka za sve, zna sve a u stvari - nije zaista dobar u necemu.

Izbor nije lako napraviti i potrebno je probati vise stvari. Evo jedan savet - izaberete primarnu stvar, recimo backend programiranje ali i dve sekundarne koje ce da unaprede taj skill (u mom slucaju to je malo vise od dva).

Kao i usvakom poslu, kako vreme prolazi a vi budete pravilno radili, bicete sve bolji i bolji. Rutinski cete odradjivati neke stvari koje su u samom startu bile nesavladiva planina problema. Prekovremeni rad, rad nocu, manjak sna, nerviranje, poroci :) to su sve sastavni delovi bavljenja Webom.

Problemi sa prokletim standardima, browseri koji totalno pogresno interpretiraju ono sto ste vi napravili, moronski podeseni serveri, odlepljivanje na totalno glupe zahteve od strane klijenta.... su samo neke od stvari na koje cete nailaziti svakodnevno.

Okej, dalje - opisacu okvirno ove poslove.

Web / UX dizajn
Dobar dan, ja sam graficki dizajner i mislim da se razumem u Web. WRONG! Bez uvrede graficki dizajneri, ali vi ste najgora nocna mora za Web i UX dizajn. Ne razumete Web uopste i ne kapirate da Web stranica nije bilbord. Nemate osecaj za prostor, navigaciju, sitne detalje, ne znate sta je rezolucija i radite u Illustratoru rastersku grafiku (i naravno pravite probleme drugima).

Sta rade web dizajneri? Web dizajneri su tu da obave posao koji backend programeri ne umeju a to je da daju sklad frontendu tj. stranicama koje posetilac gleda. Posao Web dizajnera je da uskladi sve elemente postujuci neka osnovna Web pravila. Glavni alat Web dizjnera pored ruku i kreativnosti je Photoshop, strpljenje. U zavisnosti od firme do firme, Web dizajneri ili daju samo gotove PSD fajlove ili daju jos i iseckane slicice koje ce front programeri da uklope u celinu. Ponegde rade i front programiranje. Ja smatram da Web dizajneri treba da ostanu dizajneri.

UX dizajneri su specificna sorta dizajnera koji imaju poseban osecaj za interfejs. To je grupa ljudi koja je u stanju da napravi zaista zadivljujuce stvari. Generalno njihov posao je isti samo se bave drugacijim tipom dizajna.

Frontend programeri

Front programeri su ljudi koji izuzetno poznaju HTML, CSS i JavaScript. To su tri stvari bez kojih razvoj jedne stranice danas nije moguc. JavaScript je tu da poboljsa iskustvo korisnika prilikom koriscenja prezentacije, CSS je tu da elementima da boju, oblik, mesto, velicinu a HTML je generalno osnova svega ovoga. HTML nije programski vec opisni jezik kao i CSS.

Backend programeri
Tip programera koji dobro barataju nekim server side jezikom (nesto sto se izvrsava direktno na serveru). Postoji jako veliki broj Web jezika u divljini koji se mogu koristiti za razvoj, pocev od PHP-a za koji svi znaju, preko Pythona, Perla, Rubija, JAVE i mnogih drugih. Backend programeri razvijaju logiku, pisu kod koji interaguje sa korisnikom sa jedne strane i bazama sa druge.

IaaS, hosting
O ovome bih mogao da napisem Ep o Gilgamesu ali evo ukratko - hosting je unosan ali vrlo naporan i ponekad dosadan posao. Hosting provajdera ima jako mnogo ali dobri provajderi nisu samo oni koji imaju uptime "99.9%" vec oni koji interaguju sa svojim korisnicima i koji umeju da kazu da su zabrljali nesto kad zaista zbrljaju nesto. Hosting sluzi za pruzanje infrastrukture vasoj prezentaciji jer hosting server ima stalan pristup internetu i samim tim vasa prezentacija bi, u teoriji, trebala uvek biti tu za posetioce.

Web konsalting
Oblast koja je relativno nova i koju ce mnogi da pomesaju sa klasicnim menadzerisanjem. Konsultantni su ljudi koji mogu da urade mnoge stvari - od pravilnog planiranja projekata sa programerske i infrastrukturalne strane, preko planiranja pravilnih migracija ili savetovanja oko problema tokom razvoja (tipa performanse); takodje web konsultanti mogu da rade i damage control tj. da gase vatru i vade projekat iz bule kada klijent zezne stvar. Ja sam menadzer i odlican sam konsultant ce vam reci svako ko nema dve blage sa zivotom. Dobri konsultanti nisu samo PRAZNOGLAVI menadzeri sa lepim odelima i skupim laptopovima, to su ljudi koji dobro poznaju obe strane - tehniku i procese / planiranje.

Web marketing
Ja imam FB i TW nalog i imam 9000 prijatelja, automatski ne znaci da znate sta je marketing. Marketing je, realno, prodavanje magle ali prodavanje magle koje pravi pare. Marketing nije trosak, marketing je ulaganje. Web marketing je kategorija marketinga koja je u zadnje vreme dozivela procvat, industrija koja vredi mnogo nula. Osnovna uloga osobe koja se bavi Web marketingom je da upotrebom odgovarajucih alata, advertajzing prostora na Internetu, dostupnog budzeta i onoga sto klijent nudi, ponudi odgovarajucem auditorijumu ljudi na odgovarajuci nacin.

Mesta za oglasavanje ima jako mnogo - Facebook relame, FB fan pages, Twitter, Google Ads (Desktop, Mobile), baneri, placeni PR tekstovi. Postoji i nekoliko osnovnih tipova web marketinga ali da ne bih tupio o tome, pokusacu da pronadjem dobru knjigu koju sam skoro citao pa - pokusajte da shvatite.

SEO
Ne, SEO ne znaci da nemate nijednu gresku tokom validacije i da ste pravilno iskoristi H1 do Hn naslove. SEO je takodje izuzetno unosan tip posla, raditi SEO optimizaciju nije nimalo naivno. SEO je, takodje, izuzetan alat za marketing i prodaju. Generalno, ovaj pojam predstavlja pravilnu optimizaciju vase stranice kako bi je pretrazivaci, poput Gugla, pravilno indeksirali i kasnije, prema odgovarajucim kljucnim recima, izacili na stranici sa listom rezultata, po mogucstvu na vrhu.
 
Poslednja izmena:
2. Raspodela posla u Web projektima

Okej, sad cu pokusati da vam docaram kako bi jedan Web projekat u teoriji trebao da izgleda.
Imate klijenta. Odmah da znate - vecina klijenata nema dve blage sta zeli i cak ako imaju ideju, nemaju tri blage kako to da iskazu. Stoga, proces u stvaranju jednog projekta kao i uvek krece od ideje.

Klijent je dosao sa idejom, predstavio je na odgovarajuci nacin. Kako je klijent zamislio, kako je neko ko ga je slusao skontao, kako je to preneto nekom trecem i ono sto je klijent na kraju dobio su nebo i zemlja. Cesto se desava da u tom dugackom lancu dodje do problema u komunikaciji pa krajnji proizvod nije bas ono sto smo od samog starta zeleli.

Procicemo dva slucaja - prvi kada imate tim ljudi i drugi, kada radite sami.
Ako imate tim ljudi, treba vam sledece:
1) Menadzer iliti neki frontmen
2) Web dizajner
3) Backend programer ako se radi o dinamickoj aplikaciji (koja zahteva bazu)
4) Frontend programer da sve sastavi u vizuelnu i funkcionalnu celinu u slucaju da Web dizajner to ne ume
5) Hosting komponenta

U ovakvom sastavu, proces ide ovako:
1. Klijent prica sa menadzerom koji je dovoljno Web edukovana osoba da razume sta klijent zeli. Edukovan u tehnickom smislu (ne mora da bude naucnih sa Harvarda ali MORA da poznaje osnovne stvar koje rade programeri i tehnicari). Menadzer je tu da napise specifikaciju prema klijentovim zeljama ali takodje je tu da kaze sta je moguce uraditi u datom roku i budzetu a sta ne. On izigrava zid izmedju osoblja firme i klijenta i klijent NIKADA ne sme da dodje do ljudi iza.
2. Kada se specifikacija napise i potpise, na scenu stupaju paralelni procesi dizajna i programiranja ako za njih ima potrebe. U ovim procesima, crta se interfejs tj. programira backend prema datoj specifikaciji i periodicno se daje klijentu na uvid (kada se dostigne takozvani milestone u projektu).
3. Kada dizajneri zavrse svoj deo posla, frontend programeri upadaju u pricu i kombinovanjem odgovarajucih CSS stilova, JS koda i HTML-a pretvaraju dizajn u nesto sto browser moze da renderuje. Njihov zadatak je da naprave po W3C standardima validan kod. Posao je mnogo laksi ako su backend programeri u tom momentu zavrsili deo koji se tice interakcije sa korisnikom (backend, da kazemo, ima dva segmenta).
4. Kada se prva verzija zavrsi, klijent radi testiranje i listu bagova daje menadzeru koji kasnije to prosledjuje odgovarajucoj osobi.
5. Kada je testiranje gotovo i kada je klijent zadovoljan ucinkom, krece deploy tj. spustanje projekta na odgovarajucu hosting komponentu nakon cega ide period dodatnog peglanja bagova i stabilizacije projekta a onda i zvanicno produkcija.

Zasto je bitan ovakav proces? Prvo, postoji jasna raspodela poslova jer kao sto sam gore naveo, ne moze jedan covek da bude sve. Moze, ali vremenom to postaje problem i skloniji ste gresci. Programeri traze mir, oni ne mogu da rade dobro svoj posao ako ih neko stalno vuce za rukav.
Dizajneri sa druge strane ne mogu da dizjniraju kao da su na trazi, dizajn je specificna kategorija posla i dizajneri nemaju uvek inspiraciju. I njima je potreban odgovarajuci kreativni mir i prostor da bi mogli da zavrse svoj posao.

U ovakvoj raspodeli posla, teoretski, posao se zavrsava efikasno, bez tenzija i po planu. U praksi su stvari uvek malo drugacije ali iz mog iskustva mogu vam reci - to je sistem koji radi. Razvijanje Web projekata je kao jedna simfonija - koristi se mnogo instrumenata i potrebno ih je pravlno uskladiti da bi to zaista zvucalo mocno a ne kao poslednji Grandovski hit. Mora postojati osoba koja je organizator, koja ume da kaze ne ili da, koja stiti svoje ljude od spolja.

E sad, hajde da vidimo kako to izgleda kada ste samostalni. Tu morate biti sve - i menadzer i dizajner i programer, a neretko i hosting. I to je jako problematicno. U tom slucaju, prvo morate imati zivce od celika i jako veliku dozu strpljenja. Profesionalnost se izrazava i imanjem stava, vodjenjem mirnog razgovora cak i kada je klijent neprijatan. Kao jedna osoba koju nema ko da brani, morate da budete dosta mudri.

Klijenta NIKADA ne treba da pustite da izmislja rupe na saksiji, to je kao pustanje tasmanijskog djavola u divljinu. Njega treba usmeriti, posavetovati, dati predlog, nagovoriti ga da ne implementira nesto sto vama predstavlja problem ali predstaviti to kao prednost. Ako tako nastupate, sanse za uspeh su vam drasticno vece.

Uvek komunicirajte = javljajte dokle ste stigli, sta ste zadnje uradili, kako napredujete. Ne dozvolite da vas milion puta vraca nazad, ako to radi - ne zna sta hoce i trosi vase vreme uzlud i na kraju cifra koju dobijate je daleko manja od vrednosti utrosenog vremena, da ne spominjem zivce.

BITI ODGOVORAN I TACAN, URADITI SVE NA VREME je konstanta u ovom poslu i to jako dobro upamtite. Radili sami ili timski, niko ne voli kasnjenje i laganje, biti otvoren i iskren je mnogo bolje i zdravije nego mazati oci ljudima. Ako ste samostalni freelancer, dajte realne rokove, 20% vise nego sto vam je zaista potrebno jer uvek mozete da se razbolite ili ce se desiti nesto neplanirano a nisu svi ljudi jednako razumni.

Dakle da podvucem:
1. Savetujte klijente i usmeravajte ih tokom projekata
2. Otvoreno komunicirajte
3. Postujte zadate rokove
4. Imajte stav
5. Budite mudri

Ako se pridrzvate ovih stvari, vasi web projekti bi trebali biti uspesni. Ukoliko se ne pridrzavate, vasa karijera ce se zavrsiti pre nego sto je i pocela.
 
Poslednja izmena:
3. Web programeri (backend programeri)

3.1 Sta, gde, kako, zasto?
Backend programiranje predstavlja pisanje programskog koda koji se izvrsava na serveru i obavlja odgovarajuce zadatke. Kod je struktuiran kroz funkcije, klase i njihove metode. Objektno ili proceduralno. Sva pravila koja vaze u programiranju, vaze i u Web programiranju.
Za pocetak, potrebno je da odaberete jezik. Ja ih znam nekoliko - PHP primarno, Ruby i delimicno JAVU. Sta cete izabrati zavisi od vas, sta vam lezi najvise ali PHP je dobar start. Lako se uci, ima jednostavnu, cistu sinaktsu, mozete sabirati babe i zabe i manje-vise uraditi sta god hocete. U roku od mesec dana mozete savladati osnove a onda krenuti dalje. PHP je takodje izuzetno dobro podrzan od strane komune, moze da se pokrene i na tosteru - po mom misljenju, dobar za pocetak.

Da li je PHP devojka za sve? Nije. U nekim malo kompleksnijim Web projektima u kojima sam ucestvovao, forsirana je JAVA. Nije bas da sam kontao zasto isprva ali kasnije sam shvatio vrednost celog okruzenja koju ona nudi. Sa PHP-om cete raditi 95% vremena ali, da, postoje i druge platforme koje mozda mogu i efikasnije da zavrse posao.

Sledeca stavka je alat - mnogi pitaju koji alat da koriste za Web. Odmah da znate - kod ne prave alati vec ljudi. Najsavrseniji editor vas ne cini boljim programerom. To je stvar licne preference - neki vole da imaju tonu ispomoci, automatsko zavrsavanje koda, bla trutj, ja volim jednostavnost (editor koji ja koristim, TextMate, je jako nalik na Notepad u kojem ovo i kucam). Tu i tamo poneka pametna stvar je pozeljna ali vremenom ce vas samo usporavati.
Nakon toga, sleduje okruzenje - ako ste se odlucili za PHP i MYSQL, potreban vam je aplikacioni server (iliti web server) poput Apachea ili nginxa, nakon toga i sam MYSQL server kao i instaliran PHP. Sve to, ukoliko niste vicni, mozete naci u mnogobrojnim LAMP tj. WAMP pakovanjima - Linux, Apache, MYSQL, PHP ili Windows, Apache, MYSQL i PHP. Instalacija ima jako mnogo, Google vam moze pomoci da ih nadjete. Idealni su za start i za pocetnike iz prostog razloga sto su ***** proof - instaliraju se iz 10 klikova i nema sanse da bilo sta pokvarite. Konfiguracione fajlove necete videti i nema zastrasujucih crnih terminala sto je za pocetnike savrseno.

Kao backend programer morate dobro poznavati i SQL. Kad kazem dobro ne mislim da umete na papiru da napisete kveri sa 15 LEFT JOIN-a vec da poznajete kako rade storage engini, koje tipove indeksiranja da koristite, kako pravilno da projektujete svoje tabele, da prepoznate spore kverije i da ih optimizujete itd. itd.

Moj savet - ucite linux. Ako zelite da budete dobri backend programeri, know how Linuxa je must. Ne morate da znate cemu sluzi svaki fajl, teoriju kernela i UNIX-a ali dobro poznavanje Linux operativnih sistema, strukture i kako rade je danas neophodno da bi bili dobar Web programer. Mnogi seniori, ili oni koji sebe tako zovu, nemaju dve blage o tome. Ne znaju kako rade aplikacioni serveri, ne poznaju osnovnu teoriju mreza. I samim tim su daleko manje efikasni i nisu u stanju da gledaju tri koraka unapred. Kako se danas sve hostuje na Linuxu (ili 95% stvari) tako je poznavanje te platforme zaista neophodno (cisto ako vam neko lupi neku banalnu stvar kao sto je cron job da ga ne gledate kao tele).

3.2 Dinamicke aplikacije
Kao sto ime samo kaze, pod dinamickom aplikacijom se smatraju one Web aplikacije u cijem sklopu se nalazi odgovarajuca baza. Ta baza sluzi za pohranjivanje odgovarajucih podataka kako bi se oni kasnije prezentovali korisnicima. Na primer, ovaj forum ili Benchmarkov sajt su tipican primer dinamicke aplikacije - kada kliknete na odgovarajucu sobu, izlistavaju vam se teme koje pripadaju istoj. Te teme se sastoje od odgovarajucih informacija poput naslova i sadrzaja i sve to je pohranjeno u bazu.

Da bi lakse razumeli kako to funkcionise, uzecu banalan primer koji oslikava jedan deo funkcionalnosti ovog foruma a to je pisanje odgovora na teme. Jedna tema se sastoji od gomile postova, te postove kucaju posetioci ovog foruma. Putem odgovarajuce forme vi unosite sadrzaj vaseg posta. Kasnije, klikom na odgovarajuce dugme taj sadrzaj se salje na server gde se obradjuje i, ako prolazi validaciju, smesta u bazu. Kada neko drugi dodje i klikne na temu, vas zahtev stize do servera (banalno receno) gde odgovarajuci serverski kod na osnovu ID-a teme zna koje postove da izvuce iz baze; na snagu stupaju delovi koda koji se bave tim delom funkcionalnosti, oni izvlace informacije iz baze i onda se one prezentuju vama u obliku na koji ste navikli. Dakle nije u pitanju nikakva misterija, stvar funkcionise vrlo prosto i jednostavno.

A sad malo plasenja - spomenuo sam termin "server-side" i objasnio da je to kod koji se izvrsava na serveru. Takodje postoji i "client-side" ciji se kod izvrsava na strani klijenta u browseru (Javascript) i taj kod je moguce videti prostim gledanjem fajlova. Danas se sve aplikacije pisu tako da postoji konstantna interakcija izmedju klijenta i servera koriscenje asinhrone komunikacije izmedju njih (AJAX). Uzecu GMail kao odlican primer - otvorite svoj inbox i iako niste uradili refrresh strane, pojavio se novi mail koji je neprocitan. To se desilo zahvaljujuci odgovarajucem kodu na klijentskoj strani koji je naterao vas browser da u pozadini posalje zahtev serveru (proveri ima li novih poruka) a server je dao odgovarajuci rezultat u vidu nove poruke u vasem mailboxu. Zasto sve ovo pisem - hocu da shvatite koliko delova moze da ima jedna aplikacija. Sa jedne strane, tu je klijent sa druge strane tu je serverski kod koji opsluzuje klijenta na zahtev i komunicira sa bazom.

3.3 Kako da krenem da ucim?
Na Internetu cete naci gomilu tutoriala ali ja bih isao sledecim koracima:
1. Familijarizacija sa sintaksom i programskim jezikom - naucite osnovne stvari, ne treba da znate svih 5 000 funkcija napamet
2. Kretanje od prostih primera - povezivanje na bazu, pravljenje osnovnih tabela i unos podataka u iste
3. Nadogradnja na osnovni primer - citanje iz tabela, manipulacija podacima (edit, delete)
4. Pravljenje sortiranja, filtriranja, pretraga
5. Kombincija svega toga sa korisnickim slojevima
6. AJAX

Napravite sebi mali projekat. Ja imam jedan koji sam napravio i koji koristim za ucenje svojih junior programera u firmi. Koncipiran je tako da krecete od osnovnih stvari ka sve slozenijim ali kako se napreduje kroz njega ne napreduje se samo programerski, vec i u nacinu razmisljanja i planiranja to je mnogo vaznije.

Imajte u vidu da i trenirani majmun moze da bude programer. Danas biti programer nije preterano tesko, ima ih tušta i tma (za one koji ne znaju sta to znaci, to znaci da ih ima ko pleve). Zahvaljujuci Internetu, svako danas moze da sedne i da postane PHP programer. Medjutim, da bi ste bili bolji programer stvari ne treba da gledate pravolinijski vec morate da ih posmatrate daleko sire. Programiranje je kreativan proces stvaranja stvari koji zahteva da uvek imate u glavi veliku sliku onoga sto pravite dok stvarate mali deo te celine. Stoga morate dobro da planirate kako cete nesto da uradite, morate imati strukturu koja ce sutra moci lako da se nadogradi. Jer ako nemate strukturu, nacicete se u velikom problemu sutra kada neko dodje i kaze "hajde da ovo izmenimo".

Dokumentujte sve sto radite. Programiranje je proces ludila. Za cetiri meseca kada budete gledali svoj kod, prva recenica koju cete izgovoriti je - na kojim sa ja drogama bio kad sam ovo pisao? Bar je ja cesto izgovaram. Nikad ne razmisljate isto i zato - dokumentujte sve.
Koristite MOZAK - ne oslanjajte se na alate i na rutinu. Svaki problem moze da se resi bar na 5 razlicitih nacina. Ako vam ne ide, menjajte pristup. Ako vam ne ide i posle promene pristupa, ceo koncept je ******. Ne budzite. Budz resenja su super na kratke staze ali su kao gomila nasumicno razbacanih protivpesadijskih mina po polju. Resavaju problem neprijatelja ali sutra kada rata ne bude, zelimo puno srece lokalnom stanovnistvu.

Ne budite robot. Kada radite nesto, uvek mislite o tome kakav ce to imati uticaj na ostatak sistema. Nemojte slepo da kucate kod i da otaljavate stvari.

Planirajte, planirajte i planirajte. Vi gradite sistem, ma koliko jednostavan da je, svaki sistem zahteva plan. Dobar plan znaci dobru organizaciju a to direktno utice na kvalitet i mogucnost buduce nadogradnje.

Mogao bih da vam napisem jos 400 A4 stranica o ovome ali nema svrhe - morate da probate sami i da prodjete gomilu prepreka koje postoje u ovom poslu da bi nesto i naucili ali se nadam da ste shvatili sustinu.

EDIT: napisacu jos nesto - sta da radite kad savladate osnove. Kad uspete da savladate svoj prvi projekat, mozete sebe da nazovete 1/2 junior programerom. To znaci da umete da baratate sa osnovnim MYSQL kverijima, da znate neke osnovne stvari. Onda pokusajte da uvecate vas projekat, da ga ucinite slozenijim i kompleksnijim i da se izborite sa tim. Uporedo krenite da se bavite samim konfigurisanjem okruzenja (php, mysql, apache), pocnite da ucite kako rade, kako se prema vasim potrebama konfigurisu (da, sistemi se uvek zasebno šteluju prema potrebama aplikacije koju pisete); naucite kako mozete da iskoristite prednosti operativnog sistema na kojem ce aplikacija da se hostuje. Prosto, pokusajte da napredujete u tom segmentu optimizacije samih servisa. Nakon toga, nadjite knjigu koja se zove "High performance MYSQL" i naucite je od korica do korica napamet, tako da je znate u po dana u po noci i pokusajte to da primenite u praksi.

Nakon toga ili uporedo bih preporucio sto bolje upoznavanje sa principima asinhrone komunikacije i sta sve moze da se uradi / skrati / poboljsa / unapredi potenciranjem JavaScripta u odnosu na cist serverside kod.

EDIT: Sticajem okolnosti pokrenuta je online IT zjednica pod nazivom Devops (www.devops.rs) na kojoj je moguce postavljati pitanja i dobiti odgovore direktno od profesionalaca koji su dosta dugo u industriji.
 
Poslednja izmena:
4. UX dizjaneri i frontend programeri
Kada sam krenuo da se bavim ovim poslom, prvo sam pozeleo da se bavim web dizajnom. Iako imam smisla za slaganje boja i, generalno, umem da sednem i nacrtam solidan interfejs, vremenom sam shvatio da ipak postoje ljudi koji to bolje rade od mene i da prosto - to im treba i prepustiti.

Ne postoji skola za Web dizajn. Skole koje kod nas postoje a prodaju Web dizajn kurseve vas u stvari uce kako se koristi Bevel & Emboss u Photoshopu, seckaju slicice a onda sve to ubacuje u Dreamweaver sto je, manje-vise, beskorisno.
Vrlo je jednostavno - za dizajn morate da imate smisla i morate imati osecaj. Kao sto sam na pocetku teme rekao, ako ste akademski slikar, niste podobni za web dizajn. Web dizajn je zasebna kategorija za sebe. Ja vam ne mogu u ovom tutorialu bas objasniti kako da radite neke stvari ali vam mogu dati smernice, opet iz mog iskustva u radu sa dizajnerima.

Ako ste krenuli u svet dizajna i kapirate kako Web radi i nalazite se u tome, pratite trendove. Tu i tamo ima dosta sajtova koji se bave dizajnom (devinatart.com kao jedan od vecih) gde mozete da vidite sta je trenutno in i kakvi se interfejsi crtaju ovih dana. Ne preterujte sa fensi efektima i ostalim glupostima, cilj Interneta je jasno prenosenje informacija a ne pravljenje slikovnice. Time samo pravite problem i sebi i onome ko to mora posle da implementira.
Od dobrih Web dizajnera se ocekuje da daju predloge koji ce da unaprede kompletno iskustvo prilikom koriscenja odgovarajuceg sajta. Dakle, ja dodjem i izlozim vam sta zelim i kako ja to zamisljam (takvih je realno 10%) i od vas kao dizajnera ocekujem kvalitetan predlog, primere, konsultaciju.

Ne budite egoista, to je osobina losih dizajnera koji ne umeju da prihvate da njihov dizajn prosto - pa, ****** je. Dzaba sto se nesto vama dopada i sto je vama cool i strava kada na ovoj planeti ima jos par miliona korisnika koji mozda ne misle isto. Dakle ne stvarate za sebe vec za siroke populacije. Stoga budite otvorenog uma i slusajte sta drugi govore. Feedback je izuzetno bitna stvar u svakom poslu pa i u ovom.
Idealno bi bilo ako Web dizajneri znaju i osnove HTML-a / CSS-a / JS-a. Time su svesniji limitacija tj. mogucnosti koje Web ima pa samim tim mogu da stvore nesto sto je i dalje vizuelno prihvatljivo a ne zahteva 400 man-hour za implementaciju.
Frontend programeri su prirodna ekstenzija Web dizajnera. Iskreno govoreci, jako je malo dizajnera koji nisu dovoljno vesti da sve sto stvore graficki, prenesu i u web svet. U frontend programiranju caruju sledece stvari:
1. HTML
2. CSS
3. JavaScript

To morate da znate u po dana u po noci. Bez greske. HTML je tu da da strukturu, CSS je tu da je oblikuje a JS celoj slici daje dinamiku. Efikasan frontend nije onaj koji vrvi od gomile beskorisnih JavaScript pluginova i efekata vec je to onaj kod kojih su, zarad postizanja sto vece funkcionalnosti, sve prednosti tehnologija iskoriscene na adekvatan nacin i u normalnoj meri.

Kako koriscenje Javascripta moze da pomogne? Na ovom forumu postoji jako mnogo primera, pocev od padajucih menija, inline-odgovaranja na teme (kada uradite quick reply, stranica se ne osvezava vec se to resava putem Javascripta), datepickera itd. Ako ste korisnik GMail-a - ceo GMail koristi JavaScript, uvek ima osecaj kao da ste na jednoj stranici, sve se ucitava on click, ceo sistem je fluidan.

Ono sto ljudi cesto mesaju sa pojmom JavaScript-a su razlicite JS biblioteke (frameworks) koji se koriste, kao sto su jQuery, mootools i sl. Razlike izmedju jQueryja i JS-a nema, JQ je u stvari JavaScript samo pretocen u neke druge funkcije koje vam omogucavaju da mnogo lakse i brze uradite neke stvari.

Ucenje HTML-a i CSS-a je zaista jednostavan posao ali optimizacija za razlicite browsere moze biti problem. Najvecu muku predstavlja Internet Explorer zbog svog nepostovanja standarda pa se tako vrlo lako mozete naci u neobranom grozdju. Svi ostali browseri su manje-vise isti i funkcionisu na isti nacin. Uvek testirajte to sto radite u vise browsera.

Kako poceti sa ucenjem?
Naucite dobro HTML i CSS. Potrazite po Internetu primere i pokusajte da ih sklopite, to je kao sklapanje tangrama. Nakon toga naucite JavaScript, sintaksu. Pokusajte da uradite neke osnovne stvari sa njim i onda kada ga dovoljnos avladate, krenite sa ucenjem nekog od frejmvorka (jQuery je preporuka). jQuery je izuzetno popularan, podrzan od strane svih browsera i, sto je najvaznije, postoji dosta pluginova za njega. Vidite sta moze, kako radi i kako moze da unapredi cist HTML i CSS.
Ako zelite da idete dalje, van okvira ulepsavanja / unapredjivanja interfejsa, mozete da naucite sta je AJAX, kako funkcionise itd. To je obavezno stivo za backend programere ali moze predstavljati previse za frontend - svejedno, ako ste radoznali, nece skoditi.
 
Poslednja izmena:
5. Kako da zaradim
I na kraju, najtezi ali sigurno svima najbitniji deo price - ko najbolje zaradjuje.

Prvo idu neke lekcije iz zivota - ako neko hoce da mu nesto radite, uzmite 1/3 novca unapred. To je vase osiguranje da necete raditi uzalud jer ako se od projekta odustane a vi ste na pola - za sta ste radili?
Ako trebate da dizajnirate - broj templejta (vizuelno i organizaciono razlicitih strana) puta standardna cena je vrlo prosta formula. Dobra praksa kaze da treba napomenuti da ne radite vise od 3 krucijalne izmene jer ako neko i posle tri ne zna da li je zuto bolje od plavog, taj ni posle 333 nece znati sta hoce.

Ako treba da programirate, izracunajte shodno svom iskustvu koliko vam vremena treba da to izvedete, pomnozite sa cenom sata shodno vasem iskustvu i dobicete okvirnu cenu.
Ako pak radite kompleksan projekat, razlozite ga na sitnije cinioce, pogledajte broj sati, pomnozite to sa cenom u vasoj firmi i eto ga.

Koliko je to tacno u novcu zavisi koliko ste dobar pregovarac, prodavac i kako umete da spakujete pricu onome kome pokusavate da je prodate.
E sad, ko najvise zaradjuje? Konsultanti. Posle njih idu tehnicari (senior programeri, sistem arhitekti), pa ops (administratori) i onda ostatak - dizajneri, juniori. To naravno ne znaci da se leba necete najesti kao dizajner, bas naprotiv meni je bilo jako tesko da nadjem normalnog dizajnera koji je odgovoran i koji ima vestine koje sam naveo u par postova iznad. Ali to je neko okvirno stanje stvari. Check CVS Ad on WeeklyAds2.

Ako ste apsolutni pocetnik, najbolja sansa vam je volontiranje u manjim timovima gde cete steci dodatno znanje i vestinu, osecaj za timski rad i steci ono najvaznije a to su kontakti (i sansu za posao). Postoji solidna kolicina sajtova po internetu na kojima se skupljaju freelanceri (to su ljudi koji rade posao od kuce, nemaju firme, nemaju zaposlenje) i gde je moguce naci razlicite tipove poslova.

Kao neko izmedju juniora i seniora, mozete traziti posao. Sta cete naci i pod kojim uslovima zavisi od vaseg CV-a i opet od toga koliko ste reciti i koliko dobro umete da se prodate. Postoji jedna bolna ali vrlo istinita cinjenica a ta je da ste placeni koliko vredite. Sto vise napredujete u svom znanju i sposobnostima, vise i vredite a samim tim postoji sansa da budete i bolje placeni. Senior PHP programeri u ovoj drzavi mogu da zarade i do 1.4k EUR/mesecno, juniori (i to vrlo zeleni) do 450 EUR, ovi izmedju - pa izmedju. Opet zavisi od firme do firme, vas samih itd.

Ono sto je vazno da shvatite nakon citanja ovih postova je da je sve ovo sto je napisano proizvod visegodisnjeg iskustva i da ce vama trebati jednako toliko vremena da bi dosli na jedan vrlo visok nivo. Sve ovo moze da vam pomogne i da vas usmeri ali ne mozete preko noci da postanete pro i ekstra placeni. Stoga treba da krenete na vreme sa dosta strpljenja i truda koji ce se sigurno vremenom isplatiti.

I na kraju vezano za zaradu, cenu rada, one koji misle da je nesto skupo i sl.:
AKO MISLITE DA ZNANJE KOSTA, ZAMISLITE KOLIKO KOSTA NEZNANJE!

Uvek postoji komsijin klinac koji ce za dzeparac da zavrsi "istu" stvar ali vi ne treba da se borite u kategoriji komsijinog malog jer cim dodje iole ozbiljnija stvar, dobra organizacija, iskustvo i znanje dolaze do izrazaja a to je ono sto iole svesniji klijenti traze. Mi mozda jesmo zemlja informaticki nepismenih ljudi ali oni koji zele da dobiju svoje mesto na Webu (u vecini slucajeva) ne zele da to izgleda kao proizvod creva vec da na odgovarajuci nacin prezentuje njih i njihov posao. Stalno cete se sretati saonima kojima je 150 EUR mnogo za ovo, 1000 mnogo za ono ali prosto morate i sami da imate granicu (donju) ispod koje necete da idete jer se ne isplati. Taj neko uvek moze da ode kod drugoga koji "radi isto to samo za 50% manje", vratice se (ili neka se ne vrati, manje glavobolje) sa tonom problema samo ce tada cena biti 50% visa.
 
Poslednja izmena od urednika:
6. Q & A
 
Poslednja izmena:
Poslednja izmena od urednika:
rezervrezervffff
 
Greskom zatvorih temu :) sad je otvorena za sve komentare. Na sva pitanja voljan sam da odgovorim ako ih ima (cim napisem sve, a to ce biti u naredna dva dana).
 
Poslednja izmena:
tema je odlicna i jako jako korisna, jedva cekam da procitam ostatak :)
 
Svaka cast Kutijo. Pozuri sa pisanjem:)
 
Mene interesuje odnos zarade,dizajner vs programer :D
 
Molio bih da se svi trovaci teme izgube iz iste.
Dodao sam deo o backend programiranju :) Izvinjavam se sto kasnim ali ovaj virus je iscedio sve iz mene u zadnja 3 dana.
 
Okej, sve je kompletirano. Potrudio sam se da objasnim sto sam bolje mogao. Cilj ove teme je da usmeri ljude, ovi tekstovi su samo deo toga. Poslednji deo bice vezan za pitanja i odgovore - ko bude imao neko pitanje, da mu nesto nije jasno, neka ga postavi, ja cu se potruditi da mu odgovorim.
 
Ovo je moglo da bude na sajtu... ili da bar postoji neki blog space... (nisam procitao sve ali vidim da je ulozeno vremena i truda)...
 
Uglavnom si ubo poentu i docarao situaciju vrlo realisticno. Malo prostora je ostalo da se ubaci nesto dodatno.

Mislim da je potrebno i naglasiti da u ovoj zemlji, kada radis kao Web Dev, skoro uvek se od tebe ocekuje da obavljas vise od jedne od navedenih funkcija.
Radices i kao Web Dizajner i kao Frontend Dev ili ces raditi i kao Frontend i Backend dev... itd.

Poznavanje linux administracije(prvenstveno CentOS) za Web Dev-a je izuzetna prednost i veliki plus, medjutim, u nasoj vrloj drzavi, to se veoma cesto zloupotrebi u smislu da se ne angazuje Admin(dakle, osoba koja je zaista strucna za tu oblast), nego i taj deo posla "padne" na tebe. Doziveo dva puta i sada ne spominjem da znam ista vise nego sto je bio opis posla.

To me dovodi do, mog, saveta za one koji zele da pocnu da rade ovaj posao... NIKADA ne stavljajte u CV ili izgovarajte na intervju za posao, sledece:
1. Da znate ono sto ne znate - pa cak i ako dobro poznajete materiju, vi je ne znate, pa samim tim, nemojte sami sebi praviti problem i ispadati neozbiljni, i jos gore, lazovi. Ne znate ko vas intervjuise, dal neki psiho-HR-trosac-vremena ili je u pitanju zaista IT obrazovana osoba.
2. Da znate da radite vise nego sto je trazeno u oglasu za posao - iako skoro svi oglasi za posao, stavljaju pod "pozeljno ali nije obavezno", izuzev retkih situacija gde su to dodatne alatke, servisi ili frameworks, nemojte se izletati. Precesto sam cuo a i sam doziveo, kako to moze da se obije o glavu i da vam se natrpa obaveza i posla za dve(nekada i vise) osobe.
3. Ne precenjujte sebe - ovo je manje vise generalno, daleko vise vezano za ocekivanu platu(za koju ce vas svaki ali bukvalno svaki poslodavac pitati).
4. Ne podcenjujte sebe - nikada nemojte traziti manju sumu od realne, jer to moze da vas okarkterise da nemate poverenja u sebe i da nemate samopouzdanja.

Ukratko: umereno, objektivno, racionalno i strpljivo, sa umerenom dozom samopouzdanja(kako ne bi bilo protumaceno kao arogancija i/ili nadmenost).
Ispoljavanje ovih osobina, bicete okarkterisani kao profesionalac, koji zna sta hoce i koliko vredi. Kao takvi, povecavate sebi, i to znatno, sanse da bude zaposleni.

Ovaj deo, je nuspojava provedjenja vremena pored nekoliko HR ljudi u firmi u kojoj trenutno radim a i moje zelje da naucim malo bolje psihologiju…

Poslednje ali daleko od najmanje bitnog… IT trziste u Srbiji se povecava u meri, da broj obrazovanih i strucnih kadrova ne moze da ga zadovolji. Ukratko… ima vise poslova gde se trazi obilno znanje i iskustvo, nego sto je takvih strucnjaka. U korist ove tvrdnje, evo direktno primera… moja firma je imala oglas, skoro mesec dana, za grafickog dizajnera i ukupno se prijavilo troje, od cega je samo jedna osoba odgovarala trazenim kritirijumima. Na drugi oglas, za Frontend Dev-a, se prijavilo malo vise ljudi i bilo je vise onih, koji su vec bili u stalnom zaposlenju, nego onih bez posla i onih koji rade freelance.
 
Рецимо да имам жељу да ми је примарна грана backend програмер. Већ поседујем одређено знање у Јави ЕЕ, имате ли предлоге, шта даље? Неке мало напредније туторијале, или пројекте које би ваљало одрадити како би се знање и теоретски применило? За сада, најуспешнији "пројекат" који сам одрадио (на факсу) је WebShop апликација која се повезује на mysql базу. Ентитети, бинс, не сећам се сад ни шта је све било укључено.
 
Рецимо да имам жељу да ми је примарна грана backend програмер. Већ поседујем одређено знање у Јави ЕЕ, имате ли предлоге, шта даље? Неке мало напредније туторијале, или пројекте које би ваљало одрадити како би се знање и теоретски применило? За сада, најуспешнији "пројекат" који сам одрадио (на факсу) је WebShop апликација која се повезује на mysql базу. Ентитети, бинс, не сећам се сад ни шта је све било укључено.

Obzirom kako si postavio stvar, sledeci korak je da ponovo u detalje procitas sta je kutija pisao ;)
 
Kopaj rukama i nogama da krenes da radis u nekoj firmi (ozbiljnoj)... veruj svaki zadatak koji mozes sam sebi da izmislis nije ni 10% komplikovan koliko su to realni projekti...
 
Sve pohvale za kutijine i aysov post! Tacno tako!
Svaka cast, zaista!
Citao bih do prekosutra, koliko je zanimljivo napisano.
 
POhvala za odrađeno i prava je šteta što na forumu nema više ovakvih tema koje bi pokrile više oblasti
 
@Kutija: Sada iskoristi delić svog tog znanja i implementirajte "Thanks" dugme na forumu, jer ovo bi retko ko uradio/napisao, a ja osećam potrebu da ti "lupim" jedan veliki Thanks :). Iako nisam u tim vodama, svakako je korisno znati ovako nešto. Svaka čast!
 
High performance MYSQL - odlicna :)
 
Ja ocekivao salvu pitanja kad ono nista - da li je to moj tekst ljude uplasio ili je sve toliko jasno da nema potrebe bilo sta da se pita?
 
Procitao sam dva puta, drugi put sam ga bas studirao, lepo ga sredio i odstampao, da se ima uvek pri ruci.
Za sve sto sam hteo da pitam , nasao sam odgovor a i za ono sto nisam.

Sve pohvale za trud, ali sve ....
 
Da li neko od vas gurua :d zaposljava, tj intervjuise ljude za posao, recite mi sta je sve potrebno da bi kandidat (backend) zadovoljio kriterijume. Onaj osecaj kada posle 20 minuta intervjua me pita kako stojim sa HTML-om i CSS-om, kadar nevera. I koja je pocetna plata tj raspon prihvatljiv da kandidat zatrazi (to pitanje je neizostavno, sem par poslodavaca koji su sami kazu pocetnu platu). Znam da sam pricu okrenuo na drugu stranu, ali poslodavci smatraju web development za vrhunac informatike, a to je samo oblast sa najvecim trzistem.
 
Ja zaposljavam/intervjuisem ljude koji rade u mojoj firmi. Stvar je vrlo jednostavna, da bi kandidat mogao da prodje mora da iskaze:
1) da ume da koristi mozak
2) da ima volju i zelju da radi
3) da je normalna osoba koja deluje kao neko sa kime je moguce lepo saradjivati

Ako prezivi taj smalltalk, onda se prelazi na teze tehnicke teme. Pita se sta je radio, kakva iskustva ima, ukrsti se to sa onim sto mi radimo, sa nasom internom praksom i ako imas dovoljno iskustva, relativno lako mozes da zakljucis nivo na kojem se taj neko nalazi i shodno tome u koju cenovnu kategoriju upadaju.

Pocetna plata, ako si citao moj tekst gore, zavisi od gomile faktora - tvog stava, iskustva, ukupnog utiska koji ostavljas, kako umes da se prodas... i toga da li si svestan u koju kategoriju upadas (junior, senior, nesto izmedju).
 
Jako dobar tekst Kutija, svidelo mi se iako nisam programator.
 
Da ja dodam jedno iskustvo.
Moj mladji brat radi web dizajn, ima dosta (uglavnom jakih) klijenata koji su trazili web stranice za njihove firme i brat im je odradio odlican posao (moderni dizajn itd...) i naravno on im je i to lepo naplatio (ne previse, ali ne i ko komsijin klinac- znaci standardno).

E sad, rad svaki dan i noc do ko zna koliko ujutro (juce je dosao u 4 ujutru), plus stalno menjanje dizajna i rad sa ljudima koji neznaju sta hoce ( da nekazem koliko je goriva postrosio posto je milion puta odlazio do stranke - iako radi samo klijente u gradu).

I na kraju kada im on fakturise, ako ne svi, ali vecina mu placa na kasicicu ili mu nude neke kompenzacije tipa potrosi pare u restoranu itd. Iako su sve jaki klijenti kojima je 1000e nista, oni se cigane samo tako, a dobijaju ekstra dizajniran moderan sajt koji ce predstavljati njihov biznis na pravi nacin.

Kada je kutija napisao da treba da se uzme trecina unapred, odmah sam prepoznao ove muke mog brata.

Da li neko ima teoriju zbog cega je ovo?

Ja imam neke teorije tipa:
-ljudi jos uvek neveruju da treba dati pare za nesto sto nije opipljivo i fizicki
-neki su samo naucili da neplacaju nikome
-moj brat se nije dovoljno cvrsto postavio sa placanjem i uslovima rada
 
Nazad
Vrh Dno