Как мы внезапно выиграли онлайн-хакатон

Именно так я и кодю, вы угадали
Именно так я и кодю, вы угадали

Пару недель назад мне в ленту прилетело сообщение о том, что ВКонтакте совместно с BlueSweater Studio запускают небольшой онлайн-хакатон «Домашний разраб».

Ну как, небольшой. Призовые по меркам хакатонов приличные: 100к рублей на команду за победу в категории. Да, когда мы выиграли VK Hack 2018, а позже взяли финал «Цифрового Прорыва», то получили 500 и 485 тысяч соответственно («Цифровой» в отличие от всех до единого остальных хакатонов не выплатил налоги за свой счёт). Но в первом случае было особое место — Гран-При, а во втором по сути два хакатона в одном, потому что призом за региональный этап было участие в финале. Обычно же сумма в районе ста тысяч на команду — это фонд хакатона выше среднего.

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

Подготовка

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

Ниже ещё простыня на 5 экранов
Ниже ещё простыня на 5 экранов

Нужно было сделать мини-приложение ВКонтакте на тему «Самостоятельность».

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

В итоге я взял на себя роль фулстека и стал писать код, бэк и фронт. Андрей делал всё остальное: сценарии, интерфейс, ассеты и графику, стикеры.

Проект

Как вы уже поняли, мы делали календарь по методу закрепления привычек "Dont Break The Chain" авторства Джерри Сейнфилда. Идея этой системы в том, что не обязательно уделять какому-то занятию много времени, главное делать это регулярно и никогда не прерывать цепочку. Хоть 10 минут в день, уже считается.

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

Будем перерисовывать силами профессионального художника
Будем перерисовывать силами профессионального художника

Технически это Vuejs-приложение с бэкендом на Nodejs и базой в Firebase. Я не люблю нетипизированные языки, но на фронте нет выбора, а на бэке нужно было очень быстро.

А идейно и визуально оформили всё в стиле древнего Китая: каллиграфия, золото и красный цвет, дерево. Потому что спокойное, но непрерывное движение — это как раз часть скорее восточной идеологии, чем привычной нам западной.

Разработка

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

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

Из-за неправильной оценки времени на задачи приложение на настоящий момент сырое (дорабатывать его нельзя до конца конкурса, который ещё идёт). Вы можете попробовать, но, скорее всего, ничего не поймёте. Хотя MVP вполне получился — пользоваться по назначению можно, и это работает.

Шаблоны стикеров для Историй
Шаблоны стикеров для Историй

В ключевые моменты можно опубликовать Историю со специальным стикером, на котором будет, например, "30 дней непрерывно хожу в спортзал!" или "2 недели непрерывно играю на гитаре!" и рассказать друзьям о своём прогрессе, может даже показать. Это элемент социализации, который добавляет гордости за свои достижения и даёт дополнительную мотивацию не прекращать.

Сдача

Дедлайн был во вторник в 8 утра. Кстати, 8 утра — странное время дедлайна, видимо, подразумевается, что разработчики кодят всю ночь. Я так и делал. В тот день я не спал совсем, потому что ничего не успевал из-за неправильной оценки сроков задач (Андрей завершил свою работу накануне вечером). В итоге я не успел обучение, нормальные окна с подтверждениями, меню настроек и кучу других мелочей.

Благо, в условия хакатона входила необходимость вместе с приложением сдать презентацию про него: рассказать идею, объяснить, как пользоваться. И это очень хорошо. Потому что на последнем конкурсе VK Mini Apps в моё приложение зашли на 15 секунд, не увидев и трети важных мелочей, которые не бросаются в глаза при беглом осмотре.

Впрочем, презентацию я тоже сделать не успел, но за 5 минут до дедлайна я успел загрузить на Яндекс.Диск скринкаст с моими голосовыми комментариями. И даже он получился с косяком — когда я рассказываю про стикеры в Историях, на видео нет звука, потому что оказалось, что телефон останавливает запись звука при открытии камеры.

Но по правилам нельзя было перезаливать в том числе презентацию, так что я решил не исправлять, чтобы было честнее.

Победа

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

Дисквалификация за допинг!
Дисквалификация за допинг!

То ли период удался не слишком удачный для других, то ли нам повезло, то ли я не зря уделил много внимания каким-то определённым вещам. В теории наше приложение должно было стабильно работать на последних версиях iOS и Android, и, скорее всего, так и было (хотя в iOS 12 в Safari ещё есть супер тупой баг с относительными единицами CSS, но Apple исправили его в iOS 13 — вот зачем нужно обновляться).

Днём позже объявили победителей: это наша команда под названием

'); DROP TABLE Teams;--

Отзыв о хакатоне

Общее впечатление

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

Туц-туц

Из трудностей я столкнулся только с одной: пару раз мне захотелось прочитать подробные условия конкурса и описание всех трёх этапов, я зашёл в сообщество, но никакой подшивки важных статей на тот момент там не было, и даже выискивание поста в ленте не привело к результату. Была инфа про идущий этап, но не про будущие. В общем, материалы размещались разрозненно, часть вещей были не очевидны (например, что регистрация отдельная на каждый этап).

Задания

Три этапа, три задания: саморазвитие, самостоятельность, социализация. На мой личный взгляд, все три категории несколько банальны: приложений на эти темы миллионы, и простой хакатонный проект, сделанный парой человек за 5 вечеров, не сможет конкурировать с гигантами из мобильных сторов, которые оттачиваются годами на миллионной аудитории. Ни по качеству, ни по смыслу (просто потому что придумать по-настоящему новую идею в этих категориях почти невозможно).

По моему опыту заядлого хакатонщика и участника конкурсов могу сказать, что 99% хакатонных проектов потом никуда не идут. Они слишком сырые, а у разработчиков (особенно у проигравших) нет ресурсов, мотивации и знаний для превращения проекта в продукт. Так что, если конкурс создан, чтобы наполнить каталог VK Mini Apps полезными приложениями, то это не сработает.

В маркете минимум 4 приложения по нашей теме с миллионом установок, а мелочёвки и того больше
В маркете минимум 4 приложения по нашей теме с миллионом установок, а мелочёвки и того больше

Например, я так и не придумал как превратить во что-то полезное моё приложение «Фото на карте» (ныне выключено из-за отсутствия обратной совместимости со стороны ВК), за которое я выиграл полтора года назад внушительную сумму 300 000 рублей. А вот действительно нужное приложение не получило должного внимания ни от администрации, ни от пользователей, и у меня упала мотивация им заниматься. И, в целом, помню всего пару конкурсных или хакатонных проектов, которые куда-то пошли.

Так что же делать?

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

Например:

  • Приложение с одной кнопкой
  • Приложение без кнопок
  • Приложение, основная функция которого — работа с фонариком
  • Приложение, чья суть принципиально меняется при переключении на тёмную тему
  • Приложение, в процессе использования которого нужно переворачивать телефон
  • Приложение, чья работа основана на записи звуков, но не голоса
  • Приложение, главный экран которого должен быть круглым
  • и так далее

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

Итог

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

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

448 views·7 shares