Цифровий прорив - як це було

Це не перший хакатон, який я виграю, не перший, про який пишу, і це далеко не перший пост на хабрі, присвячений Цифровому прориву. Але не написати я не міг. Вважаю свій досвід досить унікальним, щоби їм поділитися. Мабуть, я єдина на цьому хакатоні людина, яка виграла регіональний етап та фінал у складі різних команд. Бажаєте дізнатися, як це сталося? Ласкаво просимо під кат.

Регіональний етап (Москва, 27 – 28 липня 2019 року).

Рекламу «Цифрового прориву» я вперше побачив десь у березні — квітні цього року. Природно, пройти повз такий великий хакатон я не міг і зареєструвався на сайті. Там же ознайомився з умовами та програмою конкурсу. Виявилося, щоб потрапити на хакатон, потрібно було пройти онлайн-тестування, яке розпочиналося з 16 травня. І, можливо, я б про це благополучно забув, бо лист із нагадуванням про старт тестування не надходив. І, треба сказати, надалі всі листи, які приходили мені від ЦП, стабільно потрапляли в папку спам. Хоч я й щоразу натискав кнопку «не є небажаним». Не знаю, як їм удалося досягти такого результату, у мене з розсилкою на MailGun так не виходило. А про існування сервісів на кшталт isnotspam.com хлопці, схоже, не знають у принципі. Але ми відхилилися.

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

У якийсь момент після проходження тестів мені зателефонували, запитали, чи я братиму участь, уточнили деталі і сказали, як потрапити в чат для підбору команди. Незабаром я зайшов у чат і коротко написав про себе. У чаті творився повний треш, склалося враження, що організатори нагнали рекламою багато випадкових людей, які не мають до ІТ жодного відношення. Численні продакт менеджери «рівня Стів Джобс» (реальна фраза з одного уявлення учасника) постили розповіді про себе, а нормальних розробників навіть не було видно. Але мені пощастило, і я незабаром приєднався до трьох досвідчених JS-програмістів. Познайомилися один з одним ми вже на хакатоні, тоді ж додали до команди дівчину для натхнення та вирішення орг питань. Вже не пам'ятаю чому, але ми взяли тему «Навчання кібербезпеки» та потрапили з нею у трек «Наука та освіта 2». Я вперше опинився в команді із 4 сильних програмістів і вперше відчув, наскільки легко перемагати у такому складі. Ми прийшли непідготовлені і до обіду сперечалися і не могли визначитися, що робитимемо: мобільний додаток чи веб. У будь-якій іншій ситуації я подумав би, що це провал. Найголовнішим для нас було зрозуміти, чим ми будемо кращими за конкурентів, адже навколо було повно команд, які пиляли тести, ігри з кібербезпеки тощо. Дивлячись на це і гугля навчальні програми та програми, ми вирішили, що нашою головною відмінністю будуть тренування за принципом пожежної тривоги. Ми відібрали цілу низку фішок, які здалися нам цікавими для реалізації (реєстрація з перевіркою емейлу та пароля по хакерських базах, розсилка фішингових листів (у вигляді листів від відомих банків), тренування з соціальної інженерії в чаті). Визначившись з тим, що ми робимо і зрозумівши, чим ми можемо виділитися, ми досить швидко написали повноцінний веб-додаток, причому я виступив у невластивій для себе ролі бекенд розробника. Таким чином ми впевнено виграли свій трек і у складі ще трьох команд відібралися у фінал у Казань. Вже пізніше, в Казані, я дізнався, що відбір у фінал був фікцією, я зустрів там багато знайомих осіб із команд, які цього відбору не пройшли. У нас навіть взяли інтерв'ю журналісти із 1 каналу. Щоправда, у репортажі з нього лише на 1 секунду показали наш додаток.

Цифровий прорив - як це було
Команда Snowed, у складі якої я виграв регіональний етап

Фінал (Казань, 27 – 29 вересня 2019 року)

Але далі почалися невдачі. Всі програмісти з команди Snowed протягом приблизно місяця, один за одним, повідомили, що не зможуть поїхати до Казані на фінал. І я замислився над пошуком нової команди. Спочатку я кинув клич у загальному чаті збірної Russian Hack Team, і хоча там я отримав досить багато відгуків та запрошень до команди, але жодна з них мене не зачепила. Були незбалансовані команди, як наприклад, продакт, мобільний розробник, фронтендер, нагадує лебедя, раку та щуку з байки. Були також команди, які не підходили мені за технологією (наприклад з розробкою мобільного додатка на Flutter). Нарешті, в чаті, який я вважав трешовим (той самий вконтакті, де відбувався підбір команд на регіональний етап), запобігли оголошення про пошук у команду фрондендера, і я чисто навмання написав. Хлопці виявилися аспірантами сколтеху і одразу запропонували зустрітися та познайомитися. Мені це сподобалося, команди, які вважають за краще знайомитися одразу на хакатоні, зазвичай мене насторожують своєю відсутністю мотивації. Зустрілися у «Граблях» на П'ятницькій. Хлопці здалися мені тямущими, мотивованими, впевненими в собі та в перемозі, і рішення я ухвалив прямо там. Ми ще не знали, які будуть треки та завдання у фіналі, але припускали, що виберемо щось, пов'язане з Machine Learning. А моїм завданням буде написати під цю справу адмінку, тому я заздалегідь приготував для цього заготівлю на основі antd-admin.
До Казані я поїхав безкоштовно, за рахунок організаторів. Треба сказати, що в чатах і блогах вже було висловлено дуже багато невдоволення з приводу закупівлі квитків і, загалом, організації фіналу, не все це переказуватиму.

Приїхавши до Казані Експо, зареєструвавшись (при цьому у мене виникли невеликі проблеми з отриманням бейджу) та поснідавши, ми пішли обирати трек. На урочисте відкриття, де виступали офіційні особи, ми зайшли лише хвилин на 10. Насправді, у нас вже були треки, але нас цікавили деталі. У треку No 18 (Ростелеком), наприклад, виявилося, що потрібно розробити мобільний додаток, хоча в короткому описі цього не було. Основний вибір ми робили між треком №8 Дефектоскопія трубопроводів, ПАТ «Газпром нафта» і треком №13 Перинатальні центри, Рахункова палата РФ. І там, і там потрібна була Data Science, і там, і там можна було б прикрутити веб. У треку No 13 нас зупинило те, що завдання з Data Science там було досить слабким, потрібно було парсить росстат і не було зрозуміло, чи потрібна адмінка. Та й сама цінність завдання викликала сумніви. У підсумку ми вирішили, що як команда ми більше заточені під 8 трек, тим більше, що у хлопців вже був досвід вирішення таких завдань. Почали ми з того, що продумали сценарій, за яким наша програма використовуватиме кінцевий користувач. Виходило, що у нас буде два типи користувачів: технарі, яких цікавлять технічна інформація та управлінці, яким були потрібні фінансові показники. Коли з'явилося уявлення про сценарій, стало зрозуміло, що робити на фронті, що малювати дизайнеру, і які методи потрібні на бекенді, можна було розподілити завдання. Обов'язки в команді розподілилися таким чином: двоє людей вирішували ML з отриманими від техекспертів даними, одна людина писала на пітоні бекенд, я писав фронт на реакті та antd, дизайнер малював інтерфейси. Ми навіть сіли так, щоб нам було зручніше спілкуватись, вирішуючи свої завдання.

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

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

В цілому, все пройшло добре, нам вказали на моменти, в яких ми могли покращити нашу програму, і за час до захисту ми навіть спробували щось із цих зауважень реалізувати. Захист теж пройшов напрочуд гладко. За підсумками передзахисту ми знали, що за балами ми попереду, ми лідирували за точністю рішення, у нас був хороший фронтенд, гарний дизайн і загалом були хороші передчуття. Ще одним сприятливим знаком було те, що дівчина модератор із нашої секції, перед входом до концертної зали зробила з нами селфі, я тоді й запідозрив, що вона можливо щось знає))). Але ми свої бали після захисту не знали, тому час до моменту оголошення нашої команди зі сцени пройшов трохи напружено. На сцені вручили картонку з написом 500000 XNUMX рублів і кожному пакетик з кухлем і акумулятором для стільникового. Насолодитися перемогою та нормально її відзначити не вдалося, ми швидко повечеряли та поїхали на таксі на поїзд.

Цифровий прорив - як це було
Команда WAICO перемагає у фіналі

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

Якщо резюмувати загальні враження від Цифрового прориву, вони наступні. На захід було витрачено просто шалені гроші, я ще жодного разу не бачив хакатони такого масштабу. Але сказати, що це виправдано, і що це дійсно окупитися я не можу. Значна частина учасників, які приїхали до Казані, була просто тусовщиками, які не вміють щось робити своїми руками, і яких нагнали для встановлення рекорду. Я не можу сказати, що конкуренція у фіналі була вищою, ніж на регіональному етапі. Також цінність та корисність завдань деяких треків викликає сумніви. Деякі завдання вже давно було вирішено на індустріальному рівні. Як виявилося пізніше, деякі організації, які вели треки, були і не зацікавлені в їх вирішенні. І ця історія ще не закінчена, команди лідери з кожного треку були відібрані в преакселлератор, і передбачається, що з них вийдуть проривні стартапи. Але писати про це я поки не готовий, подивимося, що з цього вийде.

Джерело: habr.com

Додати коментар або відгук