Ez nem az első hackathon, amit megnyerek, és nem az első, amiről , és messze nem ez az első bejegyzés a Habr-on, amely a "Digitális áttörésről" szól. De nem tudtam nem írni róla. Úgy gondolom, hogy az élményem elég egyedi ahhoz, hogy megosszam. Valószínűleg én vagyok az egyetlen ezen a hackathonon, aki különböző csapatokban nyerte meg a regionális szakaszt és a döntőt. Szeretnéd tudni, hogyan történt? Üdvözöllek a továbbiakban.
Regionális szakasz (Moszkva, 2019. július 27-28).
A "Digitális áttörés" reklámját először valamikor idén március-április környékén láttam. Természetesen nem tudtam elmenni egy ilyen nagy hackathon mellett, és regisztráltam a honlapon. Ott ismerkedtem meg a versenyfeltételekkel és a programmal. Kiderült, hogy ahhoz, hogy részt vegyek a hackathonon, át kellett mennem egy online tesztelésen, ami május 16-án kezdődött. És lehet, hogy erről boldogan megfeledkeztem volna, mivel a tesztelés kezdetéről szóló emlékeztető levél nem érkezett meg. Azt is el kell mondanom, hogy később MINDEN LEVÉL, amelyet a CP-től kaptam, stabilan a spam mappába került. Bár minden alkalommal megnyomtam a "nem kéretlen" gombot. Nem tudom, hogyan sikerült nekik ezt elérni, nekem a MailGun levelezés sosem sikerült így. A srácok pedig úgy tűnik, egyáltalán nem tudnak a isnotspam.com típusú szolgáltatásokról. De eltértünk a témától.
A tesztelés kezdetéről egyik találkozón emlékeztettek meg , ott beszéltük meg a csapat kialakítását is. A tesztlista megnyitásakor első lépésként a Javascript tesztbe mélyedtem. Összességében a feladatok többé-kevésbé adekvátok voltak (például, mi lesz az eredmény, ha a konzolban 1 + '1'-et adunk össze). De a tapasztalataim alapján nagyon nagy fenntartásokkal kezdeném el használni az ilyen teszteket a munkavállalás vagy a csapatba való bejutás során. Az a helyzet, hogy a való életben a programozónak ritkán kell ilyen helyzetekkel foglalkoznia, és a gyors kódírási képessége – ezek a tudások egyáltalán nem korrelálnak, és ezekre a feladatokra való felkészülés a munkainterjúkra meglehetősen könnyű (tapasztalatból tudom). Összességében viszonylag gyorsan túlestem a teszten, néhány esetben konzolon ellenőriztem magam. A python tesztben a feladatok hasonló típusúak voltak, szintén magam ellenőriztem a konzolon, és meglepetésemre több pontot szereztem, mint a JS-nél, bár pythonban soha nem programoztam professzionálisan. Később a résztvevőkkel való beszélgetés során hallottam történeteket arról, hogy erős programozók alacsony pontszámokat értek el a teszteken, hogy egyes emberek leveleket kaptak arról, hogy nem sikerült a kiválasztási folyamatuk, majd mégis meghívták őket. Nyilvánvaló, hogy a teszt készítői valószínűleg egyáltalán nem hallottak sem a , sem a megbízhatóságáról és érvényességéről, sem arról, hogyan kell tesztelni őket, és a tesztekkel kapcsolatos elképzelés eredetileg kudarcra volt ítélve, még akkor is, ha nem vesszük figyelembe a hackathon fő célját. A hack fő célja, ahogy később megtudtam, a Guinness-rekord felállítása volt, és a tesztek ellentmondtak ennek.
Egy idő után, miután elvégeztem a teszteket, felhívtak, megkérdezték, hogy részt veszek-e, tisztázták a részleteket, és elmondták, hogyan lehet csatlakozni a csapatkereső chathez. Pár nap múlva beléptem a chatbe, és röviden írtam magamról. A chatben totális káosz uralkodott, úgy tűnt, hogy a szervezők sok véletlenszerű embert hoztak össze reklámmal, akiknek semmi közük nincs az IT-hoz. Számos "Steve Jobs szintű" termékmenedzser (valódi kifejezés egy résztvevő bemutatójából) mesélte el a történetét, míg a normális fejlesztők szinte láthatatlanok voltak. De nekem szerencsém volt, és hamarosan három tapasztalt JS-programozóhoz csatlakoztam. Már a hackathonon ismerkedtünk meg egymással, akkor felvettünk a csapatba egy lányt inspirációért és szervezési kérdések megoldásához. Már nem emlékszem, miért, de a "Kyberbiztonsági képzés" témát választottuk, és ezzel bekerültünk a "Tudomány és oktatás 2" pályára. Először voltam egy 4 erős programozóból álló csapatban, és először éreztem, milyen könnyű nyerni ilyen összetételben. Felkészületlenül érkeztünk, és dél előtt vitatkoztunk arról, hogy mit fogunk csinálni: mobilalkalmazást vagy webalkalmazást. Bármilyen más helyzetben azt gondoltam volna, hogy ez egy kudarc. Számunkra a legfontosabb dolog az volt, hogy megértsük, miben leszünk jobbak a versenytársaknál, hiszen körülöttünk sok csapat dolgozott teszteken, kiberbiztonsági játékokon és hasonló dolgokon. Ezt nézve és oktatási programokat, alkalmazásokat googlizva arra jutottunk, hogy a fő megkülönböztető jegyünk a tűzriadó elve szerinti edzés lesz. Egy sor olyan funkciót válogattunk össze, amelyek érdekesnek tűntek számunkra a megvalósítás szempontjából (regisztráció e-mail és jelszó ellenőrzésével hackerek adatbázisaiban, phishing e-mailek küldése (bankok nevében történő levelezés), közösségi mérnöki tréning chaten). Miután eldöntöttük, hogy mit csinálunk és megértettük, miben tudunk kitűnni, viszonylag gyorsan megírtunk egy teljes értékű webalkalmazást, és én egy számomra szokatlan backend fejlesztői szerepet játszottam. Ezért magabiztosan nyertük meg a saját pályánkat, és még három másik csapat mellett bejutottunk a döntőbe Kazányba. Később, Kazányban megtudtam, hogy a döntőbe való bejutás fiktív volt, találkoztam sok ismerős arccal olyan csapatokból, akik nem jutottak el oda. Még interjút is készítettek velünk az 1. csatorna újságírói. Igaz, a riportban csak 1 másodpercig mutatták meg az alkalmazásunkat.

A Snowed csapat tagjaként nyertem meg a regionális fordulót
Döntő (Kazan, 2019. szeptember 27-29.)
De ezután kudarcok jöttek. A Snowed csapat összes programozója körülbelül egy hónapig, egymás után, jelezte, hogy nem tud eljönni Kazanba a döntőre. És elkezdtem új csapatot keresni. Először is hírt adtam a Russian Hack Team közös chataiban, és bár számos visszajelzést és meghívást kaptam más csapatokból, egyik sem keltette fel az érdeklődésemet. Voltak kiegyensúlyozatlan csapatok, mint pl. egy termékfejlesztő, mobilfejlesztő, frontend fejlesztő, ami emlékeztet a hattyúra, rákra és csukára a mesében. Voltak olyan csapatok is, amelyek nem álltak kapcsolatban a technológiámmal (például Flutter alkalmazás fejlesztésével). Végül egy chaten, amelyet trehának gondoltam (az a VK chat, ahol a regionális csapatok kiválasztása zajlott), megjelent egy hirdetés frontend fejlesztő kereséséről, és véletlenül írtam rá. A srácok a Skoltech doktori hallgatói voltak, és azonnal felajánlották, hogy találkozzanak és megismerjenek. Tetszett, hogy azok a csapatok, amelyek azonnal a hackathonon szeretnek ismerkedni, általában aggasztanak az motiváció hiánya miatt. Találkoztunk a "Grably"-ban a Pjatnickán. A fiúk értelmesnek, motiváltnak és magabiztosnak tűntek, és ott helyben meghoztam a döntést. Még nem tudtuk, mik lesznek a témák és feladatok a döntőben, de azt feltételeztük, hogy valami a gépi tanulással lesz kapcsolatos. Az én feladatom az volt, hogy létrehozzak egy admin felületet erre, ezért előre készítettem egy mintát az antd-admin alapján.
Kazanba ingyen mentem, a szervezők költségén. Meg kell mondjam, hogy a chatekben és blogokban már nagyon sok elégedetlenség hangzott el a jegyvásárlással és a döntő általános szervezésével kapcsolatban, nem fogom ezt mind újra elmondani.
Miután megérkeztünk a Kazan Expo-ba, regisztráltunk (már voltak kisebb problémáim a névjegy megszerzésével) és reggeliztünk, elindultunk a pálya kiválasztására. Az ünnepélyes megnyitóra, ahol hivatalos személyek léptek fel, csak 10 percre mentünk be. Valójában már voltak preferált pályáink, de az részletek érdekelték minket. A 18-as pályán (Rostelekom) például kiderült, hogy mobilalkalmazást kell fejleszteni, pedig a rövid leírásban ez nem szerepelt. A fő választásunk a 8-as pálya, a csődekektálás, a PAO „Gazprom Neft” és a 13-as pálya, a perinatális központok, az Orosz Föderáció Számvevőszéke között zajlott. Mindkét esetben szükség volt Data Science-re, és mindkét esetben integrálható lett volna a web. A 13-as pályán megállított minket, hogy a Data Science feladat meglehetősen gyenge volt, statisztikai adatokat kellett parse-olni, és nem volt világos, szükség van-e adminisztrációs felületre. Ráadásul magának a feladatnak az értéke is kétségeket ébresztett. Végül úgy döntöttünk, hogy csapatként inkább a 8-as pályára vagyunk hajlamosak, ráadásul a fiúk már tapasztalták az ilyen feladatok megoldását. Azzal kezdtük, hogy átgondoltuk a forgatókönyvet, amely szerint a végfelhasználó használni fogja az alkalmazást. Kiderült, hogy két típusú felhasználónk lesz: technikai szakemberek, akiket a műszaki információ érdekel, és menedzserek, akiknek pénzügyi mutatókra van szükségük. Amikor kialakult a forgatókönyv elképzelése, világossá vált, hogy mit kell csinálni a frontenden, mit kell rajzolni a dizájnereknek, és milyen módszerek szükségesek a backendhez, így lehetségessé vált a feladatok elosztása. A csapatban a következőképpen osztottak meg a feladatok: ketten ML-t oldottak meg a technikai szakértőktől kapott adatokkal, egy ember Python-ra írta a backendet, én pedig React és Ant Design segítségével írtam a frontendet, a dizájner pedig a felületeket rajzolta. Még úgy ültünk le, hogy kényelmesebben tudjunk kommunikálni és megoldani a feladatainkat.
Az első napok szinte észrevétlenül teltek el. A műszaki szakértőkkel folytatott beszélgetések során kiderült, hogy ezt a feladatot már megoldotta a Gazprom Neft, csupán azt kíváncsiak, vajon jobb megoldást lehet-e találni. Nem mondanám, hogy ez csökkentette a motivációnkat, de maradt egy kis hiányérzet. Meglepett, hogy éjszaka a szekciók moderátorai a működő csapatokat jegyezték (ahogy ők mondták, a statisztika kedvéért), ami általában nem jellemző a hackathonokon. Reggelre készen állt a front prototípusa, némi visszabontás is, valamint az első ML megoldás. Összességében már volt mit bemutatni a szakértőknek. Szombat délután a designer már több interfészt hozott létre, mint amit bátran meg tudtam volna valósítani, ezért áttért a prezentáció készítésére. A szombat a rekord regisztrálására volt fenntartva, így reggel mindenkit kitettünk az előcsarnokba, majd a teremhez való belépés és kilépés csak a belépő kártyákkal volt lehetséges, sőt a nap során maximum egy órára lehetett kilépni. Nem mondanám, hogy ez valamilyen jelentős kényelmetlenséget okozott volna számunkra, a nap nagy részében úgyis ültünk és dolgoztunk. Az étkezés valóban nagyon szegényes volt; ebédre kaptunk egy pohár levest, egy péksüteményt és egy almát, de ismét, ez nem nagyon zökkentett ki minket, hiszen másra koncentráltunk.
Időnként adtak red bullt, két dobozt kézhez, ami éppen jól jött. Régóta kipróbált recept a hackathonokon, energiaital + kávé, lehetővé tette, hogy egész éjjel kódoljunk, és a következő nap is frissen pörögjünk, mint a gyümölcs. A második napon lényegében csak új funkciókat építettünk bele az alkalmazásba, elkészítettük a pénzügyi mutatók számítását, és elkezdtük megjeleníteni a hibastatisztikák grafikus ábrázolását. A mi szektorunkban nem volt klasszikus code review, a szakértők a feladat megoldásának minőségét a kaggle.com stílusában értékelték, a becslés pontossága alapján, a frontend pedig vizuálisan lett értékelve. A mi ML megoldásunk bizonyult a legpontosabbnak, valószínűleg ez segített nekünk az élre törni. Szombatról vasárnapra éjfélig dolgoztunk, majd elmentünk aludni arra a lakásra, amit az alapként használtunk. Körülbelül 5 órát aludtunk, vasárnap reggel 9-kor már a Kazan Expoban voltunk. Épp valamit sürgősen befejeztem, de a legtöbb időt a védelmi bemutatóra való felkészülés vette el. A védelmi bemutatók két csoportban zajlottak, két csapat szakértő előtt, minket utolsónak kértek fel, mert mindkét szakértői csapat szeretett volna minket meghallgatni. Ezt jó jelnek tekintettük. Az alkalmazást az én laptopomról mutattuk be, a futó fejlesztői szerverről, az alkalmazás normális telepítése időben nem valósult meg, de ezt mindenki így csinálta.
Összességében minden jól ment, rámutattak azokra a pontokra, ahol javíthattuk volna az alkalmazásunkat, és a védelem előtt meg is próbáltunk néhányat megvalósítani ezekből a megjegyzésekből. A védelem meglepően simán zajlott. A védelmi bemutató végén tudtuk, hogy pontszámok tekintetében az élen állunk, a megoldásunk pontosságában vezetünk, jó frontenddel és dizájnnal rendelkezünk, és összességében jó érzéseink voltak. Egy másik kedvező jel volt, hogy a moderátor lány a szekciónkból a koncertterem bejáratánál selfie-t készített velünk, akkor gyanítottam, hogy talán tud valamit))). De a védelem után nem tudtuk a pontszámainkat, ezért a csapatunk színpadon történő bejelentéséig eltelt idő egy kicsit feszülten telt. A színpadon egy kartonpapírra írt 500000 rubelt kaptunk, és mindenkinek egy csomagot adtak pohárral és mobil akkumulátorral. A győzelem élvezete és rendes megünneplése nem sikerült, gyorsan megvacsoráztunk, majd taxival a vonathoz indultunk.

A WAICO csapata győz a döntőben
Miután visszatértünk Moszkvába, interjút készítettek velünk az NTV újságírói. Egy órán át filmeztek a Kvarat 44 kávézó második emeletén a Poljanán, de a hírekben mindössze 10 másodpercet mutattak. Mindenesetre ez jelentős előrelépés a regionális szakaszhoz képest.
Ha össze akarom foglalni a Digitális Áttörésről szerzett általános benyomásaimat, akkor a következők a véleményeim. Az eseményre hatalmas összegeket költöttek, még soha nem láttam ilyen méretű hackathonokat. De azt nem mondhatom, hogy ez indokolt volt, és hogy valóban megtérül. A résztvevők jelentős része, aki Kazanyba utazott, egyszerűen partiboldogok voltak, akik nem tudnak semmit sem csinálni saját kezükből, és akiket csak a rekord felállítása miatt toboroztak. Nem tudom megmondani, hogy a döntőben a verseny szintje magasabb volt-e, mint a regionális szakaszban. Az egyes pályák feladatainak értéke és hasznossága is megkérdőjelezhető. Néhány feladatot már régen megoldottak ipari szinten. Mint később kiderült, a pályákat vezető néhány szervezet nem is volt érdekelve a megoldásukban. És ez a történet még nem ért véget, hiszen minden pálya vezető csapatát kiválasztották egy előaccelerátorba, és azt tervezik, hogy közülük áttörő startupok születnek. De erről még nem vagyok hajlandó írni, nézzük meg, mi sül ki belőle.
Forrás: habr.com
