Softverski inženjer/-ka odgovoran/-a je za dizajniranje, razvoj i održavanje softverskih sistema koji pokreću video-igre. Poseduje podrobno razumevanje kompjuterskih programskih jezika, algoritama i principa razvoja softvera. Sarađuje sa gejm dizajnerima i artistima kako bi preveo/-la kreativne koncepte u funkcionalna igračka iskustva. Radi na različitim aspektima razvoja igara, uključujući grafičko renderovanje, simulaciju fizike, veštačku inteligenciju, umrežavanje i korisničke interfejse.
Softverski inženjer/-ka često ima specijalizovano znanje o game engine-ima i framework-ovima. Optimizuje performanse igre, obezbeđuje glatke mehanike igre i rešava tehničke izazove koji se javljaju tokom procesa razvoja. Poseduje razvijene veštine rešavanja problema, jer mora da identifikuje i popravi bagove, optimizuje kod i otkloni bagove kako bi stvorio/-la stabilno i prijatno igračko iskustvo. Pored toga, ostaje u toku sa najnovijim tehnologijama i trendovima u gejming industriji kako bi primenio/-la inovativne tehnike i poboljšao/-la ukupni kvalitet video-igara na kojima radi.
Alati
Unity
Unreal Engine
C++
C#
Java
Python
Visual Studio
Git
Perforce
Softverski inženjer/-ka blisko sarađuje sa gejm dizajnerima kako bi razumeo/-la viziju i zahteve igre, efikasno implementirao/-la mehanike, optimizovao/-la performanse i rešavao/-la tehnička ograničenja. Sarađuje sa artistima kako bi integrisao/-la grafiku, animacije i vizuelne efekte u game engine. Takođe, pruža neophodnu tehničku podršku kako bi se osigurala pravilna implementacija i renderovanje umetničkih asset-a u video-igru.
Pored toga, radi sa QA testerima kako bi identifikovao/-la i popravio/-la bagove, obezbeđujući da igra funkcioniše kako je predviđeno. Sarađuje i sa Network Engineer-ima kako bi razvio/-la multiplayer odlike igre i optimizovao/-la rad mreže. Ove saradnje odgovorne su za stabilno i prijatno igračko iskustvo.
U zavisnosti od senioriteta, od Softverskog inženjera se očekuje da može da savlada, uradi i isporuči sledeće stvari:
Programeri igara obično kombinuju formalno obrazovanje i samoobrazovanje kako bi savladali svoju veštinu. Mnogi započinju sticanjem diplomskog stepena iz računarskih nauka, softverskog inženjeringa ili srodnog polja. Ovi programi pružaju čvrste osnove u programskim jezicima, algoritmima i strukturama podataka.
Međutim, dinamična priroda gejming industrije često zahteva dodatno, specijalizovano znanje. Programeri igara često se kontinuirano usavršavaju, prateći najnovije alate, tehnologije i trendove industrije. Onlajn kursevi, radionice i učešće u zajednicama razvoja igara doprinose njihovom ekspertizom. Praktično iskustvo kroz stažiranje ili lične projekte je ključno, omogućavajući budućim programerima da primene teorijsko znanje na stvarne izazove razvoja igara.
U zavisnosti od senioriteta, od Softverskog inženjera se očekuje da može da savlada, uradi i isporuči sledeće stvari:
Da bi se prijavio/-la za poziciju softverskog inženjera/-ke, poželjno je da imaš diplomu iz računarskih nauka, softverskog inženjerstva ili srodne oblasti. Važno je da istakneš relevantne kurseve, akademske projekte ili bilo koje specijalizovane sertifikate koji pokazuju tvoje tehničke veštine. Ključno je i poznavanje programskih jezika, kao što su Java, C++, Python i drugi, u zavisnosti od zahteva posla. Korisno je i ako dobro poznaješ metodologije razvoja softvera, algoritme i strukture podataka, kao i ako si vešt/-a u rešavanju problema.
Praktično iskustvo u softverskom inženjeringu, bilo kroz stažiranje, kooperativne pozicije ili lične projekte, takođe se veoma ceni. Prethodno radno iskustvo, odgovornosti i značajna dostignuća u razvoju softvera koje navedeš u prijavi pokazuju tvoju sposobnost rada na postojećim projektima i tvoj doprinos u ulozi softverskog inženjera. Portfolio sa ličnim projektima, doprinosima open-source programima ili bilo kojim relevantnim uzorcima rada pruža opipljiv dokaz tvojih tehničkih sposobnosti.
Intervju za poziciju softverskog inženjera/-ke obično se sastoji od pitanja koja treba da procene tvoju tehničku stručnost, veštine rešavanja problema i sposobnost rada u timu. Intervjuu pored regrutera obično prisustvuje i Senior ili Lead inženjer. Intervju podrazumeva jednu ili više etapa, uključujući video-pozive, tehničke procene i intervjue uživo. Tehnička procena može uključivati vežbe kodiranja ili algoritamske zadatke rešavanja problema, dok ostala pitanja imaju za cilj da procene tvoje komunikacione veštine, sposobnost saradnje, kao i da li se uklapaš u kulturu kompanije. Neka od uobičajenih pitanja na intervjuu za poziciju softverskog inženjera/-ke mogu biti:
Tehnički zadatak obično ima za cilj da proceni tvoju sposobnost kodiranja, veštine rešavanja problema i poznavanje relevantnih tehnologija. To može uključivati vežbu kodiranja ili scenario iz stvarnog sveta koji treba da rešiš u datom vremenskom okviru. Zadatak je osmišljen da proceni tvoj pristup rešavanju problema, razumevanje principa razvoja softvera i sposobnost da napišeš čist, efikasan i održiv kod.
Tehnički zadatak može zahtevati da primeniš određenu funkciju, popraviš bag, optimizuješ algoritam ili dizajniraš rešenje za dati problem. Od tebe može biti zatraženo da napišeš kod na željenom programskom jeziku ili da koristiš određeni framework ili toolset. Zadatak se može obaviti na licu mesta, na daljinu ili preko platforme za kodiranje, u zavisnosti od preferencija kompanije.