Доброго времени суток!

Меня зовут Анна Хан, я студентка третьего курса программной инженерии. Сегодня хочу рассказать вам о своём первом опыте трёхдневного очного хакатона.

Предыстория

О хакатоне

Как собиралась команда

Расписание хакатона

Датасет

Первый чек-пойнт

Сессия вопрос-ответ кейсодержателям

Предобработка данных

Модель

Дизайн презентации

Финальный чек-пойнт

Стоп-кодинг

Защита

Критерии оценки решения

Итоги

Организация хакатона: плюсы и минусы

Советы:

Что с собой приносить?

Спать или не спать?

Зачем новичку идти на хакатон?

О страхах

Советы

Предыстория

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

К тому же отовсюду говорили, что хакатоны чуть ли не must-have для будущего айти-специалиста. И участвовать в них можно как с опытом, так и без него.

Ну что ж, как говорится, "сами нарвались". Опыт у меня, действительно, был нулевой. Вся подготовка к тому моменту сводилась к чтению статей на Хабре про ИИ и одной вузовской лабораторной в Jupyter Notebook по пресловутому Titanic.

О хакатоне

23-25 сентября 2022 года проект "Цифровой прорыв. Сезон: Искусственный интеллект" проводил хакатон в Москве. Он разделялся на три кейса:

  • Искусственный интеллект прогнозирует инфляцию (онлайн)

  • Найти белого медведя с помощью ИИ (онлайн)

  • Машинное обучение на графах (оффлайн)

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

Первому месту обещались 300 тысяч рублей, второму - 200 и третьему - 100.

Как собиралась команда

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

Анкеты, по которой админы команд решали, взять меня или не взять
Анкеты, по которой админы команд решали, взять меня или не взять
Как выглядит поиск команды на портале
Как выглядит поиск команды на портале

Через пару дней мне пришло уведомление, что меня взяли в команду. Админ списался со мной в Телеграмме. Общего чата команды ещё не было. А раз я так хвасталась в анкете своими софт-скилами, то решила помочь командиру с организационными моментами.

Я создала чат в Телеграмме, мы пригласили туда всех участников. Был один конфуз: я оставила в названии чата только название команды без слов "хакатон" и "цифровой прорыв", поэтому три человека подумали, что это спам, и сразу убежали. Хорошо, что я догадалась написать им лично и устранила недоразумение. Учитесь на моих ошибках.

Основной состав команды принял свой окончательный вид только за несколько дней до хакатона. Кто-то уходил (по разным причинам), кто-то приходил, и это оказалось нормой для таких "зарождающихся" команд.

По просьбе админа, мы кинули в чат перечень своих навыков. Админ также размышлял, как распределить роли в команде, и я предложила на основе тех перечней табличку:

Таблица распределения ролей
Фиолетовый - главная роль, синий - помощник
Таблица распределения ролей Фиолетовый - главная роль, синий - помощник

Все с ней согласились. Созвонов устраивать не стали и встретились уже в офисе ВК - месте проведения хакатона.

Расписание

Тайминг хакатона, на который мы ориентировались эти три дня:

23 сентября

13:00 - 16:00 Работа стойки регистрации
15:00 - Старт церемонии открытия
16:00 - Запуск хакатона, в личном кабинете появляются презентации кейса; старт работы коворкинга и зоны отдыха
16:40 - 18:00 Фотосессия команд
17:00 - 19:00 Ужин
18:00 - 21:00 Первый чек-поинт
20:30 - Старт работы sleep-зоны и душевых

24 сентября

09:00 - 10:00 Завтрак
10:00 - 10:45 Сессия вопрос-ответ с кейсодержателем
11:30 - 14:00 Второй чек-поинт
14:00 - 15:30 Обед
18:00 - 19:30 Ужин
19:00 - 21:00 Финальный чек-поинт
22:00 - Загрузка тизера решения в ЛК

25 сентября

09:00 - 10:00 Завтрак
11:00 Стоп-кодинг
11:40 - 12:30 Чек-ап команд и решений
12:00 - 13:00 Обед
13:13 - 16:00 Потоковые защиты
17:00 - 18:15 Церемония закрытия

Мы заняли стол, погуляли по офису, посмотрели открытие хакатона и принялись изучать теперь уже доступные данные, на которых мы должны были обучать модель (для этого организаторы попросили зарегистрироваться все команды на cups.online. Там впоследствии отображались и скоры).

Как обычно выглядит стол команды
Как обычно выглядит стол команды

Датасет

Весь датасет в 3.17 ГБ
Весь датасет в 3.17 ГБ

Далее идёт описание датасета (какой файл какие данные хранит) в том виде, в каком его дали организаторы (осторожно, ничего не понятно):

«Кейс представляет собой задачу бинарной классификации (файл с таргетами и указанием на тестовые объекты - FINAL_TARGETS_DATES_TRAINTEST.tsv). Каждый пользователь обучающей и тестовой выборок характеризуется:

  • последовательностью пользовательских состояний (FINAL_ALL_SEQUENCES_TRAINTEST.tsv);

  • набором вещественных признаков (FINAL_FEATURES_TRAINTEST.tsv);

  • топом близких ему пользователей с тем же признаковым описанием (FINAL_FEATURES_FRIENDS.tsv). 

Дополнительно представляется матрица последовательностей пользовательских состояний для обучения моделей векторизация (FINAL_SEQUENCES_MATRIX.tsv). Необходимо прогнозировать склонность пользователя, применив подходы векторизации графов и считая метрикой качества построенной модели ROC-AUC score.»

Действительно, не самое очевидное описание данных. Давайте посмотрим, как они выглядят.

FINAL_TARGETS_DATES_TRAINTEST - тестовая выборка
target 0 - не склонен к благотворительности
target 1 - склонен
target test - результат скрыт, т.к. принадлежит тестовой выборке
FINAL_TARGETS_DATES_TRAINTEST - тестовая выборка target 0 - не склонен к благотворительности target 1 - склонен target test - результат скрыт, т.к. принадлежит тестовой выборке
FINAL_FEATURES_FRIENDS
Топ близких пользователей для "клиентов" с тем же признаковым описанием
FINAL_FEATURES_FRIENDS Топ близких пользователей для "клиентов" с тем же признаковым описанием

Потом выяснилось, что граф "друзей" выглядит как куча снежинок, то есть каждая компания "близких" пользователей вообще не близка остальным.

FINAL_FEATURES_TRAINTEST
Набор вещественных признаков пользователей
FINAL_FEATURES_TRAINTEST Набор вещественных признаков пользователей

Обратите внимание на загадочные "u" и "i" признаки. Эксперты проговорились, что они характеризуют группы доменов, которые посещают пользователи.

FINAL_ALL_SEQUENCES_TRAINTEST 
Некие последовательности пользовательских состояний в виде векторов хэшей
FINAL_ALL_SEQUENCES_TRAINTEST Некие последовательности пользовательских состояний в виде векторов хэшей

Хэши (наборы букв и цифр в SEQUENCE) - это домены (опять же, со слов организаторов). Безликая "последовательность состояний (хэшей)" превращается во вполне понятную цепочку переходов из условного Яндекс-браузера в условный благотворительный сайт.

FINAL_SEQUENCES_MATRIX
Дополнительно представляется матрица последовательностей пользовательских состояний для обучения моделей
FINAL_SEQUENCES_MATRIX Дополнительно представляется матрица последовательностей пользовательских состояний для обучения моделей

SESSIONS_SEQUENCES - совокупность всех цепочек переходов по доменам пользователей. Какие-то из них приводили к благотворительности (TARGET=1), а какие-то - нет (TARGET=0).

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

Первый чек-пойнт

Всей командой мы пришли в назначенный кабинет. Нас приветливо встретил трекер, Николай Любецкий. Он выяснял у нас, как мы поняли задачу и распределили роли. Как только Николай убедился, что всё у нас хорошо, пришла наша очередь задавать вопросы эксперту, Дмитрию Савостьянову.

Вопросы были следующие:

  1. Обязательно ли использовать графовые модели? Что, если графы не будут влиять на score? (Ответ: необязательно)

  2. Наличие интеграционного интерфейса обязательно? Как он должен выглядеть? (Ответ: необязательно, главное - модель, но наличие интерфейса будет в плюс при оценке решения)

Сессия вопрос-ответ кейсодержателям

Основную работу по анализу данных и созданию модели проделывал Виталий. К сессии он приехать не мог, поэтому я решила задать накопившиеся вопросы сама и села с остальными командами в кружок.

На вопросы отвечали три члена будущего жюри - Александр Мамаев, Амир Утеуов и Вадим Журавлёв. У них можно было и вопрос задать, и помощи попросить, если в чём-то затуп. Очень дружелюбные ребята.

  1. Был вопрос по поводу количества попыток в день для отправки решения. Их было заявлено пять в день, но счётчик во второй день не обновлялся. Эксперты пообещали исправить баг.

  2. Спросила по поводу "u", "i" групп в FINAL_FEATURES_TRAINTEST.tsv (они уже проговорились про домены), зачем нужно было так шифроваться: ради конфиденциальности или чтобы жизнь мёдом не казалась. Мне ответили, что ради того и другого. Кейс придумывался как учебный, поэтому все загвоздки и подсказки оставлены специально.

Сокомандник общается с экспертами
Сокомандник общается с экспертами

Предобработка данных

По некоторым пользователям нет данных ни о друзьях, ни о состояниях. Чтобы иметь возможность оставить их для обучения модели, мы добавляем в SEQUENCE значение по умолчанию. Так удалось избежать траблов с пустыми полями.

Наша главная ошибка была в том, что мы потратили мало времени на предобработку и изучение данных.

Если убрать лишние фичи из датасета с "друзьями" и с "клиентами" и ещё чуть "пошатать" гиперпараметры модели, то score повысится от итогового 0.61 до 0.62 - это мы выяснили уже после хакатона.

Интересно, что одна из команд использовала ID пользователей, как одну из самых сильных фичей. То есть "новизна" пользователей каким-то образом влияла на склонность к благотворительности.

Записки сумасшедшего
Записки сумасшедшего

Модель

Обучение итоговой модели состояло из двух этапов.Первый - предобучение модели на данных о пользовательских состояниях с помощью LSTM модели. Второй - обучение MLP на данных, полученных на первом шаге, данных о пользователях и их друзьях, прошедших графовую агрегацию.

Эволюция score от baseline модели до итоговой

Дизайн презентации

Хороший дизайн занимает много сил и времени. Необходимо продумать структуру, затем перенести все, что делается эти несколько дней, в графики и тезисы. Команда постоянно меняет решение, поэтому лучше задизайнить всю структуру, а потом вставлять текст, графики и схемы по мере их появления. Так мы и делали.

Было разрешено не более 10 слайдов. Собственно, 10 слайдов у нас и вышло:

  • Титульный слайд (название команды и кейса + лого)

  • Этапы решения кейса

  • Выводы по аналитике данных

  • Схема первичной модели машинного обучения

  • Метод работы с пропущенными значениями

  • Схема итоговой модели

  • Полученные score во всех испытываемых моделях

  • Представление команды (фото, имя, фамилия, роль)

  • QR-код на скринкаст и репозиторий в Github

Меня уверили в том, что самые лучшие презентации делаются в Figma. Я неохотно поверила, но в итоге ничуть не пожалела. Figma отличается крайней гибкостью в создании графических элементов, хоть и не так дружелюбен к новичкам, как Canva (к которой я прикипела на работе). Любую загогулину, которая придёт вам в голову, можно реализовать в Figma. Я быстро освоилась с его интерфейсом с подсказками Данила и парой запросов в гугл.

Данил у нас был спец в дизайне веб-сайтов и презентаций. Он нашёл симпатичный дизайн презентации в Pinterest, и мы, глядя на него, сделали слайды в таком же стиле. Получилось очень даже неплохо.

Pinterest как источник вдохновения
Pinterest как источник вдохновения

Другие команды делали и на Canva, и в PowerPoint. Из наблюдений за реакцией жюри я сделала вывод, что в презентации, кроме красивого дизайна, важны эмоции. Котята вместо фото членов команды, мемы (технические и не очень) вызывали улыбку у каждого эксперта. Такие команды запоминались и располагали к себе. Поэтому не стоит бояться о чём-то в презентации шутить, главное, чтобы это было в тему.

Финальный чек-пойнт

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

Стоп-кодинг

Это был суматошный день. Мы с Данилом дорабатывали презентацию под изменившуюся модель до самой последней минуты перед до дедлайном. Виталий допилил модель и чуть-чуть улучшил скор.

Защита

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

На всё про всё каждой команде давалось семь минут: 5 минут на само выступление, 2 - на вопросы жюри. Перед началом обязательно нужно было проверить микрофоны и кликеры, чтобы потом не случилось заминок.

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

В итоге впечатления от презентации остались у всех смешанные. Нам оставалось посмотреть на выступления других команд и ждать результатов.

Кто-то выходил и отвечал на вопросы один. Некоторые выступали вдвоём. Многие вызывали отвечать на вопросы всю команду. Этап ответов на вопросы был не менее важным, чем выступление. Жюри успевали задать с десяток вопросов, и все по технической части. Уточняли всё, что можно было уточнить. Ценились оперативные и развернутые ответы.

Критерии оценки решения

Схема у судейства была такая: сложить баллы по всем критериям, разделить на их количество и умножить на score.

Критерии следующие:

  • Запускаемость кода;

  • Обоснованность выбранного метода (описание подходов к решению,их обоснование и релевантность задаче);

  • Точность работы алгоритма (возможность оценить формальной метрикой с обоснованием выбора);

  • Адаптивность/Масштабируемость;

  • Отсутствие в решении импортного ПО и библиотек, кроме свободно распространяемого с обоснованием выбора;

  • Наличие интеграционных интерфейсов, в первую очередь интерфейсов загрузки данных.

Мы постарались упомянуть выполнение всех критериев. Что-то явно записали в презентации, что-то проговорили вслух.

Какие-то критерии, по ощущениям, ставили всем автоматически (наличие интерфейсов в итоге никого не волновало, это подтвердили и эксперты). Полезно допросить экспертов по спорным пунктам, чтобы понимать, на что они будут обращать внимание, а на что не надо тратить силы команды.

Итоги

Мы заняли седьмое место из пятнадцати, чему немало огорчились. К слову о командной работе, победителями кейса стали команды, участвовавшие в хакатонах в таком составе в далеко не в первый раз. Причём вполне заслуженно - слушать их презентации было увлекательно, особенно часть про работу с данными (в которой я хоть что-то понимала, в отличие от обучения моделей).

Верхушка лидерборда. Справа score.
Верхушка лидерборда. Справа score.

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

Обратная связь
Обратная связь

Для меня было шоком то, насколько несовершенным оказалось выступление нашей команды. Мы работали без устали круглосуточно, но всё равно упустили много важных вещей. Ценный урок на будущее, особенно тем из нас, кто ещё будет участвовать в хакатонах.

Я осталась довольна мероприятием. Для команды, собравшейся в первый раз, мы справились с задачей весьма недурно. Мне удавалось понимать большую часть терминов, но всё, что касалось моделей, осталось в голове белом шумом. С кодом я помочь ничем не смогла.

Из успехов я сделала значительный вклад в дизайн презентации, соорудила лого, отлично пообщалась со своей командой и посмотрела-таки на data science в действии. Планирую поучаствовать ещё, но после того, как закончу пару курсов по pandas и обучению моделей.

Организация хакатона: плюсы и минусы

Ставлю 8/10.

Плюсы

По части организации площадки и тайминга почти идеально.

Все события соответствовали расписанию, личный кабинет работал исправно, все косяки оперативно исправлялись.

В доступности были душевые, тренажёрный зал, массажные кресла, Xbox. Покодить можно было буквально везде: в sleep-зоне, коворкинге, удобнейших переговорках - комнатах для совещаний (в некоторых из них проходили встречи реальных работников ВК).

Кормили потрясающе. Три раза в день в формате шведского стола с горячими и полезными блюдами. Единственное, приёмы пищи иногда накладывались по времени с чек-пойнтами и иногда мы не успевали вовремя прийти в столовку. Но с голоду умереть было очень сложно, учитывая, что на каждом шагу стояли кофе-пойнты с печенюшками и жидкостями всех возможных видов + зона с фруктами. Более того, там нашлись пачки попкорна и микроволновка, чем мы не преминули воспользоваться.

Одно из многочисленных мест для покушать
Слева виднеется массажное кресло
Одно из многочисленных мест для покушать Слева виднеется массажное кресло

Минусы

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

Ещё хотелось бы иметь возможность посмотреть какие-то вводные лекции для новичков перед самим хакатоном. Это здорово бы помогло сделать решения качественнее, а участников - увереннее в своих знаниях (а ведь новичков было немало).

Ну и по поводу sleep-зоны, конечно, очень на любителя. Мешки милые, не спорю, но спать в них - задача со звёздочкой. В идеале стоило потратиться на спальные мешки или любые другие варианты с твердой горизонтальной поверхностью.

Выбирайте, где полежать
Выбирайте, где полежать

Что с собой приносить?

Я притащила на хакатон буквально всё, что нужно для выживания, и едва тащила рюкзак. ВК решили меня "обрадовать" и в качестве стаффа даровало всем участникам тапки, маску для сна, беруши, термос и записную книжку. Приятно, но неожиданно. Считаю непростительным отсутствие футболок, но тапками пользуюсь до сих-пор.

Не думаю, что каждый очный хакатон дарит участникам набор для выживания, поэтому советую держать в голове такой список:

  1. Ноутбук (!!!);

  2. Все зарядки и повербанки;

  3. Необходимые документы для регистрации;

  4. Лекарства (от простуды, головных болей и прочих болячек);

  5. Бумага и ручка (мы часто делали заметки на бумаге);

  6. Зубная щётка и паста;

  7. Плед, чтобы не мёрзнуть во сне (если вы готовы тащить спальный мешок, то не смею вас останавливать);

  8. Термос (если кофе-пойнтов нет на месте проведения);

  9. Тапки/кроссовки (в уличных кроссовках тоже можно выжить, но в зимних сапогах - это уже какой-то хардкор).

Много мерча
Много мерча

Спать или не спать?

Первую ночь лучше спать, потому что на вторую придётся основная нагрузка для всей команды.

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

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

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

Зачем новичку идти на хакатон?

Пообщаться с другими разработчиками

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

Набраться опыта

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

Новичкам, которые не владеют основами, следующие рекомендации.

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

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

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

И ещё несколько причин

  • Поесть на халяву;

  • Заставить себя заняться полезным делом;

  • Оценить и прокачать свои софт-навыки (работа в команде, лидерство, публичные выступления, коммуникации);

  • Заполучить стаф, которым не грех перед одногруппником похвастаться;

  • Победить, заработать деньги и добавить красивую строчку в резюме. А может даже приглянуться работодателю;

  • Не победить и написать в резюме про участие (сертификат участника выдаётся тоже).

О страхах

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

Но всё оказалось намного лучше. Неожиданной вещью оказалось следующее:

Другие люди понятия не имеют, кто вы и на что вы способны.

Главное на хакатоне - учиться. Не умеешь? Гугли, спрашивай и сразу же применяй на практике. В команде не бывает лишних рук - проблем и задач всегда предостаточно. Исследуй, чем ты можешь быть полезен команде, ищи свои сильные стороны. Не стыдно не знать, стыдно не учиться!

Советы

Советы, которые здорово помогли бы мне перед хакатоном:

  • Распределите роли в команде до хакатона;

  • Если кто-то не вывозит свою роль, перераспределите обязанности. Эффективность превыше всего;

  • Задавайте вопросы техническим экспертам, уточняйте каждую непонятность в постановке задачи и датасетах;

  • Выясните у экспертов формальные критерии оценивания и допросите их, какие критерии действительно важны, а какие не стоят вашего внимания;

  • Внимательно читайте правила, дедлайны, критерии оценивания и выполняйте их;

  • Отрепетируйте презентацию пять-десять раз, попросите экспертов помочь вам улучшить её. Презентация - это ВАЖНО;

  • Уделите достаточно времени исследованию фич и их предобработке;

  • Спите хотя бы одну ночь;

  • Отдых необходим. Не стыдитесь уйти полежать, погулять, когда ваши сокомандники работают (только не забудьте вернуться);

  • Не забудьте погулять по площадке хакатона и исследовать её плюшки;

  • Не бойтесь никого - они сами вас боятся.

Комментарии (9)


  1. theos_deus
    14.10.2022 02:45
    +2

    Анна, привет! Хорошая статья, тема раскрыта :) Мне нравится ваш рациональный, системный подход к делу

    Частично не соглашусь с подходом:

    мы кинули в чат перечень своих навыков. Админ также размышлял, как распределить роли в команде

    Если кто-то не вывозит свою роль, перераспределите обязанности

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

    Желаю успехов на будущих хакатонах!


    1. Kyvakh Автор
      15.10.2022 22:54

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

      Так что да, в настоящей dream team должны быть специалисты для каждой роли. Иначе нагрузка с нескольких ролей может свалиться на плечи одному человеку, как в нашем случае, или придётся всей командой латать кадровые дыры.


  1. Sarjin
    14.10.2022 12:30
    +1

    интересно есть ли подобное в не программерских областях. в приборостроении или станкостроении


  1. ShadowwMaks
    14.10.2022 14:03
    +2

    Был на оффлайн площадке, правда решал кейс с белыми медведями. С удовольствием наблюдал за вашей защитой, молодцы!


    1. Kyvakh Автор
      15.10.2022 22:57

      О, какая удача увидеть брата по хакатону! Рада, что вам было интересно :)


  1. Ksyushik
    14.10.2022 14:05
    +1

    Первый блин комом.

    7 место из 15- это отличный вариант для первого хакатона. Дальше результат будет лучше.

    Категорически рекомендую пройти курсы по ML на Openedu, там есть курс от МФТИ, ИТМО, ВШЭ, они должны помочь привести в порядок знания.


    1. Kyvakh Автор
      15.10.2022 22:59

      Спасибо большое за рекомендации. Думаю, после степика такие фундаментальные курсы окажутся отличным подспорьем!


  1. vtal007
    15.10.2022 08:50

    Получается, что в командном участи по ML, достаточно чтобы в команде был 1-1,5 человека которые разбираются в этом самом ML. Ну еще человек, который может нарисовать презу (в ПП) и выступить. Итого 3. А все остальные просто обуза.


    1. Kyvakh Автор
      15.10.2022 23:14

      Я бы чуть-чуть изменила набор. В идеале четыре человека должны разбираться в ML, причём кто-то должен лучше шарить за модели, а кто-то за аналитику данных. Пятый - дизайнер. Выступать должен тот, кто хорошо понимает решение, ему потом ещё на каверзные вопросы жюри отвечать. Плюс, чтобы раскрыть тему на защите, несведующему человеку придётся не иначе как зубрить готовый текст (который сможет составить только тот, кто шарит в ML).

      Ну ещё, в зависимости от задачи, могут понадобиться фронтенд и бэкенд. В ML обычно или нужен только фронт (какой-то интерфейс для ввода данных и получения предсказания), или его не нужно вообще (only обученная модель).

      Мы потому и не заняли высокого места, что в нашей команде только полтора человека строили модели и двое умели в анализ данных. Кстати, требование по командам было 3-5 человек, можно было прийти и втроём. Но в победители попадали только пятёрки, в которых в ML шарили вообще все.