Digitální průlom - jak to bylo

To není první hackathon, který vyhrávám, ani první, o kterém píšu, a rozhodně to není první příspěvek na Habr, který se týká „Digitálního průlomu“. Ale nemohl jsem nepsat. Považuji své zkušenosti za dost unikátní, abych se o ně podělil. Pravděpodobně jsem jediný na tomto hackathonu, kdo vyhrál regionální kolo a finále v různých týmech. Chcete vědět, jak se to stalo? Vítejte pod kat.

Regionální kolo (Moskva, 27. – 28. července 2019).

Reklamu na „Digitální průlom“ jsem poprvé viděl někdy v březnu – dubnu tohoto roku. Samozřejmě jsem nemohl projít kolem tak velkého hackathonu a zaregistroval jsem se na webu. Tam jsem se také seznámil s podmínkami a programem soutěže. Ukázalo se, že abych se dostal na hackathon, musel jsem projít online testováním, které začínalo 16. května. A možná bych na to bez potíží zapomněl, protože mi nepřišel žádný e-mail s připomenutím o začátku testování. A musím říct, že všechny e-maily, které mi přišly od CP, se pravidelně dostávaly do spamu. I když jsem pokaždé klikl na tlačítko „není spam“. Nevím, jak se jim podařilo dosáhnout takového výsledku, já s rozesíláním na MailGun takový úspěch neměl. A o existenci služeb jako isnotspam.com kluci zřejmě vůbec nevědí. Ale odbočili jsme.

O začátku testování mi připomněli na jednom ze setkání startupového klubu, tam jsme také prodiskutovali utváření týmu. Když jsem otevřel seznam testů, hned jsem se pustil do testu z Javascriptu. Celkově byly úkoly více méně adekvátní (například, jaký výsledek dostaneme, když v konzoli sečteme 1 + '1'). Ale podle svého zkušenosti bych takové testy u výběru na práci nebo do týmu používal s velkými výhradami. Je to tím, že v reálné práci se programátor s takovými věcmi setkává zřídka, jeho schopnost rychle psát kód — tyto znalosti nijak nekorelují, a trénovat se na takové věci pro pohovory je možné relativně snadno (vím to sám). Celkově jsem test zvládl poměrně rychle, v některých případech jsem se ověřoval v konzoli. V testu z pythonu byly úkoly přibližně stejného typu, také jsem se ověřoval v konzoli, s překvapením jsem získal více bodů než u JS, přestože jsem v pythonu nikdy profesionálně neprogramoval. Poté jsem při komunikaci se účastníky slyšel příběhy, jak silní programátoři získávali nízké skóre v testech, jak některým lidem chodily e-maily o tom, že neprošli výběrem na CP, a přesto je na něj pozvali. Je jasné, že tvůrci těchto testů pravděpodobně neslyšeli nic o teorii testů, ani o jejich spolehlivosti a validitě, ani o tom, jak je ověřovat, a myšlenka s testy byla od začátku neúspěšná, i když nebereme v úvahu hlavní cíl hackathonu. A hlavním cílem hacku, jak jsem se později dozvěděl, bylo překonat rekord Guinnessovy knihy a testy tomu odporovaly.

V určitém okamžiku po absolvování testů mi zavolali, zeptali se, zda se chci zúčastnit, upřesnili detaily a řekli, jak se dostat do chatu pro výběr týmu. Brzy jsem se připojil do chatu a stručně napsal o sobě. V chatu panoval naprostý chaos, vytvářel se dojem, že organizátoři nalákali reklamou spoustu náhodných lidí, kteří nemají s IT nic společného. Mnozí produktoví manažeři „úrovně Steva Jobse“ (skutečná fráze z jedné prezentace účastníka) sdíleli příběhy o sobě, ale normální vývojáři nebyli k vidění. Měl jsem ale štěstí a brzy jsem se připojil k třem zkušeným JS programátorům. Sledovali jsme se navzájem na hackathonu, tehdy jsme do týmu přidali dívku pro inspiraci a řešení organizačních otázek. Už si ani nepamatuji proč, ale zvolili jsme téma „Vzdělávání v kybernetické bezpečnosti“ a dostali se s ním do trati „Věda a vzdělání 2“. Poprvé jsem byl v týmu ze 4 silných programátorů a poprvé jsem pocítil, jak snadné je vítězit ve takovém složení. Přišli jsme nepřipraveni a do oběda jsme se hádali a nemohli se dohodnout, jestli budeme dělat mobilní aplikaci, nebo web. V jakékoli jiné situaci bych si pomyslel, že je to tragédie. Nejdůležitější pro nás bylo pochopit, čím budeme lepší než konkurence, vždyť kolem bylo plno týmů, které tvořily testy a hry na téma kybernetické bezpečnosti a podobné věci. Dívaje se na to a googlujíce vzdělávací programy a aplikace, rozhodli jsme se, že naším hlavním odlišovacím znakem budou tréninky podle principu požární alarmu. Vybrali jsme celou řadu vlastností, které nám přišly zajímavé k realizaci (registrace s ověřením e-mailu a hesla v hackerových databázích, rozesílání phishingových e-mailů (ve formě zpráv od známých bank), tréninky na sociální inženýrství v chatu). Když jsme se shodli na tom, co děláme, a pochopili, čím se můžeme odlišit, poměrně rychle jsme napsali plnohodnotnou webovou aplikaci, přičemž jsem vystupoval v pro mě nezvyklé roli backendového vývojáře. Tak jsme bezpečně vyhráli naši trať a spolu s dalšími třemi týmy jsme postoupili do finále v Kazani. Až později, v Kazani, jsem se dozvěděl, že výběr do finále byla fikce, potkal jsem tam mnoho známých tváří z týmů, které tento výběr neabsolvovaly. Dokonce s námi udělali rozhovor novináři z 1. kanálu. Pravda, ve reportáži z něj jen na 1 sekundu ukázali naši aplikaci.

Digitální průlom - jak to bylo
Tým Snowed, ve kterém jsem vyhrál regionální kolo

Finále (Kazaň, 27. – 29. září 2019)

Ale poté přišly neúspěchy. Všichni programátoři z týmu Snowed mi během přibližně jednoho měsíce jeden po druhém oznámili, že se nemohou zúčastnit finále v Kazani. Začal jsem uvažovat o hledání nového týmu. Nejprve jsem napsal do obecného chatu ruského hack týmu, a i když jsem tam dostal dostatek reakcí a pozvánek do týmů, žádná z nich mě nezaujala. Byly tam nevyvážené týmy, jako například produktový manažer, mobilní vývojář, front-end vývojář, připomínající labuť, raka a štiku z bajky. Byly také týmy, které mi nevyhovovaly technologií (například s vývojem mobilní aplikace na Flutter). Nakonec, v chatu, který jsem považoval za nezajímavý (ten na Vkontakte, kde probíhalo sestavování týmů na regionální kolo), někdo zveřejnil inzerát na hledání front-end vývojáře do týmu, a já jsem prostě náhodně napsal. Kluci se ukázali jako studenti z Skoltechu a ihned navrhli setkání a seznámení. To se mi líbilo, týmy, které dávají přednost poznání ihned na hackathonu, obvykle mě znepokojují svou absencí motivace. Sešli jsme se v „Grablích“ na Pjatnické. Kluci mi přišli rozumní, motivovaní, sebejistí a přesvědčení o vítězství, a já jsem se hned rozhodl. Ještě jsme nevěděli, jaké budou trakce a úkoly ve finále, ale předpokládali jsme, že si vybereme něco spojeného s Machine Learning. Mým úkolem bude napsat k tomu administraci, proto jsem si připravil předem vzor na základě antd-admin.
Do Kazaně jsem jel zdarma, na náklady organizátorů. Je třeba říci, že v chatech a blozích již bylo vyjádřeno velmi mnoho nespokojenosti ohledně nákupu lístků a celkově organizace finále, nebudu to všechno přeposílat.

Po příjezdu na Kazan Expo, kde jsem se zaregistroval (při tom jsem měl drobné problémy s získáním odznaku) a posnídal, jsme šli vybírat track. Na slavnostní zahájení, kde vystupovali oficiální představitelé, jsme zavítali jen na 10 minut. Ve skutečnosti jsme již měli preferované tracky, ale zajímaly nás detaily. V tracku č. 18 (Rostelecom) se například ukázalo, že je třeba vyvinout mobilní aplikaci, přičemž v krátkém popisu to nebylo uvedeno. Hlavní volba byla mezi trackem č. 8 Defektoskopie potrubí, PAO „Gazprom neft“ a trackem č. 13 Perinatální centra, Nejvyšší účetní dvůr Ruské federace. V obou případech byl potřebný Data Science a obě možnosti by umožnily webovou komponentu. V tracku č. 13 nás zastavilo to, že úkol v oblasti Data Science byl tam poměrně slabý, bylo třeba parsovat Rosstat a nebylo jasné, zda je potřeba administrátorská zóna. A samotná hodnota úkolu vzbuzovala pochybnosti. Nakonec jsme se rozhodli, že jsme jako tým více zaměřeni na track č. 8, zejména proto, že kluci už měli zkušenosti s řešením podobných úloh. Začali jsme tím, že jsme promysleli scénář, podle kterého by naši koncoví uživatelé používali aplikaci. Ukázalo se, že budeme mít dva typy uživatelů: techniky, které zajímají technické informace, a manažery, kteří potřebovali finanční ukazatele. Když se objevila představa o scénáři, bylo jasné, co je potřeba udělat na frontendu, co nakreslit designerovi a jaké metody potřebujeme na backendu, což umožnilo rozdělit úkoly. Povinnosti v týmu se rozdělily následovně: dva lidé řešili ML s daty získanými od technických expertů, jeden člověk psal backend v Pythonu, já jsem psal frontend na Reactu a antd, designer navrhoval uživatelské rozhraní. Dokonce jsme si sedli tak, aby nám bylo pohodlněji komunikovat a řešit své úkoly.

První den uběhl prakticky nezpozorovaně. Během komunikace s technickými experty jsme zjistili, že tento úkol (pro "Gazprom Neft") je již vyřešen, jen je zajímalo, zda by to šlo udělat lépe. Neřekl bych, že to snížilo motivaci, ale zůstala po tom jistá pachuť. Udivilo mě, že v noci moderátoři sekcí vyhodnocovali pracující týmy (jak říkali pro statistiku), což na hackathonech obvykle není běžné. K ránu jsme měli hotový prototyp frontendu, některé základy backendu a první řešení ML. Celkově jsme už měli co ukázat expertům. Ve druhé polovině soboty designer nakreslil už zjevně více rozhraní, než bych stihl naprogramovat, a přešel na vytvoření prezentace. Sobota byla vyhrazena na registraci rekordu, a hned z rána vyhnali všechny pracující z místnosti na chodbu, poté se vstup a výstup z místnosti prováděl přes odznaky, přičemž za den bylo možné vyjít maximálně na hodinu. Neřekl bych, že nám to způsobilo nějaké zásadní potíže, většinu dne jsme sice stejně seděli a pracovali. Strava byla opravdu velmi skromná, na oběd jsme dostali kelímek s vývarem, koláček a jablko, ale opět nás to příliš nerozrušilo, byli jsme soustředění na něco jiného.

Občas nám dávali red bull, po dvě plechovky na ruku, to přišlo velmi vhod. Už dávno osvědčený recept na hackathonech energetik + káva umožnil kódovat celou noc a následující den, být bdělí jako sklo. Druhý den jsme už v podstatě jen přidávali na aplikaci nové funkce, udělali jsme výpočet finančních ukazatelů, začali jsme zobrazovat grafy o statistice chyb v trasách. Na našem sledu nebylo žádné code review, odborníci hodnotili řešení úkolu ve stylu kaggle.com, podle přesnosti predikcí, a frontend byl hodnocen vizuálně. Naše ML řešení se ukázalo jako nejpřesnější, možná to nám pomohlo dostat se do čela. V noci ze soboty na neděli jsme pracovali do 2 hodin ráno, a pak jsme jeli spát do bytu, který jsme používali jako základnu. Spali jsme asi 5 hodin, v neděli v 9 ráno jsme už byli v Kazan Expo. Něco jsem spěšně dodělával, ale většinu času zabralo příprava na předobhajobu. Předobhajoby probíhaly ve 2 tocích, před dvěma týmy odborníků, požádali nás, abychom vystoupili jako poslední, protože obě týmy odborníků chtěly nás slyšet. Vzali jsme to jako dobré znamení. Aplikaci jsme ukazovali z mého notebooku, z běžícího dev serveru, normálně nasadit aplikaci jsme nestihli, ale to dělali všichni.

Celkově to proběhlo dobře, ukázali nám na momenty, kde jsme mohli zlepšit naši aplikaci, a během času před obhajobou jsme se dokonce pokusili něco z těchto poznámek realizovat. Obhajoba také proběhla překvapivě hladce. Na konci předobhajoby jsme věděli, že podle bodů jsme vpředu, vedli jsme v přesnosti řešení, měli jsme dobrý frontend, dobrý design a celkově jsme měli dobré pocity. Dalším příznivým znamením bylo, že moderátorka z naší sekce si před vchodem do koncertního sálu udělala selfie s námi, tehdy jsem podezříval, že možná něco ví))). Ale my jsme podle obhajoby své body neznali, takže čas do chvíle, kdy naše tým bylo vyhlášeno na pódiu, probíhal trochu napjatě. Na pódiu nám předali kartonku s nápisem 500000 rublů a každému balíček s hrníčkem a nabíječkou pro mobil. Užívat si vítězství a řádně to oslavit se nepodařilo, rychle jsme povečeřeli a jeli taxi na vlak.

Digitální průlom - jak to bylo
Tým WAICO vítězí ve finále

Po návratu do Moskvy jsme poskytli rozhovor novinářům z NTV. Natáčeli celou hodinu ve druhém patře kavárny „Kvartal 44“ na Poljance, ale v novinách ukázali jen asi 10 sekund. Jak jinak, silný pokrok ve srovnání s regionálním etapou.

Pokud shrnu obecné dojmy z Digitálního průlomu, jsou následující. Na akci byly investovány prostě šílené peníze, ještě jsem neviděl hackathony takového rozsahu. Ale říct, že to je oprávněné a že se to skutečně vyplatí, nemohu. Významná část účastníků, kteří přijeli do Kazaně, byli prostě party lidé, kteří neuměli nic dělat vlastníma rukama, a byli sem nahnáni k vytvoření rekordu. Nemohu říct, že konkurence ve finále byla vyšší než na regionální fázi. Hodnota a užitečnost některých úkolů některých tracků také vyvolává pochybnosti. Některé úkoly byly již dávno vyřešeny na průmyslové úrovni. Jak se později ukázalo, některé organizace, které vedly tracky, neměly ani zájem o jejich řešení. A tato historie ještě neskončila, týmy lídrů z každého tracku byly vybrány do preakcelerátoru, a očekává se, že se z nich stanou PRŮLOMOVÉ startupy. Ale psát o tom zatím nejsem připraven, uvidíme, co z toho bude.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster