Дигитален пробив – как се случи

Това не е първият хакатон, който печеля, нито първият Пишаи това не е първата публикация на Хабре, посветена на „Дигитален пробив“. Но не можах да не пиша. Смятам опита си за достатъчно уникален, за да го споделя. Аз съм може би единственият човек на този хакатон, който спечели регионалния етап и финалите като част от различни отбори. Искате ли да знаете как се случи това? Добре дошли в котка.

Регионален етап (Москва, 27 - 28 юли 2019 г.).

За първи път видях реклама за „Дигитален пробив“ някъде през март-април тази година. Естествено, не можех да подмина толкова голям хакатон и се регистрирах на уебсайта. Там се запознах с условията и програмата на състезанието. Оказа се, че за да стигнеш до хакатона, трябва да преминеш онлайн тест, който започна на 16 май. И може би удобно щях да забравя за това, тъй като не получих писмо, което да ми напомня за началото на тестването. И, трябва да кажа, в бъдеще ВСИЧКИ ПИСМА, които идваха при мен от процесора, постоянно се озоваваха в папката за спам. Въпреки че натисках бутона „без възражения“ всеки път. Не знам как успяха да постигнат такъв резултат, не ми се получи с изпращане на поща на MailGun. И момчетата изглежда изобщо не знаят за съществуването на услуги като isnotspam.com. Но ние се отклонихме.

Беше ми напомнено за началото на тестването на една от срещите стартъп клуб, там обсъдихме и формирането на отбора. След като отворих списъка с тестове, първо седнах на теста на Javascript. Като цяло задачите бяха повече или по-малко адекватни (например какъв ще бъде резултатът, ако добавите 1 + '1' в конзолата). Но от моя опит бих използвал такива тестове при набиране на работа или екип с много големи резерви. Факт е, че в реалната работа програмистът рядко се сблъсква с такива неща, със способността си бързо да дебъгва код - това знание не корелира по никакъв начин и можете да тренирате за такива неща за интервюта доста лесно (знам от себе си). Като цяло щракнах през теста доста бързо, в някои случаи се проверих в конзолата. В теста на python задачите бяха приблизително от един и същи тип, аз също се тествах в конзолата и бях изненадан, че отбелязах повече точки, отколкото в JS, въпреки че никога не съм програмирал професионално на Python. По-късно, в разговори с участници, чух истории за това колко силни програмисти са постигнали ниски резултати на тестове, как някои хора са получили писма, в които се казва, че не са преминали процеса на подбор на процесора, а след това са били поканени на него така или иначе. Ясно е, че създателите на тези тестове най-вероятно не са чували нищо теория на теста, нито за тяхната надеждност и валидност, нито за това как да ги тестваме, а идеята с тестове щеше да е провал от самото начало, дори и да не отчетем основната цел на хакатона. А основната цел на хака, както разбрах по-късно, е била да постави рекорд на Гинес, а тестовете му противоречат.

По някое време след преминаване на тестовете ми се обадиха, попитаха дали ще участвам, уточниха подробностите и ми казаха как да вляза в чата за избор на отбор. Скоро влязох в чата и написах накратко за себе си. В чата имаше пълен боклук, изглеждаше, че организаторите правят реклама на много случайни хора, които нямат нищо общо с ИТ. Многобройни продуктови мениджъри „на нивото на Стив Джобс“ (реална фраза от подаването на един участник) публикуваха истории за себе си, а нормалните разработчици дори не се виждаха. Но имах късмет и скоро се присъединих към трима опитни JS програмисти. Запознахме се още на хакатона и след това добавихме момиче към екипа за вдъхновение и решаване на организационни въпроси. Не помня защо, но взехме темата „Обучение по киберсигурност“ и я включихме в песента „Наука и образование 2“. За първи път попаднах в отбор от 4-ма силни програмисти и за първи път усетих колко лесно се побеждава в такъв състав. Дойдохме неподготвени и спорихме до обяд и не можехме да решим какво ще правим: мобилно приложение или уеб. Във всяка друга ситуация бих си помислил, че е провал. Най-важното за нас беше да разберем как ще бъдем по-добри от нашите конкуренти, защото имаше много екипи наоколо, които правеха тестове, игри за киберсигурност и други подобни. След като разгледахме това и потърсихме в Google програми и приложения за обучение, решихме, че основният ни разграничител ще бъдат противопожарните тренировки. Избрахме редица функции, които намерихме за интересни за прилагане (регистрация с проверка на имейл и парола срещу хакерски бази данни, изпращане на фишинг имейли (под формата на писма от известни банки), обучение по социално инженерство в чат). След като решихме какво правим и разбрахме как можем да се откроим, бързо написахме пълноценно уеб приложение, а аз изиграх необичайната роля на backend разработчик. Така ние уверено спечелихме нашата писта и като част от още три отбора се класирахме за финала в Казан. По-късно в Казан разбрах, че селекцията за финала е измислица, там срещнах много познати лица от отборите, които не са преминали селекцията. Даже ни интервюираха журналисти от Канал 1. В отчета от него обаче приложението ни беше показано само за 1 секунда.

Дигитален пробив – как се случи
Снежен отбор, където спечелих регионалния етап

Финал (Казан, 27 – 29 септември 2019 г.)

Но тогава започнаха провалите. Всички програмисти от екипа на Snowed в рамките на около месец един след друг съобщиха, че няма да могат да отидат в Казан за финала. И си помислих да намеря нов отбор. Първо се обадих в общия чат на Russian Hack Team и въпреки че там получих доста отговори и покани за присъединяване към екипи, нито една от тях не привлече вниманието ми. Имаше небалансирани екипи, като продукт, мобилен разработчик, front-end, напомнящ на лебед, рак и щука от басня. Имаше и екипи, които не бяха подходящи за мен от гледна точка на технологията (например с разработването на мобилно приложение във Flutter). И накрая, в чат, който смятах за боклук (същият VKontakte, където се проведе изборът на отбори за регионалния етап), беше публикувана реклама за търсенето на фронтендър за отбора и аз написах чисто произволно. Момчетата се оказаха студенти в Сколтех и веднага предложиха да се срещнат и да се запознаят. Хареса ми; екипи, които предпочитат да се опознаят веднага на хакатон, обикновено ме тревожат с липсата на мотивация. Срещнахме се в „Rake” на Пятницкая. Момчетата изглеждаха умни, мотивирани, уверени в себе си и в победата и аз взех решението веднага. Все още не знаехме какви песни и задачи ще има на финала, но предположихме, че ще изберем нещо, свързано с машинното обучение. И моята задача ще бъде да напиша администратор за този въпрос, така че подготвих шаблон за това предварително, базиран на antd-admin.
До Казан отидох безплатно, за сметка на организаторите. Трябва да кажа, че вече беше изразено много недоволство в чатове и блогове относно закупуването на билети и като цяло организацията на финала, няма да преразказвам всичко.

След като пристигнахме в Казан Експо, регистрирахме се (малко се затрудних с баджа) и закусихме, отидохме да избираме писта. Отидохме само на тържественото откриване, където говориха официални лица, за около 10 мин. Всъщност вече имахме предпочитани писти, но ни интересуваха подробности. В писта № 18 (Rostelecom), например, се оказа, че е необходимо да се разработи мобилно приложение, въпреки че това не беше в краткото описание. Направихме основния избор между писта № 8 Дефектоскопия на тръбопроводи, Газпром Нефт PJSC и писта № 13 Перинатални центрове, Сметната палата на Руската федерация. И в двата случая беше необходима Data Science и в двата случая можеше да бъде добавена мрежата. В песен № 13 бяхме спряни от факта, че задачата Data Science там беше доста слаба, беше необходимо да се анализира Rosstat и не беше ясно дали е необходим админ панел. И самата стойност на задачата беше под съмнение. В крайна сметка решихме, че като екип сме по-подходящи за писта 8, особено след като момчетата вече имаха опит в решаването на подобни проблеми. Започнахме, като обмислихме сценария, в който нашето приложение ще се използва от крайния потребител. Оказа се, че ще имаме два типа потребители: техници, които се интересуват от техническа информация, и мениджъри, които се нуждаят от финансови показатели. Когато се появи идея за сценария, стана ясно какво да се прави на предния край, какво трябва да нарисува дизайнерът и какви методи са необходими на задния край, стана възможно да се разпределят задачите. Отговорностите в екипа бяха разпределени по следния начин: двама души решиха ML с данни, получени от технически експерти, един човек написа бекенда в Python, аз написах предния край в React и Antd, дизайнерът начерта интерфейсите. Дори седнахме, за да ни е по-удобно да общуваме, докато решаваме проблемите си.

Първият ден отлетя почти незабелязано. В комуникация с технически експерти се оказа, че те (Газпром нефт) вече са решили този проблем, те просто се чудеха дали може да бъде решен по-добре. Няма да кажа, че това намали мотивацията ми, но остави следа. Бях изненадан, че през нощта модераторите на секциите отбелязаха работните екипи (както казаха за статистиката); това обикновено не се практикува на хакатони. До сутринта имахме готов прототип на предната част, някои рудименти на задната част и първото ML решение. Като цяло вече имаше какво да покаже на експертите. В събота следобед дизайнерът очевидно нарисува повече интерфейси, отколкото щях да имам време да кодирам, и премина към създаване на презентация. Събота беше отделена за регистрация на рекорда, а сутринта всички работещи в залата бяха изгонени в коридора, след което влизането и излизането от залата се извършваше с помощта на значки и беше възможно да напуснете за повече повече от час на ден. Няма да кажа, че това ни причини значително неудобство; по-голямата част от деня все още седяхме и работехме. Храната наистина беше много оскъдна, за обяд получихме чаша бульон, баница и ябълка, но това отново не ни разстрои много, бяхме съсредоточени върху друго.

Те периодично раздаваха red bull, по две кутии на ръка, което беше много полезно. Рецептата за енергийна напитка + кафе, която отдавна беше тествана на хакатони, ми позволи да кодирам цяла нощ и на следващия ден, като бях весел като чаша. На втория ден ние всъщност просто добавихме нови функции към приложението, изчислихме финансови показатели и започнахме да показваме графики за статистиката на дефектите по магистралите. В нашата песен нямаше преглед на кода като такъв; експертите оцениха решението на проблема в стил kaggle.com, въз основа на точността на прогнозата, а предната част беше оценена визуално. Нашето ML решение се оказа най-точното, може би това ни позволи да станем лидери. В нощта от събота срещу неделя работихме до 2 сутринта, след което отидохме да спим в апартамента, който използвахме като база. Спахме около 5 часа, в неделя в 9 сутринта вече бяхме на Казан Експо. Набързо приготвих нещо, но повечето време мина в подготовка за предзащитата. Предварителните защити се проведоха в 2 потока, пред два екипа от експерти, като бяхме помолени да говорим последни, тъй като и двата екипа от експерти искаха да ни изслушат. Приехме това като добър знак. Приложението беше показано от моя лаптоп, от работещ сървър за разработка; нямахме време да разположим правилно приложението, но всички направиха същото.

Като цяло всичко мина добре, бяха ни посочени точки, в които можем да подобрим приложението си, а във времето преди защитата дори се опитахме да приложим някои от тези забележки. Защитата също вървеше изненадващо гладко. Въз основа на резултатите от предварителната защита знаехме, че сме по-напред по отношение на точките, че водим по отношение на точността на решението, имаме добър преден край, добър дизайн и като цяло имахме добри чувства. Друг благоприятен знак беше, че момичето модератор от нашата секция си направи селфи с нас преди да влезе в концертната зала и тогава заподозрях, че може да знае нещо))). Но ние не знаехме резултатите си след защитата, така че времето до обявяването на отбора ни от сцената мина малко напрегнато. На сцената те раздадоха картон с надпис 500000 XNUMX рубли и всеки получи торбичка с чаша и батерия за мобилен телефон. Не успяхме да се насладим на победата и да я отпразнуваме подобаващо, набързо вечеряхме и взехме такси до влака.

Дигитален пробив – как се случи
Отбор WAICO печели финала

След завръщането си в Москва журналисти от НТВ ни интервюираха. Снимахме цял час на втория етаж на кафене Квартал 44 на Полянка, но новините показаха само около 10 секунди, все пак силен напредък в сравнение с регионалната сцена.

Ако обобщим общите впечатления от Digital Breakthrough, те са следните. За събитието бяха похарчени много пари, никога досега не съм виждал хакатони от такъв мащаб. Но не мога да кажа, че това е оправдано и че наистина ще се отплати. Значителна част от участниците, дошли в Казан, бяха просто купонджии, които не знаеха как да направят нищо със собствените си ръце и които бяха принудени да поставят рекорд. Не мога да кажа, че конкуренцията на финалите беше по-висока, отколкото на областния етап. Освен това стойността и полезността на задачите на някои песни е под въпрос. Някои проблеми отдавна са решени на индустриално ниво. Както се оказа по-късно, някои организации, които проведоха следите, не бяха заинтересовани от разрешаването им. И тази история все още не е приключила, водещите екипи от всяка писта бяха избрани за пре-акселератора и се предполага, че те ще се окажат ПРОБИВНИ стартъпи. Но все още не съм готов да пиша за това, ще видим какво ще излезе от това.

Източник: www.habr.com

Добавяне на нов коментар