Как мы выиграли самый большой хакатон в мире
В конце сентября в Казани проходил Цифровой Прорыв — хакатон, организованный АНО «Россия — страна возможностей». Из-за близости организаторов к госаппарату некоторые представители IT-сообщества отнеслись к мероприятию скептически, а зря. Я уже писал о региональном этапе, который прошёл вполне на уровне. Победа в регионе позволила нашей команде пройти на финал, куда мы и отправились.
Трансфер
С самого начала в чатах с организаторами люди высказывали большое количество критики. Оно и понятно — процесс вёлся очень непрозрачно, участники долгое время не могли получить ответ на вопрос: едут ли они за свой счёт или им купят билеты. В какой-то момент ситуация достигла критического уровня: было сообщено, что билеты предоставят, но самих билетов не было, а по телефонам горячей линии кормили завтраками. Впрочем, такое было только у нас: по заявлениям организаторов, Петербург отказался спонсировать поездку своих айтишников на конкурс, и пришлось срочно искать инвестора. В других городах билеты предоставили раньше, либо сразу объявили, что их не будет.
В итоге трое из пяти членов нашей команды получили билеты на поезд всего за несколько часов до выезда (а остальные двое не получили вообще). Поезд прибывал в Казань в 4 утра в пятницу, а регистрация начиналась с 7 утра, что само по себе неудобно, даже если бы билеты дали всем и заранее. Мы сдали эти билеты в кассу, добавили своих денег и купили лоукостерный рейс «Победы», который летел всего 2 часа, давал нам запас на подготовку, приходил в удобное время в четверг вечером, и самое главное — стоил незначительно больше, чем поезд.



В Казани мы ещё за месяц до поездки сняли квартиру на Airbnb, потому что рассчитывать на организацию проживания было бы наивно. Так и получилось. Засунув рюкзаки в прямоугольник 30х36х27, мы отправились в путь и вечером того же дня были на месте.
Регистрация
Хакатон проводился в выставочном центре Казань Экспо. Он уступает нашему Экспофоруму по размерам, но сделан недавно и вполне современно. Однако, расположен рядом с аэропортом (который в Казани далеко за пределами города). Туда не достаёт каршеринг зоной покрытия, а нормальный подъезд для автомобилей был закрыт. В итоге мы добирались на двух такси (потому что нас пятеро) и останавливались на задворках в 15 минутах ходьбы от главного входа, что было очень неудобно, а после трёх часов сна в первую ночь ещё и физически тяжело.



Стоит сказать, что организаторы запустили бесплатные шаттлы из города, но идти до остановки такого шаттла нам было слишком далеко.
На месте нужно было найти свой бейджик по фамилли и зарегистрироваться командой на нужный трек. Вот тут меня обломали: все участники моей команды были в списках и получили бейджик, а я — капитан — нет. Оказалось, я не один такой, и я дважды стоял в очереди «людей, которые не получили бейджик», чтобы записаться на дополнительную печать.


Но сумку с мерчем я получил. Там были: тапки, надувная подушка, беруши, держатель для телефона. Тапки и беруши пошли в дело, очень полезно оказалось. Не хватило каких-то наклеек, значков. И очень не хватило чего-то для записей: блокнотов и ручек, например.
Отдельно выдавали толстовки, но я свою не смог получить, потому что не было бейджика. Я простоял довольно длинную очередь за ними, дальше диалог с девушкой на выдаче:
— Покажите бейджик.
— Его нет, вы мне его не выдали.
— Тогда и толстовку не дадим.
— Девушка, бейджика у меня нет по вашей вине. Я не терял его, я не опаздывал на регистрацию, его не сделали организаторы. Я только что 30 минут стоял в очереди за толстовкой.
— Без бейджика не можем выдать, следующий.
Я препирался ещё полминуты, но девушка-робот отвечала одинаково каждый раз. Люди в очереди начали кричать на меня за задержку, хотя прекрасно слышали диалог. Если кто-то из той очереди читает эту статью: надеюсь, вы не выиграли и уехали домой с толстовками, тогда как я уехал домой с призовыми деньгами.
В конце второго дня организаторы напечатали мне бейджик с ошибкой в названии команды и нашли толстовку на три размера меньше. Close enough. Вообще, я очень рассчитывал на какую-то футболку, из-за этого взял с собой футболок меньше, чем нужно на столько дней, поэтому защищался и даже вышел на сцену в футболке «Яндекс.Драйв», и меня могли принять за сотрудника Яндекса.
Церемония открытия
Сначала нас позвали в главный зал, где прошла церемония открытия с танцевальными коллективами и выступлением представителей некоторых компаний и госструктур.


Была интересная презентация от Mail.Ru, а также ведущий в виде «искусственного интеллекта» (актёр с роботизированным голосом). Могу сказать, что ведущий отличный и был вполне на одной волне с нами — айтишной молодёжью.
Но в целом действо ощутимо затянули, мы ушли, не дождавшись конца, чтобы занять рабочие места и начать планировать следующие 48 часов. Подготовка очень важна и нам не терпелось приступить.
Треки
Всего было 20 номинаций, вот их полный список, если интересно. Нам нужно было выбрать три, одну из которых впоследствии предложат. Мы выбирали задачу с учётом нескольких факторов:
- Насколько интересно звучит задача в целом
- Можно ли в ней продемонстрировать хорошую визуальную составляющую (у нас в команде художник и этим нужно пользоваться)
- Можно ли в ней продемонстрировать какие-то интересные технологические решения и алгоритмы (два бэкендера в команде, не будут же просто CRUD делать)
- Насколько популярной будет задача, насколько высоки шансы её получить, какой ожидается уровень конкуренции
В итоге в нашем шорт-листе остались Росатом, Минздрав и Мегафон. Конкретно на мой взгляд большинство задач интересные и составлены в хакатонном духе, выбирать было не очень просто.





Получили в итоге Росатом, с задачей которого мы уже работали раньше на региональном этапе. Рабочие места были в трёх павильонах с разделением по рабочим зонам, а внутри — по столам.
Посетители хакатонов часто жалуются на плохой интернет, хотя лично у меня никогда не было с этим проблем. Но здесь организаторы подошли радикально и предоставили на каждый стол интернет по проводу RJ45. Владельцы макбуков снова плакали и кололись, а я наслаждался быстрым и стабильным интернетом на всё время работы. Вайфай тоже был и нормально тянул, кстати.
Еда
Участникам предоставляли трёхразовое питание по талонам с привязкой ко времени, чтобы избежать очередей. И это сработало: очередей за едой практически не было.




Кормили хорошо. Сытная пища без ненужной экзотики, десерты. Лично мне немного не хватало холодных напитков, кроме воды (сок или морс). Ну и конечно были бесконечный чай, кофе, печеньки и чак-чак :) Очень понравилось, привёз потом коробку чак-чака домой.
Работа
Как я уже сказал, нам достался трек Росатома по логистической оптимизации. По каждому треку шло дополнительное пояснение на двух А4-страницах с текстом. Также была возможность пообщаться с экспертами, которой мы сразу воспользовались, чтобы прояснить детали.



Нашей задачей была разработка редактора планов производственных помещений, на котором можно будет отметить точки обработки деталей, транспортные узлы, а также учесть пути для движения грузчиков и грузовых тележек, включая лестницы, лифты, поддержку многоэтажности итд. Дополнительно нужно было придумать способ отслеживать местонахождение каждой детали и строить оптимальные маршруты с учётом технологических карт.
Начали очень бодро:


На самом деле в начале вам всегда кажется, что вы идёте хорошо и всё успеваете с запасом. Есть даже отдельные периоды, когда как бы нет работы, нет задач прямо здесь и сейчас. Но это иллюзия. Просто в начале работа разных членов команды более изолирована, ещё нет полноценного приложения, составленного из разных частей.



К концу дня не было готово толком ничего, мы с Гришей и Сашей поехали на квартиру спать, а Вова и Лёша остались спать на месте. Кстати, после хакатона ВКонтакте в прошлом году я прочитал статью одного из участников, где было сказано, что нужно поспать хотя бы 2-3 часа. Спасибо тебе, автор! Спать действительно очень важно. Потраченные 3 часа в итоге выручат вам с учётом производительности больше времени.


Второй день и рекорд Гиннесса
Утром второго дня мы продолжили работу. Хотя утром для нас это являлось условно: 6 утра после трёх часов сна, будто бы и не уходили.
Этот день был посвящён установлению мирового рекорда на самый крупный по числу участников хакатон в мире. С этой целью на площадке дежурила представитель Guinness World Records и проверяла всё на соответствие правилам. Участникам нельзя было покидать рабочее место больше, чем на 40 минут в общей сложности с 8 утра до 8 вечера. А еду приносили прямо в павильон.



Предыдущий рекорд на 2950 участников был установлен в 2018 году в Саудовской Аравии, а до этого в 2012 году в Индии. Здесь же в Казани собралось в общей сложности более 3000 хакатонщиков — 600 команд из 77 регионов. Надо сказать, что такое число достигнуто не без помощи дополнительного «лайт» блока для школьников и студентов, который шёл вне основного конкурса и сопровождался призами в 100 000 рублей на команду. Тем не менее, люди работали одновременно на одной площадке, так что условие выполнено вполне честно.


Очевидно, при таких масштабах рекорд нам дали, хотя объявили об этом уже на закрытии в конце, а до этого говорили «Попытка установления рекорда», из-за чего фраза звучала так, будто бы попытка провалилась.
С обедом, кстати, вышла накладка. Из-за невозможности отойти, ели мы на местах, и организаторы предложили выпечку и банан, причём, людям в грубой форме запрещали брать больше одного элемента выпечки (либо один пирожок, либо одну сосиску в тесте). Очевидно, для обеда после интенсивной работы это очень мало, люди начали выкладывать в соцсети фотографии с надписями «Цифровой Прорыв нас не кормит, помогите!», обратились к «Додо пицце» и ещё некоторым фирмам. В итоге администрация организовала всем тарелки с пловом, а после даже пицца подъехала (правда не знаю, силами какой-то фирмы или за счёт площадки).
Продолжение работы
Мы ели попеременно, а в основном адски фигачили. Уже после защиты некоторые люди спрашивали нас, не принесли ли мы заготовку, которую сделали заранее. Нет, не принесли, абсолютно всё сделано с нуля с поправкой на использование открытых библиотек для некоторых вещей (ну, например, Vue.js мы взяли готовый, а не писали свой :))
У нас очень грамотно были распределены обязанности, во второй день каждому человеку нашлась работа практически непрерывно. В предыдущей статье про региональный этап я уже писал, как важно, чтобы каждый человек в команде выполнял вещественную работу, создавал что-то руками. Поэтому лично я скептически относился к командам, в которых была лишь пара программистов, а остальные менеджеры, питчеры, бизнесологи, идейные вдохновители и прочие управленцы. При всём уважении к этим профессиям, на хакатоне подобные люди не будут загружены на 120%, в хакатонном проекте просто нет такого объёма работы для них, а, значит, команда работает неэффективно.




После 20:00 нужно было выйти из помещения для проветривания, но это не повод прекращать работу. Вечер предпоследнего дня самый насыщенный, потому что это последние часы, в которые команда максимально продуктивна. После этого люди будут клевать носом и спать на ходу.


Проект
По результатам двух дней у нас получился тот самый редактор карт, где действительно можно было рисовать цеха, добавлять узлы, лифты, лестницы, создавать новые этажи и подкладывать планы помещений, а между узлами ставить связи и задавать их тип (только для человека либо для человека и тележки).
К тому же, мы добавили ещё две фишки, которые эффектно смотрелись на презентации и, возможно, именно они сделали нам победу. Во-первых, для каждого станка в системе можно было генерировать собственный экран с QR-кодами на каждую деталь, которую согласно технологической карте туда в принципе могут принести. Человек с тележкой сканировал нужный код своим устройством в зависимости от того, какую именно деталь нёс, и она помечалась, как присутствующая на данном станке. Это, с одной стороны, избавляет от необходимости ставить дорогостоящие RFID-рамки на все двери, а с другой стороны не обязывает клеить наклейку с кодом на каждую деталь.


Второй прикольной фишкой было построение машрутов и ведение человека по маршруту с помощью Яндекс.Алисы. Поскольку у нас с Гришей большой опыт создания навыков, прикрутить простейший обработчик не было проблемой, мы сделали это за час. В итоге мне удалось прямо на презентации вытащить телефон и сказать: «Алиса, как пройти в цех 11 на тележке», и на карте отобразился оптимальный маршрут, построенный с учётом лифта.
Ещё администрация очень сильно переусердствовала с различными гугл-формами и чекпоинтами. Нас каждые пару часов заставляли заполнять очередной опрос в стиле «А что вы уже сделали? А останетесь на ночь?», и без этого не давали талоны на еду. Это очень сильно отвлекало и сбивало концентрацию.
Предзащита
Около 12 дня в воскресенье была предзащита перед экспертами из Росатома (напомню, что именно они ставили задачу). Две группы экспертов принимали команды параллельно. Всего в нашем треке было 24 команды от 3 до 5 участников. На предзащите смогли показать не всё, что хотели, потому что собирали впопыхах.
Из-за этого после предзащиты я всерьёз расстроился и упал духом, но потом показали результаты: оказалось, что у нас максимальный балл 10/10 по обоим критериям: работоспособность прототипа и дизайн/удобство. В итоге с 20 баллами мы попали на первое место отборочной таблицы. Всего отбор прошли 11 команд из 24.
Потом мы спешно латали дыры и доделывали презентацию. Был очень нервный период, поскольку предстояла защита перед жюри, а мы ещё после долгих часов без сна с интенсивной работой. Очень хотелось просто отдохнуть, помыться, полежать в кровати.
Защита
На защите мы шли вторыми. Мы немного опоздали, поэтому, войдя в аудиторию, почти сразу вынуждены были выйти к проектору. Я первым делом спросил, можно ли подключить свой компьютер, чтобы показать демо, на что получил ответ: «Ваше время уже пошло, а как его тратить, это вам решать». Но я решил рискнуть. Очень хотелось показать демо, потому что у нас это являлось наиболее сильной стороной: наличие полностью работающего проекта со всеми дополнительными фишками, с мобильным приложением и Алисой. Не хотелось ограничиваться скриншотами в презентации, и по итогам тактика оказалась верной.


Как я уже упомянул, удалось прямо на презентации показать в реалтайме ключевые фишки, но даже тут работали всей командой: я питчил, ребята вовремя включали нужные вещи на ноутбуках и следили, чтобы картинка соответствовала тому, что я говорю. Было приятно получить вопросы от всех четырёх членов жюри, это значит, что есть интерес. Аудитория тоже хорошо аплодировала.
Затем были остальные презентации, ещё 9 команд после нас. Многие проекты интересные, но, кажется, получили меньше внимания, чем могли бы. На мой субъективный взгляд выступающие допускали два вида ошибок:
- Очень мало показали или не показали прототип. Много слайдов в презентации с подробным описанием возможностей продукта, но всего один-два скриншота, по которым непонятно, есть ли приложение, работает ли оно, и если да, то как. Если нет возможности запустить демку, я бы вставлял видеозапись работы, которая показывала бы ключевые моменты и сценарии использования.
- Низкая готовность питчера к презентации, чтение текста с экрана мобильника или с презентационного экрана, зачитывание длинных предложений. Пятиминутную презентацию несложно запомнить, а рассказывать о проекте нужно тезисно, на ходу достраивая предложения, если что-то забыл. Достаточно помнить общую структуру: что и в каком порядке презентуется.
Результаты и закрытие
После защиты через некоторое время была церемония закрытия. И я здесь всё понимаю: это серьёзное организованное государством мероприятие, на котором много важных гостей. Каждый из них высказывался, к тому же была подготовлена программа знакомства с местной культурой, танцы, музыкальный исполнитель.


И это всё круто, да. Интересно. Девушка, которая битбоксила, вообще классно выступила. Танцевальная группа тоже понравилась, костюмы интересные. Но… не после двух суток непрерывной изматывающей деятельности! Почему организаторы не были способны понять такую элементарную вещь: всем в зале просто хочется лечь спать прямо сейчас!? Каждые 10 минут задержки, каждая очередная речь, получасовая пауза перед стартом, развлекательные вставки. Ребята, это всё отлично, но не в том состоянии, в котором мы были вечером воскресенья после 48 часов кодинга и двух стрессовых защит.
Объявляли по номинациям, всего было 26 призов: 20 основных по 500 тысяч и 6 простых по 100 тысяч. Наша номинация была где-то в середине, победителями объявили только нас (в некоторых номинациях первое место делили две команды). Росатом в дополнение к призу подарил нам и ещё одной команде сумки с мерчем, причём, мерч был круче, чем от самого Цифрового Прорыва: фитнес-браслет, повербанк на 10000 мА*ч, классный дорогой блокнот, ручка.



Мы радостные пошли поужинать, потом пофотографировались с табличкой «500 000 ₽». Стоит сказать, что к нам было очень много внимания, люди подходили поздравлять, задавали вопросы. Некоторые команды ещё пошли праздновать, но у нас уже не было сил.




Итоги и выводы
Основная проблема организации была вызвана, по моему мнению, слишком длинной цепочкой между исполнителями и руководителями. Беда многих больших структур, а особенно государственных. Люди, которые занимались исполнением на местах, были абсолютно не заинтересованы в результате. Тем, кто покупал билеты, было плевать, сможет ли команда по факту добраться до места. Тем, кто делал бейджики, было плевать, что кто-то не будет должным образом зарегистрирован. Тем, кто выдавал мерч, было плевать, получат ли его участники. Тем, кто выдавал обед во второй день, было плевать, останутся ли люди сытыми. И так далее. Обычно крупные хакатоны организует какая-то компания, на местах находятся её сотрудники, которым близка идеология компании, и которые хотя бы немного горят общим делом. Здесь же было руководство, которому интересно это мероприятие, но руководство само старалось не выполнять работу, а делегировать её тем, кому судьба ивента была до лампочки, из-за этого крупные части оказались сделаны хорошо (выступления, размещение), а в мелочах очень много ошибок и недочётов.
Тем не менее, с учётом огромного количества людей, мероприятие прошло хорошо. Глобальных форс-мажоров не было, люди могли работать, презентация и оценка тоже прошли адекватно. Комфортная и просторная обстановка, проводной интернет, сытное питание, пуфики, мерч. Частичная компенсация трансфера: обратные билеты организаторы всё-таки купили всем, хотя и не сразу.


Важная положительная черта: после хакатона с нами стали связываться. Обычно на хакатонах после завершения оказывается так, что и команды и проекты более менее забываются и никому не нужны. То, что с хакатонов якобы хантят людей, это миф, чаще всего не хантят, даже победителей. Но здесь со сцены объявили, что проекты не будут заброшены, и это почти правда. Нашей командой открыто заинтересовалось несколько организаций, хоть и не конкретно тем проектом, что мы делали. Ещё позвали в преакселератор. В общем, есть какое-то движение после хакатона, и это круто, даже если ни во что не выльется.
Короче, офигенно, на самом деле получили много удовольствия, масштабы очень впечатляют, результатами довольны. Жалею тех, кто прошёл регионы, но слился с финала из-за отсутствия билетов или скепсиса. Питер взял 6.5 номинаций из 26 и стал лидером по проценту побед, что понятно, т.к. именно мы айтишная столица страны. Постараемся же удержать это звание и дальше.
