Digitale doorbraak - hoe het gebeurde

Dit is niet de eerste hackathon die ik win, en niet de eerste over schrijven, en dit is niet het eerste bericht op Habré gewijd aan “Digitale Doorbraak”. Maar ik kon het niet laten om te schrijven. Ik beschouw mijn ervaring als uniek genoeg om te delen. Ik ben waarschijnlijk de enige persoon op deze hackathon die met verschillende teams de regionale etappe en de finale heeft gewonnen. Wil je weten hoe dit gebeurde? Welkom bij kat.

Regionale etappe (Moskou, 27 - 28 juli 2019).

Ik zag ergens in maart-april van dit jaar voor het eerst een advertentie voor ‘Digitale Doorbraak’. Zo’n grote hackathon kon ik uiteraard niet laten liggen en ik heb me op de site geregistreerd. Daar maakte ik kennis met de voorwaarden en het programma van de wedstrijd. Het bleek dat je, om deel te nemen aan de hackathon, een online test moest afleggen, die op 16 mei begon. En misschien was ik het gemakshalve vergeten, omdat ik geen brief ontving waarin ik werd herinnerd aan het begin van het testen. En ik moet zeggen dat ALLE LETTERS die vanaf de CPU naar mij toekwamen in de toekomst consequent in de spammap terechtkwamen. Ook al klikte ik elke keer op de knop ‘geen bezwaar’. Ik weet niet hoe ze zo’n resultaat hebben weten te bereiken; bij mij is het niet gelukt met mailen op MailGun. En de jongens lijken helemaal niets te weten over het bestaan ​​van diensten als isnotspam.com. Maar we dwalen af.

Tijdens een van de bijeenkomsten werd ik herinnerd aan de start van het testen startende club, daar hebben we ook de vorming van het team besproken. Nadat ik de lijst met tests had geopend, ging ik eerst aan de Javascript-test zitten. Over het algemeen waren de taken min of meer adequaat (zoals wat het resultaat zal zijn als je 1 + '1' optelt in de console). Maar uit mijn ervaring zou ik dergelijke tests gebruiken bij het rekruteren voor een baan of een team met zeer grote bedenkingen. Feit is dat een programmeur dergelijke dingen in het echte werk zelden tegenkomt, met zijn vermogen om snel code te debuggen - deze kennis correleert op geen enkele manier, en je kunt vrij gemakkelijk voor zulke dingen trainen voor interviews (ik weet het van mezelf). Over het algemeen klikte ik vrij snel door de test, in sommige gevallen controleerde ik mezelf in de console. In de Python-test waren de taken van ongeveer hetzelfde type, ik testte mezelf ook in de console en was verrast dat ik meer punten scoorde dan in JS, hoewel ik nog nooit professioneel in Python heb geprogrammeerd. Later, in gesprekken met deelnemers, hoorde ik verhalen over hoe sterke programmeurs laag scoorden op tests, hoe sommige mensen brieven ontvingen waarin stond dat ze het selectieproces voor de CPU niet hadden doorstaan, en vervolgens toch werden uitgenodigd. Het is duidelijk dat de makers van deze tests hoogstwaarschijnlijk nog niets van hebben gehoord theorie testen, noch over hun betrouwbaarheid en validiteit, noch over hoe ze te testen, en het idee met tests zou vanaf het begin een mislukking zijn geweest, zelfs als we geen rekening hadden gehouden met het hoofddoel van de hackathon. En het belangrijkste doel van de hack was, zoals ik later ontdekte, het vestigen van een Guinness-record, en de tests spraken dit tegen.

Op een gegeven moment nadat ik de tests had doorstaan, belden ze me, vroegen of ik wilde deelnemen, verduidelijkten de details en vertelden me hoe ik in de chat kon komen om een ​​team te selecteren. Al snel kwam ik in de chat terecht en schreef kort over mezelf. Er gebeurde totaal onzin in de chat; het leek erop dat de organisatoren reclame maakten voor een heleboel willekeurige mensen die niets met IT te maken hadden. Talrijke productmanagers “op het niveau van Steve Jobs” (een echte uitdrukking uit de inzending van een deelnemer) plaatsten verhalen over zichzelf, en normale ontwikkelaars waren niet eens zichtbaar. Maar ik had geluk en sloot me al snel aan bij drie ervaren JS-programmeurs. We ontmoetten elkaar al op de hackathon en daarna hebben we een meisje aan het team toegevoegd voor inspiratie en het oplossen van organisatievraagstukken. Ik weet niet meer waarom, maar we namen het onderwerp ‘Cybersecurity Training’ en namen het op in het traject ‘Wetenschap en Onderwijs 2’. Voor het eerst bevond ik me in een team van 4 sterke programmeurs en voor het eerst voelde ik hoe gemakkelijk het was om in zo'n samenstelling te winnen. We kwamen onvoorbereid en maakten ruzie tot de lunch en konden niet beslissen wat we zouden doen: een mobiele applicatie of een webapplicatie. In elke andere situatie zou ik gedacht hebben dat het een mislukking was. Het belangrijkste voor ons was om te begrijpen hoe we beter zouden zijn dan onze concurrenten, omdat er veel teams waren die tests, cyberbeveiligingsspellen en dergelijke aan het snijden waren. Nadat we dit hadden bekeken en trainingsprogramma's en apps hadden gegoogled, besloten we dat onze belangrijkste onderscheidende factor brandoefeningen zouden zijn. We hebben een aantal functionaliteiten geselecteerd die we interessant vonden om te implementeren (registratie met e-mail en wachtwoordverificatie tegen hackerdatabases, verzenden van phishing-e-mails (in de vorm van brieven van bekende banken), social engineering-training in chat). Nadat we hadden besloten wat we gingen doen en begrepen hoe we ons konden onderscheiden, schreven we snel een volwaardige webapplicatie en speelde ik de ongebruikelijke rol van een backend-ontwikkelaar. Zo wonnen we vol vertrouwen onze baan en kwalificeerden we ons, samen met drie andere teams, voor de finale in Kazan. Later, in Kazan, hoorde ik dat de selectie voor de finale een fictie was; ik ontmoette daar veel bekende gezichten van de teams die niet door de selectie kwamen. We werden zelfs geïnterviewd door journalisten van Channel 1. In het rapport ervan werd onze applicatie echter slechts 1 seconde getoond.

Digitale doorbraak - hoe het gebeurde
Team Snowed, waar ik de regionale etappe won

Finale (Kazan, 27 – 29 september 2019)

Maar toen begonnen de mislukkingen. Alle programmeurs van het Snowed-team meldden binnen ongeveer een maand de een na de ander dat ze niet naar Kazan zouden kunnen gaan voor de finale. En ik dacht erover om een ​​nieuw team te vinden. Eerst belde ik in de algemene chat van het Russische hackteam, en hoewel ik daar behoorlijk veel reacties en uitnodigingen ontving om lid te worden van teams, trok geen enkele mijn aandacht. Er waren onevenwichtige teams, zoals product, mobiele ontwikkelaar, front-end, die deden denken aan een zwaan, rivierkreeft en snoek uit een fabel. Er waren ook teams die qua techniek niet geschikt waren voor mij (bijvoorbeeld bij de ontwikkeling van een mobiele applicatie in Flutter). Ten slotte werd in een chat die ik als rommelig beschouwde (dezelfde VKontakte waar de selectie van teams voor het regionale podium plaatsvond) een advertentie geplaatst over de zoektocht naar een frontender voor het team, en ik schreef puur willekeurig. De jongens bleken afgestudeerde studenten van Skoltech te zijn en boden onmiddellijk aan om elkaar te ontmoeten en kennis te maken. Ik vond het leuk; teams die elkaar het liefst meteen leren kennen tijdens een hackathon, maken mij meestal ongerust over hun gebrek aan motivatie. We ontmoetten elkaar bij "Rake" op Pyatnitskaya. De jongens leken slim, gemotiveerd, vol vertrouwen in zichzelf en in de overwinning, en ik nam ter plekke de beslissing. We wisten nog niet welke tracks en taken er in de finale zouden staan, maar we gingen ervan uit dat we iets zouden kiezen dat verband hield met Machine Learning. En het zal mijn taak zijn om hiervoor een admin aan te schrijven, dus ik heb hiervoor van tevoren een sjabloon voorbereid op basis van antd-admin.
Ik ging gratis naar Kazan, op kosten van de organisatoren. Ik moet zeggen dat er al veel ontevredenheid is geuit in chats en blogs over de aankoop van kaartjes en in het algemeen over de organisatie van de finale, ik zal het niet allemaal opnieuw vertellen.

Aangekomen bij Kazan Expo, geregistreerd (ik had een beetje moeite om een ​​badge te krijgen) en ontbeten, gingen we een circuit kiezen. We gingen slechts ongeveer 10 minuten naar de grote opening, waar de functionarissen spraken. In feite hadden we al onze favoriete nummers, maar we waren geïnteresseerd in de details. In track nr. 18 (Rostelecom) bleek bijvoorbeeld dat het nodig was om een ​​mobiele applicatie te ontwikkelen, al stond dit niet in de korte beschrijving. We hebben de belangrijkste keuze gemaakt tussen spoor nr. 8 Defectoscopie van pijpleidingen, Gazprom Neft PJSC en spoor nr. 13 Perinatale centra, Rekenkamer van de Russische Federatie. In beide gevallen was Data Science nodig en in beide gevallen had het web daaraan toegevoegd kunnen worden. In track nr. 13 werden we tegengehouden door het feit dat de Data Science-taak daar vrij zwak was, het nodig was om Rosstat te parseren en het niet duidelijk was of een beheerderspaneel nodig was. En de waarde van de taak was twijfelachtig. Uiteindelijk besloten we dat we als team beter geschikt waren voor baan 8, vooral omdat de jongens al ervaring hadden met het oplossen van soortgelijke problemen. We zijn begonnen met het bedenken van het scenario waarin onze applicatie door de eindgebruiker gebruikt zou worden. Het bleek dat we twee soorten gebruikers zouden hebben: techneuten die geïnteresseerd waren in technische informatie en managers die financiële indicatoren nodig hadden. Toen er een idee van het scenario ontstond, werd duidelijk wat er aan de voorkant moest gebeuren, wat de ontwerper moest tekenen en welke methoden aan de achterkant nodig waren, waardoor het mogelijk werd om taken te verdelen. De verantwoordelijkheden in het team waren als volgt verdeeld: twee mensen losten ML op met gegevens ontvangen van technische experts, één persoon schreef de backend in Python, ik schreef de frontend in React en Antd, de ontwerper tekende de interfaces. We gingen zelfs zitten, zodat het voor ons gemakkelijker zou zijn om te communiceren terwijl we onze problemen oplosten.

De eerste dag vloog bijna ongemerkt voorbij. Uit communicatie met technische experts bleek dat zij (Gazprom Neft) dit probleem al hadden opgelost, ze vroegen zich alleen af ​​of het beter kon worden opgelost. Ik zal niet zeggen dat dit mijn motivatie verminderde, maar het liet wel een residu achter. Ik was verrast dat de sectiemoderators 's nachts de werkende teams noteerden (zoals ze zeiden voor statistieken); dit wordt meestal niet geoefend bij hackathons. Tegen de ochtend hadden we een prototype van de voorkant, enkele eerste beginselen van de achterkant en de eerste ML-oplossing klaar. Over het algemeen was er al iets om de experts te laten zien. Op zaterdagmiddag tekende de ontwerper duidelijk meer interfaces dan ik tijd had om te coderen en schakelde hij over op het maken van een presentatie. Zaterdag werd gereserveerd voor de registratie van het record, en 's ochtends werd iedereen die in de hal werkte de gang in geschopt, waarna het in- en uitgaan van de hal werd uitgevoerd met behulp van badges, en het was mogelijk om niet meer te vertrekken dan een uur per dag. Ik zal niet zeggen dat dit ons veel ongemak heeft bezorgd; het grootste deel van de dag zaten en werkten we nog steeds. Het eten was inderdaad erg karig; als lunch kregen we een glas bouillon, een taart en een appel, maar ook hier waren we niet erg van streek, we waren met iets anders bezig.

Ze deelden periodiek Red Bull uit, twee blikjes per hand, wat erg nuttig was. Dankzij het recept voor energiedrank + koffie, dat al lang werd getest op hackathons, kon ik de hele nacht en de volgende dag coderen, zo vrolijk als een glas. Op de tweede dag hebben we eenvoudigweg nieuwe functies aan de applicatie toegevoegd, financiële indicatoren berekend en grafieken weergegeven over de statistieken van defecten op snelwegen. Er was geen codebeoordeling als zodanig in onze track; experts beoordeelden de oplossing voor het probleem in de kaggle.com-stijl, gebaseerd op de nauwkeurigheid van de voorspelling, en de front-end werd visueel beoordeeld. Onze ML-oplossing bleek de meest nauwkeurige, misschien hebben we hierdoor leiders kunnen worden. In de nacht van zaterdag op zondag hebben we tot 2 uur gewerkt en zijn daarna gaan slapen in het appartement dat we als uitvalsbasis gebruikten. We hebben ongeveer 5 uur geslapen, zondag om 9 uur waren we al bij Kazan Expo. Ik bereidde haastig iets voor, maar de meeste tijd werd besteed aan de voorbereiding op de voorverdediging. De voorverdedigingen vonden plaats in twee stromen, voor twee teams van deskundigen; wij werden gevraagd als laatste te spreken, omdat beide teams van deskundigen naar ons wilden luisteren. Wij vonden dit een goed teken. De applicatie werd getoond vanaf mijn laptop, vanaf een draaiende ontwikkelserver; we hadden geen tijd om de applicatie goed te implementeren, maar iedereen deed hetzelfde.

Over het algemeen ging alles goed, we werden gewezen op punten waarop we onze applicatie konden verbeteren, en in de tijd vóór de verdediging probeerden we zelfs enkele van deze opmerkingen te implementeren. Ook de verdediging verliep verrassend vlot. Op basis van de resultaten van de voorverdediging wisten we dat we qua punten voorsprong hadden, dat we voorop liepen qua oplossingsnauwkeurigheid, dat we een goede front-end, een goed ontwerp hadden en dat we over het algemeen goede gevoelens. Een ander gunstig teken was dat de meisjesmoderator uit onze sectie een selfie met ons maakte voordat ze de concertzaal binnengingen, en toen vermoedde ik dat ze misschien iets wist))). Maar we kenden onze scores na de verdediging niet, dus de tijd totdat onze ploeg vanaf het podium werd aangekondigd, verliep enigszins gespannen. Op het podium overhandigden ze een karton met het opschrift 500000 roebel en iedereen kreeg een tas met een mok en een batterij van een mobiele telefoon. Het lukte ons niet om van de overwinning te genieten en deze fatsoenlijk te vieren; we hebben snel gegeten en een taxi naar de trein genomen.

Digitale doorbraak - hoe het gebeurde
Team WAICO wint de finale

Bij terugkomst in Moskou interviewden journalisten van NTV ons. We hebben een heel uur gefilmd op de tweede verdieping van café Kvartal 44 op Polyanka, maar het nieuws toonde slechts ongeveer 10 seconden, een sterke vooruitgang vergeleken met het regionale podium.

Als we de algemene indrukken van de Digitale Doorbraak samenvatten, zijn deze als volgt. Er is veel geld aan het evenement besteed; ik heb nog nooit hackathons van zo’n omvang gezien. Maar ik kan niet zeggen dat dit gerechtvaardigd is en dat het echt vruchten zal afwerpen. Een aanzienlijk deel van de deelnemers die naar Kazan kwamen, waren gewoon feestgangers die niet wisten hoe ze iets met hun eigen handen moesten doen en die gedwongen werden een record te vestigen. Ik kan niet zeggen dat de concurrentie in de finale groter was dan in de regionale fase. Ook is de waarde en bruikbaarheid van de taken van sommige tracks twijfelachtig. Sommige problemen zijn al lang opgelost op industrieel niveau. Zoals later bleek, waren sommige organisaties die de sporen uitvoerden niet geïnteresseerd in het oplossen ervan. En dit verhaal is nog niet voorbij, de leidende teams van elk circuit zijn geselecteerd voor de pre-accelerator, en er wordt van uitgegaan dat zij DOORBRAAK startups zullen blijken te zijn. Maar ik ben er nog niet klaar voor om hierover te schrijven, we zullen zien wat ervan komt.

Bron: www.habr.com

Voeg een reactie