Otkako sam prvi put iskusio hakaton, u okviru prošlogodišnje Start konferencije, postao sam veliki zagovornik ovakvog tipa takmičenja (odnosno događaja – Facebook hakatoni, na primer, nisu takmičarskog tipa). Verovatno glavni razlog za to je što tokom dvadeset i četiri sata radite na nekom proizvodu, od nule pa do razvoja funkcionalnog prototipa, i samim tim tokom ovog perioda možete da se susretnete sa najraznovrsnijim izazovima.
Algoritamska takmičenja, s druge strane, su prilično “predvidiva” – uglavnom se zna koje oblasti dolaze, kao i kakvi tipovi zadataka, pa je pripreme lako isplanirati (doduše, nije lako spremiti se). Naravno, ona su i dalje najbolja priprema za intervjue u velikim softverskim kompanijama, ali ipak treba obratiti pažnju i na hakatone, jer pružaju drugačiji skup iskustava koja su značajna kada taj intervju prođete i zapravo dobijete posao.
Ukoliko ste zaintrigirani, sada je pravi trenutak da se upustite u ovu avanturu, jer Nordeus u decembru, već treću godinu za redom, organizuje hakaton u razvoju igara. Ukoliko niste, čitajte dalje…
O hakatonima
Pozitivno iskustvo koje hakaton može da vam pruži je teško opisati (da, pozitivno je i uprkos nedostatku sna), pa ću probati da vas objektivno uputim na neke od prednosti ovog tipa takmičenja, kao i da dam nekoliko saveta.
Nove tehnologije. U većini slučajeva, hakatoni se bave dosta specifičnim temama, pa su tako i tehnologije neretko ograničene. Ovo je, međutim, dobra stvar, jer može da vas natera da istražite neke nove jezike/frameworke/oblasti sa kojima se tokom školovanja verovatno ne biste susreli. Nordeusov hakaton, na primer, je odličan da se isprobate u razvoju igara, što zahteva različite veštine koje verovatno već posedujete, ali ih niste ranije kombinovali.
Timski rad. Ovo je prilično očigledno. Iako se timski rad uvek potencira kroz razne projekte i zadatke, on je često “izveštačen”, jer timovi nisu adekvatno sklopljeni, a članovi nisu dovoljno motivisani da se potrude. Prvi izazov kod hakatona je sklopiti tim koji se sastoji od ljudi sa odgovarajućim, poželjno disjunktnim, skupovima veština, nakon čega je te veštine potrebno pravilno upotrebiti tokom dvadeset i četiri sata. Naravno, psihološki profili članova nikako ne smeju biti zapostavljeni, jer ništa nećete postići ukoliko ste sve vreme u svađi.
Prioriteti. Jedan od najvećih problema koje sam uspeo da primetim na hakatonima jeste pogrešna prioritetizacija – ljudi osmisle dobru ideju, ali odaberu pogrešne prioritete, pa je krajnji proizvod nezadovoljavajućeg kvaliteta, ili čak nefunkcionalan. Osim zadovoljenja sâmih zadatih kriterijuma, potrebno je da prikažete što širi opseg veština i da iskoristite razne aspekate tehnologije u kojoj radite. Istina, 3D igra će vizuelno možda odlično izgledati, ali neće vam doneti pobedu ukoliko nema dobar gameplay. Jedan ili dva nivoa su sasvim dovoljna, ali zaintrigirajte žiri nekim naprednim mogućnostima koje bi se javljale tek u kasnijim nivoima, a vi ih aktivirajte šiframa u prvom :) Jednostavno rečeno, potrebno je da predstavite kompletan proizvod.
Sarađivanje na kôdu. Kao nadogradnja na psihičku kompatibilnost članova tima, timski rad se sastoji i iz uspešne saradnje na sâmom kôdu – zato su tu source control sistemi. Čini mi se da je ovo stvar kojoj se kod nas posvećuje jako malo pažnje, dok u bilo kojoj firmi predstavlja de facto standard za intra- i inter-timsku saradnju, pa takmičenje predstavlja pravi trenutak da ovladate osnovama ovih alata (a i drastično ubrzavaju proces razvoja u odnosu na copy/paste metod).
Prezentacija. Ukoliko niste sa FONa, vrlo je verovatno da prezentacijama posvećujete najmanje pažnje, jer je važniji sâm proizvod. Avaj, kod hakatona to nije tačno, a isto važi i kada neki proizvod prezentujete svojim nadređenima – koliko god dobro da ste odradili posao, potrebno je to i da pokažete za samo 5-10 minuta, a to nikako nije dovoljno da sve uspešno demonstrirate. Zato, manite se filozofiranja, i budite efikasni: objasnite šta ste uradili, zašto ste se za to odlučili, demonstrirajte kako to radi, i napomenite unapređenja koja se kasnije lako mogu uvesti (ali nemojte lagati, već zaista razvijte takav proizvod da se lako može nadograditi). Kao i kod prioritetizacije, žiri/nadređeni mora videti da je proizvod kompletan i funkcionalan.
Pored ovih glavnih stavki, valja napomenuti da će hakaton testirati i vašu izdržljivost i rad pod stresom, ali i da ćete se verovatno odlično provesti, jer je atmosfera dosta opuštenija od običnih takmičenja gde svi rade na rešavanju istog problema, pošto možete mnogo komotnije da komunicirate sa članovima drugih timova.
Utisci sa prošlogodišnjeg Nordeus hakatona
Slika sa vrha teksta je screenshot iz pobedničke igre Nordeus Hackathona 2011, na temu “Tower Defense”, koju je razvio tim Delete this. Osim što su imali dobru ideju, da mapa bude kružna, njihovoj pobedi je doprinela i odlična realizacija igre, koja zaista izgleda kao kompletno izdanje.
Te godine još uvek nisam bio zainteresovan za hakatone, a i razvoj igara me nije privlačio, pa nisam ni učestvovao. Međutim, 2012. godine sam odlučio da je tada, pošto sam bio četvrta godina, poslednji trenutak da se isprobam u još nekim oblastima i eventualno pokupim koju nagradu. Zajedno sa dvojicom kolega sa fakulteta i dizajnerom iz neke sasvim druge priče napravio sam tim, i učestvovao u drugom izdanju Nordeus hakatona koji je za temu imao “Shoot ‘Em Up”.
Niko od nas ranije nije ozbiljno radio na razvoju igara, pa nam je ovo bila prilika da se upoznamo sa ovim delom industrije (vidi stavku “nove tehnologije”) – uzeli smo XNA u ruke, dovoljno dobro ga naučili, a kasnije uspešno i upotrebili, što nam je donelo treće mesto (razvijenu igru, sa primesama tower defense-a i RPG-a, možete videti ispod). Igra koja je osvojila drugo mesto bila je predmet diskusije, jer nije u potpunosti zadovoljila temu, a i vizuelno je bila dosta jednostavna, ali je sama realizacija bila vrhunska, jer je sve pisano u C++u od nule, pa je ovakva odluka žirija sasvim opravdana. Najzad, prvo mesto je osvojio drugi tim sa Računarskog fakulteta, sa idejom i igrom veoma sličnoj našoj, ali sa jednom bitnom razlikom, a to je dinamičnost – jer tema ipak jeste bila “Shoot ‘Em Up”.
Nepotrebno je reći da smo se odlično proveli, pa vam svima toplo preporučujem da se prijavite ove godine i iskusite kakva sve čuda se mogu postići za samo dvadeset i četiri sata.
Igru možete skinuti odavde, a za njeno pokretanje potreban vam je XNA 4.
Do pre nedelju dana sam imao veliku želju da se prijavim, ali sam saznao da je na Nordeusovom hakatonu moguće učestvovati samo jednom i to je potvrdio mail iz Nordeusa. Kako sam sada učenik 4. razreda srednje škole, odlučio sam da sačekam bar još godinu dana, ali me je to prilično razočaralo. Razumem da je velika konkurencija i da nije moguće da se svi prijavljeni timovi takmiče, ali možda bi bilo bolje da umesto selekcije samo novih timova postoji neka selekcija svih timova na osnovu kvaliteta uz možda malu prednost za nove timove kako bi se zadržala mogućnost da se i oni takmiče.
Ipak su oni kompanija koja je eksplodirala u poslednje vreme, pa ko zna koliko prijava imaju, tako da mislim da je sasvim opravdano – iako ne odgovara takmičarima. S druge strane, baš zato što se brzo razvijaju možemo očekivati da ne propadnu u skorije vreme, pa će biti još hakatona, nema potrebe za žurbom.
Da li svake godine menjaju tehnologije u kojima igrice moraju da se prave, ti možeš da izabereš koju god ti hoćeš tehnologiju, ili nekako drugačije to ide? Ako znam recimo HTML5, da li mogu u tome da pravim igricu? I koliko ti je vremenski trebalo pre hakatona da napraviš najbrže igricu? Napravio sam jednu, ali mi deluje da je 24h ipak malo neverovatno.
Koliko sam primetio ove godine, oni su naveli iste tehnologije kao i ranije, ali to ne treba da te ograničava, jer možeš sâm da odabereš tehnologiju u kojoj ćeš da radiš (doduše, verovatno moraju prvo da je odobre) – mislim da bi HTML5 mogao bez problema da se koristi. Pre hakatona nikad nisam pravio igrice, tako da ne mogu da procenim, ali uz pravilnu raspodelu vremena je sasvim moguće.