Cyfrowy przełom – jak do tego doszło

To nie pierwszy hackaton, który wygrywam, i nie pierwszy pismoi nie jest to pierwszy post na Habré poświęcony „Cyfrowemu przełomowi”. Ale nie mogłam powstrzymać się od napisania. Uważam, że moje doświadczenie jest na tyle wyjątkowe, że mogę się nim podzielić. Jestem prawdopodobnie jedyną osobą na tym hackatonie, która wygrała etap regionalny i finały w ramach różnych drużyn. Chcesz wiedzieć, jak to się stało? Witamy w kocie.

Etap regionalny (Moskwa, 27–28 lipca 2019 r.).

Po raz pierwszy zobaczyłem reklamę „Digital Breakthrough” gdzieś w marcu-kwietniu tego roku. Oczywiście nie mogłem przepuścić tak dużego hackatonu i zarejestrować się na stronie. Tam zapoznałem się z warunkami i programem zawodów. Okazało się, że aby dostać się na hackaton, trzeba było zdać test online, który rozpoczął się 16 maja. I być może wygodnie bym o tym zapomniał, bo nie otrzymałem listu przypominającego o rozpoczęciu testów. I muszę powiedzieć, że w przyszłości WSZYSTKIE LISTY, które przychodziły do ​​mnie z procesora, konsekwentnie trafiały do ​​folderu ze spamem. Mimo że za każdym razem klikałem przycisk „nie budzi zastrzeżeń”. Nie wiem, jak udało im się osiągnąć taki efekt, u mnie z mailingiem na MailGunie nie wyszło. A chłopaki wydają się w ogóle nie wiedzieć o istnieniu usług takich jak isnotspam.com. Ale odkopujemy.

Przypomniało mi się o rozpoczęciu testów na jednym ze spotkań klub startupowy, tam też rozmawialiśmy o utworzeniu zespołu. Po otwarciu listy testów zasiadłem najpierw do testu JavaScript. Ogólnie rzecz biorąc, zadania były mniej więcej odpowiednie (np. jaki będzie wynik, jeśli dodasz 1 + „1” w konsoli). Ale z mojego doświadczenia korzystałbym z takich testów przy rekrutacji na stanowisko lub do zespołu z bardzo dużymi zastrzeżeniami. Faktem jest, że w prawdziwej pracy programista rzadko spotyka się z takimi rzeczami, ze swoją umiejętnością szybkiego debugowania kodu - ta wiedza w żaden sposób się nie koreluje, a takie rzeczy można dość łatwo wyszkolić do rozmów kwalifikacyjnych (wiem to od siebie). Ogólnie test przeklikałem dość szybko, w niektórych przypadkach sprawdzałem się sam w konsoli. W teście Pythona zadania były mniej więcej tego samego rodzaju, testowałem się także w konsoli i zdziwiłem się, że zdobyłem więcej punktów niż w JS, chociaż nigdy nie programowałem zawodowo w Pythonie. Później w rozmowach z uczestnikami słyszałem historie o tym, jak silni programiści słabo wypadali w testach, jak niektórzy otrzymywali listy, że nie przeszli selekcji na procesor, a potem i tak zostali na nią zaproszeni. Oczywiste jest, że twórcy tych testów najprawdopodobniej nic o nich nie słyszeli teoria testu, ani o ich wiarygodności i ważności, ani o tym, jak je testować, a pomysł z testami byłby od samego początku porażką, nawet gdybyśmy nie wzięli pod uwagę głównego celu hackatonu. A głównym celem włamania, jak dowiedziałem się później, było ustanowienie rekordu Guinnessa, a testy temu zaprzeczyły.

W pewnym momencie po przejściu testów zadzwonili do mnie, zapytali, czy wezmę udział, wyjaśnili szczegóły i poinstruowali, jak wejść na czat w celu wybrania drużyny. Wkrótce wszedłem na czat i krótko napisałem o sobie. Na czacie panowała kompletna bzdura, wydawało się, że organizatorzy reklamują się wielu przypadkowym osobom, które nie mają nic wspólnego z IT. Wielu menadżerów produktu „na poziomie Steve’a Jobsa” (prawdziwe zdanie z zgłoszenia jednego z uczestników) publikowało historie o sobie, a normalnych programistów w ogóle nie było widać. Miałem jednak szczęście i wkrótce dołączyłem do trójki doświadczonych programistów JS. Poznaliśmy się już na hackatonie, a potem do zespołu dodaliśmy dziewczynę, która będzie czerpać inspirację i rozwiązywać problemy organizacyjne. Nie pamiętam dlaczego, ale wzięliśmy pod uwagę temat „Szkolenie z zakresu cyberbezpieczeństwa” i umieściliśmy go w ścieżce „Nauka i edukacja 2”. Po raz pierwszy znalazłem się w 4-osobowym zespole mocnych programistów i po raz pierwszy poczułem, jak łatwo jest wygrać w takim składzie. Przyszliśmy nieprzygotowani i kłóciliśmy się aż do lunchu i nie mogliśmy się zdecydować, co zrobimy: aplikację mobilną czy internetową. W innej sytuacji uznałbym to za porażkę. Najważniejszą rzeczą dla nas było zrozumienie, w czym będziemy lepsi od naszych konkurentów, ponieważ wokół było wiele zespołów, które zajmowały się testami skrawania, grami dotyczącymi cyberbezpieczeństwa i tym podobnymi. Po przyjrzeniu się temu i przejrzeniu programów szkoleniowych i aplikacji w Google zdecydowaliśmy, że naszym głównym wyróżnikiem będą ćwiczenia przeciwpożarowe. Wybraliśmy szereg funkcji, które uznaliśmy za interesujące do wdrożenia (rejestracja za pomocą adresu e-mail i weryfikacja hasła w bazach hakerów, wysyłanie wiadomości phishingowych (w formie listów ze znanych banków), szkolenie z zakresu socjotechniki na czacie). Decydując się na to, co robimy i rozumiejąc, czym możemy się wyróżnić, szybko napisaliśmy pełnoprawną aplikację internetową, a ja wcieliłem się w nietypową rolę programisty backendowego. Tym samym pewnie wygraliśmy swój tor i jako część trzech innych drużyn zakwalifikowaliśmy się do finału w Kazaniu. Później w Kazaniu dowiedziałem się, że selekcja do finału była fikcją, spotkałem tam wiele znajomych twarzy z drużyn, które nie przeszły selekcji. Udzieliliśmy nawet wywiadu dziennikarzom Channel 1. Jednak w raporcie z niego nasza aplikacja została pokazana tylko na 1 sekundę.

Cyfrowy przełom – jak do tego doszło
Zaśnieżona drużyna, w której wygrałem etap regionalny

Finał (Kazań, 27 – 29 września 2019)

Ale potem zaczęły się porażki. Wszyscy programiści z ekipy Snowed w ciągu około miesiąca jeden po drugim informowali, że nie uda im się pojechać na finały do ​​Kazania. I pomyślałem o znalezieniu nowego zespołu. Najpierw zadzwoniłem na czacie ogólnym Russian Hack Team i choć otrzymałem tam całkiem sporo odpowiedzi i zaproszeń do dołączenia do drużyn, żadne z nich nie przykuło mojej uwagi. Były niezrównoważone zespoły, takie jak produkt, mobile developer, front-end, przypominające łabędzia, raki i szczupaka z bajki. Były też zespoły, które nie były dla mnie odpowiednie pod względem technologicznym (np. przy tworzeniu aplikacji mobilnej we Flutterze). Wreszcie na czacie, który uznałem za tandetny (ten sam VKontakte, na którym odbywał się wybór drużyn do etapu regionalnego), pojawiło się ogłoszenie o poszukiwaniu frontendera dla zespołu, a ja napisałem czysto losowo. Chłopaki okazali się absolwentami Skoltech i od razu zaproponowali spotkanie i zapoznanie się. Podobało mi się to, zespoły, które wolą poznać się od razu na hackatonie, zwykle niepokoją mnie brakiem motywacji. Spotkaliśmy się w „Rake” na Piatnickiej. Chłopaki wydawali się bystrzy, zmotywowani, pewni siebie i zwycięstwa, więc podjąłem decyzję od razu. Nie wiedzieliśmy jeszcze, jakie ścieżki i zadania znajdą się w finale, ale zakładaliśmy, że wybierzemy coś związanego z Machine Learning. A moim zadaniem będzie napisanie admina w tej sprawie, dlatego przygotowałem do tego wcześniej szablon w oparciu o antd-admin.
Do Kazania pojechałem bezpłatnie, na koszt organizatorów. Muszę powiedzieć, że na czatach i blogach wyrażano już wiele niezadowolenia w związku z zakupem biletów i ogólnie organizacją finału, nie będę tego wszystkiego powtarzać.

Po przybyciu na teren Kazania Expo, zarejestrowaniu się (miałem mały problem ze zdobyciem plakietki) i zjedzeniu śniadania udaliśmy się na wybór trasy. Na wielkie otwarcie, gdzie oficjele przemawiali, pojechaliśmy tylko na około 10 minut.W zasadzie mieliśmy już swoje ulubione utwory, ale ciekawiły nas szczegóły. Przykładowo w ścieżce nr 18 (Rostelecom) okazało się, że konieczne jest stworzenie aplikacji mobilnej, choć nie było tego w krótkim opisie. Dokonaliśmy głównego wyboru między torem nr 8 Defektoskopia rurociągów, Gazprom Nieft PJSC i torem nr 13 Centra okołoporodowe, Izba Obrachunkowa Federacji Rosyjskiej. W obu przypadkach potrzebna była Data Science i w obu przypadkach można było dodać sieć. W ścieżce nr 13 zatrzymał nas fakt, że zadanie Data Science było tam dość słabe, trzeba było parsować Rosstat i nie było jasne, czy potrzebny jest panel administracyjny. I sama wartość tego zadania była wątpliwa. Ostatecznie uznaliśmy, że jako zespół bardziej pasujemy do toru 8, zwłaszcza że chłopaki mieli już doświadczenie w rozwiązywaniu podobnych problemów. Zaczęliśmy od przemyślenia scenariusza, w którym nasza aplikacja będzie używana przez użytkownika końcowego. Okazało się, że będziemy mieli dwa typy użytkowników: techników zainteresowanych informacjami technicznymi oraz menedżerów potrzebujących wskaźników finansowych. Kiedy pojawił się pomysł na scenariusz, stało się jasne, co zrobić na froncie, co powinien narysować projektant i jakie metody są potrzebne na backendzie, możliwa stała się dystrybucja zadań. Obowiązki w zespole były podzielone następująco: dwie osoby rozwiązały ML na podstawie danych otrzymanych od ekspertów technicznych, jedna osoba napisała backend w Pythonie, ja napisałem frontend w React i Antd, projektant narysował interfejsy. Usiedliśmy nawet, żeby wygodniej było nam się komunikować przy rozwiązywaniu naszych problemów.

Pierwszy dzień minął niemal niezauważony. W rozmowie z ekspertami technicznymi okazało się, że oni (Gazprom Nieft) już rozwiązali ten problem, zastanawiali się tylko, czy można go rozwiązać lepiej. Nie powiem, że to zmniejszyło moją motywację, ale pozostawiło ślad. Zdziwiło mnie, że w nocy moderatorzy sekcji odnotowali działające zespoły (jak to powiedzieli dla statystyk), a na hackatonach zwykle się tego nie praktykuje. Do rana mieliśmy prototyp przodu, pewne podstawy tyłu i gotowe pierwsze rozwiązanie ML. Ogólnie rzecz biorąc, było już coś do pokazania ekspertom. W sobotnie popołudnie projektant oczywiście narysował więcej interfejsów, niż miałbym czas na zakodowanie i zabrał się za tworzenie prezentacji. Sobotę przeznaczono na rejestrację protokołu, a rano wszystkich pracujących na hali wyrzucono na korytarz, następnie wejście i wyjście z sali odbywało się za pomocą identyfikatorów i nie można było już wychodzić niż godzinę dziennie. Nie powiem, żeby było to dla nas jakąś znaczącą niedogodnością, większość dnia nadal siedzieliśmy i pracowaliśmy. Jedzenie rzeczywiście było bardzo skromne, na obiad dostaliśmy szklankę rosołu, placek i jabłko, ale znowu nas to nie zmartwiło zbytnio, byliśmy skupieni na czymś innym.

Okresowo rozdawali red bulla po dwie puszki na rękę, co było bardzo pomocne. Przepis na napój energetyczny + kawa, który od dawna testowałem na hackatonach, pozwolił mi kodować całą noc i następny dzień, ciesząc się jak szklanka. Drugiego dnia po prostu dodaliśmy do aplikacji nowe funkcje, obliczyliśmy wskaźniki finansowe i zaczęliśmy wyświetlać wykresy statystyk usterek na autostradach. W naszym torze nie było żadnego przeglądu kodu jako takiego, eksperci oceniali rozwiązanie problemu w stylu kaggle.com na podstawie trafności prognozy, a frontend oceniany był wizualnie. Nasze rozwiązanie ML okazało się najtrafniejsze i być może właśnie to pozwoliło nam zostać liderami. W nocy z soboty na niedzielę pracowaliśmy do 2 w nocy, a potem spaliśmy w mieszkaniu, które służyło nam za bazę wypadową. Spaliśmy około 5 godzin, w niedzielę o 9:2 byliśmy już na Kazan Expo. Przygotowałem coś w pośpiechu, ale większość czasu spędziłem na przygotowaniach do przedobrony. Obrony wstępne odbyły się w XNUMX transmisjach, przed dwoma zespołami ekspertów; poproszono nas o zabranie głosu jako ostatni, ponieważ oba zespoły ekspertów chciały nas wysłuchać. Uznaliśmy to za dobry znak. Aplikacja została wyświetlona z mojego laptopa, z działającego serwera deweloperskiego, nie mieliśmy czasu na prawidłowe wdrożenie aplikacji, jednak wszyscy zrobili to samo.

Generalnie wszystko poszło dobrze, wskazano nam punkty, w których moglibyśmy ulepszyć naszą aplikację, a w okresie przed obroną nawet próbowaliśmy wdrożyć niektóre z tych uwag. Zaskakująco sprawnie przebiegała także obrona. Bazując na wynikach przedobrony wiedzieliśmy, że prowadzimy punktowo, jesteśmy liderem pod względem trafności rozwiązań, mamy dobry front-end, dobry design i ogólnie mamy dobry uczucia. Kolejnym pozytywnym sygnałem było to, że moderatorka z naszej sekcji zrobiła sobie z nami selfie przed wejściem na salę koncertową i wtedy podejrzewałam, że może coś wiedzieć))). Jednak po obronie nie znaliśmy wyniku, więc czas do ogłoszenia ze sceny naszego składu minął nieco nerwowo. Na scenie wręczyli karton z napisem 500000 XNUMX rubli, a każda osoba otrzymała torbę z kubkiem i baterią do telefonu komórkowego. Nie udało nam się nacieszyć zwycięstwem i należycie go uczcić, szybko zjedliśmy obiad i pojechaliśmy taksówką do pociągu.

Cyfrowy przełom – jak do tego doszło
Zespół WAICO wygrywa finał

Po powrocie do Moskwy przeprowadzili z nami wywiad dziennikarze NTV. Kręciliśmy całą godzinę na drugim piętrze kawiarni Kvartal 44 na Polanie, ale wiadomość pokazała tylko około 10 sekund, w końcu duży postęp w porównaniu do sceny regionalnej.

Jeśli podsumujemy ogólne wrażenia z Cyfrowego Przełomu, są one następujące. Na wydarzenie wydano mnóstwo pieniędzy, nigdy wcześniej nie widziałem hackatonów na taką skalę. Nie mogę jednak powiedzieć, że jest to uzasadnione i że naprawdę się opłaci. Znaczna część uczestników, którzy przyjechali do Kazania, to po prostu imprezowicze, którzy nie umieli nic zrobić własnymi rękami i zmuszeni byli bić rekordy. Nie mogę powiedzieć, że rywalizacja w finale była większa niż na etapie regionalnym. Wątpliwa jest także wartość i przydatność zadań niektórych utworów. Niektóre problemy zostały już dawno rozwiązane na poziomie przemysłowym. Jak się później okazało, część organizacji prowadzących tory nie była zainteresowana ich rozwiązaniem. A ta historia się jeszcze nie skończyła, do preakceleratora wybrano czołowe zespoły z każdego toru i zakłada się, że okażą się one PRZEŁOMOWYMI startupami. Ale nie jestem jeszcze gotowy, aby o tym pisać, zobaczymy, co z tego wyniknie.

Źródło: www.habr.com

Dodaj komentarz