Впервые принимал участие в онлайн-хакатоне. Казалось, что это будет не так ярко и интересно, как живой хакатон. От части, так оно и есть, живьем ощущения ярче.
Ключевые мысли:
- Коней на переправе не меняют. Обсуждать подходы к реализации приложения лучше заранее, до вступления в команду.
- Знай с кем ты в команде. До вступления в команду обязательно проверьте бэкграунд лидера и других участников через все возможные источники (соц. сети, поисковики, инстаграм и т.п.).
- Надейся на лучшее, но будь готов к худшему. Если вы думаете, что все просто заняты разработкой и поэтому молчат, будьте готовы к худшему.
- Лучше один раз увидеть. Если кто-то говорит, что что-то сделал – не верьте на слово. Пригласите в конференцию, попросите расшарить экран и показать, как-что работает.
- Не сдавайтесь. Если вы понимаете, что команда Вас бросила, не сдавайтесь, доработайте свой блок, защитите его на презентации и предложите заказчику оценивать только вашу часть, как самостоятельное решение. Вряд ли вы выиграете, но это представит Вас компетентным и ответственным участником.
Выбор команды
Найти команду было просто. Система поиска позволяла разместить информацию о себе, а команды могли разместить информацию о том, кто им нужен.
Также был чат в Телеграм с тегами для поиска людей и команды. В итоге у меня было с десяток приглашений, оставалось только выбрать.
Из всех предложений команд больше мне понравилось предложение OffTheCouch, команда планировала создать приложение для клиник, упрощающее сбор анамнеза, чтобы врач не тратил время на запись симптомов пациента, а получал их от пациента через приложение. Вступил в команду за пару дней до окончания регистрации, но в ходе обсуждения идеи приложения и путей реализации, у меня сложилось стойкое ощущение, что концепция нежизнеспособна. За день до окончания регистрации, решил поменять команду, ведь заниматься тем, во что ты не веришь то еще испытание, время для замены еще было.
Принял приглашение от команды COSMOTEQ, которая разрабатывала робокассу Robokassir.ru и собиралась работать над решением задачи по созданию голосового управления для кассы самообслуживания.
Лидер писал, что у них много наработок и это внушало оптимизм. На митинге с командой сложилась ощущение полного взаимопонимания. В команде было 7 человек, она одновременно участвовала в двух треках, по созданию чат-бота и по созданию голосового управления кассы. Предполагалось, что над голосовой кассой будут работать 3 человека - разработчик, аналитик и я - дизайнер. Я просил лидера найти нам фронтендера, потому что понимал, что совмещать роль дизайнера и фронтендре в условиях сжатых сроков - это как гоняться за двумя зайцами. Лидер ответил, что поищет, и я не волновался, потому что понимал что ребята опытные, ведь команда участвовала и побеждала в других хакатонах, и они смогут найти фронтендера, если это понадобится и он будет вне команды или кто-то из второй части команды сможет помочь. В итоге, он этого не сделал.
Перед стартом
Еще до объявления результатов отбора мы начали обсуждать идеи реализации:
- · Какими инструментами захватывать голос (остановились на Recorder.js), аналитик прорабатывал дерево возможных команд.
- В процессе поиска визуальных решений заказчика трека наткнулся на персонажа Пятерочки
- Сразу появилась идея реализовать управление через него, чтобы персонаж выступил в роли кассира. Один из разработчиков предложил поработать с приложением Rive.app. Оно позволяет делать адаптивную управляемую анимацию (например так). Все два дня до старта я с энтузиазмом осваивал новый инструмент, представляя как наш персонаж на кассе будет реагировать движениями при выполнении голосовых команд интерфейса. Но, когда я уже отрисовал персонажа в Rive, вдруг выяснилось, что разработчик сам его не знает и изучить не успеет.
- Разработчики пытались развернуть сервер, но судя по чату, что-то не выходило.
Так незаметно подошел день начала хакатона.
Первый день
Была небольшая активность в чате с командой. На первом чекпоинте на видеосвязь с организаторами вышел я и программист, он рассказал, что мы разработали основы архитектуры проекта, основываясь на библиотеке распознавания речи Vosk, а я отчитался что мы прорабатываем концепт интерфейса. Показывать пока было нечего. Я так и не понял, как команда из голоса будет переходить в команду для кассы, о чем спросил в командном чате ближе к 18.00, но никто не ответил, хотя к этому моменту в чате уже не было обсуждений и пропустить мои сообщения было бы невозможно. Предположив, что ребята заняты разработкой и им не до моих вопросов я продолжил работать над прототипом в Фигме, а потом начал делать фронт, потому что лидер не нашел фронтендера и не помог, как обещал.
Второй день (последний)
Я продолжил работу над прототипом, делал анимацию персонажа в Animate и презентацию прототипа, потому что аналитик, взявшийся готовить презентацию, не выходил на связь. Уже сутки в общем чате команды никто не отвечал на накопившиеся вопросы и не было признаков жизни, я думал, что ребята просто в запаре и им некогда. К вечеру я начал паниковать, думал, что ребята слегли с COVID, ну или просто что-то случилось. На мои тревожные сообщения в чате команды откликнулся один из участников и сказал, что ему сказали, что все нормально, и наш разработчик все сделал. Но показать работающую систему или код никто не смог. В конце дня подключился другой участник команды и объяснил, что «по коду успели только то, что успели, что все норм, что ребята очень старались и сделали все, что могли, что он в постоянном контакте с нашим разработчиком и что тот никуда не пропадал и сейчас главная задача - сделать хорошую презентацию, потому что мы потом ее будем использовать для того чтобы продать наше решение другим торговым сетям».
Мне так никто и не показал работающий код, который бы выполнял задачи нашего трека. К утру нужно было сдать работающий продукт и провести презентацию визуального и технического решения. В ночи вышел на связь наш программист. Договорились что он выложит код.
Третий день (защита)
В 9:00 по таймингу нужно было сдать решение. Но программист, обещавший код, так его и не прислал. У меня был прототип в Фигме и видеопрезентация этого прототипа, которую я записал ночью. И была надежда что программист в последний момент все-таки выйдет на связь. Пошли питчи команд, никого из моей команды в чате не было, я презентовал прототип, объяснив, что техническое решение мы показать не сможем, в виду отсутствия других участников команды. Когда выступала последняя команда, на связь вышел наш программист и мы в последний момент смогли показать свое техническое решение. У нас работал сервер и библиотека распознавания голоса. Задачей трека было чтобы голос конвертировался в команды для кассы и эта задача оставалась нерешенной. Не была проработана логика, не было архитектуры, не были решены и побочные задачи трека.
К 16:00 объявили победителей. Мы получили максимальный балл за презентациюи минимальный за техническое решение, которого по сути не было, и заняли девятое место в зачете трека из одиннадцати возможных.
Как так?
Мне стало интересно, почему внешне успешная команда, уже побеждавшая ранее в других хакатонах, просто забила на разработку технического решения.
Лидер нашей команды COSMOTEQ – Александр Андреев – ничего не ответил ни на мои личные сообщения, ни на вопросы в командном чате. Он позиционирует себя как предприниматель и политик. Пишет что его проекты Indigo.Study – Лидер среди агрегаторов иностранного обучения, COSMOTEQ – международная ИТ-компания из России, a CleanER – международная рекрутинговая платформа разнорабочих и сотрудников рабочих специальностей из России. Но на практике этот парень простой балабол и мелкий жулик, коих на просторах нашей страны несчетное количество.
Другие участники в общем чате также предпочли отмолчаться. Из всей команды только программист, который в последний момент пришел на питч, рассказал свою историю: его позвали в команду и обещали помочь если что-то пойдет не так, но в итоге ему никто не помог, наоборот, ему ставили задачи которые он не мог выполнить, а в последний день он приболел.
Надеюсь, мой опыт поможет Вам не попасть в аналогичные ситуации и отличить еще на этапе поиска такие недобросовестные команды.