Digitaler Durchbruch – wie es war

Das ist nicht der erste Hackathon, den ich gewinne, nicht der erste, von dem ich schreibe, und das ist bei weitem nicht der erste Beitrag auf Habr, der dem „Digitalen Durchbruch“ gewidmet ist. Aber ich konnte einfach nichts weglassen. Ich halte meine Erfahrungen für ausreichend einzigartig, um sie zu teilen. Vermutlich bin ich die einzige Person auf diesem Hackathon, die die regionale Etappe und das Finale in verschiedenen Teams gewonnen hat. Möchten Sie wissen, wie es dazu kam? Willkommen unter dem Beitrag.

Regionale Etappe (Moskau, 27. – 28. Juli 2019).

Die Werbung für den „Digitalen Durchbruch“ habe ich zum ersten Mal irgendwo im März – April dieses Jahres gesehen. Natürlich konnte ich an einem so großen Hackathon nicht vorbeigehen und habe mich auf der Website angemeldet. Dort habe ich mich auch über die Bedingungen und das Programm des Wettbewerbs informiert. Es stellte sich heraus, dass man für die Teilnahme am Hackathon einen Online-Test bestehen musste, der am 16. Mai begann. Und möglicherweise hätte ich das problemlos vergessen, da kein Erinnerungs-E-Mail zum Start des Tests kam. Und man muss sagen, dass alle E-Mails, die ich vom CP erhielt, konstant im Spam-Ordner landeten. Obwohl ich jedes Mal auf die Schaltfläche „nicht unerwünscht“ klickte. Ich weiß nicht, wie es ihnen gelungen ist, ein solches Ergebnis zu erzielen, bei meinem Versanddienst auf MailGun hat das nicht geklappt. Und anscheinend wissen die Leute nicht einmal von der Existenz von Diensten wie isnotspam.com. Aber wir sind abgeschweift.

Einen Hinweis auf den Beginn des Testens erhielt ich bei einem der Treffen des Startup-Clubs, dort haben wir auch die Teamzusammenstellung besprochen. Als ich die Liste der Tests öffnete, setzte ich mich zuerst an den Test für Javascript. Insgesamt waren die Aufgaben mehr oder weniger angemessen (zum Beispiel: Welches Ergebnis erhält man, wenn man in der Konsole 1 + ‘1’ zusammenzählt?). Aber aus meiner Erfahrung würde ich solche Tests bei der Auswahl für eine Stelle oder ein Team mit sehr großen Vorbehalten verwenden. Der Grund ist, dass ein Programmierer in der realen Arbeit selten mit solchen Dingen konfrontiert wird; seine Fähigkeit, schnell Code zu schreiben, steht in keinem Zusammenhang mit diesen Kenntnissen, und man kann sich relativ leicht auf solche Dinge für Vorstellungsgespräche vorbereiten (ich spreche aus eigener Erfahrung). Ich habe den Test ziemlich schnell durchgearbeitet und mich in einigen Fällen in der Konsole selbst überprüft. Der Test für Python enthielt Aufgaben ähnlichen Typs; auch hier habe ich mich in der Konsole überprüft und war überrascht, dass ich mehr Punkte als beim JS-Test erzielt habe, obwohl ich nie professionell in Python programmiert habe. Später hörte ich im Gespräch mit den Teilnehmern Geschichten darüber, wie starke Programmierer niedrige Punktzahlen in den Tests erreichten, wie einige Menschen E-Mails erhielten, dass sie die Vorauswahl für die CP nicht bestanden hatten, und dann trotzdem eingeladen wurden. Es ist klar, dass die Ersteller dieser Tests wahrscheinlich nichts gehört haben über die Testtheorie, ihre Zuverlässigkeit und Validität, noch darüber, wie man sie testen kann, und die Idee mit den Tests wäre in der Anfangsphase gescheitert, selbst wenn man das Hauptziel des Hackathons nicht berücksichtigt. Und das Hauptziel des Hacks, wie ich später erfuhr, war, einen Guinness-Weltrekord aufzustellen, und die Tests standen dem entgegen.

Irgendwann nach dem Testanruf fragten sie mich, ob ich teilnehmen möchte, klärten die Details und sagten mir, wie ich in den Teamzuschuss-Chat komme. Bald trat ich dem Chat bei und schrieb kurz über mich. Im Chat herrschte völliges Chaos, es schien, als hätten die Organisatoren durch Werbung viele zufällige Leute angelockt, die keinen Bezug zu IT hatten. Zahlreiche Produktmanager 'auf Steve-Jobs-Niveau' (eine tatsächliche Phrase aus einer Teilnehmerpräsentation) posteten Geschichten über sich selbst, während man normale Entwickler kaum sah. Aber ich hatte Glück und schloss mich bald drei erfahrenen JS-Programmierern an. Wir lernten uns beim Hackathon kennen, wo wir dann auch ein Mädchen hinzuholten, um Inspiration zu bekommen und organisatorische Fragen zu klären. Ich erinnere mich nicht mehr, warum, aber wir wählten das Thema 'Cybersecurity-Training' und landeten damit im Track 'Wissenschaft und Bildung 2'. Zum ersten Mal war ich in einem Team aus vier starken Programmierern und spürte zum ersten Mal, wie leicht es ist, in solcher Besetzung zu gewinnen. Wir kamen unvorbereitet an und stritten bis zum Mittagessen, konnten uns nicht entscheiden, ob wir eine mobile App oder eine Website entwickeln wollten. In jeder anderen Situation hätte ich gedacht, dass das ein Misserfolg ist. Das Wichtigste für uns war zu verstehen, womit wir uns von den Wettbewerbern abheben könnten, denn es gab rundherum viele Teams, die Tests, Spiele zur Cybersecurity und ähnliche Dinge entwickelten. Angesichts dessen und beim Googeln nach Bildungsprogrammen und -anwendungen beschlossen wir, dass unser Hauptunterscheidungsmerkmal Trainings nach dem Prinzip eines Feueralarms sein sollten. Wir wählten eine Reihe von Funktionen aus, die uns für interessant hielten (Registrierung mit Überprüfung der E-Mail und des Passworts anhand von Hacker-Datenbanken, Versand von Phishing-E-Mails (in Form von E-Mails bekannter Banken), Social Engineering-Training im Chat). Nachdem wir uns entschieden hatten, was wir tun, und verstanden, womit wir uns abheben konnten, schrieben wir ziemlich schnell eine vollwertige Webanwendung, wobei ich in einer für mich ungewöhnlichen Rolle als Backend-Entwickler tätig war. So gewannen wir unseren Track souverän und qualifizierten uns mit noch drei anderen Teams für das Finale in Kasan. Später in Kasan erfuhr ich, dass die Auswahl fürs Finale eine Fiktion war, da ich dort viele bekannte Gesichter aus Teams traf, die diesen Auswahlprozess nicht bestanden hatten. Sogar Journalisten vom ersten Kanal führten ein Interview mit uns. Das einzige Problem war, dass in dem Bericht unser Projekt nur für eine Sekunde gezeigt wurde.

Digitaler Durchbruch – wie es war
Das Team Snowed, mit dem ich die regionale Runde gewonnen habe

Finale (Kasan, 27. – 29. September 2019)

Doch dann begannen die Rückschläge. Alle Programmierer aus dem Team Snowed berichteten innerhalb von etwa einem Monat, einer nach dem anderen, dass sie nicht nach Kasan zum Finale fahren könnten. Und ich begann, nach einem neuen Team zu suchen. Zuerst habe ich im allgemeinen Chat des Russian Hack Team einen Aufruf gestartet und obwohl ich viele Rückmeldungen und Einladungen in Teams bekam, hat mich keines von ihnen wirklich angesprochen. Es gab unausgewogene Teams, zum Beispiel mit einem Produkt-Manager, einem mobilen Entwickler, einem Frontend-Entwickler, das erinnerte mich an die Geschichte von der Schwänen, dem Krebs und dem Hecht. Es gab auch Teams, die technologisch nicht zu mir passten (zum Beispiel mit der Entwicklung einer mobilen Anwendung auf Flutter). Schließlich wurde im Chat, den ich für einen Scherz hielt (dem, den wir bei VKontakte hatten, wo die Teams für die regionale Runde ausgewählt wurden), eine Anzeige für die Suche nach einem Frontend-Entwickler gepostet, und ich habe einfach aus dem Bauch heraus geschrieben. Die Jungs stellten sich als Doktoranden der Skoltech heraus und boten sofort ein Treffen zum Kennenlernen an. Das gefiel mir, Teams, die sofort beim Hackathon bekannt werden wollen, wecken normalerweise mein Misstrauen wegen fehlender Motivation. Wir trafen uns in der „Grabli“ auf der Pjatnitskaja. Die Jungs schienen mir kompetent, motiviert, selbstbewusst und siegessicher zu sein, und ich traf gleich dort die Entscheidung. Wir wussten noch nicht, welche Tracks und Aufgaben im Finale auf uns warteten, aber wir vermuteten, dass wir etwas im Bereich Machine Learning wählen würden. Meine Aufgabe würde sein, dafür ein Admin-Panel zu schreiben, also hatte ich im Voraus eine Vorlage auf Basis von antd-admin vorbereitet.
Nach Kasan bin ich kostenlos auf Kosten der Veranstalter gefahren. Ich muss sagen, dass bereits in Chats und Blogs viel Unmut über den Ticketkauf und die allgemeine Organisation des Finales geäußert wurde, ich werde das alles nicht wiederholen.

Nach der Ankunft in Kazan Expo, nachdem ich mich registriert hatte (das Verfahren zur Erlangung des Badges war etwas problematisch) und gefrühstückt hatte, begaben wir uns zur Auswahl des Tracks. Zum feierlichen Eröffnungsakt, bei dem offizielle Persönlichkeiten auftraten, blieben wir nur etwa 10 Minuten. Eigentlich hatten wir bereits unsere bevorzugten Tracks, aber uns interessierten die Details. Im Track Nr. 18 (Rostelecom) stellte sich beispielsweise heraus, dass eine mobile Anwendung entwickelt werden musste, obwohl dies in der kurzen Beschreibung nicht erwähnt wurde. Unsere Hauptwahl fiel zwischen Track Nr. 8, Defektoskopie von Rohrleitungen, PAO „Gazprom Neft“ und Track Nr. 13, Perinatale Zentren, Rechnungshof der RF. In beiden Fällen war Data Science erforderlich, und in beiden Fällen hätte man das Web einbinden können. Im Track Nr. 13 hielt uns die Tatsache auf, dass die Aufgabenstellung für Data Science eher schwach war; es musste Rosstat geparsed werden, und es war unklar, ob eine Admin-Oberfläche benötigt wurde. Auch der Wert der Aufgabe selbst war fraglich. Am Ende entschieden wir, dass unser Team besser für Track 8 geeignet war, zumal das Team bereits Erfahrung mit ähnlichen Aufgaben hatte. Wir begannen damit, ein Szenario zu entwickeln, nach dem der Endnutzer unsere Anwendung verwenden würde. Es stellte sich heraus, dass wir zwei Benutzerarten haben würden: Techniker, die an technischen Informationen interessiert sind, und Manager, die finanzielle Kennzahlen benötigten. Als wir ein Vorstellung vom Szenario hatten, wurde klar, was im Frontend zu tun war, was zu zeichnen war, und welche Methoden im Backend benötigt wurden, so dass die Aufgaben verteilt werden konnten. Die Aufgaben im Team wurden wie folgt verteilt: Zwei Personen arbeiteten an ML mit den von den technischen Experten bereitgestellten Daten, eine Person schrieb das Backend in Python, ich arbeitete am Frontend mit React und Ant Design, und der Designer entwarf die Schnittstellen. Wir setzten uns sogar so zusammen, dass es uns leichter fiel, unsere Aufgaben zu besprechen.

Die ersten 24 Stunden vergingen fast unbemerkt. Im Gespräch mit den technischen Experten stellte sich heraus, dass dieses Problem von ihnen ("Gazprom Neft") bereits gelöst wurde, sie sind nur neugierig, ob es besser gelöst werden kann. Ich kann nicht sagen, dass dies die Motivation gemindert hat, aber es bleibt ein Nachgeschmack. Es überraschte mich, dass die Moderatoren der Sektionen nachts die arbeitenden Teams festhielten (wie sie sagten, zur Statistik), das wird normalerweise bei Hackathons nicht praktiziert. Am Morgen hatten wir einen Frontprototypen bereit, einige erste Ansätze für das Backend und die erste ML-Lösung. Im Allgemeinen hatten wir bereits etwas, das wir den Experten zeigen konnten. Im Laufe des Samstags zeichnete der Designer bereits mehr Schnittstellen, als ich programmieren konnte, und wechselte zur Erstellung der Präsentation. Der Samstag war für die Rekordregistrierung vorgesehen, und am Morgen wurden alle im Raum arbeitenden Personen in den Flur geschickt, dann wurde der Ein- und Ausgang zum Raum per Badge gesteuert, wobei man tagsüber nicht länger als eine Stunde herausgehen konnte. Ich kann nicht sagen, dass es uns nennenswerte Unannehmlichkeiten bereitete, den größten Teil des Tages saßen wir trotzdem und arbeiteten. Die Verpflegung war in der Tat sehr spärlich, zum Mittagessen erhielten wir ein Glas Brühe, ein Pirogge und einen Apfel, aber das machte uns wiederum nicht wirklich traurig, wir waren auf etwas anderes konzentriert.

Gelegentlich gab es Red Bull, zwei Dosen pro Person, das kam gerade recht. Der seit langem erprobte Rezept für Hackathons, Energydrink + Kaffee, erlaubte es uns, die ganze Nacht und den folgenden Tag zu coden, und wir waren so wach wie ein Wassertropfen. Am zweiten Tag fügten wir im Grunde genommen einfach neue Funktionen zur Anwendung hinzu, machten eine Berechnung der finanziellen Kennzahlen und begannen, Diagramme zur Fehlerstatistik in den Hauptleitungen zu erstellen. In unserer Kategorie gab es keine eigentliche Code-Überprüfung, die Experten bewerteten die Problemlösung im Stil von kaggle.com, according auf die Genauigkeit der Vorhersage, während das Frontend visuell bewertet wurde. Unsere ML-Lösung stellte sich als die genaueste heraus, vielleicht hat uns das geholfen, an die Spitze zu gelangen. In der Nacht von Samstag auf Sonntag arbeiteten wir bis 2 Uhr nachts und fuhren dann zurück zur Wohnung, die wir als Basis nutzten. Wir schliefen etwa 5 Stunden, am Sonntag um 9 Uhr waren wir bereits in Kazan Expo. Ich führte hastig einige Anpassungen durch, aber der größte Teil der Zeit wurde mit der Vorbereitung auf die Vorverteidigung verbracht. Die Vorverteidigungen fanden in zwei Strömen vor zwei Expertenteams statt, wir wurden gebeten, als letzte zu sprechen, da beide Expertenteams uns hören wollten. Wir empfanden das als ein gutes Zeichen. Die Anwendung zeigten wir von meinem Laptop aus, vom laufenden Entwicklungsserver, eine ordentliche Bereitstellung der Anwendung hatten wir nicht rechtzeitig geschafft, das machten im Übrigen alle.

Insgesamt lief alles gut, uns wurde auf Punkte hingewiesen, in denen wir unsere Anwendung verbessern konnten, und in der Zeit vor der Verteidigung versuchten wir sogar, einige dieser Anmerkungen umzusetzen. Die Verteidigung verlief auch erstaunlich reibungslos. Nach der Vorverteidigung wussten wir, dass wir punktemäßig vorne lagen, wir führten in der Genauigkeit der Lösung, unser Frontend war gut, das Design war gut und insgesamt hatten wir ein gutes Gefühl. Ein weiteres günstiges Zeichen war, dass die Moderatorin unserer Sektion vor dem Eingang zum Konzertsaal ein Selfie mit uns machte; da hatte ich den Verdacht, dass sie vielleicht etwas weiß))). Aber wir kannten unsere Punkte nach der Verteidigung nicht, daher war die Zeit bis zur Bekanntgabe unseres Teams von der Bühne aus etwas angespannt. Auf der Bühne erhielten wir eine Pappe mit der Aufschrift 500000 Rubel und jeder ein Paket mit einer Tasse und einem Akku für das Handy. Wir konnten den Sieg nicht richtig genießen und feiern, wir aßen schnell zu Abend und fuhren mit dem Taxi zum Zug.

Digitaler Durchbruch – wie es war
Das Team WAICO gewinnt im Finale

Nach der Rückkehr nach Moskau wurden wir von Journalisten von NTV interviewt. Sie drehten eine ganze Stunde im zweiten Stock des Cafés „Kvartal 44“ in der Poljanka, aber in den Nachrichten wurden nur etwa 10 Sekunden gezeigt. Schließlich ist das ein großer Fortschritt im Vergleich zur regionalen Etappe.

Um die allgemeinen Eindrücke vom Digitalen Durchbruch zusammenzufassen, kann ich Folgendes sagen. Bei der Veranstaltung wurden einfach unglaubliche Beträge ausgegeben, ich habe noch nie zuvor Hackathons dieses Ausmaßes gesehen. Aber ich kann nicht sagen, dass es gerechtfertigt ist und dass es sich wirklich auszahlen wird. Ein erheblicher Teil der Teilnehmer, die nach Kasan gekommen waren, waren einfach Partygänger, die nichts mit ihren eigenen Händen machen können, und die nur geholt wurden, um einen Rekord aufzustellen. Ich kann nicht sagen, dass der Wettbewerb im Finale höher war als in der regionalen Etappe. Auch der Wert und die Nützlichkeit der Aufgaben einiger Tracks sind fraglich. Einige Aufgaben wurden bereits auf industrieller Ebene gelöst. Wie sich später herausstellte, waren einige Organisationen, die die Tracks leiteten, nicht einmal an deren Lösung interessiert. Und diese Geschichte ist noch nicht zu Ende, die führenden Teams jedes Tracks wurden in einen Pre-Accelerator ausgewählt, und es wird erwartet, dass daraus DISRUPTIVE Startups entstehen. Aber ich bin noch nicht bereit, darüber zu schreiben, wir werden sehen, was daraus wird.

Quelle: habr.com

60GB SSD 8Gb DDR4