Заключительная часть трилогии о хакатонах. В первой части я рассказал о мотивации к участию в таких мероприятиях. Вторая часть была посвящена ошибкам организаторов и их результатам. Заключительная часть ответит на вопросы, которые не поместились в первые две части.
— Расскажи, как ты начал участвовать в хакатонах.
— Я учился в магистратуре Лаппеенрантского университета попутно решая соревнования по анализу данных. Мой типичный день выглядел следующим образом: подъем в 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 (контакты, датасеты и прочее).
— Есть ли примеры доведение поделок реализованных на хакатонах до продакшена/стартапа?
— Да. У меня было три случая когда доводили до продакшена. Один раз сам, два раза — чужими руками исходя из моих идей и кода, который я написал на хакатоне. Еще знаю пару команд, которая продолжала сотрудничество с компанией в качестве консультантов. Финальных результатов не знаю, но скорее всего что-то было сделано до конца. Сам стартапы не организовывал и не знаю, чтобы кто-то делал, хотя примеры, я уверен, есть.
— После участия во многих хакатонах, какие советы бы ты дал себе, если бы мог вернуться в прошлое?
- Тактика важнее маневров. Представляй каждое решение как готовый продукт. Идея, юпитер ноутбук, алгоритм ничего не стоят, если не понятно кто будет за это платить.
- Прежде чем проектировать что-либо, ответь на вопрос не “что?”, а “зачем?” и “как?”. Пример: проектируя какой-либо ML решение, в начале подумай об идеальном алгоритме: что он получает на вход, как его предсказания используются в дальнейшем?
- Участвуй в команде.
— Чем обычно кормят на хакатонах?
— Обычно на хакатонах кормят плохо: пиццы, энергетики, газировка. Почти всегда еда организована в форме шведского стола (или раздаточного стола) к которому выстраивается огромная очередь. Ночью обычно не кормят, хотя был случай на одном соревновании в Париже на ночь оставили покушать — чипсы, пончики и колу. Я представлю мысленный процесс организаторов: “Так, что там едят программисты? А, точно! Чипсы, пончики — вот этом все. Положим им эту дрянь.” На следующей день я спросил организаторов: “Ребят, а нельзя ли сделать на ночь что-то другое? Ну там, кашу например?” После этого на меня посмотрели как на идиота. Знаменитое французское гостеприимство.
На хороших хакатонах еду заказывают в боксах, есть разделение на обычное, вегетарианское и кошерное питание. Плюс ставят холодильник с йогуртами, мюсли — для тех кто хочет перекусить. Чай, кофе, вода — стандарт. Запомнился хакатон Hack Moscow 2 — там душевно накормили борщом и котлетами с пюрешкой в столовой офиса 1С.
— Вменяемость хакатонов зависит, так сказать, от профессиональной сферы организаторов(например, лучшие хакатоны проводят консалтеры)?
— Самые лучшие хакатоны были от организаторов, которые либо до этого организовывали хакатоны, либо раньше участвовали. Пожалуй, это единственный фактор, от которого зависит качество мероприятия.
— Как понять, что ты не нуб и пора на хакатон?
— Самое лучшее время чтобы пойти на хакатон — год назад. Второе лучшее время — сейчас. Так что дерзай, ошибайся, учись — это нормально. Даже нейронная сеть — величайшее изобретение человека после колеса и градиентного бустинга над деревьями — не может отличить кошку от собаки на первой эпохе обучения.
— Какие «красные флаги» сразу говорят о том, что мероприятие будет не очень и не надо тратить время?
- Четкое описание что нужно сделать (актуально для продуктовых хaкактонов). Если при регистрации вам четко будет поставлена задача, то лучше остаться дома. На моей памяти не было ни одного хорошего хакатона с ТЗ. Для сравнения: Хорошо — сделайте нам что-нибудь связанное с анализом аудио разговоров. Плохо — сделайте нам приложение, которое было бы способно разделять разговор на две отдельные звуковые дорожки для каждого человека.
- Маленький призовой фонд. Если вас просят сделать “тиндер для онлайн магазина с AI” и приз за первое место 500 евро и минимальным размером команды в 5 человек — пожалуй не стоит тратить время (да, это реальный хакатон, которые проводился в Мюнхене).
- Отсутствие данных (актуально для датасаенс хакатонов). Организаторы обычно предоставляют основную информацию о мероприятии и иногда семпл датасета. Если не предоставили — спросите, с вас не убудет. Если за 2-3 непонятно какие данные будут предоставлены и будут ли они вообще — это красный флаг.
- Новые организаторы. Не поленитесь и погуглите информацию об организаторах хакатона. Если они проводят мероприятие такого рода в первый раз — велика вероятность того, что что-то пойдет не так. С другой стороны, если организатор и члены жюри уже проводили хакатоны или в прошлом активно участвовали — это зеленый флаг.
— На одном хакатоне мне сказали: «У тебя было лучшее решение по скору, но извини, у нас оценивается работа в команде, а ты работал в одиночку. Вот если бы ты взял в команду студента или девочку…”? Встречал ли ты подобную несправедливость? Как справлялся?
— Да, встречал и не раз. Я стоистически отношусь ко всему происходящему: я сделал все что в моих силах, если не получилось — так тому и быть.
— Зачем ты всем этим занимаешься?
— Все это просто от скуки.
Автор: Денис Воротынцев