
Pred približno 1,5 leta sem začel sodelovati na hackathonih. V tem času sem sodeloval na več kot 20 dogodkih različnih obsegov in tem v Moskvi, Helsinkih, Berlinu, Münchenu, Amsterdamu, Zürichu in Parizu. Na vseh dogodkih sem se ukvarjal z analizo podatkov v eni ali drugi obliki. Rad prihajam v mesta, ki jih še ne poznam, vzpostavljam nove stike, izumljam sveže ideje, uresničujem stare zamisli v kratkem času ter čutim adrenalin med nastopom in razglasitvijo rezultatov.
Ta objava je prva iz treh objav o hackathonih, v njej bom razložil, kaj so hackathoni in zakaj bi se morali začeti udeleževati teh dogodkov. Druga objava bo o temni plati teh dogodkov — kako so organizatorji delali napake pri izvedbi in kam so te pripeljale. Tretja objava bo posvečena odgovorom na vprašanja o temi, povezani s hackathoni.
Kaj je hackathon?
Hackathon je dogodek, ki poteka več dni in katerega cilj je rešitev določenega problema. Običajno je na hackathonu več težav, vsaka predstavljena kot ločen tir. Sponzorska podjetja nudijo opis naloge, merila uspešnosti (ta merila so lahko subjektivna, kot so "novost in kreativnost", ali objektivna — natančnost klasifikacije na ločenem naboru podatkov) in vire za dosego uspeha (API podjetja, nabori podatkov, "strojna oprema"). Udeleženci morajo v dodeljenem času opredeliti problem, predlagati rešitev in prikazati prototip svojega izdelka. Najboljše rešitve prejmejo nagrade podjetja in možnost nadaljnjega sodelovanja.
Faze hackathona
Po objavi nalog se udeleženci hackathona združijo v ekipe: vsak "osamelc" dobi mikrofon in govori o izbrani nalogi, svojem znanju, ideji in specialistih, ki jih potrebuje za izvršitev. Včasih lahko ekipa obsega le eno osebo, ki je sposobna sama izvesti celotno delo na projektu na dovolj visoki ravni. To je značilno za hackathone, osredotočene na podatke, a je pogosto prepovedano ali nezaželeno za produktne dogodke — organizatorji si želijo nadaljevati delo na projektu, vendar že v podjetju; oblikovana ekipa ima vrsto prednosti pred udeleženci, ki so se odločili izslediti izdelek sami. Optimalna ekipa običajno obsega 4 osebe in vključuje: frontend, backend, podatkovnega znanstvenika in poslovnega človeka. Omeniti velja, da je delitev med podatkovnimi znanstveniki in produktnimi hackathoni dokaj preprosta — če obstaja podatkovni niz s jasno metriko in vodilnim seznamom ali je mogoče zmagati s kodo v jupyter notebooku — gre za podatkovno znanstveni hackathon; vse ostalo — kjer je potrebno izdelati aplikacijo, spletno stran ali kaj privlačnega — je produktno.
Običajno se delo na projektu začne ob 21. uri v petek, rok pa je 10. ura v nedeljo. Del tega časa je treba nameniti spanju (ne spati in kodirati — to je zagotovo pot do neuspeha, sam sem to preveril), kar pomeni, da udeleženci nimajo veliko časa, da bi naredili kaj kakovostnega. Da bi pomagali udeležencem, so na prizorišču prisotni predstavniki podjetja in mentorji.
Delo na projektu se začne s komunikacijo s predstavniki podjetja, saj oni bolje razumejo specifiko naloge, metrike in verjetno bodo ti ocenjevali vaša dela na koncu. Cilj te komunikacije je razumeti, katera področja so najbolj aktualna in na kaj se je smiselno osredotočiti s svojim časom in pozornostjo.
Na enem hackatonu je bila postavljena naloga regresije na naboru podatkov s tabelarnimi podatki in slikami ter jasnim merilom - RMSE. Ko sem se pogovarjal z data scientistom podjetja, sem spoznal, da potrebujejo ne regresijo, temveč klasifikacijo, vendar je nekdo iz vodstva sklenil, da je nalogo najbolje rešiti na ta način. Klasifikacija pa ni potrebna za pridobivanje denarnih metrik, temveč za razumevanje, kateri parametri so najpomembnejši pri sprejemanju odločitev, in jih nato obdelati ročno. Torej se prvotna naloga (regresija z RMSE) spreminja v klasifikacijo; prednost ocene se spremeni iz dosežene natančnosti v možnost razložiti rezultat. To pa izključuje možnost uporabe stacking in black box algoritmov. Takšen dialog mi je prihranil ogromno časa in povečal moje možnosti za zmago.
Ko ste razumeli, kaj morate storiti, se začne neposredno delo na projektu. Ustanoviti morate check-pointe - čas, do katerega je treba opraviti zastavljene naloge; ob tem je dobro nadaljevati s komunikacijo z mentorji - predstavniki podjetja in tehničnimi strokovnjaki - to je koristno za prilagajanje poti vašega projekta. Svež pogled na problem lahko predlaga zanimivo rešitev.
Ker se hackatonov udeležuje veliko število novincev, je s strani organizatorjev dobrodošlo, da se izvedejo predavanja in delavnice. Običajno so tri predavanja - o tem, kako predstaviti svojo idejo kot izdelek, predavanje na tehnično temo (na primer o uporabi odprtih API-jev v strojno učenje, da vam ni treba napisati svojega speech2text v dveh dneh, temveč uporabiti že pripravljenega), predavanje o pitchingu (kako predstaviti svoj izdelek, kako pravilno mahati z rokami na odru, da poslušalci ne bi bili dolgočasni). Obstajajo različne aktivnosti za popestritev udeležencev - joga, namizni nogomet in tenis ali igranje na konzoli.
V nedeljo zjutraj morate predati rezultate svojega dela žiriji. Na dobrih hackathonih se vse začne s tehnično ekspertizo - ali to, kar trdite, dejansko deluje? Namen te preverbe je izločiti ekipe s privlačno predstavitvijo in buzzwordi, a brez izdelka, ter tiste, ki so dejansko nekaj izvedle. Na žalost tehnična ekspertiza ni prisotna na vseh hackathonih in so primeri, ko ekipa s 12 diapozitivi in mentaliteto '… blockchain, kvantno računalništvo, AI to dodela …' osvoji prvo mesto, kako žalostni. Takšni precedenti niso pogosti, vendar se spominjajo najbolje, zato mnogi menijo, da je dobra predstavitev 99% zmage na hackathonu. Predstavitev je resnično pomembna, toda njen prispevek ne presega 30%.
Po nastopu udeležencev žirija sprejme odločitev o nagradah za zmagovalce. S tem je uradni del hackathona zaključen.
Motivacija za sodelovanje na hackathonih
Izkušnja
Z vidika pridobljenih izkušenj je hackathon edinstven dogodek. V naravi ni veliko mest, kjer lahko uresničite idejo iz nič v dveh dneh in prejmete takojšnjo povratno informacijo o svojem delu. Med hackathonom se razvija kritično mišljenje, sposobnost dela v timu, upravljanje časa, obvladovanje stresnih situacij, sposobnost predstavitve rezultatov svojega dela na razumljiv način, veščina predstavitev in še veliko drugih. Zato so hackathoni odličen prostor za ljudi s teoretičnim znanjem, ki želijo pridobiti praktične izkušnje.
Nagrade
Običajno nagradni sklad hackathona znaša približno 1.5k – 10k evrov za prvo mesto (v Rusiji – 100-300 tisoč rubljev). Pričakovano vrednost (expected value, EV) sodelovanja je mogoče izračunati s preprosto formulo:
EV = Nagrada * Verjetnost_Zmage + Prihodnja_Vrednost - Stroški kjer Nagrada — višina nagrade (za poenostavitev bomo domnevali, da je nagrada ena);
Verjetnost_Zmage — verjetnost zmage (za začetniško ekipo bo ta vrednost omejena na 10%, za bolj izkušene pa 50% in več; srečal sem ljudi, ki so vsak hackathon končali z nagrado, vendar je to bolj izjema in na dolgi rok bo njihova verjetnost zmage nižja od 100%);
Prihodnja_Vrednost Ena količina, ki prikazuje prihodnji dobiček od udeležbe na hackathonu: to je lahko dobiček od pridobljenih izkušenj, vzpostavljenih povezav, pridobljenih informacij itd. Te količine praktično ni mogoče natančno določiti, vendar jo je treba upoštevati;
Stroški stroški prevoza, bivanja in drugega.
Odločitev o udeležbi se sprejme na podlagi primerjave EV hackathona z EV dejavnostjo, s katero bi se ukvarjali, če hackathona ne bi bilo: če bi se želeli za vikend zlekniti na kavč in se praskati po nosu, potem bi morda bilo smiselno sodelovati na hackathonu; če želite preživeti čas s starši ali punco — jih vzemite v ekipo na hackathon (se hecam, odločite se sami), če želite freelancati — primerjajte dolar-uro.
Po svojih izračunih lahko rečem, da je v Rusiji za povprečnega data scientist-a na ravni junior - mid udeležba na hackathonih primerljiva z denarnim dobičkom od običajnega delovnega dne, vendar obstajajo tudi posebnosti (velikost ekipe, vrsta hackathona, nagradni sklad itd.). Na splošno hackathoni trenutno niso zlata jama, lahko pa nudijo prijetno dodatek k osebnemu proračunu.
Zaposlitev v podjetju in networking
Za podjetje je hackathon eden od načinov za zaposlovanje novih zaposlenih. Veliko lažje vam bo pokazati, da ste razumni človek in znate delati na hackathonu, kot na razgovoru, ko se vrtite okoli binarnega drevesa na plošči (kar mimogrede ne vedno odraža, kaj boste počeli na pravem delu data scientist-a, vendar je tradicijo treba spoštovati). Takšna preverba v "bojnih" razmerah lahko nadomesti preizkusni dan.
Svojo prvo zaposlitev sem dobil zahvaljujoč hackathonu. Na hackathonu sem pokazal, da se iz podatkov da iztisniti več denarja, in povedal, kako to nameravam doseči. Začel sem projekt na hackathonu, ga osvojil, nato pa nadaljeval projekt že v podjetju-sponzorju. To je bil že četrti hackathon v mojem življenju.
Možnost pridobiti edinstven podatkovni niz
To je zelo aktualna točka za hackathone na področju podatkovne znanosti, katere pomembnost ne razumejo vsi. Običajno podjetja-sponzorji zagotovijo dejanske podatkovne nize med dogodkom. Ti podatki so zasebni in so pod NDA, kar pa ne ovira, da vam pokažemo proof of concept na dejanskem nizu podatkov in ne na igračkarskem Titanicu. Kasneje lahko takšni rezultati močno pomagajo pri zaposlitvi v tem podjetju ali konkurentnem podjetju ali pri utemeljevanju podobnih projektov. Strinjajte se, da je bolje imeti dokončane projekte, ki so bili pozitivno ocenjeni, kot pa jih ne imeti. Na splošno, taki realizirani projekti igrajo podobno vlogo kot medalje in statusi na Kagglu, vendar je njihova vrednost za industrijo bolj očitna.
Nasveti
Na splošno je delo na hackathonu precej raznoliko in je težko oblikovati nek seznam pravil. Vendar bi tu rad predstavil seznam opazovanj, ki bi lahko pomagal novincem:
- Ne bojte se udeleživati hackathonov, tudi če nimate izkušenj ali ekipe. Razmislite, kako bi lahko bili koristni. Morda imate zanimivo idejo ali dobro obvladate kakšno področje? Svoj domain knowledge lahko uporabite pri oblikovanju problema in najdete netrivialne poti reševanja. Ali pa morda najbolj znate iskanje po Googlu? Sposobnost vam bo prihranila kup časa, če boste lahko našli gotove implementacije na GitHubu. Ali pa zelo dobro obvladate tuning parametrov lightgbm? V tem primeru ne hodite na hackathon, ampak to dokažite v tekmovanjih na Kagglu.
- Taktika je pomembnejša od manevrov. Vaša naloga na hackathonu je rešiti problem. Včasih je potrebno problem najprej razjasniti, da ga lahko rešite. Preverite, ali je vaš identificirani problem res aktualen za podjetje. Preverite, ali vaše rešitev ustreza problemu in se vprašajte, ali je vaša rešitev optimalna. Pri oceni vaše rešitve se bo najprej gledalo na aktualnost problema in ustreznost predlagane rešitve. Arhitektura vaše nevronske mreže ali koliko hands-on aukcij ste prejeli, malo koga zanima.
- Obiščite čim več hackathonov, vendar se ne sramujte oditi s slabo organiziranih dogodkov.
- Dodajte rezultate svog rada sa hackathona u svoj CV i ne bojte se o tome javno pisati.

Suština hackathona. Ukratko
Izvor: habr.com
