Kako se suočavamo sa ozbiljnim nedostatkom kadra u IT industriji, stiče se utisak da ako ste programer nemate nikakvih problema. S druge strane, suočeni ste sa konstantnom promenom trendova, novim tehnologijama i zahtevima klijenata. Programerima je lako? Ne bismo se složili! Kako izlaze na kraj sa svakodnevnim izazovima koje ovaj posao nosi? Probali smo da saznamo.
Kada govorimo o potencijalnim izazovima kod programskih jezika, poslednjih nekoliko godina u stručnoj javnosti posebno je interesantna Java o kojoj se sve više diskutuje.
Relativno nizak learning curve ovog programskog jezika (iako programeri sa kojima smo razgovarali nisu saglasni sa tom tvrdnjom i kažu da to samo isprva tako deluje budući da je Java dugo prisutna, te postoji ogroman broj kurseva i literature) tj. relativno brza mogućnost učenja ovog programskog jezika, ponekad automatski znači i mnogo “Java developera” i “Android developera”. Kako onda razlikovati nekog ko želi brzo da uđe u svet development-a od nekog ko zaista zna šta radi?
Uz to, budući da se ovaj pristup programiranju primenjuje duži niz godina, Java developeri se često suočavaju i sa legacy kodom što predstavlja potpuno novi set izazova.
Kako se nositi sa zaostavštinom Jave, a u isto vreme uveriti klijenta da njegove želje ponekad nisu baš izvodljive? Kako, paralelno sa tim, stalno održavati korak sa novom tehnologijom? Odgovore smo potražili među Java programerima u domaćoj kompaniji enjoy.ing.
‘Legacy’ kod: Teret ili prikriveni blagoslov?
“Ja se ne slažem sa tim da se Java brzo uči”, kaže Jelena Mikavica, Senior Software Developer/Line Manager u ovoj kompaniji. “Osoba koja ima predznanje o programiranju može relativno lako ući u svet development-a, ali ne i neko ko to znanje ne poseduje. Java je ogromna i pokriva razne domene tako da se lako uoči razlika između nekog ko zna osnovne koncepte i nekog ko želi brzo da uđe u taj svet”, objašnjava ona.
Razumevanje potreba (što klijenata, što tržišta) i pronalaženje balansa između njih, svakodnevni je zadatak programera svakog ranga – od juniora do seniora. Neretko se dešava da se u okviru IT kompanije prepozna da je neko rešenje loše, a ono je došlo kao isključivi zahtev klijenta. Šta raditi u tom slučaju? Kako pronaći zlatnu sredinu u kojoj su zadovoljni i klijent i ljudi koji rade na proizvodu.
U tim situacijama moraš pronaći pravi način da klijentu sugerišeš da to možda i nije najpametniji način za rešavanje datog problema. Tada primenjuješ sve ono što ti padne na pamet, a što je prikladno. Morate biti dovitljivi, a jako je važno imati i dobro podeljene uloge u timu i to zaista nije toliko strašno – zato i postoje ljudi čiji je posao da se bave samo time. Projektni menadžeri u ovakvim slučajevima dosta pomažu timu koji se bavi razvojem.

S druge strane, Tomislav Đenić, Tech Lead na RG projektu u enjoy.ing-u, kaže da mu je najveći izazov usklađivanje biznis zahteva sa postojećim sistemom. “Programeri ponekad mogu da naprave quick fix i da to trenutno radi, ali se takvo rešenje ne uklapa u arhitekturu sistema. Veliki je izazov napisati dobar kod koji će uz sve biznis zahteve koji stižu i za par godina funkcionisati kako treba”, naglašava on.
Legacy kod, međutim, uopšte ne mora imati negativnu konotaciju. Dušan Milojević, Senior Software Developer/Line Manager smatra da takav kod ponekad može biti mnogo bolji od koda napisanog u skorije vreme. Naravno, takvi slučajevi zavise od projekta na kome se radi. Pravi je izazov prolaziti kroz tuđi kod, ali čak i tada može se mnogo naučiti o tehnici pisanja, dodaje Milojević.
Kako programeri ostaju u koraku sa tehnologijom i dobrim praksama?
Pisanje koda je posao koji u stopu prati i konstantno usavršavanje. Idelana situacija je, slažu se Netokracijini sagovornici, kada bi se moglo izdvojiti više vremena za učenje novih stvari, a zatim to novostečeno znanje primeniti i u praksi. Imajući to na umu, složni su da i klijenti isto tako moraju da shvate potrebu za dodatnom edukacijom, posebno u segmentu razumevanja ekosistema u kojem digitalni proizvod treba da funkcioniše.
Međutim, kako znanje nikad nije na odmet, tada na scenu stupaju lične strategije za učenje novih stvari. Dušan dodaje da ovome u prilog svakako idu i napori koje njihova firma ulaže kako bi potpomogla edukaciju svojih zaposlenih
Prema dosadašnjem iskustvu pokazalo se da je najbolja praksa razmena iskustava među članovima tima. Upravo zato i organizujemo interne edukacije EKS Labs (enjoy.ing Knowledge Sharing Labs) gde svako od kolega ima priliku da sa ostatkom tima podeli svoja novostečena znanja.

Pored toga, organizuju se i eksterne radionice na kojima spoljni saradnici (eksperti za pojedine tehnologije) drže posebne radionice. “Eksterna predavanja su zasnovana na potrebi kompanije da se određeni tim usavrši u nekoj oblasti ili dobije neka nova znanja i veštine koja su im potrebna za uspešno savladavanje budućih projekata”, kaže Tomislav i ističe da to nije uvek materija vezana za tehničku oblast:
Najbolje je kada se te nove stvari uče kroz posao i to je idealna situacija. Kvalitet rada se umnogome podiže i kada vam starije kolege provere kod i mentorišu vas. Takođe, često u okviru tima imamo i tech razgovore na kojima pričamo o nekom konceptu u programiranju kroz prizmu našeg projekta – gde bismo mogli da ih primenimo.
Dakle, kako ocenjuju naši sagovornici, sve to zapravo zavisi od ljudi i tima, a sama edukacija se vrši na više nivoa – od radionica, preko biblioteke, do posete konferencijama.
‘Kvalitet pre rokova – jer cenimo odnos koji imamo sa klijentom’
Još jedan od problema koji se tokom razgovora nametnuo bio je i problem rokova – kako deadline utiče na kreativnost? Sprečavaju li rokovi programere da umesto najboljeg rešenja klijentu isporuče ono koje samo zadovoljava potrebe projekta?
Uvek je bolje nešto uraditi kvalitetno nego ga završiti u određenom roku, kaže Jelena. “Ako je rad na jednom projektu procenjen na 16 sati, a ti vidiš da ti je za to ipak potrebno više vremena, onda je bolje probiti postavljeni rok. Tako sprečavamo neke veće probleme koji se potencijalno mogu javiti kasnije”. Tomislav na to dodaje:
Naša kompanija uglavnom radi na dugoročnim projektima. To su neke saradnje koje traju i po nekoliko decenija, a takvi projekti su never ending process – samo se dalje unapređuju i usavršavaju. Samim tim odnosi koji se razvijaju sa klijentima su zapravo mnogo dublji. Oni imaju puno vremena da se upoznaju i uspostave najbolji mogući nivo komunikacije, a time se lakše prevazilazi i probijanje rokova.

To je, kako Jelena dodaje, veliki adut kompanija koje uspostavljaju dugoročna partnerstva sa klijentima – odnos je takav da se čak i najveći izazovi daleko lakše prevazilaze, nego u slučaju kada sa klijentom sarađuješ jednokratno ili tek nekoliko meseci. “Tada kolege koje dolaze možemo vrlo detaljno uputiti u projekat, bili oni juniori ili seniori – svima je potrebna pomoć. I upravo zato, zaključuju naši sagovornici, kultura enjoy.ing-a bazira se na postavljanju pitanja, timskom radu i davanju neizostavnog feedback-a koji je nezaobilazan proces čak i za kandidate koji ne prođu razgovor za posao.
Za kraj, Jelena, Tomislav i Dušan, napominju da se svaki izazov u poslu, ma koliko on bio velik ili mali, rešava kroz dobru komunikaciju, konstantnu edukaciju, radionice, timski rad i fer i korektan odnos prema klijentima. Tako se sve “muke”, pa i one programerske, lakše podnose i na njima se uči – težeći ka što kvalitetnijem kodu, ali i finalnom proizvodu.
Kompanija enjoy.ing trenutno ima veliki broj otvorenih pozicija i u Beogradu i u Nišu, a više informacija možete pronaći na zvaničnoj stranici kompanije posvećenoj karijerama.