Раньше аналитиков звали разве что на хакатоны в составе команд. Но относительно недавно — наконец-то — стали появляться специализированные контесты и хакатоны для системных аналитиков. С 2021 года я ввязывалась в целых три: в первом заняла третье место, во втором седьмое, а в последнем — первое.
В статье расскажу, как этим летом прошел хакатон Sovcombank Challenge 2022. И порефлексирую, как не надо участвовать в соревнованиях.
Что это вообще за зверь такой
Sovcombank Challenge 2022 прошел в конце июля 2022, анонсировали его в июне.
Проходило все онлайн, участие было индивидуальным. Соревнование делилось на три части:
отборочный этап (регистрация + входное тестирование)
полуфинал (решение, собственно, основных задач)
финал (выступление с презентацией перед жюри)
Завершился хакатон церемонией закрытия и награждением победителей — можно было участвовать онлайн или оффлайн.
В зависимости от скиллов можно было выбрать один из двух треков: для Junior/Middle или для Middle/Senior специалистов. В каждом были свои задания и в отборочной части, и в основной.
Я пошла на «старший» трек.
Немного о цифрах:
Зарегистрировался по двум трекам в сумме 961 человек.
Отборочное тестирование проходил 461 человек. Оценивали по количеству правильных ответов и затраченному времени.
К полуфиналу допустили по 80 человек в каждом треке.
Решение сдали не все: 21 человек из трека Junior/Middle и 25 человек из трека Middle/Senior.
До финального выступления с презентацией допустили 7 человек Junior/Middle и 8 человек Middle/Senior
В каждом треке топ-3 получили мерч + денежку, топ-10 — только мерч.
Подробнее о призах и условиях можно узнать на сайте соревнования.
Отборочное тестирование
Входной тест состоял из 23 вопросов. Минимальный порог для «успешного прохождения» отсутствовал. Все определялось попаданием в тот самый топ-80. Если все решили на 16 из 23, то ты с 16 баллами будешь в топе. А если все получат по 23, то с 16 баллами топ уже под вопросом.
Судя по заданиям, в отборочном туре проверяли, что ты в целом представляешь, куда пришел. С их помощью сложно доказать сеньорность сеньоров. Вопросы были слишком «определительными» — вида «Что такое X?» или «Чем отличается X от Y?». Кажется, что для аналитиков нужно что-то более кейсовое, например, «Есть ситуация Z, что лучше использовать для….».
Критикуешь — предлагай. Но сколько бы я не пыталась придумать грамотное тестирование, идеального варианта мне в голову не пришло. Мы с коллегами даже не смогли прийти к единому мнению, нужно ли вообще подобное входное тестирование на хакатоне. Если нужно, то его основная задача — отсеять совсем не знакомых с предметной областью людей. С учетом погрешности на Google такой отборочный тест с этим успешно справится.
Основная задача
Задание заключалось в создании приложения для работы с кобрендинговой картой в рамках интеграции с игровым партнером. Вот что нужно было сделать:
Проработку и визуализацию бизнес-процессов по заданию
Архитектуру приложения и базы данных, их обоснование
Описание предлагаемого API
Предложение по составу команды для реализации
Анализ технических рисков
Предложения по дальнейшему развитию функционала
Для меня задача была интересной и челленджевой — до этого я решала разные ее части, но в основном по отдельности. А тут прям как детеныш Solution Architect, все сам =)
Пункт 5, кстати, не пробовала до этого ни разу, так что…
Что ж, про суть задания поговорили, перейдем ко всем собранным мной кочкам и болячкам. Оглядываясь назад, я вижу, что могла достичь победы, затратив куда меньше усилий — и моральных, и физических.
Bad practice 1: читать не только лишь все доступные правила
Задачи хакатона мы решали на специальной платформе. Там были опубликованы правила в сжатом виде, а их полная версия доступна только на сайте. Конкретно мне это проблем не доставило, но некоторые участники из-за этого оказались ниже в турнирной таблице, чем ожидали.
Вот в чем дело: отсчет времени начинался, как только ты вошел в отборочный тест. Но сама платформа никак не сообщала, что время пошло. И в правилах на платформе этого не написали. Итоговое время было доступно только в лидерборде. Да, в подробных правилах на сайте это прописывалось, но, как говорится, кто же туда смотрел.
Поэтому кто-то оказался ниже в рейтинге, потому что зашел в тест, а к решению вернулся сильно позже. Я и сама решала тест 90+ часов, потому что открыла, пролистала, закрыла и оставила до ближайшего свободного часика вечером.
В итоге, на 80+ местах в треке для сеньоров оказались люди с одинаковыми баллами и разным временем решения.
Как избежать проблемы: найдите и изучите все правила, которые доступны на всех официальных каналах — чтобы избежать лишних разочарований.
Bad practice 2: начинать хакатонить навеселе
… а если планируете, то хоть блокнот и ручку с собой захватите.
Задачи полуфинала опубликовали в 19:00 пятницы, 22 июля. И для меня это был… вечер корпоратива.
Сижу я, значит, вокруг туса, музон, кальяны, выпивка активно идет корпоративное мероприятие, все веселятся, болтают, тусят, а я… А что я. А я читаю задание хакатона.
Да, я шла на это сознательно, заранее зная, что эти мероприятия совпадут. Но почему-то, банально взять блокнот до меня не дошло, видимо, внутренний аналитик таки иногда отдыхает.
Из того, на чем можно писать, вокруг только салфетки — и те черные. Из того, чем можно писать — только помада, которая, епрст, тоже черная! Печатать в заметках телефона мне не очень удобно, я старомодна. Пришлось начинать анализировать задачу в уме.
Результатом было потерянное время и немного гудящая голова, которой явно было сложно совмещать все происходящее. А любое потерянное время на хакатоне — это ой, как больно. Об этом ниже.
Как избежать проблемы: суровая правда: хотите хорошо похакатонить — выделите на это время. Откажитесь от мероприятия, либо уйдите с него пораньше, не пытайтесь начать прямо там. Так есть шанс меньше устать и сэкономить время на отдых.
Bad practice 3: надеяться, что время еще есть
Сбежав, как Золушка, с корпоратива в 21:00, я стала рисовать черновики бизнес-процессов, из которых можно вывести все остальное. К полуночи было примерное понимание, как приложение в целом будет выглядеть, и перечень вопросов к экспертам. Я со спокойной душой легла спать.
Созвонов с экспертами планировалось три: два — в субботу, один — в воскресенье, незадолго до дедлайна. Поэтому в субботу утром я подрасслабилась, решив продолжить работу, когда получу ответы от экспертов.
Никогда, нет, НИКОГДА, так не делайте. Лучше у вас останется время в конце перепроверить решение, чем вы будете марафонить как я.
После звонка я без перерыва решала задачу хакатона примерно с 16:00 субботы до 07:00 утра воскресенья. И все это время — без еды и сна (я не шучу, совсем без еды и сна). Это я встречаю рассвет в районе 5 утра, и пусть вас не обманывает моя довольная моська:
Затем я дала себе три часа поспать и с 10:00 утра стала готовить презентацию решения. В последние полчаса — сборка всего в кучку, перепроверка, отправка.
В совокупности на решение ушло около 20 часов. Распредели я время рациональнее, возможно, получилось бы обойтись без суровых марафонов в ночь. Отсыпалась я после такого несколько дней, в том числе на работе — огромное спасибо за понимание моим коллегам и менеджерам =)
К слову, на предыдущем хакатоне именно недостаток времени спустил меня на 7-е место — я просто не успела подготовить качественную спецификацию, не рассчитала время. Что ж, может быть, теперь я чему-то научусь (но это не точно).
Как избежать проблемы: используйте все разумное время, начиная со старта хакатона, даже если задача кажется простой.
P.S. На самом деле ожидание ответа экспертов не должно вас тормозить. Решение можно спроектировать с прикидкой на разные ответы, а можно — выбрать свое решение и его обосновать. Обычно правильного решения не существует. Поэтому главное — уметь доказать преимущество своего решения, даже если идея расходится с пониманием жюри.
Bad (may be not so bad) practice 4: быть безумным идеалистом
Наверное, самый спорный пункт, но все-таки напишу. В принципе, на решение можно было потратить и менее 20 часов, не будь я аналитиком-идеалистом. Эта черта иногда мешает мне и в работе, и в жизни, а не только на хакатоне.
Да, за это время я успела подготовить очень много всего:
Подробные UML-диаграммы бизнес-процессов
Текстовое описание структуры БД с обоснованием необходимости каждой таблицы
ER-диаграмма структуры БД, с помощью MySQL Workbench
Сам файлик с примером БД в MySQL Workbench (ну вдруг жюри захочет потыкаться)
Описание архитектуры сервиса словами с описанием назначения каждого сервиса
Схема архитектуры сервиса, с помощью draw.io
Спецификация методов API со всеми входными и выходными параметрами, логикой работы методов, возвращаемыми ошибками и прочим
Файл Excel (с формулами) с расчетом загрузки специалистов разных профилей для реализации сервиса
Текстовое пояснение-обоснование состава команды со ссылкой на файл Excel
Верхнеуровневый анализ технических рисков
Презентация с мемчиками и лулзами, кратко суммирующая все решение (в ней же были предложения по дальнейшему развитию)
Все это в совокупности — на 60 страниц рукописного текста + презентация, картинки и сопутствующие файлы. Для более полного понимания: все документы были отформатированы, ключевые мысли выделены, колонки в таблицах протонированы, чтобы глазу было проще ориентироваться. Да даже названия файлов шли четко по папкам с порядковым номером!
Мое решение выиграло, но я не уверена, что стремление к идеалу составило в этом выигрыше значительный процент. Да и вряд ли у жюри было время осознать весь предоставленный мной массив информации.
Поэтому у меня есть подозрение, что можно было не работать на износ ради идеального и подробного оформления. Хотя, может я ошибаюсь, и именно это меня и выделило :D
Ну и учитывая, сколько времени мне стоило восстановиться после такого марафона (в 25 лет ночь не спать — это вам не шутки!), я думаю, что немного перестаралась.
Как избежать проблемы: не факт, что надо этого избегать, но можно попробовать остановиться на том, что в решении все читаемо и понятно, а не вылизано до последнего пикселя.
Bad practice 5: пытаться принять во внимание все происходящее
В ходе работы над задачей участники активно присылали вопросы в Telegram-чат хакатона, и сначала я пыталась уследить за всем происходящим. Но это не только отвлекало, но и добавляло паники, что не учту какой-то ответ из чата, и мое решение будет «неправильным». Ничего полезного это не принесло: как только я отключила уведомления, резко стало легче и появилось дополнительное время.
Повторю мысль из п.3: правильного решения не существует, главное — уметь презентовать преимущества того, что вы создали. Ну и, конечно, понимать, что ж вы такое создали, чем оно выгодно отличается, какие есть минусы и чем их можно парировать.
Как избежать проблемы: отключить все оповещения в чатах соревнования и обращать внимание только на официальные заявления о старте очередной QA-сессии.
Bad practice 6: переживать, если не по всем пунктам задачи есть релевантный опыт
Как я и говорила, я никогда раньше не оценивала риски проекта. Поэтому сначала это задание ввело меня в ступор. Мне потребовалось время, чтобы собраться с силами и начать хоть что-то делать в этом направлении. В итоге по запросу типа «анализ технических рисков habr» я нашла понятную для себя методику оценки и примеры различных рисков. И создала из этого пару страниц анализа.
С другой стороны, иногда не так страшно что-то не выполнить. Конкретно в этом хакатоне все критерии оценки были разного «веса» — за одну хорошо выполненную часть полагалось больше баллов, чем за другую, тоже хорошо выполненную. Но какие из критериев ценнее, нам не сказали. Если бы я совсем не смогла разобраться в незнакомой теме, можно было переключиться на другие части задания — потому что если что-то неизвестно, всегда есть шанс, что это не самый важный пункт.
Как избежать проблемы: не бояться, если для решения задачи необходимо что-то, совершенно вам незнакомое — это, в первую очередь, стимул познать новое.
Bad practice 7: надеяться, что отвлекать никто не будет
У меня есть гипер-общительная кошка. Нет, она не ложится на клавиатуру, она делает хуже, как-то так:
Она ложится на руку, обязательно на ту, которая занята мышкой. И убирать ее бесполезно. Все бы ничего, но фитнес с мышкой и кошкой в 3 кг обычно комфорта не прибавляет.
Каким-то чудом именно в эту ночь моя сладкая пироженка котька решила не доставлять мне дискомфорта и неудобств. Но я по-прежнему считаю, что это было какое-то фантастическое везение. Да, в этот раз ничего плохого не произошло, но не продумать варианты на «худший» случай было очень самонадеянно.
Как избежать проблемы: уберите от себя всё и всех отвлекающих: животных, детей, партнеров, etc. Времени на хакатоне очень мало и надеяться, что именно сегодня вы магически будете вне фокуса внимания всех перечисленных — затея не слишком хорошая.
Bad practice 8: сдуться на финальной презентации
Если финал хакатона предполагает выступление перед жюри с презентацией, еще раз дотошно изучите все требования организаторов, особенно тайминг.
В нашем случае на рассказ о всей огромной задаче каждому было отведено 5 минут. И это надо учесть не только в речи, но и на слайдах, чтобы не переключать их со скоростью света.
Дополнительно советую несколько раз прогнать свое выступление и отследить тайминг, желательно вслух. Мне хватило трех раз, чтобы убрать лишнее и запомнить свою речь.
Финальная презентация — это тот ключевой момент, когда у вас есть шанс произвести впечатление на жюри и сгладить огрехи с предыдущих этапов. Мне в финале снизили оценку всего на 0.1 балла (вскрылся небольшой недочет в решении), хотя у следующих за мной были срезания в 10+ баллов от оценки до презентации.
Еще важный момент: если до презентации допускают не всех, а презентация сразу после оглашения результатов, все равно репетируйте речь — даже если есть шанс не пройти отбор.
Мне повезло, что сеньоров поставили не первыми на презентации — пока жюри думали, я экстренно отсыпалась. Но времени на отшлифовку могло и не остаться, а победа — ускользнуть на последнем шаге.
Как избежать проблемы: используйте все доступное время и делайте презентацию решения осознанно — ровно столько, сколько успеете показать, концентрируйтесь на самых ключевых моментах.
И небольшой совет (не получилось обернуть это в bad practice =) )
*Внимание! Субъективное мнение!*
На мой взгляд — и по моему опыту — в решении полезно использовать неожиданные подходы. Например, я предложила решение на основе монолита на фоне всеобщей любви к микро-сервисам. Не знаю, сыграло ли это большую роль в победе, но точно удивило составителя задачи — у меня был шанс пообщаться с ним после награждения. Ведь хакатон — как раз и место для нестандартных идей, которые могут вас выделить среди идентичных решений.
Вместо вывода
По моему опыту, самое главное на хакатоне — как и во многих рабочих задачах — это распределение времени. Особенно это важно, когда соревнование индивидуальное и рассчитывать можно только на себя.
Никакой хакатон и победа в нем не стоит сбитого жизненного ритма, когда тебе уже не 17. Такие мероприятия стоит рассматривать как возможность саморазвития, участия в нестандартных задачах с необычными решениями. А вот ставить самоцелью выигрыш любой ценой — так себе подход.
Мне хотелось создать качественное решение, за которое мне не стыдно. И мне это удалось. Но чаще классные решения находятся на свежую голову, а радоваться победе куда приятнее, когда ты не пытаешься заснуть, пока едешь в лифте. Так что рефлексия после хакатона породила эту статью и поводы на подумать.
Если вам будет интересно, в следующей статье могу подробнее разобрать то самое решение задачи по интеграции, которое жюри хакатона оценило выше всех =)