Digitale doorbraak - hoe het was

Dit is niet de eerste hackathon die ik win, niet de eerste waarover ik schrijf, en dit is verre van de eerste post op Habr die aan de 'Digitale doorbraak' is gewijd. Maar ik kon het niet laten om te schrijven. Ik beschouw mijn ervaring als uniek genoeg om te delen. Waarschijnlijk ben ik de enige op deze hackathon die de regionale fase en de finale in verschillende teams heeft gewonnen. Wil je weten hoe dat is gebeurd? Welkom onder de kat.

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

De reclame voor de 'Digitale doorbraak' zag ik voor het eerst ergens in maart - april van dit jaar. Natuurlijk kon ik zo'n grote hackathon niet missen en registreerde ik me op de website. Daar raakte ik ook bekend met de voorwaarden en het programma van de wedstrijd. Het bleek dat je online testen moest afleggen om op de hackathon te kunnen komen, die begon op 16 mei. En misschien was ik dat vergeten, aangezien ik geen herinnering per e-mail over het begin van de tests had ontvangen. En ik moet zeggen, alle E-MAILS die ik van CP ontving, belandden consequent in de spammap. Hoewel ik elke keer op de knop 'geen ongewenste e-mail' drukte. Ik weet niet hoe ze dat voor elkaar gekregen hebben, bij mijn MailGun-verstuurcampagne lukte dat niet. En de jongens lijken in het algemeen niet te weten dat er diensten zoals isnotspam.com bestaan. Maar we zijn afgeweken.

Ik werd herinnerd aan het begin van de tests op een van de bijeenkomsten van de startupclub, we also discussed team formation. Opening the list of tests, I immediately started with the Javascript test. Overall, the tasks were fairly reasonable (like, what will the result be if you add 1 + ā€˜1’ in the console). However, based on my experience, I would approach using such tests for hiring or team selection with significant reservations. The thing is that a programmer rarely encounters these situations in real work; their ability to quickly churn out code does not correlate with these knowledge tests, and it's pretty easy to prepare for such things for interviews (I know from experience). In general, I completed the test fairly quickly, checking myself in the console in some cases. The Python test had tasks of a similar type, and I also checked myself in the console, surprisingly scoring higher than in JS, even though I’ve never programmed professionally in Python. Later, in discussions with participants, I heard stories about strong programmers scoring low on tests, and how some people received emails stating they did not pass the selection for the CS, yet were still invited to it. It's clear that the creators of these tests were most likely unaware of test theory, nor their reliability and validity, nor how to test them, and the idea of implementing tests was fundamentally flawed, even without considering the main goal of the hackathon. And the main goal of the hack, as I learned later, was to set a Guinness record, which contradicted the tests.

Op een gegeven moment, na het afleggen van de tests, belden ze me op, vroegen ze of ik mee wilde doen, verduidelijken ze de details en vertelden ze hoe ik in de chat voor teamvorming kon komen. Al snel kwam ik in de chat en schreef ik kort iets over mezelf. In de chat was het een complete chaos; het leek alsof de organisatoren veel willekeurige mensen hadden aangetrokken door middel van reclame, mensen die totaal geen relatie met IT hadden. Tal van productmanagers van het ā€˜niveau Steve Jobs’ (een echte uitspraak uit een presentatie van een deelnemer) plaatsten verhalen over zichzelf, terwijl normale ontwikkelaars nauwelijks te zien waren. Maar ik had geluk en al snel voegde ik me bij drie ervaren JS-programmeurs. We hebben elkaar pas op de hackathon leren kennen, en toen hebben we ook een meisje aan het team toegevoegd voor inspiratie en het oplossen van organisatorische kwesties. Ik weet niet meer precies waarom, maar we kozen het thema 'Cybersecurity Training' en belandden daarmee in de track 'Wetenschap en Onderwijs 2'. Dit was de eerste keer dat ik in een team zat van vier sterke programmeurs en voor het eerst voelde ik hoe gemakkelijk het was om in zo'n samenstelling te winnen. We kwamen onverzorgd aan en discussieerden tot de lunch en konden niet beslissen wat we wilden doen: een mobiele applicatie of een website. In elke andere situatie zou ik denken dat dit een mislukking was. Het belangrijkste voor ons was om te begrijpen wat ons beter zou maken dan de concurrentie, want er waren veel teams om ons heen die tests, spellen over cybersecurity en dergelijke maakten. Kijkend naar dit alles en op zoek naar opleidingsprogramma's en applicaties, besloten we dat onze belangrijkste onderscheidende eigenschap trainingen op basis van een brandalarm zouden zijn. We selecteerden een aantal functies die ons interessant leken om te implementeren (registratie met verificatie van e-mail en wachtwoord met hackersdatabases, verzenden van phishing-e-mails (in de vorm van berichten van bekende banken), sociale engineering trainingen in de chat). Nadat we hadden vastgesteld wat we deden en begrepen hoe we ons konden onderscheiden, schreven we vrij snel een volledig webapplicatie, waarbij ik een rol op me nam die niet gebruikelijk was voor mij, namelijk back-end ontwikkelaar. Zo wonnen we zelfverzekerd onze track en werden we met nog drie teams geselecteerd voor de finale in Kazan. Later, in Kazan, ontdekte ik dat de selectie voor de finale een schijnvertoning was; ik ontmoette daar veel bekende gezichten van teams die deze selectie niet hadden gehaald. Journalisten van het eerste kanaal namen zelfs interviewtjes met ons af. In het verslag lieten ze echter ons applicatie maar ƩƩn seconde zien.

Digitale doorbraak - hoe het was
Het team Snowed, waarmee ik de regionale ronde heb gewonnen

De finale (Kazan, 27 - 29 september 2019)

Maar daarna begonnen de tegenslagen. Alle programmeurs van het team Snowed gaven gedurende ongeveer een maand, ƩƩn voor ƩƩn, aan dat ze niet naar Kazan konden gaan voor de finale. Ik begon na te denken over het zoeken naar een nieuw team. Eerst deed ik een oproep in de algemene chat van het Russian Hack Team, en hoewel ik daar behoorlijk veel reacties en uitnodigingen voor teams kreeg, sprak geen van hen me echt aan. Er waren ongebalanceerde teams, zoals bijvoorbeeld, een productmanager, een mobiele ontwikkelaar, een frontender, wat doet denken aan de zwaan, de rivierkreeft en de snoek uit de fabel. Er waren ook teams die qua technologie niet bij me pasten (bijvoorbeeld, met de ontwikkeling van een mobiele applicatie op Flutter). Uiteindelijk postten ze in de chat, die ik als onzin beschouwde (diezelfde op VKontakte, waar de teams voor de regionale ronde werden samengesteld), een aankondiging voor de zoektocht naar een frontender, en ik schreef gewoon uit het niets een bericht. De jongens bleken promovendi van Skoltech te zijn en boden meteen aan om elkaar te ontmoeten en kennis te maken. Dit beviel me, teams die het liefst direct tijdens de hackathon willen kennismaken, stellen me meestal teleur door hun gebrek aan motivatie. We ontmoetten elkaar in ā€œGrablyā€ op de Piatriskaya. De jongens leken me capabel, gemotiveerd, zelfverzekerd en overtuigd van de overwinning, en ik nam daar ter plekke de beslissing. We wisten nog niet welke tracks en taken er in de finale zouden zijn, maar vermoedden dat we iets gerelateerd aan Machine Learning zouden kiezen. Mijn taak zou zijn om hiervoor een adminpanel te schrijven, daarom had ik van tevoren een sjabloon op basis van antd-admin voorbereid.
Ik ging gratis naar Kazan, op kosten van de organisatoren. Ik moet zeggen dat er al veel onvrede was geuit in chats en blogs over de aankoop van tickets en, in het algemeen, de organisatie van de finale, ik ga dat allemaal niet herhalen.

Na aankomst in Kazan Expo, na registratie (ik had hier en daar wat problemen met het ontvangen van mijn badge) en een ontbijtje, gingen we op zoek naar ons track. Bij de feestelijke opening, waar officiële personen spraken, waren we maar een minuut of 10 aanwezig. We hadden al enkele voorkeurstracks, maar waren geïnteresseerd in de details. In track No 18 (Rostelecom) bleek bijvoorbeeld dat we een mobiele applicatie moesten ontwikkelen, hoewel dit niet in de korte beschrijving stond. We maakten de belangrijkste keuze tussen track No 8, 'Defectoscopie van pijpleidingen', PJSC 'Gazprom Neft' en track No 13, 'Perinatale centra', Rekenkamer van de Russische Federatie. In beide tracks was Data Science nodig, en in beide gevallen kon webtechnologie worden geïntegreerd. Bij track No 13 hield ons tegen dat de Data Science-opgave vrij zwak was; we moesten rosstat parseren en het was niet duidelijk of een adminpaneel nodig was. Bovendien was de waarde van de opgave twijfelachtig. Uiteindelijk besloten we dat wij als team meer geschikt waren voor track 8, vooral omdat de jongens al ervaring hadden met dergelijke taken. We begonnen met het uitwerken van het scenario waarin onze applicatie door de eindgebruiker zou worden gebruikt. Het bleek dat we twee typen gebruikers zouden hebben: technici die geïnteresseerd waren in technische informatie en managers die financiële gegevens nodig hadden. Toen we een idee hadden van het scenario, werd het duidelijk wat we op de front-end moesten doen, wat de ontwerper moest tekenen, en welke methoden nodig waren voor de back-end, waardoor we de taken konden verdelen. De verantwoordelijkheden in het team werden als volgt verdeeld: twee personen werkten aan ML met gegevens die van technische experts waren verkregen, één persoon schreef de back-end in Python, ik werkte aan de front-end met React en antd, en de ontwerper ontwierp de interfaces. We zaten zelfs zo dat we gemakkelijker konden communiceren terwijl we onze taken aanpasten.

De eerste dag vloog praktisch voorbij. In gesprekken met de technische experts bleek dat deze taak door hen ("Gazprom Neft") al was opgelost; ze zijn gewoon nieuwsgierig of het beter opgelost kan worden. Ik kan niet zeggen dat dit de motivatie verlaagde, maar het liet wel een indruk achter. Het verbaasde me dat de moderatoren 's nachts de werkende teams markeerden (zoals ze zeiden voor de statistieken); dat wordt doorgaans niet gedaan tijdens hackathons. Tegen de ochtend hadden we een prototype van de front-end klaar, enkele voorlopige back-end onderdelen en de eerste ML-oplossing. Kortom, we hadden al iets om aan de experts te tonen. Gedurende de tweede helft van zaterdag had de ontwerper al meer interfaces getekend dan ik had kunnen coderen en schakelde over op het maken van een presentatie. Zaterdag was gereserveerd voor het registreren van een record, en 's ochtends werden alle mensen in de zaal de gang in gestuurd, waarna toegang tot de zaal enkel via badges verliep; bovendien mocht je op een dag niet langer dan een uur weg. Ik kan niet zeggen dat dit ons echt veel ongemak bezorgde; het grootste deel van de dag zaten we toch en werkten we. Het eten was inderdaad zeer summier; tijdens de lunch kregen we een bekertje bouillon, een pasteitje en een appel, maar dit stoorde ons niet echt, we waren gefocust op iets anders.

Af en toe kregen we red bull, twee blikjes per persoon, wat zeer welkom was. De al eerder getest energie-drank + koffie combinatie stelde ons in staat om de hele nacht en de daaropvolgende dag te coderen, terwijl we ons fris en vol energie voelden. Op de tweede dag waren we in feite gewoon nieuwe functies aan de applicatie aan het toevoegen, maakten we een financiƫle prognose en begonnen we statistieken over defecten in de systemen weer te geven. Er was geen formele code review in ons project; experts beoordeelden de oplossing in de stijl van kaggle.com, op basis van de nauwkeurigheid van de voorspellingen, terwijl de frontend visueel werd beoordeeld. Onze ML-oplossing bleek de meest nauwkeurige te zijn, en mogelijk heeft dit ons geholpen om naar de top te stijgen. In de nacht van zaterdag op zondag werkten we tot 2 uur 's nachts, en toen gingen we slapen in het appartement dat we als basis gebruikten. We sliepen ongeveer 5 uur, en op zondag waren we om 9 uur al in Kazan Expo. Ik was iets aan het bijwerken, maar het grootste deel van de tijd ging op aan de voorbereiding voor de pre-verdediging. De pre-verdedigingen vonden plaats in twee groepen, voor twee teams van experts; we werden gevraagd om als laatste op te treden, omdat beide teams van experts wilden luisteren naar onze presentatie. We beschouwden dit als een goed teken. De applicatie werd gepresenteerd vanaf mijn laptop, met de draaiende dev-server; we hadden niet genoeg tijd om de applicatie goed te deployen, maar dat deden de meesten ook niet.

Over het algemeen verliep alles goed; we kregen feedback over de punten waarop we onze applicatie konden verbeteren, en in de tijd vóór de verdediging hebben we zelfs geprobeerd om enkele van deze opmerkingen te implementeren. Ook de verdediging verliep verrassend soepel. Na de pre-verdediging wisten we dat we met onze scores aan de leiding stonden; we waren leidend op het gebied van de nauwkeurigheid van de oplossing, we hadden een goede frontend, een goed ontwerp en we hadden over het algemeen een goed gevoel. Een ander positief teken was dat de moderator van onze sectie, voor de ingang van de concertzaal, een selfie met ons maakte; toen vermoedde ik al dat ze misschien iets wist))). Maar we wisten onze scores na de verdediging niet, dus de tijd tot het moment dat onze teamnaam van het podium werd aangekondigd was een beetje spannend. Op het podium ontvingen we een kartonnen bord met de tekst 500.000 roebel en elk van ons kreeg een tas met een mok en een batterij voor de mobiele telefoon. We konden niet echt van de overwinning genieten en deze op een normale manier vieren; we dineerden snel en namen een taxi naar de trein.

Digitale doorbraak - hoe het was
Het team WAICO wint de finale

Na terugkomst in Moskou gaven we een interview aan journalisten van NTV. Ze filmden een uur lang op de tweede verdieping van cafƩ 'Kwartal 44' op de Poljanka, maar in het nieuws zagen we maar tien seconden. Ach, het is in ieder geval een grote vooruitgang vergeleken met de regionale ronde.

Als ik de algemene indrukken van de Digitale Doorbraak samenvat, dan zijn deze als volgt. Er zijn gewoon enorm veel geld in het evenement gestoken, ik heb nog nooit hackathons van zo'n schaal gezien. Maar om te zeggen dat dit gerechtvaardigd is, en dat het zich echt terugbetaalt, kan ik niet. Een aanzienlijk deel van de deelnemers die naar Kazan kwamen, waren gewoon feestgangers die niet iets met hun handen kunnen maken, en die alleen maar waren ingelookt voor het breken van een record. Ik kan niet zeggen dat de concurrentie in de finale groter was dan in de regionale ronde. Ook de waarde en bruikbaarheid van sommige tracks roept twijfels op. Sommige taken waren al lange tijd op industrieel niveau opgelost. Het bleek later dat sommige organisaties die de tracks leidden, helemaal niet geĆÆnteresseerd waren in hun oplossing. En dit verhaal is nog niet voorbij, de leidende teams van elke track zijn geselecteerd voor de pre-accelerator, en er wordt verwacht dat daar doorbraakinvesteringen uit voortkomen. Maar daarover ben ik voorlopig nog niet klaar om te schrijven, we zullen zien wat daarvan komt.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster