Почему вам стоит участвовать в хакатонах
Примерно полтора года назад я начал участвовать в хакатонах. За этот временной промежуток я успел принять участие в более чем 20 мероприятиях различного масштаба и тематик в Москве, Хельсинки, Берлине, Мюнхене, Амстердаме, Цюрихе и Париже. Во всех мероприятиях я занимался анализом данных в том или ином виде. Мне нравится приезжать в новые для себя города, налаживать новые контакты, придумывать свежие идеи, реализовывать старые задумки за короткий промежуток времени и адреналин во время выступления и оглашения результатов.
Данный пост — первый из трех постов на тематику хакатонов, в нем я расскажу что такое хакатоны, почему вам стоит начать участвовать в хакатонах. Второй пост будет о темной стороне данных мероприятий — про то как организаторы делали ошибки при проведении, и к чему они привели. Третий пост будет посвящен ответам на вопросы про около-хакатонную тематику.
Что такое хакатон?
Хакатон — это мероприятие, проводимое в течение нескольких дней, целью которого является решение какой-либо проблемы. Обычно проблем на хакатоне несколько, каждая представлена в виде отдельного трека. Компания-спонсор предоставляет описание задачи, метрики успешности (метрики могут быть субъективными вроде «новизна и креативность», а могут быть объективными — точность классификации на отложенном датасете) и ресурсы для достижения успеха (API компании, датасеты, «железо»). Участники за отведенное время должны сформулировать проблему, предложить решение и показать прототип своего продукта. Лучшие решения получают призы от компании и возможность дальнейшего сотрудничества.
Этапы хакатона
После оглашения задач участники хакатона объединяются в команды: каждый «одиночка» получает микрофон и говорит про выбранную задачу, свой опыт, идею и специалисты какого плана ему нужны для реализации. Иногда команда может состоять из одного человека, который способен выполнить всю работу над проектом самостоятельно на достаточно высоком уровне. Это актуально для хакатонов по анализу данных, но часто запрещено или нежелательно для продуктовых мероприятий — организаторы нацелены на дальнейшее продолжение работы над проектом, но уже в компании; сформированная команда обладает рядом преимуществ перед участниками которые пожелали создавать продукт в одиночку. Оптимальная команда обычно состоит из 4 человек и включает в себя: фронтенд, бэкенд, дата саентиста и бизнесового человека. К слову, разделение датасаенс/продуктовые хакатоны довольно простое — если есть датасет с четкой метрикой и лидербордом или выиграть можно с кодом в jupyter notebook — это датасаенс хакатон; все остальное — где требуется сделать приложение, сайт или что-то залипательное — продуктовый.
Обычно старт работы над проектом начинается в 9 вечера пятницы, а дедлайн — 10 утра воскресенья. Часть этого времени необходимо отвести на сон (не спать и кодить — это верный путь к провалу, я проверял), а это означает, что у участников не так много времени для того чтобы сделать что-то качественное. Чтобы помочь участникам, на площадке присутствуют представители компании и менторы.
Работа над проектом начинается с общения с представителями компании, так как они лучше понимают специфику задачи, метрики и скорее всего они будут судить ваши работы в конце. Цель данного общения — понять какие направления наиболее актуальны, и на чем стоит сфокусировать свое внимание и время.
На одном хакатоне была поставлена задача регрессии на датасете с табличными данными и картинками и четкой метрикой — RMSE. После того как я пообщался с датасаентистом компании, я понял что им нужна не регрессия, а классификация, но просто кто-то из менеджмента решил что задачу лучше всего решать именно так. А классификация им нужна не для того чтобы получить прирост денежных метрик, а для того чтобы понять какие параметры наиболее важны при принятии решения и затем уже обработывать их вручную. То есть начальная задача (регрессия с RMSE) меняется на классификацию; приоритет оценки меняется с полученной точности до возможности объяснить результат. Это в свою очередь отметает возможность использования стакинга и black box алгоритмов. Такой диалог сэкономил мне уйму времени и увеличил мои шансы на победу.
После того как вы поняли что вам нужно делать начинается непосредственная работа над проектом. Вы должны установить чек-пониты — время, к которому необходимо выполнить поставленные задачи; попутно неплохо продолжать общение с менторами — представителями компании и техническими специалистами — это полезно для корректировки маршрута вашего проекта. Свежий взгляд на проблему может подсказать интересное решение.
Так как в хакатонах участвует большое количество новичков, со стороны организаторов хорошим тоном является проведение лекций и мастер-классов. Обычно лекций три — о том как представить свою идею в виде продукта, лекция на техническую тематику (к примеру о применении открытых API в машинном обучении, чтобы вам не пришлось писать свой speech2text за два дня, а воспользоваться готовым), лекция о питчинге (как представить свой продукт, как правильно махать руками на сцене чтобы слушателям было не скучно). Бывают разные активности чтобы взбодрить участников — сессия йоги, настольный футбол и теннис или игра в консоли.
В утро воскресенья вам необходимо предоставить результаты вашей работы для жюри. На хороших хакатонах все начинается с технической экспертизы — действительно ли то что вы заявляете работает? Цель данной проверки — отсеять команды с красивой презентацией и buzzwords, но без продукта от ребят которые реально что-то сделали. К сожалению, техническая экспертиза присутствует не на всех хакатонах и бывают случаи когда команда с 12 слайдами и майндсетом »… blockchain, quantum computing, а тут АИ доделает…» выигрывает первое место. Такие прецеденты не так часты, но поскольку они запоминаются лучше всего, многие думают, что хорошая презентация — это 99% победы в хакатоне. Презентация, к слову, действительно важна, но ее вклад — не более 30%.
После выступления участников жюри принимает решение о награждении победителей. На этом официальная часть хакатона завершена.
Мотивация к участию в хакатонах
Опыт
С точки зрения полученного опыта, хакатон — это уникальное мероприятие. В природе существует не так много мест, где можно реализовать идею из ничего за 2 дня и получить моментальный фидбэк о своей работе. Во время хакатона прокачивается критическое мышление, умение работы в команде, тайм менеджмент, умение работы в стрессовой ситуации, умение преподносить результаты своей работы в понятном виде, навык презентаций и многие другие. Именно поэтому хакатоны — это отличное место для людей с теоретическими знаниями, желающими получить реальный опыт.
Призы
Обычно призовой фонд хакатона составляет примерно 1.5k — 10k евро за первое место (в России — 100–300 тыс рублей). Ожидаемую выгоду (expected value, EV) от участия можно посчитать по нехитрой формуле:
EV = Prize * WinRate + Feature_Value - Costs
где Prize — размер приза (для простоты будем считать что приз один);
WinRate — вероятность победы (для начинающей команды это значение будет ограничено сверху 10%, для более опытной — 50% и выше; я встречал людей, которые с каждого хакатона уходили с призом, но это скорее исключение из правил и на длинной дистанции их винрейт будет ниже 100%);
Feature_Value — величина которая показывает будущую прибыль от участия в хакатоне: это может быть прибыль от приобретенного опыта, налаженных связей, полученной информации итп. Данную величину практически невозможно определить точно, но о ней нужно помнить;
Costs — затраты на транспорт, проживание, прочее.
Решение об участии принимается на основании сравнения EV хакатона с EV активности, которой вы хотели заняться если бы хакатона не было: если вы хотели поваляться на выходных на диване и ковыряться в носу, то наверное стоит участвовать в хакатоне; если провести время с родителями или девушкой — то берите их в команду на хакатон (шучу, решайте сами), если пофрилансить — сравнивайте доллар-час.
По своим расчетам, могу сказать что в России для среднего датасаентиста уровня джуниор — мидл участвовать в хакатонах соизмеримо с денежной прибылью от обычного рабочего дня, но есть и нюансы (размер команды, типа хакатона, призового фонда итп). В целом, хакатоны в данный момент — это не золотое дно, но они могут дать приятную прибавку к личному бюджету.
Найм в компанию и нетворкинг
Для компании хакатон — это один из способов найма новых сотрудников. Вам будет гораздо легче показать что вы адекватный человек и умеете работать работу на хакатоне, чем на собеседовании, вертя бинарным деревом на доске (что, кстати, не всегда соответствует тому, что вы будете делать на настоящей работе датасаентиста, но традиции надо чтить). Такая проверка в «боевых» условиях может заменить тестовый день.
Свою первую работу я получил благодаря хакатону. На хакатоне я показал, что из данных можно выжать больше денег, рассказал как я собираюсь это сделать. Я начал проект на хакатоне, выиграл его, затем продолжил проект уже в компании-спонсоре. Это был четвертый по счету хакатон в моей жизни.
Возможность получить уникальный датасет
Это очень актуальный пункт для дата саенс хакатонов, важность которого понимают не все. Обычно компании-спонсоры предоставляют реальные датасеты при проведении мероприятия. Эти данные приватные, они находятся под NDA, что не мешает показать вам proof of concept на реальном датасете, а не на игрушечном титанике. В дальнейшем подобные результаты сильно помогут при трудоустройстве в данную компанию или компанию-конкурент или при обосновании схожих проектов. Согласитесь, что при прочих равных, иметь выполненные проекты, которые позитивно оценили лучше чем не иметь онных. В целом, подобные реализованные проекты играют схожую роль с медалями и статусами на кагле, но для индустрии их ценность более очевидна.
Советы
В целом, работа на хакатоне — это довольно разноплановый опыт и трудно сформулировать какой-то перечень правил. Однако тут я хотел бы привести перечень наблюдений, которые могут помочь новичку:
- Не бойтесь ходить на хакатоны даже если у вас нет опыта или команды. Подумайте над тем, чем вы могли бы быть полезны. Например у вас может быть интересная идея или вы неплохо разбираетесь в какой-либо области? Вы можете использовать ваш domain knowledge при формулировании проблемы и найти нетривиальные пути решения. Или может быть вы лучше всех умеете гуглить? Ваше умение позволит сэкономить кучу времени, если вы сможете найти готовые реализации в гитхабе. Или вы очень хорошо разбираетесь в тюнинге параметров lightgbm? В таком случае не ходите на хакатон, а докажите это в соревнованиях кагла.
- Тактика важнее маневров. Ваша задача на хакатоне — решение проблемы. Иногда чтобы решить проблему, ее нужно выявить. Проверяйте что ваша выявленная проблема действительно актуальна для компании. Проверяйте ваше решение на соответствие проблемы, задайте себе вопрос об оптимальности вашего решения. При оценке вашего решения в первую очередь будут смотреть на актуальность проблемы и адекватность предложенного решения. Архитектура вашей нейронной сети или сколько рук-аук вы получили мало кого интересует.
- Посещайте как можно больше хакатонов, но не стесняйтесь уходить с плохо-организованных мероприятий.
- Добавляйте результаты своей работы на хакатоне в резюме и не бойтесь писать о нем публично.
Суть хакатонов. Кратко