Digitalni proboj - kako se to dogodilo

Ovo nije prvi hakaton na kojem pobjeđujem, niti prvi na kojem pisanje, a ovo nije prvi post na Habréu posvećen “Digitalnom proboju”. Ali nisam mogao a da ne napišem. Smatram da je moje iskustvo dovoljno jedinstveno da ga podijelim. Ja sam vjerovatno jedina osoba na ovom hackathonu koja je osvojila regionalnu fazu i finale kao dio različitih timova. Želite li znati kako se to dogodilo? Dobrodošli u mačku.

Regionalna faza (Moskva, 27. - 28. jul 2019.).

Prvi put sam video reklamu za “Digitalni proboj” negde u martu-aprilu ove godine. Naravno, nisam mogao zaobići tako veliki hakaton i registrirao se na stranici. Tamo sam se upoznao sa uslovima i programom takmičenja. Ispostavilo se da je za dolazak na hakaton potrebno proći online test koji je počeo 16. maja. I, možda, zgodno bih zaboravio na to, jer nisam dobio pismo koje me podsjeća na početak testiranja. I, moram reći, ubuduće su SVA PISMA koja su mi stizala iz CPU-a stalno završavala u spam folderu. Iako sam svaki put kliknuo na dugme "neprigovorno". Ne znam kako su uspjeli postići takav rezultat kod mene nije išlo sa slanjem poštom na MailGun. A čini se da momci uopće ne znaju za postojanje servisa kao što je isnotspam.com. Ali mi skrećemo pažnju.

Na jednom od sastanaka podsjetio sam se na početak testiranja startup club, tamo smo razgovarali i o formiranju tima. Nakon što sam otvorio listu testova, prvo sam seo na Javascript test. Generalno, zadaci su bili manje-više adekvatni (kao što će biti rezultat ako dodate 1 + '1' u konzoli). Ali iz svog iskustva, koristio bih takve testove prilikom zapošljavanja za posao ili tim sa vrlo velikim rezervama. Činjenica je da se u stvarnom radu programer rijetko susreće s takvim stvarima, sa svojom sposobnošću brzog otklanjanja grešaka u kodu - ovo znanje ni na koji način ne korelira, a za takve stvari se možete vrlo lako osposobiti za intervjue (znam od sebe). Generalno, test sam prošao prilično brzo, u nekim slučajevima sam se provjerio u konzoli. U python testu zadaci su bili približno istog tipa, testirao sam se i na konzoli, i bio iznenađen što sam postigao više poena nego u JS-u, iako nikada nisam profesionalno programirao u Pythonu. Kasnije, u razgovorima sa učesnicima, čuo sam priče o tome kako su jaki programeri imali niske rezultate na testovima, kako su neki ljudi dobijali pisma da nisu prošli proces selekcije za CPU, a onda su ipak pozvani na njega. Jasno je da kreatori ovih testova najvjerovatnije nisu ništa čuli teorija testiranja, ni o njihovoj pouzdanosti i valjanosti, niti o tome kako ih testirati, a ideja sa testovima bi bila promašaj od samog početka, čak i da nismo uzeli u obzir glavni cilj hakatona. A glavni cilj haka, kako sam kasnije saznao, bio je postavljanje Guinnessovog rekorda, a testovi su mu bili u suprotnosti.

U nekom trenutku nakon što sam prošao testove, pozvali su me, pitali da li ću učestvovati, razjasnili detalje i rekli mi kako da uđem u chat za odabir tima. Ubrzo sam ušao u chat i napisao ukratko o sebi. U chatu se događalo potpuno smeće, činilo se da se organizatori reklamiraju mnogim nasumicama koji nemaju nikakve veze s IT-om. Brojni menadžeri proizvoda "na nivou Stevea Jobsa" (prava fraza iz prijave jednog učesnika) objavili su priče o sebi, a normalni programeri nisu bili ni vidljivi. Ali imao sam sreće i ubrzo sam se pridružio trojici iskusnih JS programera. Upoznali smo se već na hakatonu, a onda smo u tim dodali i devojku za inspiraciju i rešavanje organizacionih problema. Ne sjećam se zašto, ali uzeli smo temu “Obuka o sajber bezbjednosti” i uključili je u pjesmu “Nauka i obrazovanje 2”. Prvi put sam se našao u timu od 4 jaka programera i prvi put sam osjetio kako je lako pobijediti u takvom sastavu. Došli smo nespremni i svađali se do ručka i nismo se mogli odlučiti šta ćemo: mobilnu aplikaciju ili web. U svakoj drugoj situaciji pomislio bih da je to neuspjeh. Najvažnije nam je bilo da shvatimo kako ćemo biti bolji od konkurenata, jer je bilo dosta timova koji su rezali testove, igre cyber sigurnosti i slično. Nakon što smo pogledali ovo i proguglali programe i aplikacije za obuku, odlučili smo da će naša glavna razlika biti vatrogasne vježbe. Odabrali smo niz funkcija koje smo smatrali interesantnim za implementaciju (registracija sa mejlom i provjerom lozinke u hakerskim bazama podataka, slanje phishing e-mailova (u obliku pisama iz poznatih banaka), obuka socijalnog inženjeringa u chatu). Nakon što smo odlučili šta radimo i shvatili kako se možemo izdvojiti, brzo smo napisali punopravnu web aplikaciju, a ja sam igrao neobičnu ulogu backend programera. Tako smo samouvjereno osvojili našu stazu i u sastavu još tri ekipe plasirali se u finale u Kazanju. Kasnije, u Kazanju, saznao sam da je izbor za finale bio fikcija, tamo sam upoznao mnoga poznata lica iz timova koji nisu prošli selekciju. Čak su nas intervjuisali novinari Kanala 1. Međutim, u izvještaju sa njega naša aplikacija je prikazana samo 1 sekundu.

Digitalni proboj - kako se to dogodilo
Zasnježena ekipa, gdje sam osvojio regionalnu etapu

Finale (Kazanj, 27. – 29. septembar 2019.)

Ali onda su počeli neuspesi. Svi programeri iz Snowed tima su u roku od mjesec dana, jedan za drugim, javljali da neće moći u Kazanj na finale. I razmišljao sam o pronalaženju novog tima. Prvo sam nazvao u opštem chatu ruskog Hack tima, i iako sam tamo dobio dosta odgovora i poziva da se pridružim timovima, nijedan od njih nije privukao moju pažnju. Bilo je neuravnoteženih timova, kao što su proizvod, mobilni programer, front-end, koji podsjeća na labuda, raka i štuku iz bajke. Bilo je i timova koji mi tehnološki nisu odgovarali (npr. razvojem mobilne aplikacije u Flutteru). Konačno, u ćaskanju koji sam smatrao đubretom (isti VKontakte u kojem se vršio izbor timova za regionalnu fazu), objavljen je oglas o potrazi za frontenderom za tim, a ja sam pisao čisto nasumično. Ispostavilo se da su momci diplomirani studenti Skoltecha i odmah su ponudili da se upoznaju i upoznaju. Svidjelo mi se timovi koji više vole da se upoznaju odmah na hakatonu obično me alarmiraju nedostatkom motivacije. Upoznali smo se u "Rake" na Pjatnickoj. Momci su delovali pametno, motivisano, sigurni u sebe iu pobedu i tu sam odluku doneo. Još nismo znali koje će staze i zadaci biti u finalu, ali smo pretpostavili da ćemo izabrati nešto vezano za Machine Learning. A moj zadatak će biti da napišem admina za ovu stvar, tako da sam unapred pripremio šablon za ovo na osnovu antd-admin.
Otišao sam u Kazan besplatno, o trošku organizatora. Moram reći da je već izraženo dosta nezadovoljstva u četovima i blogovima oko kupovine karata i generalno organizacije finala, neću sve prepričavati.

Stigavši ​​na Kazan Expo, registrovani (imao sam malo problema sa bedžom) i doručkovali, otišli smo da biramo stazu. Otišli smo samo na svečano otvaranje, gdje su zvaničnici govorili, oko 10 minuta. Zapravo, već smo imali svoje željene pjesme, ali su nas zanimali detalji. U stazi br. 18 (Rostelecom), na primjer, pokazalo se da je potrebno razviti mobilnu aplikaciju, iako to nije bilo u kratkom opisu. Napravili smo glavni izbor između koloseka br. 8 Defektoskopija cevovoda, Gazprom njeft PJSC i koloseka br. 13 Perinatalni centri, Računska komora Ruske Federacije. U oba slučaja, Data Science je bila potrebna, au oba slučaja, web je mogao biti dodat. Na stazi br. 13 zaustavila nas je činjenica da je zadatak Data Science tamo bio prilično slab, bilo je potrebno raščlaniti Rosstat i nije bilo jasno da li je potreban admin panel. I sama vrijednost zadatka je bila upitna. Na kraju smo odlučili da nam kao tim više odgovara track 8, pogotovo što su momci već imali iskustva u rješavanju sličnih problema. Počeli smo razmišljanjem o scenariju u kojem bi našu aplikaciju koristio krajnji korisnik. Ispostavilo se da ćemo imati dvije vrste korisnika: tehničare koji su zainteresirani za tehničke informacije i menadžere kojima su potrebni finansijski pokazatelji. Kada smo imali ideju o scenariju, postalo je jasno šta treba raditi na prednjem dijelu, šta dizajner treba nacrtati i koje metode su potrebne na stražnjoj strani, postalo je moguće distribuirati zadatke. Odgovornosti u timu su bile raspoređene na sledeći način: dvoje ljudi je rešavalo ML sa podacima dobijenim od tehničkih stručnjaka, jedna osoba je napisala backend u Pythonu, ja sam napisao front end u Reactu i Antd, dizajner je nacrtao interfejse. Čak smo i sjeli kako bi nam bilo zgodnije da komuniciramo dok rješavamo probleme.

Prvi dan je prošao gotovo nezapaženo. U komunikaciji sa tehničkim stručnjacima ispostavilo se da su oni (Gasprom njeft) već rešili ovaj problem, samo su se pitali da li se može bolje rešiti. Neću reći da mi je to umanjilo motivaciju, ali je ostavilo trag. Iznenadilo me je da su moderatori rubrike noću zabilježili radne timove (kako su rekli za statistiku to se obično ne praktikuje na hakatonima); Do jutra smo imali spreman prototip prednjeg dijela, neke rudimente stražnje strane i prvo ML rješenje. Uglavnom, već je bilo šta da se pokaže stručnjacima. U subotu popodne, dizajner je očigledno nacrtao više interfejsa nego što bih ja imao vremena za kodiranje i prešao na kreiranje prezentacije. Subota je bila predviđena za upis rekorda, a ujutru su svi koji su radili u sali izbačeni u hodnik, zatim je ulazak i izlazak iz sale vršen uz pomoć bedževa, a izlazak se mogao ne više. od sat vremena dnevno. Neću reći da nam je to izazvalo neke značajne neugodnosti veći dio dana i dalje smo sjedili i radili. Hrana je, zaista, bila vrlo oskudna, za ručak smo dobili čašu čorbe, pitu i jabuku, ali opet nas to nije mnogo uznemirilo, bili smo fokusirani na nešto drugo.

Periodično su davali red bull, dvije limenke po ruci, što je bilo od velike pomoći. Recept za energetski napitak + kafa, koji je dugo bio testiran na hakatonima, omogućio mi je da kodiram cijelu noć i sljedeći dan, veseo kao čaša. Drugog dana smo, zapravo, jednostavno dodali nove funkcije u aplikaciju, izračunali finansijske pokazatelje i počeli da prikazujemo grafikone na osnovu statistike kvarova na autoputevima. U našoj stazi nije bilo pregleda koda kao takvog, stručnjaci su procijenili rješenje problema u stilu kaggle.com, na osnovu tačnosti prognoze, a front end je procijenjen vizualno. Naše ML rješenje se pokazalo najpreciznijim, možda je to ono što nam je omogućilo da postanemo lideri. U noći sa subote na nedjelju radili smo do 2 sata ujutro, a onda smo otišli na spavanje u stan koji smo koristili kao bazu. Spavali smo oko 5 sati, u nedjelju u 9 ujutro smo već bili na Kazan Expo. Na brzinu sam nešto spremao, ali najviše vremena sam proveo u pripremama za predodbranu. Predodbrane su se odvijale u 2 streama, pred dva tima eksperata, zamoljeni smo da govorimo posljednji, jer su oba tima stručnjaka željela da nas saslušaju. Ovo smo shvatili kao dobar znak. Aplikacija je prikazana sa mog laptopa, sa pokrenutog dev servera, nismo imali vremena da pravilno primenimo aplikaciju, međutim, svi su uradili isto.

Generalno, sve je prošlo u najboljem redu, istaknute su nam tačke u kojima možemo poboljšati našu aplikaciju, a u vrijeme prije odbrane smo čak pokušali i implementirati neke od ovih komentara. Odbrana je takođe prošla iznenađujuće glatko. Na osnovu rezultata predodbrane znali smo da smo ispred po bodovima, bili smo u prednosti po preciznosti rješenja, imali smo dobar front-end, dobar dizajn i generalno dobro osjecanja. Još jedan povoljan znak je to što je djevojka moderatorka iz naše rubrike napravila selfi sa nama prije ulaska u koncertnu dvoranu, a onda sam posumnjao da možda nešto zna))). Ali nismo znali svoje rezultate nakon odbrane, pa je vrijeme do proglašenja našeg tima sa bine prošlo malo napeto. Na bini su uručili karton sa natpisom 500000 rubalja, a svaka osoba je dobila torbu sa šoljicom i bateriju za mobilni telefon. Nismo uspjeli uživati ​​u pobjedi i proslaviti je kako treba, brzo smo večerali i taksijem krenuli do voza.

Digitalni proboj - kako se to dogodilo
Tim WAICO pobjeđuje u finalu

Po povratku u Moskvu, novinari NTV-a su nas intervjuisali. Snimali smo cijeli sat na drugom spratu kafića Kvartal 44 na Poljanki, ali vijesti su pokazale samo 10-ak sekundi.

Ako sumiramo opšte utiske o Digitalnom proboju, oni su sljedeći. Mnogo novca je potrošeno na događaj. Nikada prije nisam vidio hakatone takvog razmjera. Ali ne mogu reći da je to opravdano i da će se zaista isplatiti. Značajan dio učesnika koji su došli u Kazan bili su jednostavno partijaneri koji nisu znali ništa napraviti vlastitim rukama i koji su bili prisiljeni postaviti rekord. Ne mogu reći da je konkurencija u finalu bila veća nego u regionalnoj fazi. Također, upitna je vrijednost i korisnost zadataka nekih staza. Neki problemi su odavno riješeni na industrijskom nivou. Kako se kasnije ispostavilo, neke organizacije koje su vodile tragove nisu bile zainteresirane za njihovo rješavanje. I ova priča još nije gotova, za predakcelerator su odabrani vodeći timovi sa svake staze, a pretpostavlja se da će se ispostaviti kao PROBORNI startupi. Ali još nisam spreman da pišem o ovome, videćemo šta će biti od toga.

izvor: www.habr.com

Dodajte komentar