Digital gennembrud – sådan gik det til

Dette er ikke første hackathon, jeg vinder, ikke den første, jeg skriver om, og det er langt fra det første indlæg på Habr, der omhandler «Digitalt gennembrud». Men jeg kunne ikke lade være med at skrive. Jeg mener, at min erfaring er ganske unik, så jeg vil dele den. Sandsynligvis er jeg den eneste på dette hackathon, der har vundet både det regionale og det nationale i forskellige hold. Vil du vide, hvordan det skete? Velkommen under kat

Det regionale etape (Moskva, 27. – 28. juli 2019).

Jeg så reklamen for «Digitalt gennembrud» første gang omkring marts – april i år. Naturligvis kunne jeg ikke gå forbi et så stort hackathon, så jeg tilmeldte mig på hjemmesiden. Her blev jeg også bekendt med betingelserne og programmet for konkurrencen. Det viste sig, at for at deltage i hackathonet skulle man bestå en online-test, der begyndte den 16. maj. Og jeg ville sandsynligvis have glemt alt om dette, da jeg ikke modtog nogen påmindelse om testens start. Og for at sige det mildt, alle de EMAILS, jeg modtog fra CP, havnede konsekvent i spam-mappen. Selvom jeg hver gang trykkede på knappen "ikke spam". Jeg ved ikke, hvordan de har formået at få det resultat, for jeg har ikke haft samme problemer med mine udsendelser via MailGun. Og angående eksistensen af tjenester som isnotspam.com, ser det ud til, at de ikke kender til dem overhovedet. Men lad os ikke komme ud af tangent.

Jeg blev mindet om starten på testen ved et af møderne i startup-klubben, der diskuterede vi også dannelsen af et team. Da jeg åbnede testlisten, satte jeg mig straks til at tage testen i Javascript. Generelt set var opgaverne mere eller mindre rimelige (for eksempel, hvad bliver resultatet, hvis man lægger 1 + '1' i konsollen). Men ud fra min erfaring ville jeg anvende sådanne tests til rekrutteringsformål med meget store forbehold. Problemet er, at en programmør sjældent støder på sådan noget i det virkelige arbejde; deres evne til hurtigt at skrive kode korrelerer slet ikke med disse færdigheder, og det kan være ret let at træne på sådan noget til jobsamtaler (jeg ved det fra mig selv). Generelt set klarede jeg testen ret hurtigt; i nogle tilfælde tjekkede jeg mig selv i konsollen. I Python-testen var opgaverne af omtrent samme type, jeg tjekkede også mig selv i konsollen, og jeg måtte med overraskelse konstatere, at jeg scorede flere point end i JS, selvom jeg aldrig har programmeret professionelt i Python. Senere hørte jeg fra deltagerne om stærke programmører, der scorede lave point på testene, og hvordan nogle mennesker modtog beskeder om, at de ikke var blevet udvalgt til CP, men alligevel blev inviteret. Det er klart, at skaberne af disse tests højst sandsynligt ikke har hørt noget om testteori, deres pålidelighed og validitet, eller hvordan man afprøver dem, og ideen med testene ville fra starten have været en fiasko, selv uden at overveje hackathonets hovedformål. Og hovedformålet for hackathonet, som jeg senere fik at vide, var at sætte en Guinness verdensrekord, og testene stod i kontrast til dette.

På et tidspunkt efter testene ringede de til mig, spurgte om jeg ville deltage, afklarede detaljer og sagde, hvordan jeg kunne komme ind i chatten for at finde et team. Kort tid efter gik jeg ind i chatten og skrev kort om mig selv. Der var totalt kaos i chatten, og det virkede som om, arrangørerne havde tiltrukket mange tilfældige mennesker uden forbindelse til IT gennem reklame. Talrige produktchefer på "Steve Jobs-niveau" (et citat fra en deltager) postede historier om sig selv, mens normale udviklere nærmest ikke var at se. Men heldigvis blev jeg snart en del af tre erfarne JS-programmører. Vi mødtes først på hackathonet, hvor vi også tilføjede en pige til teamet for inspiration og organisatoriske spørgsmål. Jeg kan ikke huske, hvorfor, men vi valgte emnet "Uddannelse i cybersikkerhed" og kom ind i sporet "Videnskab og uddannelse 2". Jeg fandt mig selv i et team af fire stærke programmører for første gang og mærkede for første gang, hvor let det var at vinde i sådan et sammenspil. Vi kom uforberedte og diskuterede indtil frokost, uden at kunne blive enige om, hvad vi skulle lave: en mobilapp eller en webapplikation. I en anden situation ville jeg have tænkt, at det var en fiasko. Det vigtigste for os var at forstå, hvad vi skulle gøre bedre end vores konkurrenter, for der var mange teams rundt om, der lavede tests, spil om cybersikkerhed og lignende. Efter at have set på det og søgt efter undervisningsprogrammer og apps besluttede vi, at vores vigtigste differentieringsfunktion ville være træning efter princippet om brandøvelse. Vi udvalgte en række funktioner, som vi fandt interessante at implementere (registrering med bekræftelse af e-mail og adgangskode via hackerbaser, udsendelse af phishing-e-mails (i form af breve fra kendte banker), træning i social engineering i chatten). Da vi fastlagde, hvad vi skulle gøre, og forstod, hvordan vi kunne skille os ud, skrev vi ret hurtigt et fuldt webapplikation, hvor jeg indtog en rolle som backend-udvikler, som ikke var typisk for mig. Dermed vandt vi sikkert vores spor og kom, sammen med tre andre teams, i finalen i Kazan. Senere i Kazan fandt jeg ud af, at udvælgelsen til finalen var en fiktion; jeg mødte mange kendte ansigtet fra teams, der ikke var gået videre. Journalister fra første kanal interviewede os endda. I reportagen blev vores applikation kun vist i ét sekund.

Digital gennembrud – sådan gik det til
Snowed-holdet, som jeg vandt den regionale fase med

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

Men så begyndte uheldene. Alle programmører fra Snowed-holdet meddelte en efter en, at de ikke kunne tage til Kazan for finalen i løbet af ca. en måned. Og jeg begyndte at overveje, om jeg skulle finde et nyt hold. Først efterlyste jeg hjælp i den generelle chat for Russian Hack Team, og selvom jeg fik ret mange svar og invitationer til forskellige hold der, så fangede ingen af dem mig. Nogle hold var ubalancerede, som f.eks. produktmænd, mobiludviklere, frontend-udviklere, der mindede om svanen, krabben og gedden fra fablen. Der var også hold, der ikke passede mig teknologisk (f.eks. med udvikling af mobilapp på Flutter). Endelig, i en chat, som jeg anså for at være trashy (den samme på Vkontakte, hvor der blev dannet hold til den regionale fase), blev der postet en annonce om søgning efter en frontend-udvikler til et hold, og jeg skrev tilfældigt til dem. Drengene viste sig at være Ph.d.-studerende fra Skoltech og tilbød straks at mødes og lære hinanden at kende. Jeg kunne lide det, hold, der helst vil lære hinanden at kende ved en hackathon, gør mig normalt mistænksom på grund af mangel på motivation. Vi mødtes på "Grablje" på Pyatnitskaya. Drengene virkede fornuftige, motiverede, selvsikre og troede på sejr, og jeg tog beslutningen dér. Vi vidste endnu ikke, hvilke tracks og opgaver finalen ville have, men formodede, at vi ville vælge noget relateret til Machine Learning. Min opgave ville derfor være at skrive en admin-panel til dette, så jeg havde på forhånd forberedt en skabelon baseret på antd-admin.
Jeg rejste til Kazan gratis, betalt af arrangørerne. Jeg må sige, at der i chats og blogs allerede var blevet udtrykt meget utilfredshed med billetterne og generelt med organisationen af finalen, jeg vil ikke repeterer alt det.

Da vi ankom til Kazan Expo, registrerede vi os (jeg havde nogle små problemer med at få mit badge) og spiste morgenmad, gik vi i gang med at vælge et spor. Til den officielle åbning, hvor der var tal fra de officielle, var vi kun der i omkring 10 minutter. Faktisk havde vi allerede nogle foretrukne spor, men vi var interesserede i detaljerne. I spor Nr. 18 (Rostelecom) viste det sig for eksempel, at der skulle udvikles en mobilapplikation, selvom dette ikke var nævnt i den korte beskrivelse. Vores primære valg var mellem spor Nr. 8 Rørrøntgeninspektion, PAO „Gazprom Neft“ og spor Nr. 13 Perinatale centre, Den Russiske FFC. Begge steder var der behov for Data Science, og begge steder kunne der være en webkomponent. I spor Nr. 13 blev vi stoppet af det faktum, at Data Science-opgaven var ret svag; det handlede om at parre data fra Rosstat, og det var uklart, om en admin panel var nødvendigt. Og selve opgavens værdi vakte også tvivl. I sidste ende besluttede vi, at vi som et team var bedre rustet til spor Nr. 8, især da drengene allerede havde erfaring med at løse lignende opgaver. Vi startede med at udtænke et scenarie, hvorefter vores applikation ville blive brugt af den endelige bruger. Det viste sig, at vi ville have to typer brugere: teknikere, som var interesserede i teknisk information, og ledere, som havde brug for finansielle indikatorer. Da vi fik en forestilling om scenariet, blev det klart, hvad vi skulle lave på frontenden, hvad designeren skulle tegne, og hvilke metoder der var nødvendige på backend, hvilket gjorde det muligt at fordele opgaverne. Ansvarsområder i teamet blev fordelt som følger: to personer arbejdede med ML baseret på de data, vi fik fra tekniske eksperter, én person skrev backend i Python, jeg arbejdede på frontend i React og antd, og designeren lavede grænseflader. Vi satte os endda sådan, at det var nemmere for os at kommunikere, mens vi løste vores opgaver.

De første 24 timer gik næsten ubemærket hen. I kommunikationen med de tekniske eksperter kom det frem, at denne opgave allerede var løst af dem ("Gazprom Neft"), de var bare nysgerrige efter, om den kunne løses bedre. Jeg vil ikke sige, at det mindskede motivationen, men der var alligevel noget tilbage. Det overraskede mig, at moderatorerne i sektionerne om natten noterede de teams, der arbejdede (som de sagde til statistikken), hvilket normalt ikke praktiseres ved hackathons. Ved morgenen havde vi en prototype af fronten klar, nogle spæde forsøg på backend, og en første løsning med ML. Alt i alt var der allerede noget at vise for eksperterne. I den sene del af lørdag tegnede designeren allerede betydeligt flere interfaces, end jeg ville nå at kode, og skiftede til at lave præsentationen. Lørdag var afsat til registrering af rekorden, og om morgenen blev alle, der arbejdede i salen, sendt ud i gangen, derefter skete ind- og udgang til salen ved hjælp af badges, og man kunne maksimalt gå ud en time om dagen. Jeg vil ikke sige, at det gav os nogen væsentlige problemer, da vi stort set sad og arbejdede hele dagen. Maden var faktisk meget sparsom; til frokost fik vi en kop med bouillon, en pirog og et æble, men igen, det gjorde os ikke særlig skuffede, da vi var fokuserede på noget andet.

I periodisk fik vi udleveret red bull, to dåser pr. person, hvilket var meget belejligt. En opskrift, der længe har været testet ved hackathons, bestående af energidrik + kaffe, gjorde det muligt at kode hele natten og den efterfølgende dag, mens man var så frisk som en nyfunden mønt. På dag to gik vi i praksis bare i gang med at tilføje nye funktioner til applikationen, vi lavede en beregning af de finansielle indikatorer og begyndte at udarbejde grafer over defektstatistikker i hovedlinjerne. Der var ikke noget egentligt code review i vores spor; eksperterne vurderede opgaveløsningen i stil med kaggle.com, baseret på præcision i forudsigelserne, mens frontend blev vurderet visuelt. Vores ML-løsning viste sig at være den mest præcise, og måske var det netop dette, der gjorde, at vi kunne trække foran. I natten fra lørdag til søndag arbejdede vi til kl. 2 om natten, hvorefter vi tog hjem for at sove i den lejlighed, vi brugte som base. Vi sov i cirka 5 timer, og søndag kl. 9 var vi allerede i Kazan Expo. Jeg hastede med nogle justeringer, men det meste af tiden gik med at forberede os til præsentationen. Præsentationerne fandt sted i to runder, foran to hold eksperter, og vi blev bedt om at præsentere sidst, da begge hold eksperter ønskede at lytte til os. Vi så dette som et godt tegn. Applikationen blev præsenteret fra min bærbare computer, fra en kørende udviklingsserver; vi nåede ikke at uddeploye applikationen korrekt, men det gjorde alle andre heller ikke.

Alt i alt gik det godt; vi blev peget på områder, hvor vi kunne forbedre vores applikation, og i tiden frem til præsentationen forsøgte vi faktisk at implementere nogle af disse forslag. Præsentationen forløb overraskende glat. Efter vores præsentation vidste vi, at vi lå foran i point, vi førte i præcision af løsningen, vi havde en god frontend, et godt design, og generelt var der gode fornemmelser. Et andet positivt tegn var, at moderatoren fra vores sektion tog et selfie med os lige inden vi gik ind i koncertsalen; jeg begyndte dengang at mistænke, at hun måske havde en anelse om, hvordan det ville gå))). Men vi kendte ikke vores point efter præsentationen, så tiden indtil vores teams præsentation på scenen var en smule spændt. På scenen fik vi en papkort med teksten 500000 rubler og hver især en lille taske med en kop og en powerbank til mobilen. Vi fik ikke rigtig mulighed for at nyde sejren eller fejre den ordentligt; vi spiste hurtigt middag og tog en taxa til togstationen.

Digital gennembrud – sådan gik det til
WAICO-teamet vinder i finalen

Ved tilbagekomsten til Moskva blev vi interviewet af journalister fra NTV. De filmede i en hel time på anden sal i caféen „Kvarter 44“ på Poljanka, men i nyhederne viste de kun 10 sekunder. Ikke desto mindre er det en stor fremgang sammenlignet med den regionale etape.

Hvis jeg skulle opsummere de generelle indtryk fra Digitalt gennembrud, ville de være følgende. Der blev brugt sindssygt mange penge på arrangementet, jeg har aldrig set hackathons af denne størrelse før. Men jeg kan ikke sige, at det var berettiget, og at det rent faktisk vil kunne betale sig. En betydelig del af deltagerne, der kom til Kazan, var blot festabe, der ikke kan lave noget med hænderne, og som blev samlet for at sætte rekorder. Jeg kan ikke sige, at konkurrencen i finalen var højere end på den regionale etape. Desuden vækker værdien og nytteværdien af nogle af sporene tvivl. Nogle opgaver var allerede blevet løst på industrielt niveau for længe siden. Som det senere viste sig, var nogle organisationer, der førte sporene, slet ikke interesserede i deres løsning. Og denne historie er endnu ikke afsluttet, de førende hold fra hvert spor blev udvalgt til en præ-accelerator, og det antages, at der vil komme BANEBRYDENDE startups. Men jeg er endnu ikke klar til at skrive om det, lad os se hvad der kommer ud af det.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster