Digitalni preboj — kako je to bilo

To ni prvi hackathon, ki sem ga zmagal, niti prvi, o katerem pišem, in to še zdaleč ni prvi post na Habr-u, posvečen "Digitalni preboju". A o tem ne morem molčati. Menim, da je moja izkušnja dovolj edinstvena, da jo delim. Verjetno sem edini na tem hackathonu, ki je zmagal regionalni del in finale v okviru različnih ekip. Želite izvedeti, kako se je to zgodilo? Dobrodošli pod kat.

Regionalni del (Moskva, 27. — 28. julij 2019).

O oglasu za "Digitalni preboj" sem prvič slišal nekje marca — aprila tega leta. Seveda nisem mogel mimo tako velikega hackathona in sem se registriral na spletni strani. Tam sem se tudi seznanil s pogoji in programom tekmovanja. Izkazalo se je, da je bilo za udeležbo na hackathonu potrebno opraviti spletno testiranje, ki se je začelo 16. maja. In morda bi to brezskrbno pozabil, saj mi opomnik o začetku testiranja ni prišel. In treba je povedati, da so VSA SPOROČILA, ki so prišla od CP, redno končala v mapi neželena pošta. Čeprav sem vsakič pritisnil gumb "ni neželeno". Ne vem, kako so dosegli tak rezultat, jaz s pošiljanjem preko MailGun nisem imel take sreče. O obstoju storitev, kot je isnotspam.com, pa se zdi, da fantje sploh ne vedo. Toda odklonili smo se.

O začetku testiranja so me spomnili na enem od srečanj startup kluba, tam smo tudi razpravljali o oblikovanju ekipe. Ko sem odprl seznam testov, sem se najprej lotil testa o JavaScriptu. Na splošno so bila naloga bolj ali manj sprejemljiva (na primer, kakšen rezultat bo, če v konzoli sešteješ 1 + '1'). Vendar pa glede na svoje izkušnje ne bi uporabljal takšnih testov pri iskanju zaposlitve ali oblikovanju ekipe brez izjemnih pomislekov. Dejstvo je, da se programer v realnem svetu redko srečuje s takšnimi stvarmi, njegove sposobnosti hitrega kodiranja ne korrelirajo s temi znanji, poleg tega pa se je za take testi za razgovore mogoče dokaj enostavno pripraviti (vem iz lastne izkušnje). Na splošno sem test preskočil precej hitro, v nekaterih primerih sem se preverjal v konzoli. V testu o pythonu so bile naloge približno enake, prav tako sem se preverjal v konzoli in s presenečenjem dobil več točk kot pri JS, čeprav nikoli nisem profesionalno programiral v Pythonu. Kasneje sem v pogovoru z udeleženci slišal zgodbe, kako so močni programerji dosegli nizke rezultate na testih, kako so nekaterim ljudem prišla sporočila, da niso prestali izbire za CP, kljub temu pa so jih vseeno povabili. Jasno je, da verjetno ustvarjalci teh testov niso slišali niti za teorijo testov, niti za njihovo zanesljivost in veljavnost, niti za to, kako jih preizkusiti, in ideja o testih bi bila od začetka neuspešna, četudi ne upoštevamo glavne cilje hackatona. Glavni cilj hacka, kot sem kasneje izvedel, je bil postaviti Guinnessov rekord, kar je bilo v nasprotju s testi.

Nekoliko trenutaka nakon što su završili testove, nazvali su me, pitali hoću li učestvovati, razjasnili detalje i rekli kako da se priključim četu za formiranje tima. Ubrzo sam ušao u čat i ukratko napisao o sebi. U četu je vladala potpuna zbrka, stekao sam utisak da su organizatori doveli mnogo nasumičnih ljudi koji nemaju veze s IT-jem. Brojni produkt menadžeri "nivoa Stiva Džobsa" (stvarna fraza iz jednog predstavljanja učesnika) postavljali su priče o sebi, dok pravih programera gotovo da nije bilo. Ali imao sam sreće, i ubrzo sam se pridružio trojici iskusnih JS programera. Upoznali smo se na hakatonu, tada smo dodali devojku za inspiraciju i rešavanje organizacionih pitanja. Već se ne sećam zašto, ali odabrali smo temu "Obuka o sajber bezbednosti" i sa njom smo se našli u traku "Nauka i obrazovanje 2". Prvi put sam bio u timu od 4 jaka programera i prvi put sam osetio koliko je lako pobediti u takvom sastavu. Došli smo nespremni i do ručka razgovarali i nismo mogli da se odlučimo šta ćemo raditi: mobilnu aplikaciju ili veb. U bilo kojoj drugoj situaciji pomislio bih da je to neuspeh. Najvažnije za nas je bilo razumeti čime ćemo se izdvojiti od konkurencije, pošto je svuda bilo puno timova koji su radili testove, igre o sajber bezbednosti i slične stvari. Gledajući to i pretražujući obučne programe i aplikacije, odlučili smo da će naša glavna karakteristika biti obuke po principu alarmne situacije. Odabrali smo niz funkcionalnosti koje su nam se učinile zanimljivim za implementaciju (registracija sa verifikacijom emaila i lozinke prema hakerskim bazama, slanje phishing emailova (u obliku poruka od poznatih banaka), obuke o socijalnom inženjeringu u čatu). Kada smo se dogovorili šta radimo i shvatili čime možemo da se istaknemo, brzo smo napisali potpuno veb aplikaciju, pri čemu sam ja igrao neobičnu ulogu backend programera. Tako smo sigurnom pobedom osvojili svoj trak i zajedno sa još tri tima odabrali se za finale u Kazan. Kasnije, u Kazanu, saznao sam da je odabir za finale bio fiktivan, sreo sam mnogo poznatih lica iz timova koji nisu prošli tu selekciju. Čak su nas intervjuisali novinari sa 1. kanala. Istina, u izveštaju je na sekundu prikazano naše aplikacija.

Digitalni preboj — kako je to bilo
Ekipa Snowed, s katero sem zmagal na regionalnem tekmovanju

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

Toda nato so se začeli neuspehi. Vsi programerji iz ekipe Snowed so približno en mesec, eden za drugim, sporočili, da ne morejo priti v Kazan na finale. Zato sem začel razmišljati o iskanju nove ekipe. Sprva sem povabil v skupnem klepetu reprezentance Russian Hack Team, in čeprav sem tam prejel kar precej odzivov in povabil k ekipam, me ni nobena od njih pritegnila. Bile so neuravnotežene ekipe, kot na primer, produktni razvijalec, mobilni razvijalec, frontend razvijalec, spominjajo na laboda, raka in ščuko iz basni. Bile so tudi ekipe, ki mi niso ustrezale tehnološko (na primer, z razvojem mobilne aplikacije na Flutter). Nato je v klepetu, ki sem ga imel za neuporabnega (tisti na Vkontakte, kjer je potekalo iskanje ekip za regionalno fazo), objavili oglas za iskanje frontend razvijalca, in kar na pamet sem napisal. Fantje so se izkazali za študente višje šole in takoj so predlagali srečanje in spoznavanje. To mi je bilo všeč, ekipe, ki se raje spoznajo takoj na hackathonu, ponavadi vzbujajo dvome glede svoje motivacije. Srečali smo se v 'Grabljah' na Pjatnicki. Fantje so se mi zdeli razumni, motivirani, samozavestni in prepričani v zmago, zato sem se tam odločil. Še nismo vedeli, kakšni bodo trakovi in naloge na finalu, vendar smo predvidevali, da bomo izbrali nekaj v zvezi z Strojno učenjem. Moja naloga bo, da pripravim administrativno orodje za to, zato sem si vnaprej pripravil osnutek na osnovi antd-admin.
V Kazan sem odšel brezplačno, na stroške organizatorjev. Moram reči, da je bilo v klepetih in blogih že izraženega veliko nezadovoljstva glede nakupa vstopnic in na splošno organizacije finala, ne bom vsega tega ponavljal.

Po prihodu v Kazan Expo, po registraciji (pri čemer sem imel nekaj težav z pridobivanjem značke) in z zajtrkom, smo šli izbrati sled. Na slavnostno odprtje, kjer so nastopali uradniki, smo vstopili le za 10 minut. V resnici smo imeli že prednostne sledove, a so nas zanimali podrobnosti. V sledu št. 18 (Rostelecom) se je izkazalo, da je treba razviti mobilno aplikacijo, čeprav tega v kratkem opisu ni bilo. Glavni izbor smo delali med sledom št. 8, Defektoskopija plinovodov, PAO „Gazprom Neft“, in sledom št. 13, Perinatavni centri, Računsko sodišče RF. Tako tam kot tam je bilo potrebno Data Science, in tam kot tam bi bilo možno dodati splet. V sledu št. 13 nas je ustavila dejstvo, da je bila naloga glede Data Science dokaj šibka, treba je bilo parsati rosstat in ni bilo jasno, ali potrebujemo administracijo. Tudi sama vrednost naloge se je zdel dvomljiva. Na koncu smo se odločili, da je naša ekipa bolj usmerjena v sled 8, še posebej, ker so imeli fantje že izkušnje pri reševanju podobnih nalog. Začeli smo s tem, da smo premišljevali o scenariju, po katerem bo naše aplikacijo uporabljal končni uporabnik. Izkazalo se je, da bosta dva tipa uporabnikov: tehnični strokovnjaki, ki jih zanima tehnična informacija, in menedžerji, ki so potrebovali finančne kazalnike. Ko je obstajala predstava o scenariju, je postalo jasno, kaj narediti na frontu, kaj narisati oblikovalcu in kateri pristopi so potrebni na zadnji strani, kar je omogočilo razporeditev nalog. Naloge v ekipi so se razdelile na naslednji način: dva človeka sta reševala ML s podatki, ki so jih pridobili od tehničnih strokovnjakov, eden je pisal backend v Pythonu, jaz sem pisal front v Reactu in antd, oblikovalec je risal vmesnike. Tudi smo sedeli tako, da nam je bilo lažje komunicirati in reševati svoje naloge.

Prvi dani su gotovo prošli neprimetno. U razgovoru sa tehničkim ekspertima saznali smo da je ovaj zadatak već rešen od strane njih ("Gazprom Neft"), samo im je bilo zanimljivo da vide može li se rešenje poboljšati. Neću reći da je to smanjilo motivaciju, ali utisak je ostao. Iznenadilo je što su noću moderatori sekcija obeležavali radne timove (kako su to nazivali za statistiku), obično se to ne praktikuje na hakatonima. Do jutra je bio spreman prototip interfejsa, neki osnovi backend-a, prvo rešenje ML-a. U svakom slučaju, već smo imali šta da pokažemo ekspertima. U drugoj polovini dana subote, dizajner je nacrtao unapred više interfejsa nego što bih ja uspeo da isprogramiram i prešao na izradu prezentacije. Subota je bila rezervisana za registrovanje rekorda, a ujutro su nas sve koji smo radili u sali izbacili u hodnik, zatim je ulaz i izlaz iz sale vršen uz bedževe, a izlazak tokom dana je bio moguć najviše na sat vremena. Neću reći da nam je to prouzrokovalo neke značajne neprijatnosti, veći deo dana smo svejedno sedeli i radili. Ishrana je zaista bila veoma oskudna, za ručak smo dobili čašu bujona, piroški i jabuku, ali opet, to nas nije previše uzrujavalo, bili smo fokusirani na nešto drugo.

Periodično smo dobijali red bull, po dve limenke po osobi, što je bilo veoma korisno. Već je dugo poznata receptura za energetski napitak + kafu, koja nam je omogućila da kodiramo celu noć i sledeći dan, buduci kao prozračni. Drugog dana smo, ustvari, samo dodavali nove funkcionalnosti aplikaciji, napravili smo proračun finansijskih pokazatelja i počeli da prikazujemo grafove za statistiku grešaka u magistralnim sistemima. Nije bilo pravog code review-a u našoj grupi; eksperti su ocenjivali rešenje problema u stilu kaggle.com, prema preciznosti prognoze, dok se frontend vizuelno procenjivao. Naše ML rešenje se pokazalo kao najpreciznije, možda je to omogućilo da postanemo lideri. U noći između subote i nedelje radili smo do 2 sata u noći, a zatim otišli da spavamo u stan koji smo koristili kao bazu. Spavali smo oko 5 sati, a u nedelju u 9 ujutro, već smo bili u Kazan Ekspo. Nešto sam brzo dovršavao, ali većinu vremena sam proveo pripremajući se za predzaštitu. Predzaštite su se održavale u dva toka, ispred dve ekipe stručnjaka, zamolili su nas da budemo poslednji, jer su obe ekipe želele da nas čuju. To smo shvatili kao dobar znak. Aplikaciju smo prikazivali sa mog laptopa, sa pokrenutog dev servera, nismo uspeli normalno da deploy-ujemo aplikaciju, ali smo to svi radili.

U celini, sve je prošlo dobro, ukazali su nam na aspekte na kojima smo mogli poboljšati našu aplikaciju, i tokom vremena do zaštite pokušali smo da implementiramo neka od njihovih zapažanja. Zaštita je takođe iznenađujuće prošla glatko. Na kraju predzaštite znali smo da smo po bodovima ispred, liderovali smo po preciznosti rešenja, imali smo dobar frontend, dobar dizajn i generalno, imali smo dobra osećanja. Još jedan povoljan znak bio je to što je devojka moderator iz naše sekcije, pre ulaska u koncertnu dvoranu, napravila selfie s nama, tad sam posumnjao da možda nešto zna))). Ali mi nismo znali svoje bodove nakon odbrane, tako da je vreme do trenutka kada je naša ekipa objavljena sa scene prošlo pomalo napeto. Na sceni je dodeljena karton sa natpisom 500000 rubalja i svakom paket sa šoljom i punjačem za mobilni. Nismo uspeli da uživamo u pobedi i da je normalno proslavimo, brzo smo večerali i otišli taksijem do voza.

Digitalni preboj — kako je to bilo
Tim WAICO pobedjuje u finalu

Po vrnitvi v Moskvo so nas intervjuvali novinarji NTV. Snemali so celo uro v drugem nadstropju kavarne „Kvartal 44“ na Poljanki, a so v novicah predvajali le približno 10 sekund. Na nek način je to velik napredek v primerjavi z regionalnim korakom.

Če povzamem splošne vtise o Digitalnem preboju, so ti naslednji. Na dogodek je bilo porabljenih neverjetno veliko denarja, še nikoli nisem videl hackathonov takšnega obsega. Vendar ne morem trditi, da je to upravičeno in da se bo resnično povrnilo. Znatni del udeležencev, ki so prišli v Kazan, so bili zgolj zabavljači, ki ne znajo narediti ničesar s svojimi rokami, in so bili pripeljani zgolj za postavitev rekorda. Ne morem reči, da je bila konkurenca v finalu boljša kot na regionalnem koraku. Tudi vrednost in uporabnost nekaterih nalog v določenih področjih sta postavljeni pod vprašaj. Nekatere naloge so bile že zdavnaj rešene na industrijski ravni. Kot se je izkazalo kasneje, nekatere organizacije, ki so vodile področja, niso bile niti zainteresirane za njihovo reševanje. In ta zgodba še ni končana, vodilne ekipe s vsakega področja so bile izbrane za preakselerator, domneva se, da bodo iz njih nastali PREBOJNI start-upi. Vendar o tem še ne morem pisati, videli bomo, kaj bo iz tega nastalo.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster