Digitalni proboj - kako se dogodio

Ovo nije prvi hackathon na kojem sam pobijedio, niti prvi o tome pisanje, a ovo nije prva objava na Habréu posvećena “Digitalnom proboju”. Ali nisam mogao a da ne napišem. Smatram svoje iskustvo dovoljno jedinstvenim da ga podijelim. Ja sam vjerojatno 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. srpnja 2019.).

Prvi put sam vidio reklamu za “Digitalni proboj” negdje u ožujku-travnju ove godine. Naravno, nisam mogao zaobići tako veliki hackathon i registrirao sam se na stranici. Tamo sam se upoznao s uvjetima i programom natječaja. Ispostavilo se da je za dolazak na hackathon potrebno proći online testiranje koje je počelo 16. svibnja. A možda bih zgodno zaboravio na to, jer nisam dobio pismo s podsjećanjem na početak testiranja. I, moram reći, ubuduće su SVA PISMA koja su mi dolazila iz CPU-a stalno završavala u mapi neželjene pošte. Iako sam svaki put kliknuo gumb "nije zamjerka". Ne znam kako su uspjeli postići takav rezultat, meni nije išlo s slanjem pošte na MailGunu. A dečki kao da uopće ne znaju za postojanje usluga poput isnotspam.com. Ali skrenuli smo.

Na jednom od sastanaka podsjetili su me na početak testiranja startup klub, tamo smo razgovarali i o formiranju tima. Nakon što sam otvorio popis testova, prvo sam sjeo na Javascript test. Općenito, zadaci su bili više-manje adekvatni (kao što će biti rezultat ako zbrojite 1 + '1' u konzoli). Ali iz mog iskustva, koristio bih takve testove pri zapošljavanju za posao ili tim s vrlo velikim rezervama. Činjenica je da se u stvarnom radu programer rijetko susreće s takvim stvarima, s njegovom sposobnošću brzog debugiranja koda - to znanje ni na koji način ne korelira, a za takve stvari se možete prilično lako istrenirati za intervjue (znam po sebi). Općenito, test sam prošao prilično brzo, u nekim sam slučajevima sam provjerio u konzoli. U python testu zadaci su bili otprilike istog tipa, testirao sam se i u konzoli i iznenadio sam se što sam dobio više bodova nego u JS-u, iako nikad nisam profesionalno programirao u Pythonu. Kasnije sam u razgovoru sa sudionicima čuo priče o tome kako su jaki programeri imali niske ocjene na testovima, kako su neki ljudi dobivali pisma u kojima je pisalo da nisu prošli selekcijski proces za CPU, a onda su ih na njega ipak pozvali. Jasno je da tvorci ovih testova najvjerojatnije nisu ništa čuli teorija testa, niti o njihovoj pouzdanosti i valjanosti, niti o tome kako ih testirati, a ideja s testovima bila bi promašaj od samog početka, čak i da nismo uzeli u obzir glavni cilj hackathona. A glavni cilj hakiranja, kako sam kasnije saznao, bio je postaviti Guinnessov rekord, a testovi su mu bili u suprotnosti.

U nekom trenutku nakon položenih testova nazvali su me, pitali hoću li sudjelovati, razjasnili detalje i rekli mi kako da uđem u chat za odabir tima. Ubrzo sam ušla u chat i napisala ukratko o sebi. Na chatu se odvijao totalni trash, činilo se da se organizatori reklamiraju gomili nasumičnih ljudi koji nemaju veze s IT-om. Brojni menadžeri proizvoda “na razini Stevea Jobsa” (prava fraza iz podneska jednog sudionika) objavljivali 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 hackathonu, a onda smo u tim dodali djevojku za inspiraciju i rješavanje organizacijskih pitanja. Ne sjećam se zašto, ali uzeli smo temu "Cybersecurity Training" i uključili je u stazu "Science and Education 2". Prvi put sam se našao u timu od 4 jaka programera i prvi put sam osjetio koliko je lako pobijediti u takvom sastavu. Došli smo nespremni i svađali se do ručka i nismo se mogli odlučiti što bismo, mobilnu aplikaciju ili web. U bilo kojoj drugoj situaciji mislio bih da je to neuspjeh. Najvažnije nam je bilo shvatiti kako ćemo biti bolji od konkurencije, jer okolo je bilo puno timova koji su rezali testove, igrice cyber-sigurnosti i slično. Nakon što smo pogledali ovo i googlali programe i aplikacije za obuku, odlučili smo da će naša glavna razlika biti vatrogasne vježbe. Odabrali smo nekoliko značajki koje su nam bile zanimljive za implementaciju (registracija s e-poštom i provjerom lozinke protiv hakerskih baza podataka, slanje phishing e-poruka (u obliku pisama poznatih banaka), obuka društvenog inženjeringa u chatu). Nakon što smo odlučili što ćemo raditi i shvatili kako se možemo istaknuti, brzo smo napisali potpunu web aplikaciju, a ja sam igrao neobičnu ulogu backend developera. Tako smo sigurno osvojili svoju stazu i u sklopu još tri ekipe plasirali se u finale u Kazanu. Kasnije sam u Kazanu saznao da je izbor za finale fikcija, tamo sam sreo mnoga poznata lica iz ekipa koje nisu prošle selekciju. Čak su nas intervjuirali i novinari Prvog kanala. Međutim, u izvješću s njega naša aplikacija prikazana je samo 1 sekundu.

Digitalni proboj - kako se dogodio
Snježni tim, gdje sam osvojio regionalnu fazu

Finale (Kazan, 27. – 29. rujna 2019.)

Ali onda su počeli neuspjesi. Svi programeri iz tima Snowed unutar otprilike mjesec dana, jedan za drugim, javili su se da neće moći ići u Kazan na finale. I razmišljao sam o pronalaženju novog tima. Prvo sam se javio u opći chat Russian Hack Teama i iako sam tamo dobio dosta odgovora i poziva za pridruživanje timovima, nijedan nije privukao moju pažnju. Bilo je neuravnoteženih timova, kao što su product, mobile developer, front-end, koji podsjećaju na labuda, raka i štuku iz bajke. Bilo je i timova koji mi tehnološki nisu odgovarali (npr. s razvojem mobilne aplikacije u Flutteru). Konačno, u chatu koji sam smatrao smećem (istom VKontakteu gdje se odvijao odabir timova za regionalnu pozornicu), objavljen je oglas o potrazi za frontdenderom za tim, a ja sam napisao čisto nasumično. Ispostavilo se da su dečki diplomirani studenti Skoltecha i odmah su ponudili susret i upoznavanje. Svidjelo mi se, timovi koji se radije upoznaju odmah na hackathonu obično me alarmiraju nemotiviranošću. Upoznali smo se u "Rake" na Pyatnitskaya. Dečki su mi djelovali pametni, motivirani, sigurni u sebe i pobjedu i tu sam odlučio. Nismo još znali koje će staze i zadaci biti u finalu, ali smo pretpostavili da ćemo odabrati nešto vezano za Machine Learning. A moj će zadatak biti napisati administratora za ovu stvar, tako da sam unaprijed pripremio predložak za ovo na temelju antd-admina.
U Kazan sam išao besplatno, o trošku organizatora. Moram reći da je u chatovima i blogovima već iskazano dosta nezadovoljstva oko kupnje ulaznica i općenito organizacije finala, neću sve prepričavati.

Nakon što smo stigli na Kazan Expo, registrirali se (malo sam se mučio s bedžom) i doručkovali, krenuli smo birati stazu. Na svečano otvaranje, gdje su govorili dužnosnici, otišli smo samo 10-ak minuta, zapravo već smo imali željene staze, ali su nas zanimali detalji. U trasi broj 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 staze br. 8 Defektoskopija cjevovoda, Gazprom Neft PJSC i staze br. 13 Perinatalni centri, Računska komora Ruske Federacije. U oba slučaja bila je potrebna Data Science, au oba slučaja mogao se dodati web. U stazi br. 13 zaustavila nas je činjenica da je tamo zadatak Data Science bio dosta slab, bilo je potrebno analizirati Rosstat i nije bilo jasno je li potrebna administrativna ploča. I sama vrijednost zadatka bila je upitna. Na kraju smo zaključili da nam kao ekipi više odgovara staza 8, pogotovo jer su dečki već imali iskustva u rješavanju sličnih problema. Započ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 koje zanimaju tehničke informacije i menadžere kojima trebaju financijski pokazatelji. Kad se pojavila ideja o scenariju, postalo je jasno što raditi na prednjem dijelu, što bi dizajner trebao nacrtati i koje su metode potrebne na stražnjem dijelu, postalo je moguće raspodijeliti zadatke. Obaveze u timu bile su raspoređene na sljedeći način: dvoje ljudi je rješavalo ML s podacima dobivenim od tehničkih stručnjaka, jedna osoba je napisala backend u Pythonu, ja sam napisao front end u Reactu i Antd-u, dizajner je nacrtao sučelja. Čak smo i sjeli kako bi nam bilo zgodnije komunicirati dok rješavamo probleme.

Prvi dan je proletio gotovo nezapaženo. U komunikaciji s tehničkim stručnjacima pokazalo se da su oni (Gazprom Neft) već riješili ovaj problem, samo su se pitali može li se to bolje riješiti. Neću reći da mi je to smanjilo motivaciju, ali ostavilo je talog. Iznenadilo me da su noću moderatori rubrike primijetili radne timove (kako su rekli za statistiku); to se obično ne prakticira na hackathonima. Do jutra smo imali prototip prednje strane, neke rudimente stražnje strane i prvo ML rješenje spremno. Općenito, već je bilo nešto za pokazati stručnjacima. U subotu poslijepodne, dizajner je očito nacrtao više sučelja nego što bih ja imao vremena za kodiranje i prebacio se na izradu prezentacije. Subota je bila predviđena za upis rekorda, a ujutro su svi koji su radili u dvorani izbačeni u hodnik, potom se ulazak i izlazak iz dvorane obavljao pomoću bedževa, a izlaziti se nije moglo više. od sat vremena dnevno. Neću reći da nam je to uzrokovalo značajne neugodnosti; veći dio dana i dalje smo sjedili i radili. Hrana je, doista, bila vrlo oskudna, za ručak smo dobili čašu juhe, pitu i jabuku, ali to nas opet nije previše uznemirilo, bili smo usmjereni na nešto drugo.

Povremeno su davali red bull, dvije limenke na ruku, što je bilo od velike pomoći. Recept za energetski napitak + kava, koji je dugo bio testiran na hackathonima, omogućio mi je da kodiram cijelu noć i sljedeći dan, veseo kao čaša. Drugi dan smo, zapravo, samo dodali nove mogućnosti aplikaciji, izračunali financijske pokazatelje i počeli prikazivati ​​grafikone o statistici kvarova na autocestama. U našem zapisu nije bilo pregleda koda kao takvog; stručnjaci su procijenili rješenje problema u stilu kaggle.com, na temelju točnosti prognoze, a front end je procijenjen vizualno. Pokazalo se da je naše ML rješenje najtočnije, možda nam je to omogućilo da postanemo lideri. U noći sa subote na nedjelju radili smo do 2 ujutro, a onda otišli spavati u stan koji nam je služio kao baza. Spavali smo oko 5 sati, u nedjelju u 9 ujutro smo već bili na Kazan Expo. Nešto sam užurbano pripremao, ali najviše vremena su bile pripreme za predobranu. Predobrane su se odvijale u 2 toka, pred dva tima stručnjaka, a mi smo zamoljeni da govorimo posljednji, jer su nas oba tima stručnjaka željela saslušati. Ovo smo shvatili kao dobar znak. Aplikacija je prikazana s mog prijenosnog računala, s pokrenutog razvojnog poslužitelja; nismo imali vremena pravilno implementirati aplikaciju, no svi su učinili isto.

Uglavnom, sve je prošlo u najboljem redu, ukazivano nam je na točke u kojima bismo mogli unaprijediti svoju prijavu, au vremenu prije obrane čak smo pokušali neke od tih primjedbi i realizirati. I obrana je išla iznenađujuće glatko. Po rezultatima predobrane znali smo da smo bodovno ispred, prednjačili smo po točnosti rješenja, imali smo dobar front-end, dobar dizajn i, općenito, imali smo dobre osjećaji. Još jedan povoljan znak je da je djevojka moderator iz naše rubrike napravila selfie s nama prije ulaska u koncertnu dvoranu i tada sam posumnjao da bi ona mogla nešto znati))). No, nakon obrane nismo znali svoj rezultat, pa je vrijeme do proglašenja naše momčadi s pozornice prošlo malo napeto. Na pozornici su podijelili karton s natpisom 500000 rubalja, a svaka je osoba dobila vrećicu sa šalicom i baterijom za mobitel. Nismo uspjeli uživati ​​u pobjedi i proslaviti je kako treba, brzo smo večerali i taksijem otišli na vlak.

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

Po povratku u Moskvu intervjuirali su nas novinari NTV-a. Snimali smo cijeli sat na drugom katu kafića Kvartal 44 na Polyanki, ali vijesti su pokazale samo 10-ak sekundi.Na kraju krajeva, snažan napredak u odnosu na regionalnu pozornicu.

Ako sumiramo opće dojmove Digitalnog proboja, oni su sljedeći. Puno je novaca potrošeno na događaj, nikad prije nisam vidio hackathone takvih razmjera. Ali ne mogu reći da je to opravdano i da će se stvarno isplatiti. Značajan dio sudionika koji su došli u Kazan bili su jednostavno partijaneri koji nisu znali ništa učiniti vlastitim rukama i koji su bili prisiljeni postaviti rekord. Ne mogu reći da je konkurencija u finalu bila veća nego na regionalnom. Također, upitna je vrijednost i korisnost zadataka nekih staza. Neki problemi odavno su riješeni na industrijskoj razini. Kako se kasnije pokazalo, neke organizacije koje su provele tragove nisu bile zainteresirane za njihovo rješavanje. I tu priča još nije gotova, za pretakcelerator su odabrani vodeći timovi sa svake staze, a pretpostavlja se da će se pokazati prijelomnim startupovima. Ali još nisam spreman pisati o ovome, vidjet ćemo što će biti od toga.

Izvor: www.habr.com

Dodajte komentar