ŠTA JE I KAKO RADI LEAD PROGRAMER/KA (INDIE MOBILE)

KAKO SAM POSTAO LEAD PROGRAMER (indie mobile)

Zovem se Branislav Vajagić, bavim se programiranjem igara zvanično od kraja 2001. godine. Kad kažem zvanično, mislim na to da mi je to posao. Pre toga sam se bavio igrama na sve moguće načine, kao i mnogi ljudi: hobistički i entuzijastički. Igrao sam se i pokušavao da napravim nešto svoje. To su bili Spectrum-i, Commodore-i i tako dalje. To je bilo sjajno iskustvo, čista zabava. Što se samog poslovnog dela tiče, počeo sam u Metamorph studiju, a kasnije su tu bili neki domaći studiji kao što je Level Bit, zatim srpsko-izraelska koprodukcija TabTale, pa sam radio u Eipix-u, u međuvremenu i frilensovao, i sada sam na poziciji Lead programera u studiju Yboga.

Kao klinac sam se „navukao“ igrajući razne igre na starudijama od mašina. Nisam birao da radim u gejmingu zato što sam imao grand master plan, nego sam voleo igre i kad se pojavila prilika, prosto sam je iskoristio. Prilika se sama pojavila na čudan način, tako što su došli Goran Rajšić i Nikola Vitković sa underground strip scene tadašnje Jugoslavije. Oni su se odlučili na jedan nadrealan korak – da krenemo u produkciju igre, koja čak nije bila mala u to doba, a ja sam igrom slučaja bio u kontaktu sa pravim ljudima i stupio sam na tu scenu. Desilo se, više nego što je bilo planirano.

Pre toga sam imao poluprofesionalna iskustva, nešto malo web development-a. Bilo je profesionalno u smislu da je to bio posao koji se plaćao, ali nije bilo skroz profesionalno u pogledu ekipe koja se skupila i krenula da radi. Onda se ovo desilo, pa nikad nisam saznao šta bi bilo dalje da sam nastavio tim putem. Što se tiče neprofesionalnog iskustva, uvek je bilo nekih amaterskih projekata raznih vrsta, ne samo igara.

Volim da kažem da sam kao uspešni i poznati Bil Gejtsovi i Markovi Cukerbergovi – college dropout. Nisam formalno završio obrazovanje koje sam započeo. Krenuo sam na fakultet, pa sam odustao. To je bio Matematički fakultet, smer računarstvo. Iz ove perspektive, mislim da formalno obrazovanje ima značajnu ulogu, tamo možete naučiti stvari koje inače ne biste. Deluju dosadno i naporno, ali su veoma korisne. Sami sebe teško naterate da se upustite u učenje takvih stvari, ali kad vas natera profesor, onda ćete prosto morati. Bilo je i stvari koje su bile istog karaktera, ali mene lično nisu toliko zanimale. Nemam ništa protiv matematike, ali nije me toliko interesovala. Tu je bilo pomalo trenja između mene i fakulteta, a onda se javila prilika da radim na igrama i ja sam je prihvatio. Kao što to nije bilo strogo planirano, tako i napuštanje formalnog obrazovanja nije bilo planirano, samo sam se previše udubio u razvoj igara. Srećom, danas dosta formalnog obrazovanja može da se stekne preko interneta, i dosta toga je besplatno. Što ima svojih prednosti – niko vas posebno ne maltretira da nešto radite. A ima i svojih mana – niko vas posebno ne maltretira da nešto radite, pa možete lako da odustanete od toga. Neke teme, naročito za programiranje, prilično su „grajnderske“, morate dosta toga da istrpite, ali kad prođete kroz tu fazu, onda je korisno. Postoji tu još jedna problematika. Formalno obrazovanje se često koristi kao jedna vrsta filtera, što je potpuno razumljivo. Kada neko treba da zaposli nekoga, pogleda radno iskustvo i školu, i onda škola može da bude filter – ako neko nije ništa učio, možda ništa i ne zna, pa zašto bismo njega ili nju uzeli. Isto tako, ne mora ni škola ništa da znači. Formalno obrazovanje je posebna vrsta sporta, tamo dosta dobro naučite da polažete ispite, ali ne mora da znači da zaista savladate materiju. Opet, ne znači ni da nije tako. Imam dosta poznanika sa mog fakulteta, koji su brilijantni ljudi i poznavaoci, a bilo je i ljudi koji su završavali fakultete i potpuno su se specijalizovali u nekim drugim stvarima i tamo su veoma dobri, a njihov posao nikakve veze nema sa njihovim formalnim obrazovanjem. I onda to i nije tako sjajan filter. Ako tražim nekoga ko je dobar matematičar, ja nikad ne bih mogao da zaključim to na osnovu formalnih credentials-a. Zato je moj stav malo pomešan. Srećom, kažem, danas svašta može da se nauči na internetu. I ja često posetim kojekakve kurseve raznih svetskih fakulteta zato što tamo može da se nauči nešto što vam zaista koristi.

Konstantno učenje je sastavni deo posla. Da li se to uklapa ili ne uklapa u radno vreme zavisi od okruženja u kojem čovek radi. Imao sam dosta sreće, sva okruženja u kojima sam radio su bila takva da je po tom pitanju bilo dosta slobode. Svako ko je hteo da se usavršava je mogao. Svi resursi su bili dostupni, nikad niko nije pravio problem ako neko troši radno vreme na lično usavršavanje. I mislim da tako i treba, barem u ovom poslu. A način na koji do toga dođe je, pretpostavljam, individualan. Kod mene to najčešće ide kad nabasamo na neki problem, pa moram da se pomučim da ga rešim. Nekad imam priliku da to sledim, zainteresujem se, pa krenem da kopam dublje.

Nisam imao nikakvog mentora na klasičan način, ali na sve druge načine – svakako. Moj mentor bi bilo jedna kolektivna ličnost: malo knjige, malo videi, malo kolege i saradnici. Svakako i neki profesori, naročito asistenti, na fakultetu. Bilo ih je nekoliko koji su mi bili značajni. U poslednje vreme najveći mentori su mi videi i kolege. Bez obzira na godine starosti, iskustvo, poziciju… Svi možemo svašta da naučimo od kolega.

ŠTA ČINI JEDNOG/-U LEAD PROGRAMERA/-KU? (indie mobile)

Pored poznavanja koda, od netehničkih stvari, potrebne su opšte organizacione veštine, odnosno menadžerske veštine ili, jednostavno, komunikacija sa ljudima. S obzirom na to da je to deo posla, mislim da je reč o jednoj od bitnih veština, koje nisu programerske. Mada, po mom iskustvu, u priči sa ljudima koji rade sličan posao, većina toga dođe vremenom. Ako neko ima obrazovanje bilo kog tipa iz tih oblasti, formalno ili neformalno, sigurno je korisno. Ali većina ljudi sa kojima sam ja imao prilike da komuniciram, a da rade na sličnim pozicijama, misle da se to izgradi vremenom zbog potreba samog posla.

Pozicija Lead programera/-ke može dosta da se razlikuje u zavisnosti od konteksta i veličine tima. Ako je tim mali, ova pozicija je miks menadžersko-organizacionih poslova i samog programiranja. Plus, nekog dela mentorstva, ako u timu imate kolege sa manje iskustva. Ako je tim veći, onda je slično, ali se manje bavite drugim stvarima. U malom timu često radite stvari koje nisu strogo vezane za programiranje. Možda se bavite nekim birokratskim poslom, možda se bavite gejm dizajnom, testiranjem, live ops-om. Prosto, neko to mora da radi i ako nemate dovoljno ljudi, onda to radi ko može. Što se i meni događalo u toku moje karijere. Ako je to neka veća firma, kao Epic Games ili Ubisoft, pretpostavljam da su njihovi programeri malo više fokusirani na preciznije definisane poslove i nemaju toliko ovih nedirektno vezanih poslova u svom radnom danu. Na kraju, pozicija Lead programera/-ke se svodi na programiranje koda i saradnju sa članovima tima.

Jedno vreme sam radio i u finansijskoj industriji kao programer. Najveća razlika je u tome što u gejmingu postoji potpuni nedostatak odgovornosti. Kad nešto zabrljate, niko neće da umre. Što je dosta oslobađajuće, jer ne pravite skener da se nekom detektuje neka bolest. Ovde će se svakako neko iznervirati, ali na kraju krajeva, to su samo igre, pa nije toliko strašno. Mislim da je to velika razlika između gejminga i drugih IT industrija.

U finansijskom sektoru postoji rigorozniji sloj testiranja softvera, jer ako neko klikne nešto što ste vi pravili i izgubi pare, to može da bude veliki problem. U igrama je to malo drugačije. Ne znači da nema nikakvih odgovornosti – ako vam je igra loša, propašćete kao firma, nije ni to beznačajno. Ali, ipak je drugačije nego medicina ili nadziranje infrastruktura, kontrola leta, i tako dalje. I sama problematika posla je drugačija. U finansijskom sektoru postoji high frequency trading i tamo je veliki fokus na tome kako da što brže obavite transakciju. Te brzine se mere u vrlo malim delovima sekunde i ide se do toga da programirate hardver. Što je direktnije moguće, ljudi pokušavaju da postave kompjuter fizički što bliže berzi da bi se postigle ove brzine. Ovde je u pitanju slična problematika – vi hoćete da prikažete što više frejmova u sekundi na ekranu. Ali ako ste u industriji mobilnih igara, srećom, tu se neko potrudio da vam to malo olakša, pa proizvođači mobilnih telefona kažu: „Naši telefoni rade na 60 frejmova u sekundi. Možda ste vi bolji od toga, ali vam ništa ne vredi“.

U odnosu na neku drugu industriju možda je glavna razlika to što se raznovrsnost problema sa kojom se gejming programer/-ka susreće mnogo veća. Manja je specijalizacija. Kad se specijalizujete za nešto kao što je analiza fotografija sa Habl teleskopa, to je vrlo specifično. Tu imate set problema kojima se bavite i koji su možda i nerešivi, pa vam je teško. Ali, kada pravite igre, najčešće dođete u dodir sa svim i svačim što postoji u igrama. A u igrama postoji sve što možemo da smislimo. Tako da mislim da je ta raznovrsnost jedna od ključnih razlika.

„Kada je nešto tvoj posao iz snova, očekuješ da će uvek biti zanimljivo i lepo raditi ga. Međutim, na svemu što sam radio, bilo i je i nečeg dosadnog, i nečeg zanimljivog."

ŠTA RADI LEAD PROGRAMER/-KA ? (indie mobile)

Najvažniji cilj je da imamo igru koja radi i koja je što više oslobođena bagova – da se obezbedi kvalitet koda da bi održavanje projekta u budućnosti bilo što lakše, da bi moglo da se nastavi da se održava ili da se delovi iskoriste za sledeći projekat. Podjednako je važno da Lead programer/-ka pomogne kolegama sa manje iskustva da se unaprede i da postanu samostalniji. Da prenese znanje koje može da se stekne usput i da nauči nešto od njih. Mislim da su glavni cilj kvalitet samog proizvoda i kvalitet koda, zbog budućnosti održavanja projekta, ali i saradnja sa kolegama.

Što se tiče mog tima, trenutno smo mali tim, ima nas šest. Zapravo, delimo se između nekoliko projekata, počnemo na jedan način, završimo na drugi. A što se metodologije tiče, moram priznati da sam svašta probao i nisam preterano srećan ni sa jednom metodologijom. Koristimo ono što se na kraju ispostavi da nam najviše odgovara. Konkretno, u Yboga-i smo novi tim, malo se još upoznajemo, pa onda još ispipavamo metodologije koje koristimo. Ali, klasično, koristimo neki issue tracker, trudimo se da planiramo relativno dobro ono što možemo. Tu se pomalo držimo nekog agile-a, čiji nisam ljubitelj, barem ne u svakom delu produkcije. Neke metodologije su definitivno korisne u nekim delovima produkcije, a u drugim baš i nisu. Na primer, dok ste na početku produkcije i dok radite nešto što je u fazi prototipa ili eksperimentisanja, ne vidim potrebu za striktnim metodologijama. Ali, ako uđete u finalnu fazu produkcije ili post-release, onda možda ne toliko scrum, ali neke agile metodologije mogu da budu prilično korisne. Isprobavali smo razne tehnologije (Trello, Jira), pa čak i papir i olovku. Neke od tih metodologija su efikasnije uživo, a neke kada se radi remote. Nemam omiljenu metodologiju, na ovom projektu još uvek ispipavamo koja će biti najbolja za nas, pa kad jednom utvrdimo, verovatno ćemo se toga držati.

Lead progamer/-ka, uglavnom, najviše komunicira i sarađuje sa producentom/-kinjom zato što je to najčešće osoba koja spaja sve ostale timove u jednu celinu. Tako se određuju planovi i zadaci za bilo koji period. Pošto smo mi u malom timu, ja sarađujem sa svima. Takođe, glavni/-a programer/-ka dosta komunicira sa Art Director-om, zato što sama grafika zahteva tehnikalije zbog tehničkih zahteva platforme za koju se radi, pa je onda tu potrebno dosta saradnje. Uvek sam sarađivao sa svima, ali pretpostavljam da je to fizički nemoguće što su timovi veći. Možda u nekom Blizzard-u glavni/-a programer/-ka isključivo komunicira sa producentom/-kinjom koji/-a je zadužen/-a za taj projekat. Zavisi i koji je to tim. Ako je to tim koji radi backend server podršku, taj čovek verovatno mora da komunicira sa raznim pozicijama, kao što su ljudi koji se bave hardverom, naročito ako gradite svoje serverske farme.

Što se workflow-a tiče, dobijemo gejm dizajn i zajednički napravimo plan šta želimo da postignemo u narednom periodu. Onda jednostavno razbijemo to na sitnije zadatke. Zatim se ispodelimo, što je opet moj deo posla – da podelim ko će šta da radi. I onda krenemo da radimo. Ako je zadatak veći, dogovorimo se oko glavne arhitekture koda i svako krene da implementira ono što mu je zapalo. Ako su to sitniji zadaci i svako je već dovoljno upoznat sa širom arhitekturom, onda jednostavno ko god dobije nešto, krene da radi. U nekom trenutku moj deo posla je da uradim code review, što se radi onoliko često koliko vreme dozvoli. Workflow je prilično dosadan, svodi se na kucanje koda, diskusije i testiranje koda, što samostalno, što kroz gejmplej igre. Ponekad nije loše raditi Unity testove, iako nisam do sada video da su gejming programeri preterano komforni sa korišćenjem ovih testova. Mi ih ne koristimo toliko. Volim da kažem da je cilj Unity testa da istestira neki kod i time se smanji broj bagova, ali sa druge strane, Unity test je takođe kod. Možete lako napraviti bag i u Unity testu, i šta onda? Naravno, ima to svoju korist, pa ko voli, nek’ koristi.

DOKUMENTACIJA I ALATI (indie mobile)

Što se tiče dokumentacije, ona se najviše svodi na neke gejm dizajn snippet-e zato što je dosta bitno da se odredi programerski deo. Ono što ja proizvedem su često task liste, zadaci koje ćemo svi da radimo. I možda na početku projekta, ili kada dolaze novi ljudi, dokumenta koja se odnose na coding standard ili opšta pravila u kodiranju. I, svakako, na početku svakog projekta ili dela projekta, trebalo bi da kao glavni programer proizvedem dokument koji se odnosi na arhitekturu samog koda.

Ti dokumenti mogu da budu i kratki i dugački, mogu da budu i sličice dijagrama, što zavisi od toga kakva je saradnja sa ostalim programerima. Ako se već dovoljno poznajemo, onda i prosti dokumenti mogu da govore mnogo, a ako se ne poznajemo, onda ni enciklopedija nekad nije dovoljna, iako uglavnom jeste. To je ono što glavni/-a programer/-ka treba da proizvede, a ono što treba da konzumira su, uglavnom, ili producentski dokumenti ili gejmdizajnerski. I, svakako, ono što bi svako od nas trebalo da konsultuje – kalendari – pošto najčešće pravimo planove, određujemo sebi rokove da bismo postigli nešto. 

Što se softvera tiče, koristim sve što mi se u datom trenutku učini korisno. Pošto trenutno razvijamo igre koristeći Unity, naravno, tu je Unity, Visual Studio, razni alati u brauzeru (Jira, Confluence, Google Docs, Google Spreadsheets). Zatim, često volim da koristim alate za crtanje dijagrama. Koristio sam Miro, onlajn whiteboard za saradnju. Meni je to dosta dobro, jer je neke stvari lakše predstaviti vizuelno, iako se posle to prevede u tekst koji je kod. Koristim i kojekakve razne sitne editore za JSON-e, za konverzije raznih fajlova. Samim tim i Visual Studio Code koristim kao tekst editor ili za neke druge stvari koje nisu striktno kod. Često držim i neki txt fajl, u koji ubacujem sve što mi padne na pamet. Na dnevnom nivou koristim i Discord, Slack, Zoom, Skype i sve moguće komunikacione programe.

I ZA KRAJ

Kao poslednju stvar, razbio bih jednu iluziju koju imaju mnogi koji bi da uđu u gejming industriju. Kada je nešto tvoj posao iz snova, očekuješ da će uvek biti zanimljivo i lepo raditi ga. Međutim, na svemu što sam radio, bilo i je i nečeg dosadnog, i nečeg zanimljivog. Svaki put napravim korak unapred, pa onda kad se posle osvrnem bude: „Jao, kako sam mogao ovako?“ I dokle god je tako, mislim da je dobro. Kad čovek više ne može da pogleda unazad i da kaže: „Jao, ovo je bilo glupo“, onda nije napredovao. Imao sam sreću da radim na dosta različitih projekata, tako da je svaki bio drugačije iskustvo, i za mene jedinstveno. Uvek je bilo interesantno i uvek je bilo dosadno zato što svaka gejming produkcija dođe do dela koji je grind – jednostavno imaš zadatak i moraš da ga uradiš, sviđalo ti se to ili ne. Igra ne postoji ukoliko nema sve elemente, i koliko god da je neki element dosadan, na primer integracija reklama u igru, mora da se uradi. Tako nas je grind u MMORPG-ovima spremio i za grind na poslu, pa budi siguran/-a da si zaista spreman/-a na to!

Čitav razgovor sa Branislavom Vajagićem možeš pogledati OVDE.

Novosti

Pažnja studentima koji završavaju studije, nedavnim diplomcima i budućim razvojnim programerima igara: Da li ste spremni da ostavite svoj trag u industriji video igara? Vaše putovanje u razvoj igara počinje ovde!
Razvoj video igara možemo sagledati kroz tehnološki i kreativni aspekt. Pošto je tehnološki aspekt razvoja igara u velikoj meri povezan sa kreativnim, slobodno možemo reći da je gejming programiranje svet za sebe. Gejming industrija pruža mogućnost za razvoj eksperata u najrazličitijim oblastima tehnologije, nudeći mnoštvo pravaca kada su u pitanju karijerni putevi.
Razgovarali smo sa preko 20 seniora u domaćem gejmingu. Kad pogledaš ovih šest epizoda trebalo bi da ti bude mnogo jasnije čime u gejmingu možeš i želiš da se baviš