Ivan Đurđevac - PHP programer

PHP je programski jezik velikih mogućnosti bez kojeg web aplikacije koje koristimo svaki dan ne bi bile ovako moćne. Ivan Đurđevac nas je uveo u svet PHP-a i objasnio nam kako je biti majstor svog zanata, odnosno programer jednog od najpolularnijih programskih jezika danas.

 

Zdravo Ivane, hvala ti što si izdvojio vreme za Tajne Zanata. Da li bi mogao da nam kažeš nešto osnovno o svom poslu? Šta je suština tvog zanata?

Iz mog ugla najvažnija je mogućnost da ljudima olakšamo i promenimo živote na bolje. To je ono što treba da bude naš krajnji cilj. Skoro sam imao priliku da pogledam intervju sa korisnikom naše aplikacije, koji je dao otkaz na svom poslu kada je počeo da prodaje svoje kurseve i potpuno se posvetio onome što voli. Putem interneta on uči ljude da sviraju instrument čudnog izgleda (handpan) koji odlično zvuči. Naša aplikacija mu je pomogla da postigne maksimalan učinak u prodaji i promeni svoj život. Suštima nije u alatima i programerskoj veštini, već u ljudima. Nisu najuspešniji programeri oni koji poznaju tehnologiju, već oni koji razumeju šta je ljudima potrebno.

Koliko dugo se baviš svojim poslom i kako je to izgledalo na samom početku?

I meni je teško da poverujem, ali već 15 godina se bavim programiranjem. U programerski svet sam ušao onog trenutka kada sam se susreo sa Delphi 4 platformom za razvoj desktop aplikacije uz pomoć objektnog paskala još u srednjoj školi. Bio sam fasciniram činjenocom da je dovoljno prevući komponentu na formu, podesiti joj osobine, napisati nekoliko linija u kodu i već imate gotovu Windows aplikaciju koja se može izvršavati na svakom računaru. To je bio trenutak kada sam znao da će ovo biti moj posao. Pre završetka studija dobio sam svoj prvi posao kao programer. Razvoj poslovne aplikacije pisane u Delphi-u bila je pravi izazov i motivacija za mene. Internet programiranje koje je u to vreme bilo u povoju je bilo izazovnije, njegova budućnost je delovala svetlije za razliku od Delphi-a koji je gubio trku i popularnost, i ja sam se okrenuo internet programiranju. Od tada pa do danas svet internet programiranja je doživeo veliku evoluciju i u godinama koje su ispred nas nastaviće da se razvija neslućenim brzinama. U vreme kada sam ja počinjao mislim da je bilo jednostavnije i lakše ući u svet programiranja, danas smo preplavljeni alatima, mogućnostima i tehnologijama. Danas se od programera očekuje da pokriva širi dijapazon tehnologija i alata.

Koliko je važno formalno obrazovanje za posao PHP programera?

Formalno obrazovanje nije presudno da se neko bavi ovim poslom. Ima primera vrhunskih programera koji nisu završili visoke škole, ipak šire obrazovanje vam može otvoriti perspektive koje će vas pomeriti sa pozicije izvršioca zadataka do nekoga ko svoje ideje sprovodi u delo. Mnogi smatraju da je upravo poznavanje različitih naučnih oblasti i njihovo povezivanje ono što čini Elona Muska jednim od najboljih preduzetnika današnjice. Mladima preporučujem da se posvete formalnom obrazovanju, ali i da nastave da se edukuju nakon studija, jer internet nam pruža mogućnost da istražimo sve oblasti koje nas zanimaju.

Na koji način nadograđuješ svoje znanje?

U oblasi koja napreduje vrtoglavim brzinama, edukacija je neminovnost. Čitam dosta knjiga, i slušam video kurseve. Na Udemy-u ima veoma kvalitetnih kurseva koji se mogu kupiti za samo deset dolara kada su na popustu, a to je skoro pa uvek. Tviter je osnovni kanal na kojem se informišem o svemu što se dešava u PHP zajednici na globalnom nivou. Svoj tweet line sam tako isfiltrirao da pratim i samo vidim tweetove koji su kvalitetni, u smislu da me informišu ili vode do dobrog članka ili bloga. Sve drugo što se meni ne čini zanimljivo i korisno ne pratim. Ako se pravilno koristi tviter može biti koristan izvor informacija. Ono što sam zapostavio u poslednjih nekoliko godina jeste korišćenje rss čitača i čitanje blogova, za šta su možda zaslužne upravo društvene mreže.

Koliko je za tvoj posao važna teorija, a koliko praksa?

Za juniore najvažnije je da sve što nauče u teoriji probaju i provežbaju u praksi. Vežba i praksa su u tom periodu od ključne važnosti. Na putu od juniora do seniora potrebno je ovladati i principima programiranja, arhitekturom aplikacija kao i dizajn paternima. Na ovom stepeniku neophodno je dobro ovladati teorijom pre nego što se upustimo u praktičnu primenu. Kada se ovlada i teoretskim znanjem i praksom rezultati su značajno kvalitetnija arhitektura aplikacija, jednostavnija rešenja i bolje razumevanje problema.

Kako se obezbeđuje kvalitetna praksa u tvom poslu?

Da biste došli do kvalitetene prakse potrebno je da se nađete u timu koji koristi najnovije tehnologije i primenjuje "best practice" iz svoje oblasti. Ukoliko ste u timu koji se opire novim tehnologijama, praksama koje se preporučuju u vašem ekosistemu, možda je vreme da promenite firmu i potražite drugi tim. Ukoliko ste početnik koji nikada nigde nije radio, onda se posvetite knjigama, vežbajte i priključite se nekom open source projektu. Povežite se sa ljudima iz vaše oblasti i pokušajte da napravite neki svoj projekat, da neku svoju ideju pretočite u delo. Sve to dovešće vas pre ili kasnije do boljeg okruženja gde ćete moći još više i brže da napredujete.

Kako izgleda tvoj radni dan?

U timu u kojem radim primenjujemo deo agilnih metodologija koje su se u našem slučaju pokazale korisne i efikasne, prilagođene distribuiranom timu. Kada dođem na posao, na slack kanalu predviđenom za "daily standup", napišem šta sam od zadataka završio prethodnog dana, šta planiram da uradim danas, i da li imam bilo kakvu prepreku u radu. To nam pomaže da znamo šta ko radi u bilo kom trenutku, ali i da pomognemo ako neko ima neki problem koji ne može samostalno da reši. Svakoga dana u određeno vreme održavamo online polučasovni sastanak na kojem raspravljamo o aktuelnim temama i zadacima kao i problemima koje trebamo da rešimo. Jednom nedeljno imamo duži sastanak na kojem pravimo retrospektivu kompletne nedelje u kom analiziramo postignute rezultate i sagledavamo šta je to što smo mogli da uradimo bolje i kvalitetnije. Svakodnevno radimo na razvoju novih funkcionalnosti, koje se testiraju a zatim se radi deploy na produkcioni server. U komunikaciji sa kolegama dolazimo do najoptimalnijih rešenja i najboljih ideja. Trudim se da u toku radnog dana određeni deo izdvojim za edukaciju. Najčešće je to neki video sa konferencije ili online kurs.

Koji su tvoji omiljeni alati za rad?

Za nekoga ko se bavi web razvojem bitno je da razvija u operativnom sistemu koji je baziran na Unixu, kako bi se srodio sa okruženjem u kom se izvršavaju aplikacije koje razvija. U samom početku sam kao i svi koristio Windows sa Wamp-om, ali sam onda prešao na Linux okruženje. Nakon nekoliko godina odlučio se da probam OSX operativni sistem koji pruža udobnost desktopa, a pritom se oslanja na Unix. To je trenutno okruženje koje svakodnevno koristim. Kako bih imao istovetno okruženje kao na serveru koristim Vigrant i VirtualBox koji mi pružaju mogućnost da lako i jednostavno podesim virtuelne mašine sa Ubuntu ili CentOS operativnim sistemima. Terminal je najbolji prijatelj svakog programera. Ja koristim iTerm2 koji sam podesio tako da kada dodjem na posao sa jednim klikom na tastaturi otvaraju mi se četiri prozora za rad, pokreće se shell skripta, koja podiže Homestead Vagrant koji svakodnevno koristim, i ostavi komentar na Slack-u da sam u kancelariji, kako bi članovi tima znali da sam dostupan. Na sličan način se odjavljujem i suspendujem Vagrant. Kada je već reč o komandnoj liniji, jedan od omiljenih dodataka jeste ZSH i Oh-My-Zsh shell koji sa svojim predefinisanim alijasima i funkcijom da se lako i brzo sa tab-om i strelicama gore-dole dođe do potrebne komande značajno štedi vreme. Jos jedan mali alat koji štedi vreme, jeste Jump sa kojim se brzo prelazi (skače) u foldere koje često koristim. PHP Storm je odličan IDE koji se veoma često ažurira sa najnovijim funkcionalnostima i brzo prati promene u web ekosistemu, tako da je zadovoljstvo koristiti ga. Za brze izmene malih projekata i pojedinačnih fajlova koristim Visual Studio Code, koji iako je od Microsoft-a veoma dobar i brz editor. Kako je broj naloga i alata koje koristim postao preveliki da bih mogao da pratim, LastPass je alat koji za mene pamti lozinke i štedi vreme.

Kako si odabrao omiljeni editor i framework?

O mogučnostima PHP Storm-a koji koristim mogao bih da pišem danima, jer njegova lista mogućnosti je nesaglediva. Koji god IDE da koristite, važno je da istražite sve njegove mogućnosti i da ih koristite ako će vam to ubrzati i olakšati rad. Što se tiče frejmvorka, ja radim u Laravelu, jer se sa njim mogu pisati kvalitetne aplikacije uz maksimalnu uštedu vremena. Glavna karakteristika ovog frejmvorka jeste da je okrenut tome da programeru što više olakša posao tako da ima dosta "synthetic sugar" elementa. Ipak dobro je da programeri eksperimentišu i poznaju više od jednog frejmvorka da se ne bi zatvorili u kutiju iz koje ne vide dalje od svog frejmvorka.

Da li si aktivan član PHP zajednice u Srbiji ili u inostranstvu?

Bio sam uključen u osnivanje udruženja PHP Srbija koje je danas na zavidnom nivou organizacije. Danas više nisam aktivan u udruženju, ali preporučujem svakome da pristupi udruženju koje je veoma otvoreno za nove članove i nove ideje. Svim PHP programerima, a posebno početnicima, preporučujem da posete meetup koji PHP Srbija organizuje jednom mesečno u Beogradu. Jednom godišnje ogranizuje se velika međunarodna konferencija koja okuplja najbolje predavače iz celog sveta. Prilika da od najboljih čujete i naučite nešto novo je nešto sto sebi ne smete da dozvolite da propustite.

Može li se u Srbiji lagodno živeti od bavljenja tvojim poslom?

Ovo jeste jedno od zanimanja sa kojim se može živeti lagodno, samo je potrebno da se ispeče zanat i dođe do nivoa seniora. Mediji zajedno sa prodavcima jednogodišnjih kurseva stvaraju lažnu sliku da je moguće završiti kurs i nakon toga možete raditi u nekoj firmu za 1000e. Istina je da senior programeri imaju plate veće od tih famoznih 1000e, ali da je za postizanje tog nivoa znanja bio potreban niz godina sa konstantnim učenjem za koje se mora izdvojiti vreme i nakom završenog posla. To u praksi znači da se nekada i do 10 sati dnevno izdvaja za rad i učenje. Seniori sa dobrim platama koje ja poznajem, ne rade od 9 do 5. I nakon više od 10 godina u ovoj profesiji, ja učim, čitam knjige i gledam kurseve kako bih nadogradio svoje znanje. Da biste došli do nivoa plate koja je iznad proseka, vaše znanje i veštine koje posedujete moraju da budu iznad proseka. Druga strana medalje jeste da neko ko završi kurs, neće moći odmah da nađe posao, jer firme žele juniora koji je sposoban da samostalno završava zadatke. Izlazak iz tog začaranog kruga je moguć dodatnim angažovanjem i završavanjem svog projekta ili radom na open source projektu. Za to vam niko neće platiti ni dinara, ali ćete steći dodatne veštine, sigurnost i nešto konkrento što možete da pokažete kada odete na razgovor za posao. Kada prvi put budete na poziciji programera, nećete imati platu od 1000e, i nemojte je tražiti, jer je to nešto što možete očekivati onda kada budete dostigli taj nivo znanja i veština. Ipak, nija valjda da verujete svemu što čujete na reklamama?

Da li je posao programera stresan i kako ti upravljaš stresom na poslu?

Ja imam tu sreću da radim na razvoju konkretnog proizvoda i da već nekoliko godina ne znam šta je to deadline. A svi znamo da su nerealni rokovi maštovitih menadžera najveći izvor stresa. Samo lagano i bez sekiracije.

Danas se možda i previše priča o poslu programera, da li je zaista neophodan veliki broj programera da bi se zadovoljile realne potrebe? Da li baš svako može da bude programer?

Umesto odgovora na pitanje da li je potreban veliki broj programera, citiraću samo dve informacije koje sam pročitao na društvenim mrežama u prethodnih nekoliko dana.

- "18 miliona programera na svetu, samo 5 hiljada ih zna blockchain, od toga je možda 1000 dobrih"

- “IT direktor BMW-a vidi BMW kao softversku kompaniju u budućnosti, da ne bi završili kao Nokia - džaba i najbolji hardver, ako softver ne može da isprati nova očekivanja i potrebe korisnika”

Ne može i ne treba svako da bude programer, svetu su potrebni i doktori i muzičari. Zato neka svako radi ono što ga čini srećnim. Ne preporučujem ulazak u programerske vode kada je novac jedini motiv. Ako ste spremni da i kada naiđete na problem ne odustanete dok ne pronađete rešenje, makar je za to bilo potrebno i nekoliko sati frustracije i moždanog naprezanja, i da budete zadovoljni nakon toga, onda ste materijal za programera. Ovo je nešto što svaki junior mora da prođe i to je jedini način da se stekne znanje i iskustvo.

Kako sebe i svoju profesiju vidiš u budućnosti?

Teško je dati odgovor na ovo pitanje. Možda odgovor treba pronaći u virtuelnoj stvarnosti, veštačkoj inteligenciji i možda u blokchain-u. Sigurno će profesija programera biti tražena i u budućnosti samo što očekujem da će više biti okrenuta tehnologijama koje sam naveo. U poslednjih nekoliko godina front-end jezici i frejmvorci su značajno napredovali i sve više su zastupljeni. Ne očekuejm da će PHP prestati da se koristi, ali će front-end frejmvorci biti sve traženiji i zastupljeniji. JavaScript će još dugo vladati scenom 🙂

Za kraj: Šta bi poručio svima onima koji žele da postanu PHP programeri?

Preporučujem vam da posećujete što više PHP konferencija i da se povezujete sa kolegama. Naučićete mnogo više i otvoriće vam se neke nove perspektive. Čitajte knjige - što više knjiga. Ne fokusirajte se samo na PHP, već istražujte sve oblasti koje vas zanimaju, čak i izvan informacionih tehnologija. Radite podjednako i na svojim soft skill veštinama.

 

Hvala Ivanu, što nam je sa puno entuzijazma otkrio tajne svog zanata. Do sledećeg čitanja.

Jovan Milićević - Product owner

Product owner, ili rukovodilac proizvoda je u Srbiji prilično mlada profesija, bar kada je Srbija u pitanju. Ova profesija obuhvata rad u timu, preuzimanje dobrog dela odgovornosti i razumevanje potreba klijenata. Kako ova profesija zaista izgleda približiće nam Jovan Milićević, kroz vrlo konkretne i korisne odgovore na pitanja:

 

Zdravo Jovane, hvala ti što si odvojio Da li bi mogao da nam kažeš nešto osnovno o svom poslu, šta je suština tvog zanata?

Najpre hvala na prilici da podelim par reči o mom poslu. Kao deo fintech startupa LeanPay, svako od nas nosi različite „šešire“ svakoga dana. Suština mog posla je da povežem potrebe biznisa sa razvojem. Moj glavni zadatak je da potrebe naših korisnika pretočim u korisničke priče na osnovu kojih developeri razvijaju proizvod.

Kada si počeo da se baviš svojim poslom i kako je to izgledalo?

Kako sam završio Menadžment, modul Marketing na FONu, moji počeci su bili u vodama marketinga. Kako sam menjao firme i sticao nova znanja, sve više sam bio uveren da je proizvod suština marketinga i da samo Coca Cola može da prodaje isti loš proizvod više puta (i sam je pijem iako znam da ne valja). Kada se ukazala prilika da napredujem na poziciju Product owner-a („Vlasnik proizvoda“) Web tima u MozzartBet-u odmah sam je prihvatio i zavoleo mogućnost direktnog uticaja na to šta će korisnik na kraju dobiti. Početak naravno da nije bio lak jer je trebalo malo vremena da se slože kockice i uloge u timu, ali je bio praktično početak jedne nove karijere.

Kad smo kod početka, šta je najbitnije kod početka bavljenja upravljanja proizvodom, i koliku ulogu tu igra formalno obrazovanje, a koliko praksa?

Formalno obrazovanje poput fakulteta, bar u mom slučaju nije imalo velikog uticaja da bih se bavio ovim poslom. Na predmetima koje sam ja slušao nisam bio u prilici da se sretnem sa Agilnim metodama razvoja, poput Scrum-a, a ona je esencijalna za posao kojim se bavim. Sa druge strane treninzi, meetupi, radionice i konferencije su odlično mesto za sticanje novih znanja.

Da li misliš da je profesija rukovodioca proizvodom perspektivna?

Svakako mislim da je perspektivna, jer svaka ozbiljnija firma koja se bavi razvojem IT rešenja treba da ima poziciju za osobu koja će se baviti identifikovanjem poslovnih zahteva i prevođenjem na tehnički jezik. Kako će ta funkcija glasiti manje je bitno: product owner, product lead, product manager, head of product...

Šta je ono što najviše voliš kod svog posla, i zašto?

Rad u sjajnom timu, na prozivodu u koji verujem da može da napravi veliki uticaj na tržištu finansijskih proizvoda i stalno učenje i izazovi čine da svako jutro rado idem na posao.

Divno. A da li je bavljenje tvojim poslom stresno, i ako da na koji način?

Kada radiš posao koji voliš, kao u mom slučaju, i situacije koje izazivaju stres u ostalim okolnostima pre vidiš kao izazov koji te dovodi korak bliže cilju. Odluke ljudi na pozcijama poput moje mogu dosta da utiču na krajnji proizvod, pa samim tim i na uspeh projekta. Postoji veliki broj izazova, ali u dobrom timu to se sve mnogo lakše prevazilazi. Kako radim u Fintech startupu, nemam ni mnogo vremena da razmišljam o stresu, jer je veliki posao pred nama.

Šta se dešava ako tim probije rok isporuke proizvoda, kako se nosiš sa takvim situacijama?

To se dešava i to je realnost. Sve zavisi od slova ugovora koliko je to veliki problem. Slično pitanje sam imao i na intervjuu za posao u prethodnoj firmi. Do nje sam mislio da je pomeranje roka nemoguća stvar, ali sam naučio da o svemu može da se pregovara. Kao što možete da pregovarate o promeni uslova za kredit za stan (teško je verujte mi), tako možete i o pomeranju roka ukoliko imae dobre argumente. Mi koristimo Agilne metodoligije za razvoj, trenutno pre svega Scrum. Ono što on nudi jeste transparentnost i agilnost, tj. prilagođavanja potrebama tržišta. To omogućava da izbegavate situaciju da na dan puštanja u produkciju tražite dodatno vreme, već čim primetite odstupanja od plana možete da ga korigujete. Princip kojim se ja vodim jeste da uvek prvo pregovaram o menanju obima posla, da bi proizvod izašao na tržište što pre kako bismo dobili komentare od pravih korisnika.

Kako se nosiš sa zahtevnim klijentima?

Postoje bar dve vrste klijenata koje bi mogle da se podvedu pod zahtevne: oni koji hoće sve i oni koji ne znaju šta žele. Sa prvima je manji problem. Kod njih je ključno da zajedno dođemo do prioriteta. U ITu sve može da se napravi, samo je pitanje vremena i para. Ukoliko se složimo oko prioriteta, koji mogu naravno da se menjaju vremenom, nemamo nikakav problem. Druga kategorija je teška za saradnju, jer ako neko ne zna tačno šta hoće, šta god da se napravi nije ono što je on želeo. Zbog toga ukoliko ne možemo zajedno da definišemo koji problem rešavamo i kakvo bi trebalo da bude korisničko iskustvo, najradije preskačem taj projekat.

Kako izgleda tvoj radni dan?

Dan započinjem sa proverom mejlova. Na sreću trenutno ih nema previše. Potom prelazim na Jiru, alat za vođenje projekta koji koristimo. Tu imam uvid u to šta smo uradili tokom prethodnog dana, ali ono što je mnogo važnije jeste šta tek treba da se uradi i na kojim zadacima su potrebna dodatna pojašnjenja, nacrti… Nakon toga krećem sa konkretnim zadacima poput definisanja specifikacije za novu funkcionalnost. Sama specifikacija sadrži korisničke priče, nacrte ekranai scenarije za funkcionalne testove. Kako sedimo svi zajedno u velikoj kancelariji, česte su kratke diskusije sa timom oko trenutnih izazova, što je nešto što značajno olakšava i ubrzava sam razvoj. Jer su svi ključni ljudi na jednom mestu, uvek dostupni.

Šta je glavni cilj upravljanja proizvodom?

Definisati prave probleme korisnika i napraviti kvalitetno rešenje koje će oni želeti da koriste.

Da li je tvoja profesija u srbiji cenjena?

Profesija je cenjena jer IT firme shvataju koliko im kvalitetan kadar na poziciji Product Ownera ili sličnoj može doneti koristi prilikom razvoja software-a.

Da li u Srbiji može da se lagodno živi od bavljenja tvojim poslom?

Lagodan život je subjektivna stvar, ali su primanja u IT industriji iznad proseka. Voleo bih da i ostale industrije stignu IT kolliko je moguće, pa da svi živimo lagodnije.

Da li u tvom poslu ulogu igra psihologija, i ako da na koji način?

Psihologija igra ulogu pre svega u radu sa timom i korisnicima. Verujem da u svakom poslu u kome niste usamljeni vuk, psihologija igra ulogu. Pre svega u boljem razumevanju pravih želja i problema sagovornika, ali isto tako i u prenošenju loših vesti. Kao što smo naveli par redova iznad, recimo kada postoji problem sa rokom.

Koliko ti, kao rukovodilac proizvoda moraš da poznaješ alate koje koriste članovi tvog tima, kako bi proizvod na kraju bio što uspešniji?

Alate koje zajedno koristimo moram dobro da poznajem. Same tehnologije koje razvojni tim koristi, ne moram. Tehnologije koje se koriste u delu koji korisnik vidi (front-end) poznajem dovoljno da znam šta je moguće napraviti, ali ne obavezno i kako.

Kako se rad u manjem timu razlikuje od rada u velikoj korporaciji, šta su po tebi prednosti a šta mane jednog i drugog sistema?

Kako sam radio u oba sistema, moj izbor je mali tim (10ak ljudi) izvrsnih profesionalaca. Mislim da je takav tim najproduktivniji. Mana je naravno mogućnost da neko od članova tima ode, gde se to mnogo više oseća nego u velikoj korporaciji. Ona često daje i neki dodatni osećaj sigurnosti, ali sa druge strane i brojne procese i procedure koje trebaju da budu ispoštovane zbog svih učesnika na projektu.

Za kraj: Šta bi poručio mladima i starijima koji razmišljaju da postanu product owner-i? 

Kao i u bilo kom poslu, preporučio bih im da se stalno usavršavaju, imaju jasan fokus i prioritete. Ukoliko uvek znaju šta je zaista bitno da se uradi smanjiće bespotreban posao i povećati svoj doprions. Da izazivaju svoje ideje i zapažanja u diskusijama sa drugima. Da čitaju što više literature na temu koja ih zanima. Verujem da svako može još da napreduje i da je učenje trajan proces. IT industrija sada jeste nešto što je u velikom zamahu i ona će još godinama nuditi dobre uslove tako da jeste zanimljiva. Ali ako vas to ne zanima, nađite ono što volite i u tome budite najbolji mogući. Mislim da je to jedini ispravan put da biste se izdigli iznad proseka.

 

Hvala Jovanu što nam je predstavio svoju profesiju kroz jasne i kvaitetne odgovore. Do sledećeg čitanja.

Nebojša Stanković - Oracle database developer

Razvoj baza podataka je posao koji zahteva sistematičnost, detaljno planiranje i strpljenje. Pozicija Oracle database developer-a podrazumeva sve ovo, ali i još neke specifičnosti - koje smo iz prve ruke saznali od iskusnog Nebojše Stankovića:

Zdravo Nebojša, hvala ti što si izdvojio vreme za Tajne Zanata. Da li bi mogao da nam kažeš nešto osnovno o svom poslu, šta je suština tvog zanata?

Zdravo. Ja se bavim programiranjem Oracle baza podataka. To je deo onoga što se zove „backend programiranje“. Nasuprot frontend-u, koji je okrenut ka korisniku, backend upravlja procesima u pozadini, onim što se dešava „ispod haube“ neke korisničke aplikacije ili sistema. Moj posao je dvojak. Prvo je organizacija same baze podataka: njen dizajn, struktura, objekti (tabele, indeksi,...), veze među njima. Drugi aspekt je upravljanje samim podacima koji se smeštaju u bazu i implementacija specifične biznis logike, kroz pravljenje paketa, procedura, funkcija, trigera...Dakle, pravljenje API-a (Application Programming Interface), koji će drugi delovi sistema (servisi i frontend) koristiti za pristup bazi.

Kada si počeo da se baviš razvojem baza podataka i kako je to izgledalo?

Ja sam po obrazovanju matematičar za teorijsku matematiku i primene (znam, zvuči strašno 🙂 ) i prvih 9 godina svoje profesionalne karijere bio sam profesor matematike u srednjoj školi. Negde 2002. godine, kao dodatni posao za dopunu kućnog budžeta, drugar i ja smo počeli da se bavimo izradom web sajtova. On je radio  frontend, pošto ja nemam mnogo smisla za dizajn, boje i korisnički interfejs, a ja sam radio backend. U to vreme, klasična kombinacija je bila PHP/MySQL, tako da je moj prvi dodir sa bazama podataka bila MySQL baza. Sa ove tačke gledišta, to nisu bili bog zna kako veliki projekti, ali je ipak bilo dragoceno iskustvo za dalje. Prava prekretnica se desila 2005, kada sam napustio prosvetu i prešao u jednu malu, domaću privatnu firmu, gde sam postao junior Oracle developer. Tu sam dobio šansu da radim sa odličnim programerima i da naučim osnovne tajne ovog posla.

Zvuči kao divan splet okolnosti. Šta je najbitnije kod početka bavljenja database development-om? 

Iz mog iskustva, najbitnije je dobro naučiti osnove. Temeljno i od samog početka: kako sama baza radi (nisu sve baze iste, sve imau svoje specifičnosti), normalizacija tabela, transakcije, kako se piše dobar kod, kako se testira, algoritmi, strukture podataka... Instalirati neku besplatnu bazu, igrati se, isprobavati. Površnost i hvatanje prečica je najčešća greška koju prave početnici u ovom poslu.

Da li je bavljenje database development-om stresno, i ako da na koji način?

Da, neka doza stresa definitivno postoji. Prvi razlog su, naravno, kratki rokovi, ali tu nema mnogo pomoći. Drugi je odgovornost koju ovaj posao nosi. Za svaku kompaniju, podaci spadaju u najvredniji kapital koji ona poseduje. Jedna greška database developera može dovesti do nenadoknadivog gubitka podataka (finansijske transakcije, podaci o korisnicima, ...), što je za klijenta jako bolno. Ova vrsta stresa se smanjuje ako stičete više znanja i iskustva. Takođe može da pomogne i timski rad, čitanje tuđeg koda, kontrole, bolje testiranje.

 

Da li je potrebno da imaš jasnu sliku o strukturi jedne baze pre nego što počneš sa samim projektovanjem, i zašto?

Da, to je apsolutno neophodno. Znaš za onaj izraz „efekat leptira“? Kad leptir mahne krilima negde u Singapuru, to može, lančanom reakcijom, na kraju dovesti do tornada negde iznad Kariba. E, to isto se dešava i ovde. Mali propusti u dizajnu i projektovanju na početku, mogu kasnije da dovedu do ozbiljnih problema, koje je jako teško naknadno ispraviti. Svo vreme uloženo u pažljivu analizu i planiranje na početku, kasnije se višestruko isplati.

Koja predznanja moraš da imaš da bi se uspešno bavio database development-om?

Dobro logičko razmišljanje, solidna osnova iz matematike i sklonost ka rešavanju mozgalica i problema. Zatim, znanje iz osnova informatike: algoritmi, strukture podataka, osnovna arhitektura računara. Solidno poznavanje bilo kod programskog jezika je takođe velika prednost. Naravno, odlično znanje engleskog se podrazumeva.

Šta je ono što najviše voliš kod svog posla, i zašto?

Pa verovatno najviše taj magični osećaj da si, samo pomoću slova, brojeva i svog mozga, napravio nešto i da to nešto RADI. I to što radi, mnogim ljudima znači. Na primer, dok korisnik srećno surfuje vebom, ili mu je legla plata, ili neki proizvod silazi sa proizvodne trake... taj osećaj da je i tvoj kod direktno doprineo tome. Kao neki čovek iz senke, koji se ne vidi, ali povlači konce iz pozadine. Osim toga, tu je i zadovoljstvo što sam upoznao i imao prilike da radim sa mnogo pametnih i zanimljivih ljudi, iz raznih zemalja.

Da li misliš da je tvoja profesija perspektivna?

Da, mislim da jeste. Baze podataka su praktično svuda oko nas. Web sajtovi, mobilne aplikacije, društvene mreže, banke, državne institucije, veliki poslovni sistemi, čak i najjednostavniji programi za prodavnice i kioske...svi oni koriste baze podataka, u manjoj ili većoj meri. Tehnologije se razvijaju i menjaju, pojavljuju se novi koncepti (na primer, NOSQL baze, nasuprot tradicionalnim relacionim), ali mislim da će se potreba za database developerima u budućnosti samo povećavati. Naravno, važno je ostati u toku, stalno pratiti šta se dešava i ulagati u svoje obrazovanje.

Pominješ ulaganje u obrazovanje. Koliko je po tvom mišljenju ključna sklonost ka informatičkim naukama, a koliko sam rad za napredak u tvom poslu?

Verovatno kao i u većini poslova: 20% je talenat, a 80% rad. Na samom početku, ta sklonost ka informatici je veoma bitna, ali mislim da je za dugotrajno i uspešno bavljenje ovim poslom najbitniji rad i konstantno učenje i usvršavanje.

Kako izgleda tvoj radni dan?

Radim standardno od 9 do 5. Ujutro obavezno prva kafa i čitanje mejlova. Zatim planiranje aktivnosti i prioriteta za taj dan. Radi se uglavnom timski, često više projekata u isto vreme. Dosta sastanaka, dogovora, konsultacija, komunikacija sa kolegama i klijentima. Ako se sprema neki veći „release“, onda je opsadno stanje. Često se desi da čistog pisanja koda bude svega par sati u jednom danu. Ali, to je normalno. Važno je da nikad nije dosadno. J

Da li je database development u srbiji cenjena struka?

Zavisi od firme do firme. Po mojim saznanjima i iskustvu, developeri u manjim firmama, koje rade sa domaćim klijentima, ne prolaze baš sjajno. U stranim firmama ili u onim koje rade sa stranim klijentima, uglavnom je mnogo bolja situacija. Ne samo finansijski, već i u svakom drugom smislu.

Po čemu su Oracle baze podataka specifične, u čemu je razlika između SQL-a i Oracle-a?

Iskreno, nisam imao nekog većeg iskustva sa MSSQL bazom. Obe su veoma popularne i zastupljene kod najvećih svetskih korporacija. Postoje razlike u načinu kako funkcionišu na najnižem nivou (zaključavanje, obezbeđivanje konzistentnosti podataka, transakcije...), ali te razlike nisu mnogo velike. Oracle važi za dosta skupu, ali veoma robustnu i pouzdanu bazu. Tu je takođe PL/SQL, njihov veoma moćni jezik za rad sa bazom podataka.

Da li misliš da u Srbiji može da se živi od bavljenja razvojem baza podataka?

Definitivno može, ako se čovek zaista tome ozbiljno posveti. Ipak, treba razbiti onu famu da u IT industriji teče med i mleko, i da programeri zarađuju basnoslovne sume novca. Najbolji stručnjaci, u nekim kompanijama, zaista zarađuju veoma dobro, bar za srpske uslove. Međutim, za to je potrebno vreme, iskustvo i dosta truda. Naravno, i malo sreće.

 

Šta bi poručio mladima i starijima koji razmišljaju da postanu database developer-i?

Upornost i strpljenje, jer ništa ne dolazi preko noći. Stalno učenje i otvorene oči za nove tehnologije. Iako je programiranje jako široka oblast, previše uska specijalizacija nikako nije dobra. Nikad ne znate kad vam ta druga znanja mogu zatrebati. Ne izmišljati „toplu vodu“, već odmah usvajati dobre prakse u programiranju. I što pre pokušati naći firmu koja će vam dati šansu da radit na stvarnim projektima i sa iskusnim kolegama. Database development, pogotovo za Oracle, nije nešto što može uspešno da se radi individualno i u kućnoj radinosti.

 

Hvala Nebojši na odgovorima koji će sigurno pomoći nekome ko razmišlja da postane Oracle database developer. Do sledećeg čitanja.

Dragan Zarić - Frontend developer

Srbija je zemlja IT stručnjaka, i poslovi u IT sektoru su jedni od najisplativijih kod nas. Mnogo ljudi se oprobalo u ovoj struci, a mnogi su i u njoj ostali godinama. Dragan Zarić (Dezareo) će nam iz prve ruke opisati kako izgleda baviti se poslom frontend developera:

 

Ćao Dragane, hvala ti što si odvojio vreme da porazgovaramo. Da li bi mogao da nam kažeš nešto osnovno o svom poslu, šta je suština tvog zanata? 

Zdravo. Ja se bavim frontend programiranjem. Frontend programiranje podrazumeva vizuelni deo jedne web aplikacije i to je prvo što korisnik aplikacije ili posetilac sajta vidi. Ovde govorimo o UI i UX (User Interface i User Experience dizajnu). Suština mog posla je da ja napravim lep proizvod a koji će biti dopadljiv korisnicima.

Znači, u pitanju je dizajn. Kada si počeo da se baviš web dizajnom i kako je došlo do toga?

Web dizajnom i uopšteno programiranjem sam počeo da se bavim 2004. godine. Tada je nekako i kretao internet da se budi u Srbiji. Prvo su internetu pristupali na brzini 28kbps. Pristupalo se preko telefonske linije. Sećam se da sam svoj prvi local server - easyphp koji je težak 20MB skidao cele noći. Do tada sam već krenuo sa HTML-om. Tada su na internetu mahom preovlađivala custom rešenja, websajtovi su se kreirali od nule, skoro da nisu postojala predefinisana rešenja poput CMS-ova. Negde u periodu 2005. godine sam se prvi put susreo sa Mambo CMS-om. On mi nikada nije legao, jer je imao prekomplikovani administratorski deo, što me je strašno odbijalo. Bio je limitiran pluginovima, prilično krut što se tiče koda. Oko 2007. godine saznajem za WordPress i od tada ga nikada nisam napustio. Jednostavno, pomalo vizionarski sam znao da je on next big thing i da njegovo vreme dolazi. Do danas se moja priča vrti u frontendu.

2004. godina zvuči daleko. Koliko je truda potrebno da bi se došlo do senior nivoa web developer-a, i šta je potrebno da znaš od tehnologija?

Potrebno je dosta vremena. Da se ne lažemo, programiranje nije lak posao i ovde ne postoji čarobni štapić sa kojim ćeš uz pomoć "hokus pokusa" postati senior. Potrebno je krenuti od osnova i one se moraju savladati a nakon toga i utvrditi. Ja se često vratim osnovama čak i posle ovoliko godina rada. Često čujem od onih koji tek počinju sa učenjem "E ja sam to naučio, savladao sam". Ok, ali ovo je kao učenje stranog jezika, svako od nas će savladati pojedine reči ali kada treba izgovarati rečenice dobićemo urnebesno smešan i netačan strani jezik. U programiranju se tačno zna šta čemu služi i to se mora poštovati.

Zatim potrebno je videti da li postoji predodređenost za bavljenje ovim poslom. Vrlo je mali broj ljudi kojima sam mentorisao a koji su ostali u ovoj priči. Web programiranje traži mnogo rada, mnogo odricanja, mnogo učenja. Ako se u ovu priču uđe zbog para onda se ta osoba neće dugo zadržati u celoj priči.

Kako izgleda proces učenja jednog programskog jezika ili web tehnologije, šta je najbitnije za početak?

Početak je najzanimljiviji kada se krene sa programiranjem. Entuzijazam je jak kao i ushićenje kada se reši neki od problema. Kao što sam već rekao prvo se dobro moraju savladati osnove i moraju se dobro utvrditi. Najbitnija stvar je upornost (možda bih mogao da je nazovem i beskompromisnom tvrdoglavošću). Dobar programer će se vraški mnogo potruditi da reši neki problem. Ako se mlad čovek koji uđe u ovu priču baš potrudi da rešava zadatke, sa strašću i posvećenošću to je siguran znak da je odabrao pravo zanimanje. Mlak pristup i copy/paste odgovora sa interneta vas neće odvesti nigde.

Pored strasti i posvećenosti, šta još misliš da je ključno za tvoj posao? 

Odmah ću reći da su to metodika rada i fokus. Te dve stvari će odrediti da li ćete posao uraditi kako treba ili ne. Ovo kažem iz mog iskustva. Metodika rada podrazumeva da razumete proces svog rada ili projekta od početka do kraja. Ne možete krenuti od sredine procesa rada ili od finalnog dela. Programiranje je egzaktan proces, nema mnogo prostora za improvizacije jer to može dovesti do toga da vam se cela struktura projekta sruši kao kula od karata. Da bi bili efikasni morate imati metodiku rada, tačno utvrđene korake koji se prate.

Fokus je takođe bitan. Bez fokusa nećete moći rešavati probleme. Ako su vam misli raspoređene na "sto strana" ništa nećete odraditi kako treba. Dobićete polovična rešenja, neće biti kvalitetna. Ja nisam zastupnik multitaskinga. Smatram da se trebaju pratiti koraci i raditi stvari jednu po jednu.

Koliko se brzo napreduje u tvom poslu, i koliko je truda potrebno za napredovanje?

Napredovanje je relativna stvar. Neko brže napreduje, neko sporije. Sve zavisi od rezultata rada. E tu opet dolazimo do predodređenosti za ovaj posao. Neko ima više talenta za programiranje i više se trudi i on će svakako brže napredovati od nekog ko ne želi da npr. uči nove stvari, radi posao rutinski, sasvim mu odgovara trenutna pozicija. Ono sto ja mogu da kažem da se trud na kraju uvek isplati u ovom poslu, to ne može da prođe neopaženo.

Da li misliš da je bolje biti freelancer ili zaposlen u nekoj firmi,i zašto?

Freelancing je ok jel vam daje osećaj slobode, ali i neizvesniji je. Na Upworku (globalnoj platformi za IT poslove), imate periode u godini kada možete imati poslove preko glave ali i periode kada posla ima jako malo ili ga uopšte nema. Ta finansijska neizvesnost je prilično neprijatna stvar. Ipak, možete raditi u koje vreme dana hoćete, tzv. klizno radno vreme. Mislim da je rešenje za freelancing nalaženje takozvanog zlatnog klijenta, odn. osobe za koju ćete raditi i koja će vam dobavljati poslove koje ćete raditi iz topline svog doma.

Sa druge strane, stalni posao podrazumeva da idete u kancelariju gde ćete raditi sa kolegama. Imaćete stalnu platu ali takođe i konstantne obaveze i radno vreme od "9 do 17". Tu gubite na nezavisnosti ali nema finansijske neprijatnosti...osim ako vam ne kasni plata. Takođe, bićete deo tima i moraćete da se ponašate u skladu sa tim. Iskreno ja sam zastupnik rada u firmi, taj osećaj obaveze je nešto što je sastavni deo mene i mog karaktera.

Koliko je tvoj posao stresan i kako se nosiš sa stresom svog posla?

Stes postoji, uvek je prisutan. Obično je vezan za prilično kratke rokove. Jednostavno ako čovek ne uživa u procesu kreacije web sajtova ne vredi ni raditi ovaj posao. Opravdani stres je ok, nerealno kratki rokovi - treba bežati od toga.

Da li je tvoje zanimanje perspektivno kod nas što se zarade tiče?

Jeste. Ipak i tu postoje nivoi zarade. Odlični programeri zarađuju odlične sume novca. Postoje mid level programeri koji pristojno zarađuju i naravno početnici koji zarađuju solidno. Kako vreme ide, ako ulažete u sebe i svoje znanje očekivano je da ćete pristojno zarađivati od svog posla.

Kako izgleda tvoj radni dan?

Pošto sam sada u freelance fazi, probudim se i krećem sa radom na tekućem projektu. To može da bude nekoliko sati rada na njemu ili da bude jedan duži period dana u zavisnosti da li se treba nešto hitno završiti. Drugi deo dana je obično posvećen nekom učenju, testiranju nekih stvari. Jednostavno nema napretka ako se ne uče nove stvari, to je kod mene postalo sastavni deo dana. Npr. ja učim nemački jezik jer smatram da će to unaprediti moj posao. Jedan deo dana obavezno posvetim učenju nemačkog jezika.

Šta imaš da poručiš mladima koji razmišljaju da postanu web developeri?

Ono što bih rekao a nisam, a izuzetno bitna stvar je Mentorstvo. Nađite mentora ako krećete u ovaj posao. On će vas upućivati na prave stvari, pratiti vaš razvoj, pomoći vam da rešite neki problem kad zapnete, imaćete sa kim da popričate o stvarima bitnim za programiranje. Mentor ako primeti vaš potenicijal će vas preporučiti svojim drugarima i tako ćete brže naći posao. Zatim: budite korektni, pozitivni, učite i budite vredni. To su sigurno dobri saveti koji će vam pomoći da postanete programeri.

Top