«Вездекод»: как перенести хакатон в онлайн и не облажаться
2020-й не пощадил большинство офлайн-мероприятий — в том числе традиционный VK Hackathon. Раньше мы проводили его в Эрмитаже и Манеже, а в этом году — в паблике ВКонтакте. Рассказываем, как придумали марафон «Вездекод» специально для онлайн-формата, собрали больше участников, чем ожидали, набили несколько шишек и получили отличную коллекцию мемов.
В марте мы всей командой ушли в добровольную самоизоляцию — и уже тогда поняли, что осенний VK Hackathon в его привычном формате под угрозой.
Наш хакатон — один из крупнейших в России: его призовой фонд — 2 миллиона рублей. Это флагманское мероприятие ВКонтакте, которое ждут каждый год. В 2019-м VK Hackathon прошёл в Манеже — историческом здании в центре Санкт-Петербурга, где проводятся крупнейшие международные форумы и выставки. В соревновании участвовали 600 человек из 150 команд — как независимые разработчики, так и сотрудники крупных IT-компаний: Яндекса, Сбербанка, Mail.ru, OZON, JetBrains, Альфа-Банка и других.
Мы могли отложить хакатон на следующий год, но не хотели оставлять наших участников без соревнования в 2020-м. Или перенести его в онлайн, не меняя формат и название, — так сделали многие коллеги. Но это был бы уже не VK Hackathon — его фишка именно в атмосфере непрерывного командного кодинга в центре Петербурга. Поэтому мы решили оставить офлайн-мероприятие до лучших времён и придумали концепцию нового.
Офлайна не будет. Что делать?
Мы начали с того, что разложили составляющие классического хакатона на части. Если грубо упростить, получалось, что на мероприятии участники команды работают практически по очереди: сначала дизайнер рисует первые макеты, потом мобильные или веб-разработчики создают техническую часть продукта, которую в итоге защищают на питчинге.
Мы сформулировали идею: запустить микросоревнования по разным направлениям и таким образом провести многоступенчатый отбор команд для финала. За основу взяли схему «дизайн — мобильное приложение — веб» и придумали три кейса, которые командам предстояло решить за две недели. К этим заданиям щедро добавили задачек для разогрева: по тестированию, а также поиску и фиксу уязвимостей в VK Mini Apps.
Так появилась концепция марафона кодинга и родился «Вездекод».
Вездекод 1.0
«Вездекод» — это двухнедельный марафон, где можно было участвовать в одиночку или командой до четырёх человек. Соревнование проходило в закрытом сообществе ВКонтакте — туда ребята попадали после регистрации. В группе публиковались задания — тем, кто верно выполнял их, начислялись баллы. По их сумме команды занимали строчки в общем рейтинге. Обладатели первых трёх мест в итоговой турнирной таблице стали победителями марафона. А ещё баллы пригодились участникам во внутреннем магазине «Вездекода»: там можно было купить стикеры, значки, мягкие игрушки и другой мерч VK, а также важные нематериальные бонусы: например, ревью резюме с нашей HR-командой.
Одна из главных фишек мероприятия в том, что каждый день в 12:00 по Москве мы выходили в прямой эфир: объясняли основное задание и отвечали на вопросы участников. На этих встречах мы общались с ребятами лицом к лицу — и это помогло сохранить тесную связь с командами. Получился формат хакатона и реалити-шоу в одном флаконе.
Мы сделали два чата от имени сообщества «Вездекод»:
- «Оргвопросы» — здесь участники уточняли задания, давали обратную связь и спрашивали: «А ГДЕ БАЛЛЫ?»;
- флудилку — чтобы все общались на любые темы.
Чаты не умолкали 24/7: мы постоянно отвечали на вопросы, помогали понять задания и принимали обратную связь. Это был совершенно новый формат — и для нас, и для участников. Так что мы старались откликаться на комментарии ребят и шли им навстречу: докручивали задания, меняли их очерёдность или критерии оценки результатов, если понимали, что что-то получилось не совсем логично.
Вся важная информация, рейтинг, итоги дополнительных заданий публиковались не только в закрытом сообществе, но и в специальном канале «Вездекода».
По результатам марафона каждый участник команд, вошедших в топ-5, получил ценный приз — технику Apple. Все награды, включая мерч, мы отправили ребятам в течение двух недель после финала.
Участники
Мы традиционно даём участникам свободу решать, сколько человек будет в их команде. Обозначаем только верхнюю границу — четверо. На офлайн-хакатоне можно было соревноваться и вдвоём, и втроём, а на «Вездекоде» — даже соло. Но выигрышной всё же была стратегия команд, где объединились несколько специалистов разных направлений. Как и в классическом хакатоне, каждый должен был играть свою роль: отвечать за дизайн, веб или мобильную разработку. (В середине «Вездекода» мы поняли, что эта схема не сработала: ребята штурмовали задачи вне зависимости от специализации.)
Попробовать силы в марафоне могли все желающие, кому уже исполнилось 14 лет. Для регистрации участников мы разработали простое мини-приложение. Оно позволяло быстро выгружать обновлённую базу — ведь к «Вездекоду» можно было присоединиться в любой момент. Мы сделали регистрацию максимально свободной, поэтому собрали намного больше участников, чем ожидали. Планировали, что их будет около тысячи, а в итоге приняли на марафоне 1 400 команд (!) — это почти 3 000 участников.
Задания и их оценка
Как в условиях полного онлайна грамотно оценить разнообразные проекты? И получится ли обеспечить равные условия участникам, если кто-то может работать над проектом целыми днями все две недели, а у других получается выделить на задачи только пару вечеров?
Мы придумали гибкую разветвлённую систему заданий. В её основе — три больших проекта разного уровня: простой, средний и сложный. Каждый из них включал задачи по категориям: дизайну, мобильной и веб-разработке. Так получилось 9 заданий. Затем мы добавили блоки тестирования — и задач стало 12. Они концептуально связаны друг с другом, но выполнять их можно было и по отдельности. Чем больше заданий делала команда — тем больше баллов зарабатывала. Если справлялась со всеми задачами по одному проекту, получался полноценный продукт: мини-апп или мобильное приложение с веб-версией. Мы распределили задания в случайном порядке, но внимательные участники догадывались, что им предстоит реализовывать через несколько дней.
Новые задания публиковались в закрытом паблике по одному в день — и выполнять их нужно было за 24 часа. Не все участники были заняты ежедневно — например, если мы выкладывали задачу на веб-разработку, дизайнеры могли отдыхать. Чтобы свободные ребята не скучали, мы предлагали им дополнительные задания: приглашали на внезапные бот-викторины и онлайн-соревнования по мотивам наших любимых активностей с конференций: Code in the Dark (это вёрстка вслепую) и Kitten Contest (версия «Своей игры» от VK).
В заданиях на разработку мобильной и веб-версии проектов мы предложили использовать дизайн, который придумали сами участники. У команд были разные по продуманности макеты —, но это не должно было повлиять на баллы за реализацию. Поэтому мы выбрали самый крепкий вариант дизайна и дали всем командам возможность работать с ним.
Здесь мы столкнулись с первой сложностью: даже тщательно проработанный участниками макет мог быть не полностью адаптирован под каждую из наших платформ — мобильный веб, Mini App, iOS и Android. Кроме того, участникам оказалось сложно применить их гайдлайны к готовому макету.
Вторая проблема была в том, что в более сложных заданиях, несмотря на хорошо описанные макеты, у ребят возникала масса вопросов к действиям отдельных кнопок и анимациям. Мы старались мотивировать участников проявлять фантазию и придумывать свои способы заполнить пробелы, при оценке начисляли дополнительные баллы за креативность.
Но главный челлендж онлайн-мероприятий без предварительного отбора — это непредсказуемый объём проверки заданий. Составляя первое расписание, мы думали, что сможем отсматривать все решения примерно за сутки. Участники ведь справляются с задачами за 24 часа! Как же мы ошибались :) В одном из заданий по дизайну мы получили 164 решения, по мобильной разработке — 100: причём у некоторых участников это были и Android-, и iOS-реализации. В итоге мы едва успевали публиковать итоговые баллы за задание только через полтора дня после того, как заканчивали принимать от участников решения. Оставлять подробную обратную связь тоже не получалось — в итоге ребята обсуждали проекты друг друга в оргчате.
А ещё мы не учли огромную любовь участников «Вездекода» к ненативной разработке под мобильные платформы — и не предусмотрели это при формулировке заданий. Многие команды стали работать с React Native и Flutter — с их помощью можно легко обеспечить кросс-платформенность и даже переиспользовать код между мобильными и веб-заданиями. Но результаты не радовали нас при проверке заданий: решения не всегда собирались из исходников, основывались на не самых эффективных подходах. К сожалению, мы не сформулировали сразу список разрешённых технологий — поэтому участники были справедливо недовольны тем, что правила оценки решений менялись.
Мир, дружба, мемы
На второй неделе марафона в чате-флудилке начали появляться мемы от участников. Картинки были суперсмешными, так что мы решили устроить батл и начислять авторам самых метких шуток дополнительные баллы.
Финал «Вездекода». Питчинг вымышленных проектов
В рецепте идеального хакатона есть несколько обязательных ингредиентов: клёвая команда, оригинальная задумка, качественная реализация и взрывная презентация. В финале «Вездекода» мы взяли одну из составляющих на себя: предложили двадцати командам-лидерам очень необычные идеи для проектов и пригласили защитить их на питчинге в прямом эфире.
Чтобы было веселее, сделали приложение — генератор идей. Он в случайном порядке собирает концепцию проекта из фрагментов, отвечающих на вопросы «какой?», «что?», «для чего?» и «для кого?». Так что команде мог достаться «Культурный агрегатор для удалённой работы диснеевских принцесс» или «Сезонный навигатор для саморазвития молодых родителей». Генератор идей работает и сейчас — загляните, может, он предложит вам проект, который захочется реализовать ;)
Накануне финала мы распределили вымышленные проекты между командами из топа рейтинга и составили расписание защит. Чтобы приблизить атмосферу питчинга к реальным условиям, запланировали прямую трансляцию презентаций в сообществе VK Tech. В магазине «Вездекода» ребята могли за баллы продлить дедлайн на один час и записаться на онлайн-консультацию со специалистами из студии коммуникаций BEsmart. В итоге те команды, которые заказали прогон выступления с тренерами, и заняли призовые места.
Многие участники блестяще справились с защитой немыслимых проектов от нашего генератора идей — это был, думаем, уникальный опыт :) Некоторые даже успели сделать работающий MVP. Все защиты проектов мы опубликовали в сообществе VK Tech — их можно посмотреть.
Какие выводы мы сделали?
- Позиционирование. Слово «хакатон» сыграло против нас, ведь участники ждали привычного состязания в этом формате, а мы сделали нечто иное. Хотя «Вездекод» был как раз марафоном кодинга — по смыслу это очень близко к изначальному значению термина «хакатон».
- Количество участников. Не ожидали такого наплыва желающих. Всего за время «Вездекода» зарегистрировались 1 400 команд, то есть почти 3 000 человек. Активно соревновались 647 команд — это 1 749 участников. В общей сложности мы проверили 27 заданий, начислили 59 106 баллов и отправили 1 000 заказов из магазина.
- Уровень команд. Зарегистрироваться на «Вездекод» мог любой человек старше 14 лет. Мы не проводили отбор по идеям и специализации участников — поэтому по сравнению с классическим хакатоном порог входа ощутимо понизился. С одной стороны, это плюс — попробовать силы смогли совсем юные разработчики, мы научили многих работать с Figma и решать продуктовые задачки. Но с другой — получили от участников шквал базовых околотехнических вопросов, на которые отвечали почти круглосуточно.
- Мало направлений. В формате онлайн-марафона мы решили переложить саму концепцию взаимодействия участников на хакатоне — последовательное выполнение разных задач. Так в «Вездекоде» появились направления для заданий и их очерёдность. Но мы обожглись о полярный уровень участников. Одни, быстро разгадав логику, были заранее готовы к следующим задачам, консультировались с дизайнером и помогали друг другу на каждом этапе. А менее опытные ждали от нас чёткого ТЗ и расстраивались, что задание снова не на код (эмоциями по этому поводу делились под хештегом #агдекод). В будущем мы попробуем разнообразить специфику заданий. А ещё на берегу обозначим стек технологий: не забудем разобрать скользкие кейсы вроде мобильной разработки на Flutter. И придумаем, как прикрутить автопроверку, чтобы разгрузить жюри и авторов заданий.
В заключении статьи оставим напутствие всем, кто собирается делать хакатон или подобное мероприятие в онлайне.
- Подумайте о трудозатратах и команде. Подготовьтесь к тому, что сил и времени на онлайн уйдёт даже больше, чем на офлайн. Мы это прочувствовали в многократном объёме: «Вездекод» стал марафоном не только для участников, но и для нас :) На нашем событии с командами работали четыре организатора, и ещё около 20 человек были задействованы в составлении и проверке заданий.
- Уделите внимание деталям и максимально разжёвывайте задания. То, что на площадке можно проговорить голосом со сцены, на онлайн-соревновании быстро обрастает версиями во флудилках и провоцирует лавину нерелевантных вопросов.
- Заботьтесь об участниках. Придумайте механики, чтобы каждая команда могла себя проявить и получить хотя бы небольшой приз. В онлайне гораздо меньше ощущается взаимодействие с организаторами, поэтому важно оставить о мероприятии что-то на память. Один из наших участников при заказе из магазина «Вездекода» попросил организаторов оставить на мерче автографы — и так у нас родилась идея «рукописных» открыток для всех.
- Не бойтесь ошибаться. Фиксируйте обратную связь и возвращайтесь на арену онлайн-ивентов!