QA: Хакатоны

ycl0sxbvamf0cdlj1jgjqrgft8s.png

Заключительная часть трилогии о хакатонах. В первой части я рассказал о мотивации к участию в таких мероприятиях. Вторая часть была посвящена ошибкам организаторов и их результатам. Заключительная часть ответит на вопросы, которые не поместились в первые две части.

Расскажи как ты начал участвовать в хакатонах.
Я учился в магистратуре Лаппеенрантского университета попутно решая соревнования по анализу данных. Мой типичный день выглядел следующим образом: подъем в 8, несколько пар в университете, затем соревнования и курсера до полуночи (пока считается сабмит я смотрю лекции или читаю статьи). Такой жесткий график принес свои плоды, и я выиграл соревнование по анализу данных MERC-2017 (о чем даже был пост на хабре). Победа накинула уверенности в себе, и когда я случайно наткнулся на информацию о хакатоне SkinHack 2 в Москве, я решил проведать родителей и заодно узнать что это такое — хакатон.

Сам хакатон получился довольно забавным. Было два трека по анализу данных с четкой метрикой и датасетом с призовыми по 100к рублей. Третий трек был по разработке приложений с призовым 50к, и в нем не было участников. В один момент организатор сказал, что окошко с кнопкой без функционала может выиграть 50к, потому что приз не может быть не выплачен. Я не стал учится программировать приложения (я не соревнуюсь там, где меня могут с легкостью «перевернуть»), но для меня это был четкий месседж что поля в хакатонах не забиты.

Тогда я решал оба трека по анализу данных один. Я нашел лик в данных, который позволял выбить идеальный скор, но столбца с ликом не было в тестовых данных, которые я получил за два часа до конца мероприятия (к слову, тогда я понимал что наличие колонки «target» в трейне не считается за лик). В то же время открылся лидерборд, мой сабмит без лика занимал третье место из пяти, до первого был большой отрыв и я решил не тратить время и уехал.

После того как я проанализировал на свежую голову что произошло я нашел кучу ошибок (одна из моих привычек — мысленно прокручивать что произошло с блокнотом и анализировать ошибки, их причину, и что можно было поменять — такое приятное наследие полу-профессиональной игры в покер). Но одно было понятно точно — в хакатонах есть много value, и я просто обязан его реализовать. После этого события я начал мониторить мероприятия и группы, и последующий хакатон не заставил себя долго ждать. Потом еще один, и еще…

Почему ты занимаешься хакатонами, а не каглом?
В данный момент мне не нравится кагл. С определенного уровня скила, без специфических причин участия, кагл становится менее полезным чем другие активности. Я много участвовал раньше, видимо, мне удалось как-то «слезть».

Почему хакатоны, а не работа над своим проектом?
Мне импонирует идея сделать что-то крутое своими руками в небыстром темпе. Ребята из ODS организовали ODS pet projects для всех, кто хочет на выходных заняться своим проектом в кругу единомышленников. Думаю, что в скором времени я к ним присоединюсь.

Как ты находишь мероприятия?
Основной источник — hackathon.com (мир) и чат в телеграмме Russian Hackers (Россия). Плюс анонсы мероприятий проскакивают в рекламе в соц сетях и в linkedin. Если ничего не нашли, то можно посмотреть тут: mlh.io, devpost.com, hackevents.co, hackalist.org, HackathonsNear.me, hackathon.io.

Готовишь план решения до участия или всё решается на ходу? Например, за неделю до хакатона прикидываешь: «Тут нужен будет такой и такой специалист, нужно будет поискать»?
Если хакатон продуктовый — да, готовлюсь. За несколько недель до я придумываю что буду делать, прикидываю, кто может пригодится, собираю команду из друзей или участников прошлых хакатонов.

Реально хакнуть хакатон в одиночку? Что делать, если нет команды?
Датасаенс хакатоны — реально (я — живой тому пример), продуктовые — не видел, хотя тоже думаю, что да. К сожалению, иногда организаторы накладывают ограничение на минимальное количество участников в команде. Я думаю это вызвано тем, что не все «одиночки» доходят до финала (т.е. просто уходят с первыми трудностями), участие в команде все же сдерживает. Еще после мероприятия предполагается, что вы продолжите работу над проектом. С командой довести проект до ума будет легче.

В целом, я советую всегда участвовать с командой. Если у вас нет своей команды, то организаторы всегда помогут с тем, чтобы ее найти или создать.

Как удается справляться с усталостью во время хакатона?
На хакатоне дается 2 дня на работу, это 48 часов (30–48 часов, возьмем 48 для простоты счета). Убираем время на сон (16–20 часов), остается не более 30. Из них реально на продуктивную работу пойдет часов 8 (в среднем). Если правильно организовать работу (сон, питание, выход на свежий воздух, зарядки, минуты осознанности, правильное общение с командой и переключение активности), то deep work часы можно добить до 12–14. После такой работы будешь чувствовать себя истощенным, но это будет приятная усталость. Кодить без сна и перерывов перебиваясь энергетиками — путь к провалу.

У тебя есть свои готовые пайплайны для хакатонов? Как они у тебя появлялись, как они у тебя устроены (лежат по папочкам .py файлы, каждый для своей задачи и пр.) и как начать создавать самому такие?
Я не использую полностью готовые решения прошлых хакатонов в новых, но у меня есть свой зоопарк моделей и пайплайнов из прошедших соревнований. Мне не приходится переписывать стандартные куски с нуля (например, правильный target encoding или простую сеточку для выделения интента из текста), что экономит мне много времени.

В текущий момент это выглядит вот так: для каждого соревнования или хакатона есть свое репо на гитхабе, в нем хранятся ноутбуки, скрипты и небольшая документация о том что происходит. Плюс есть отдельное репо для всяких коробочных «фишечек» (вроде правильного target encoding с кросс-валидацией). Я не думаю что это самое элегантное решение, но пока что меня устраивает.

Я бы начал с сохранения всего своего кода по папкам и написания короткой документации (зачем, что, как делал и результат).

Реально ли за такой короткий срок подготовить MVP с нуля или все участники идут с готовыми решениями?
Могу сказать только про проекты связанные с датасаенс — да, возможно. MVP для меня это совокупность двух факторов:

  • Жизнеспособная идея представленная как продукт (т.е. расписан business canvas). Всегда должно быть четкое понимание почему и для кого мы делаем продукт. Иногда проекты с хорошо-обоснованным проектом, но без прототипа выигрывают призовые места, и в этом нет ничего удивительного. К сожалению, многие участники не могут абстрагироваться от горечи поражения и списывают свои неудачи на недальновидность организаторов, продолжая пилить модельки непонятно для кого на следующих хакатонах.
  • Некий показатель что вы этот продукт можете сделать (приложение, код, описание пайплайнов).


Бывает, что на хакатон приходит команда с готовым решением и пытается его «подогнать» под задание организаторов. Такие команды отсекаются на техническом скрининге или «считается» только та часть, которую они сделали на площадке. Я не видел такие команды в победителях, но я думаю им все равно выгодно ходить из-за future value (контакты, датасеты и прочее).

Есть ли примеры доведение поделок реализованных на хакатонах до продакшена/стартапа?
Да. У меня было три случая когда доводили до продакшена. Один раз сам, два раза — чужими руками исходя из моих идей и кода, который я написал на хакатоне. Еще знаю пару команд, которая продолжала сотрудничество с компанией в качестве консультантов. Финальных результатов не знаю, но скорее всего что-то было сделано до конца. Сам стартапы не организовывал и не знаю, чтобы кто-то делал, хотя примеры, я уверен, есть.

После участия во многих хакатонах, какие советы бы ты дал себе, если бы мог вернуться в прошлое?

  1. Тактика важнее маневров. Представляй каждое решение как готовый продукт. Идея, юпитер ноутбук, алгоритм ничего не стоят, если не понятно кто будет за это платить.
  2. Прежде чем проектировать что-либо, ответь на вопрос не «что?», а «зачем?» и «как?». Пример: проектируя какой-либо ML решение, в начале подумай об идеальном алгоритме: что он получает на вход, как его предсказания используются в дальнейшем?
  3. Участвуй в команде.

Чем обычно кормят на хакатонах?
Обычно на хакатонах кормят плохо: пиццы, энергетики, газировка. Почти всегда еда организована в форме шведского стола (или раздаточного стола) к которому выстраивается огромная очередь. Ночью обычно не кормят, хотя был случай на одном соревновании в Париже на ночь оставили покушать — чипсы, пончики и колу. Я представлю мысленный процесс организаторов: «Так, что там едят программисты? А, точно! Чипсы, пончики — вот этом все. Положим им эту дрянь.» На следующей день я спросил организаторов: «Ребят, а нельзя ли сделать на ночь что-то другое? Ну там, кашу например?» После этого на меня посмотрели как на идиота. Знаменитое французское гостеприимство.

На хороших хакатонах еду заказывают в боксах, есть разделение на обычное, вегетарианское и кошерное питание. Плюс ставят холодильник с йогуртами, мюсли — для тех кто хочет перекусить. Чай, кофе, вода — стандарт. Запомнился хакатон Hack Moscow 2 — там душевно накормили борщом и котлетами с пюрешкой в столовой офиса 1С.

Вменяемость хакатонов зависит, так сказать, от профессиональной сферы организаторов (например, лучшие хакатоны проводят консалтеры)?
Самые лучшие хакатоны были от организаторов, которые либо до этого организовывали хакатоны, либо раньше участвовали. Пожалуй, это единственный фактор, от которого зависит качество мероприятия.

Как понять, что ты не нуб и пора на хакатон?
Самое лучшее время чтобы пойти на хакатон — год назад. Второе лучшее время — сейчас. Так что дерзай, ошибайся, учись — это нормально. Даже нейронная сеть — величайшее изобретение человека после колеса и градиентного бустинга над деревьями — не может отличить кошку от собаки на первой эпохе обучения.

Какие «красные флаги» сразу говорят о том, что мероприятие будет не очень и не надо тратить время?

  • Четкое описание что нужно сделать (актуально для продуктовых хaкактонов). Если при регистрации вам четко будет поставлена задача, то лучше остаться дома. На моей памяти не было ни одного хорошего хакатона с ТЗ. Для сравнения: Хорошо — сделайте нам что-нибудь связанное с анализом аудио разговоров. Плохо — сделайте нам приложение, которое было бы способно разделять разговор на две отдельные звуковые дорожки для каждого человека.
  • Маленький призовой фонд. Если вас просят сделать «тиндер для онлайн магазина с AI» и приз за первое место 500 евро и минимальным размером команды в 5 человек — пожалуй не стоит тратить время (да, это реальный хакатон, которые проводился в Мюнхене).
  • Отсутствие данных (актуально для датасаенс хакатонов). Организаторы обычно предоставляют основную информацию о мероприятии и иногда семпл датасета. Если не предоставили — спросите, с вас не убудет. Если за 2–3 непонятно какие данные будут предоставлены и будут ли они вообще — это красный флаг.
  • Новые организаторы. Не поленитесь и погуглите информацию об организаторах хакатона. Если они проводят мероприятие такого рода в первый раз — велика вероятность того, что что-то пойдет не так. С другой стороны, если организатор и члены жюри уже проводили хакатоны или в прошлом активно участвовали — это зеленый флаг.

На одном хакатоне мне сказали: «У тебя было лучшее решение по скору, но извини, у нас оценивается работа в команде, а ты работал в одиночку. Вот если бы ты взял в команду студента или девочку…»? Встречал ли ты подобную несправедливость? Как справлялся?
Да, встречал и не раз. Я стоистически отношусь ко всему происходящему: я сделал все что в моих силах, если не получилось — так тому и быть.

Зачем ты всем этим занимаешься?
Все это просто от скуки.

© Habrahabr.ru