Лічбавы прарыў - як гэта было

Гэта не першы хакатон, які я выйграваю, не першы, пра які пішу, і гэта далёка не першы пост на хабры, прысвечаны «Лічбаваму прарыву». Але не напісаць я не мог. Лічу свой досвед дастаткова ўнікальным, каб ім падзяліцца. Верагодна, я адзіны на гэтым хакатоне чалавек, які выйграў рэгіянальны этап і фінал у складзе розных каманд. Жадаеце даведацца, як гэта адбылося? Сардэчна запрашаем пад кат.

Рэгіянальны этап (Масква, 27 - 28 ліпеня 2019 года).

Рэкламу "Лічбавага прарыву" я ўпершыню ўбачыў дзесьці ў сакавіку - красавіку гэтага года. Натуральна, прайсці міма такога буйнога хакатона я не мог і зарэгістраваўся на сайце. Тамсама азнаёміўся з умовамі і праграмай конкурсу. Аказалася, каб патрапіць на хакатон, трэба было прайсці анлайн-тэставанне, якое пачыналася з 16 траўня. І, магчыма, я б пра гэта шчасна забыўся, бо ліст з напамінкам аб старце тэставання не прыходзіла. І, трэба сказаць, у далейшым УСЕ Лісты, якія прыходзілі мне ад ЦП, стабільна пападалі ў тэчку спам. Хоць я і кожны раз націскаў кнопку "не з'яўляецца непажаданым". Не ведаю, як ім удалося дабіцца такога выніку, у мяне з рассыланнем на MailGun так не атрымлівалася. А пра існаванне сэрвісаў тыпу isnotspam.com хлопцы, здаецца, не ведаюць у прынцыпе. Але мы адхіліліся.

Аб пачатку тэсціравання мне нагадалі на адной з сустрэч стартап клуба, там жа мы абмеркавалі фармаванне каманды. Адкрыўшы спіс тэстаў, я перш за ўсё засеў за тэст па Javascript. У цэлым, заданні былі больш-менш адэкватныя (тыпу, які вынік будзе, калі скласці ў кансолі 1+'1'). Але па сваім досведзе выкарыстоўваць такія тэсты пры падборы на працу ці ў каманду я б стаў з вельмі вялікімі агаворкамі. Справа ў тым, што ў рэальнай працы праграміст з такімі рэчамі сутыкаецца рэдка, з яго здольнасцю хутка ебашить код, - гэтыя веды ніяк не карэлююць, а натрэніравацца на такія рэчы для гутарак можна даволі лёгка (ведаю па сабе). Увогуле, я пстрыкаў тэст даволі хутка, у некаторых выпадках правяраў сябе ў кансолі. У цесцю па python заданні былі прыкладна такога ж тыпу, таксама правяраў сябе ў кансолі, са здзіўленнем набраў больш балаў чым па JS, хоць на пітоне я ніколі прафесійна не праграмаваў. Потым ужо ў зносінах з удзельнікамі чуў гісторыі, як моцныя праграмісты набіралі нізкія балы па тэстах, як некаторым людзям прыходзілі лісты аб тым, што яны не прайшлі адбор на ЦП, а пасля іх усё роўна на яго запрашалі. Зразумела, што стваральнікі гэтых тэстаў, хутчэй за ўсё, нічога не чулі ні пра тэорыю тэстаў, ні пра іх надзейнасць і валіднасць, ні пра тое, як іх апрабаваць, і ідэя з тэстамі першапачаткова была б правальнай, нават калі не браць да ўвагі галоўную мэту хакатона. А галоўная мэта хаку, як я даведаўся пазней, была паставіць рэкорд Гінэса, і тэсты ёй супярэчылі.

У нейкі момант пасля праходжання тэстаў мне патэлефанавалі, спыталі, ці буду я ўдзельнічаць, удакладнілі дэталі і сказалі, як патрапіць у чат для падбору каманды. Неўзабаве, я зайшоў у чат і коратка напісаў пра сябе. У чаце рабіўся поўны трэш, стварылася ўражанне, што арганізатары нагналі рэкламай шмат выпадковых людзей, якія не маюць да IT ніякага дачынення. Шматлікія продакт менеджэры «ўзроўню Стыў Джобс» (рэальная фраза з аднаго ўяўлення ўдзельніка) пасцілі апавяданні пра сябе, а нармальных распрацоўшчыкаў нават не было відаць. Але мне павезла, і я неўзабаве далучыўся да трох дасведчаных JS-праграмістам. Пазнаёміліся адзін з адным мы ўжо на хакатоне, тады ж дадалі ў каманду дзяўчыну для натхнення і рашэнні орг пытанняў. Ужо не памятаю чаму, але мы ўзялі тэму "Навучанне кібербяспекі" і патрапілі з ёй у трэк "Навука і адукацыя 2". Я першы раз аказаўся ў камандзе з 4 моцных праграмістаў і ўпершыню адчуў, наколькі лёгка перамагаць у такім складзе. Мы прыйшлі непадрыхтаваныя і да абеду спрачаліся і не маглі вызначыцца, што будзем рабіць: мабільнае прыкладанне або вэб. У любой іншай сітуацыі я б падумаў, што гэта правал. Самым галоўным для нас было зразумець, чым мы будзем лепш за канкурэнтаў, бо вакол было поўна каманд, якія пілавалі тэсты, гульні па кібербяспецы і таму падобныя рэчы. Гледзячы на ​​гэта і гугля навучальныя праграмы і дадатку, мы вырашылі, што нашай галоўнай адметнай асаблівасцю будуць трэніроўкі па прынцыпе пажарнай трывогі. Мы адабралі цэлы шэраг фішак, якія здаліся нам цікавымі для рэалізацыі (рэгістрацыя з праверкай емейла і пароля па хакерскіх базах, рассыланне фішынгавых лістоў (у выглядзе лістоў ад вядомых банкаў), трэніроўкі па сацыяльнай інжынерыі ў чаце). Вызначыўшыся з тым што мы робім і зразумеўшы, чым мы можам вылучыцца, мы даволі хутка напісалі паўнавартаснае вэб-прыкладанне, прычым я выступіў у неўласцівай для сябе ролі бэкенд распрацоўніка. Такім чынам мы ўпэўнена выйгралі свой трэк і ў складзе яшчэ трох каманд адабраліся ў фінал у Казань. Ужо пазней, у Казані я даведаўся, што адбор у фінал быў фікцыяй, я сустрэў тамака шмат знаёмых асоб з каманд, якія гэты адбор не мінулі. У нас нават узялі інтэрв'ю журналісты з 1 канала. Праўда, у рэпартажы з яго толькі на 1 секунду паказалі наша дадатак.

Лічбавы прарыў - як гэта было
Каманда Snowed, у складзе якой я выйграў рэгіянальны этап

Фінал (Казань, 27 - 29 верасня 2019 года)

Але далей пачаліся няўдачы. Усе праграмісты з каманды Snowed на працягу прыкладна месяца, адзін за адным, паведамілі, што не змогуць паехаць у Казань на фінал. І я задумаўся аб пошуку новай каманды. Спачатку я кінуў кліч у агульным чаце зборнай Russian Hack Team, і хоць тамака я атрымаў даволі шмат водгукаў і запрашэнняў у каманды, але ні адна з іх мяне не ўчапіла. Былі незбалансаваныя каманды, як напрыклад, продакт, мабільны распрацоўшчык, франтэндэр, нагадвае лебедзя, рака і шчупака з байкі. Былі таксама каманды, якія не падыходзілі мне па тэхналогіі (напрыклад, з распрацоўкай мабільнага дадатку на Flutter). Нарэшце, у чаце, які я лічыў трэшавым (той самы вконтакте, дзе адбываўся падбор каманд на рэгіянальны этап), запосцілі аб'яву аб пошуку ў каманду франдэндэра, і я чыста наўздагад напісаў. Хлопцы аказаліся аспірантамі скалтэха і адразу прапанавалі сустрэцца і пазнаёміцца. Мне гэта спадабалася, каманды, якія аддаюць перавагу знаёміцца ​​адразу на хакатоне, звычайна мяне насцярожваюць сваёй адсутнасцю матывацыі. Сустрэліся ў “Граблях” на Пятніцкай. Хлопцы здаліся мне талковымі, матываванымі, упэўненымі ў сабе і ў перамозе, і рашэнне я прыняў прама тамака. Мы яшчэ не ведалі, якія будуць трэкі і задачы ў фінале, але меркавалі, што абярэм нешта, злучанае з Machine Learning. А маёй задачай будзе напісаць пад гэтую справу адмінку, таму я загадзя падрыхтаваў для гэтага нарыхтоўку на аснове antd-admin.
У Казань я паехаў бясплатна, за рахунак арганізатараў. Трэба сказаць, што ў чатах і блогах ужо было выказана вельмі шмат незадаволенасці з нагоды закупкі квіткоў і, у цэлым, арганізацыі фіналу, не буду гэта ўсё пераказваць.

Прыехаўшы ў Казань Экспа, зарэгістраваўшыся (пры гэтым у мяне ўзніклі невялікія праблемы з атрыманнем бэйджа) і паснедаўшы, мы пайшлі выбіраць трэк. На ўрачыстае адкрыццё, дзе выступалі афіцыйныя асобы, мы зайшлі толькі хвілін на 10. Насамрэч, у нас ужо былі ўпадабаныя трэкі, але нас цікавілі дэталі. У трэку No 18 (Ростелеком), напрыклад, аказалася што трэба распрацаваць мабільнае прыкладанне, хоць у кароткім апісанні гэтага не было. Асноўны выбар мы рабілі паміж трэкам No 8 Дэфектаскапія трубаправодаў, ПАТ "Газпром нафту" і трэкам No 13 Перынатальныя цэнтры, Падліковая палата РФ. І там, і там патрэбен быў Data Science, і там, і там можна было б прыкруціць вэб. У трэку No 13 нас спыніла тое, што задача па Data Science тамака была даволі слабой, трэба было парсіць расстат і не было зразумела, ці патрэбна адмінка. Ды і сама каштоўнасць задачы выклікала сумневы. У выніку мы вырашылі, што як каманда мы больш заменчаныя пад 8 трэк, тым больш, што ў рабят ужо быў досвед рашэння падобных задач. Пачалі мы з таго, што прадумалі сцэнар, па якім наша дадатак будзе выкарыстоўваць канчатковы карыстальнік. Атрымлівалася, што ў нас будзе два тыпы карыстальнікаў: тэхнары, якіх цікавяць тэхнічная інфармацыя і кіраванцы, якім былі патрэбны фінансавыя паказчыкі. Калі з'явілася ўяўленне аб сцэнары, стала зразумела, што рабіць на фронце, што маляваць дызайнеру, і якія метады патрэбныя на бэкендзе, стала магчымым размеркаваць задачы. Абавязкі ў камандзе размеркаваліся наступным чынам: двое чалавек вырашалі ML з атрыманымі ад тэхэкспертаў дадзенымі, адзін чалавек пісаў на пітоне бэкенд, я пісаў фронт на рэакце і antd, дызайнер маляваў інтэрфейсы. Мы нават селі так, каб нам было зручней размаўляць, вырашаючы свае задачы.

Першыя суткі праляцелі практычна незаўважна. У зносінах з тэхэксперта высветлілася, што гэтая задача імі («Газпром нафтай») ужо вырашана, ім проста цікава, ці можна яе вырашыць лепш. Не скажу, што гэта знізіла матывацыю, але асадак застаўся. Здзівіла, што ўначы мадэратары секцый адзначалі якія працуюць каманды (як яны казалі для статыстыкі), звычайна на хакатонах гэта не практыкуецца. Да раніцы ў нас быў готаў прататып фронта, некаторыя зародкі бека, першае рашэнне ML. Увогуле, ужо было што паказваць экспертам. У другой палове дня суботы дызайнер намаляваў ужо загадзя больш інтэрфейсаў, чым я б паспеў накадзіць і пераключыўся на стварэнне прэзентацыі. Субота была адведзена на рэгістрацыю рэкорду, і з раніцы, усіх, хто працуе ў зале, выгналі ў калідор, затым уваход і выхад з залы ажыццяўляўся па бэйджыках, прычым выходзіць за дзень можна было не больш чым на гадзіну. Не скажу што гэта даставіла нам нейкія істотныя нязручнасці, большую частку дня мы ўсё роўна сядзелі і працавалі. Харчаванне, сапраўды, было вельмі бедным, на абед мы атрымалі шкляначку з булёнам, піражок і яблык, але зноў жа нас гэта не моцна знервавала, мы былі сканцэнтраваны на іншым.

Перыядычна выдавалі red bull, па два слоікі на рукі, гэта было вельмі дарэчы. Даўно ўжо апрабаваны на хакатонах рэцэпт энергетык + кава, дазваляў кадзіць усю ноч і наступны дзень, быўшы бадзёрым, як шкельца. На другі дзень мы, па-сутнасці, ужо проста накручвалі на дадатак новыя фішкі, зрабілі разлік фінансавых паказчыкаў, сталі выводзіць графікі па статыстыцы дэфектаў у магістралях. Як такога code review у нашым трэку не было, эксперты ацэньвалі рашэнне задачы ў стылі kaggle.com, па дакладнасці прагнозу, а фронтэнд ацэньваўся візуальна. Наша ML рашэнне аказалася найбольш дакладным, магчыма менавіта гэта дазволіла нам вырвацца ў лідэры. У ноч з суботы на нядзелю мы працавалі да 2-х гадзін ночы, а потым паехалі паспаць на кватэру, якую выкарыстоўвалі ў якасці базы. Спалі каля 5 гадзін, у нядзелю а 9 раніцы мы ўжо былі ў Казань Экспа. Я нешта спешна падвярстваў, але большую частку часу заняла падрыхтоўка да перадабароны. Перадабароны праходзілі ў 2 патокі, перад дзвюма камандамі экспертаў, нас папрасілі выступіць апошнімі, бо абедзве каманды экспертаў хацелі нас паслухаць. Мы ўспрынялі гэта як добры знак. Прыкладанне паказвалі з майго наўтбука, з запушчанага паннаў сервера, нармальна задэплоіць прыкладанне мы не паспелі, зрэшты, так рабілі ўсё.

У цэлым, усё прайшло добра, нам паказалі на моманты, у якіх мы маглі палепшыць наша дадатак, і за час да абароны мы нават паспрабавалі нешта з гэтых заўваг рэалізаваць. Абарона таксама прайшла на здзіўленне гладка. Па выніках перадабароны мы ведалі, што па балах мы наперадзе, мы лідзіравалі па дакладнасці рашэння, у нас быў добры фронтэнд, добры дызайн і, у цэлым, былі добрыя прадчуванні. Яшчэ адным спрыяльным знакам было тое, што дзяўчына мадэратар з нашай секцыі, перад уваходам у канцэртную залу зрабіла з намі сэлф, я тады і западозрыў, што яна магчыма нешта ведае))). Але мы свае балы пасля абароны не ведалі, таму час да моманту аб'яўлення нашай каманды са сцэны прайшоў крыху напружана. На сцэне ўручылі кардонку з надпісам 500000 рублёў і кожнаму пакуначак з кружкай і акумулятарам для сотавага. Атрымаць асалоду ад перамогі і нармальна яе адзначыць не атрымалася, мы хутка павячэралі і паехалі на таксі на цягнік.

Лічбавы прарыў - як гэта было
Каманда WAICO перамагае ў фінале

Па вяртанні ў Маскву ў нас бралі інтэрв'ю журналісты з НТВ. Здымалі цэлую гадзіну на другім паверсе кафэ «Квартал 44» на Палянцы, але ў навінах паказалі секунд 10. Як-ніяк моцны прагрэс у параўнанні з рэгіянальным этапам.

Калі рэзюмаваць агульныя ўражанні ад Лічбавага прарыву, то яны наступныя. На імпрэзу былі выдаткаваныя проста шалёныя грошы, я яшчэ ні разу не бачыў хакатоны такога маштабу. Але сказаць, што гэта апраўдана, і што гэта сапраўды акупіцца я не магу. Значная частка ўдзельнікаў, якія прыехалі ў Казань, была проста тусоўшчыкамі, якія не ўмеюць штосьці рабіць сваімі рукамі, і якіх нагналі для ўсталявання рэкорду. Я не магу сказаць, што канкурэнцыя ў фінале была вышэйшай, чым на рэгіянальным этапе. Таксама каштоўнасць і карыснасць задач некаторых трэкаў выклікае сумневы. Некаторыя задачы ўжо даўно былі вырашаны на індустрыяльным узроўні. Як аказалася пазней, некаторыя арганізацыі якія вялі трэкі, былі і не зацікаўлены ў іх вырашэнні. І гэтая гісторыя яшчэ не скончана, каманды лідэры з кожнага трэка былі адабраны ў преакселератар, і мяркуецца, што з іх атрымаюцца прарыўныя стартапы. Але пісаць пра гэта я пакуль не готаў, паглядзім што з гэтага атрымаецца.

Крыніца: habr.com

Дадаць каментар