Раньше аналитиков звали разве что на хакатоны в составе команд. Но относительно недавно — наконец-то — стали появляться специализированные контесты и хакатоны для системных аналитиков. С 2021 года я ввязывалась в целых три: в первом заняла третье место, во втором седьмое, а в последнем — первое.

В статье расскажу, как этим летом прошел хакатон Sovcombank Challenge 2022. И порефлексирую, как не надо участвовать в соревнованиях.

Что это вообще за зверь такой

Sovcombank Challenge 2022 прошел в конце июля 2022, анонсировали его в июне.

Проходило все онлайн, участие было индивидуальным. Соревнование делилось на три части:

  1. отборочный этап (регистрация + входное тестирование)

  2. полуфинал (решение, собственно, основных задач)

  3. финал (выступление с презентацией перед жюри)

Завершился хакатон церемонией закрытия и награждением победителей — можно было участвовать онлайн или оффлайн.

В зависимости от скиллов можно было выбрать один из двух треков: для 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 такой отборочный тест с этим успешно справится. 

Основная задача

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

  1. Проработку и визуализацию бизнес-процессов по заданию

  2. Архитектуру приложения и базы данных, их обоснование

  3. Описание предлагаемого API

  4. Предложение по составу команды для реализации

  5. Анализ технических рисков

  6. Предложения по дальнейшему развитию функционала

Для меня задача была интересной и челленджевой — до этого я решала разные ее части,  но в основном по отдельности. А тут прям как детеныш 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 часов, не будь я аналитиком-идеалистом. Эта черта иногда мешает мне и в работе, и в жизни, а не только на хакатоне.

Да, за это время я успела подготовить очень много всего:

  1. Подробные UML-диаграммы бизнес-процессов

  2. Текстовое описание структуры БД с обоснованием необходимости каждой таблицы

  3. ER-диаграмма структуры БД, с помощью MySQL Workbench

  4. Сам файлик с примером БД в MySQL Workbench (ну вдруг жюри захочет потыкаться)

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

  6. Схема архитектуры сервиса, с помощью draw.io

  7. Спецификация методов API со всеми входными и выходными параметрами, логикой работы методов, возвращаемыми ошибками и прочим

  8. Файл Excel (с формулами) с расчетом загрузки специалистов разных профилей для реализации сервиса

  9. Текстовое пояснение-обоснование состава команды со ссылкой на файл Excel

  10. Верхнеуровневый анализ технических рисков

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

Все это в совокупности — на 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. Такие мероприятия стоит рассматривать как возможность саморазвития, участия в нестандартных задачах с необычными решениями. А вот ставить самоцелью выигрыш любой ценой — так себе подход.

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

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