Статья на Хабре выпускника нашей кафедры, .NET разработчика в компании “Рексофт”
Доброго всем времени суток!
Меня зовут Александр Михалин — я .NET разработчик в компании “Рексофт”. За моей спиной 7 хакатонов, причем один в качестве члена жюри. Я не спал 8 ночей, выпил 52 чашки кофе, 15 банок редбулла, со мной в команде побывали 24 человека. Сегодня я хочу рассказать о хакатонах всё. Ну или почти всё.
В статье я хочу поделиться с вами своим опытом участия в хакатонах, а также дать наиболее ценные, на мой взгляд, советы, которые потенциально помогут увеличить ваши шансы на победу.
Моя история
Хакатоны для меня — это нечто особенное, с них начинался мой путь в IT, и я благодарен каждому человеку, который помог мне в этом деле: перекинулся со мной парой фраз за чашкой чая во время хакатона, или был членом моей команды. Вы все классные, серьезно. Никаких исключений!
На текущий момент я участвовал на 6 хакатонах в роли участника и 1 раз был в роли технического эксперта и члена жюри. Первые попытки оставляли желать лучшего, но из каждого мероприятия я старался извлечь пользу, опыт, ценные знакомства. Где-то мы всей командой дружно коммитили за 5 минут до конца, где-то по прошествии половины хакатона не имели представления, чего же мы, собственно, хотим написать. Где-то мы почти не спали. Но скучно не было никогда!
На последнем курсе бакалавриата я впервые услышал про такое мероприятие, как хакатоны. Зашел в группу ВКонтакте одного из таких ивентов. Понимая, что нужна команда, я списался с одним парнем из группы. Он так же, как и я, был без команды. Мы договорились участвовать вместе, а на самом хакатоне к нам присоединились еще две девушки, которые также искали команду. И вот 4 человека, в первый раз пришедшие на хакатон, организовали команду и начали свой увлекательный путь. Конечно, мы смутно представляли, что должно получиться в конце. На помощь приходили менторы — я никогда не упускал возможности проконсультироваться и пообщаться с более опытными людьми. Защитили проект. Ничего, конечно, не выиграли, но и не упали в грязь лицом. А главное — это было наше первое знакомство с хакатонами.
Далее уже немного изменился состав, и мы отправили покорять Москву (был довольно серьезный отбор по заявкам). Приезжаем очень рано, гуляем по столице, готовимся зажечь! Это был, пожалуй, первый наш хакатон всероссийского масштаба, куда съезжались люди со всей страны. Мы же все еще приехали больше за опытом, хотя в глубине души всегда надеялись на победу. Этот опыт нам дал снова много новых знакомств, выступление получилось более собранным, допустили меньше ошибок, чем в прошлый раз. В этот раз мы прошли в финальную часть хакатона.
Отдельно хочется рассказать про хакатоны ВКонтакте. Это самые запоминающиеся на моем пути ивенты. Возможно потому, что проводятся они в городе, где я живу — в Питере, и чаще всего — это главный штаб Эрмитажа, Манеж или другие исторические здания. На них царит какая-то непередаваемая атмосфера, приезжают самые серьезные команды со всей России. Как правило, на такие хакатоны отбор по заявкам еще более жесткий, так как желающих поучаствовать много, а места ограничены. И если вы прошли отбор на такое мероприятие — будьте уверены, что эти выходные подарят вам много положительных аспектов. Я принимал участие в хакатонах ВКонтакте с разными командами в 2018 и в 2019 годах, мы решали разные кейсы от ведущих компаний, смотрели на проекты других участников, общались с разработчиками из ВКонтакте. В общем, было круто!
А теперь давайте плавно перейдем к теме “мотивации участников”.
Мотивация для участия
Самое очевидное — мотивация для новичков в программировании. Начнём с того, что в программировании, как известно, высокий порог вхождения, и он растёт с каждым днём. Появляется все больше материалов, а значит, ребятам, которые хотят связать свою жизнь с разработкой, приходится все больше и больше прокачивать скилы для получения драгоценного первого оффера. С помощью хакатона появляется возможность получить крутую строчку в резюме, 24-48 часов практики, хорошую мотивацию и стать частью крутого мероприятия. Самым страшным тут может оказаться отсутствие команды или же неуверенность по причине банальной нехватки опыта (“Там все уже много чего умеют, куда мы полезем?”).
Поверьте, команду найти довольно несложно, от любого айтишного чата, в том числе чата конкретно этого хакатона (как в моем случае), до ваших друзей или одногруппников, которые тоже хотят получить первый опыт разработки. Дерзайте, объедините их в команду и зажгите! Проблема неуверенности уйдет со временем. Вам стоит помнить, что все с чего-то начинали, ошибались, не успевали к срокам, и это нормально. Просто поверьте в себя и побеждайте!
И если команды новичков ходят за опытом, то мастодонты программирования не прочь всерьез побороться за призы — 100-500 тысяч рублей на команду за первое место. Ну и, конечно, к победителю особое внимание и отношение — честь, хвала и предложения о работе. Как-то я видел участников за 70 лет, и глаза их горели от перспективы сделать что-то новое. Хакатоны — очень теплая и дружная тусовка. Тут буду рады всем, у кого есть желание и мотивация разрабатывать крутые вещи.
Советы и рекомендации
Идея
Идея — это больше половины хакатона. Это, пожалуй, главный совет. Продумайте идею максимально, как это только возможно. Зайдите на сайт хакатона и внимательно прочитайте задачи, которые хотят решить организаторы. Идея должна полностью решать поставленную задачу и западать в душу всем, кто ее прочитал. Никто не будет вас ругать, если вы вдруг не реализуете какой-то из принципов SOLID при разработке прототипа. Но если ваша идея проработана неполно, неверно — то шансов на победу почти не остается. Если задуматься, даже первичный отбор к участию — по факту это отбор идей. Все также понимают, что за 48 часов не сделать хороший прототип, так что ругать за то, что вы не создали свой фейсбук с нуля за 48 часов — вас тоже не будут. Единственный важный момент тут — не заявляйте тот функционал, который не успеете реализовать. В этом случае ваше решение потеряет баллы.
Подготовка качественной презентации
У вас будет не больше 5 минут, чтобы очаровать членов жюри своей идеей. Продумайте заранее качественный дизайн презентации, красивые и понятные тексты, шрифты. Выделите человека для презентации идеи и прогоните с ним речь. Инвестиция 1-2 часов во время хакатона в презентацию повысит ваши шансы на победу. Согласитесь, логично подумать — хакатон, мероприятие для разработчиков и соответственно, нужно все время потратить на код. Только вот ваши труды не будут замечены за идеальным прототипом, если человек без подготовки и на белом фоне представляет, то, что вы так трепетно разрабатывали всё это время.
Разработка прототипа
Тут все довольно просто. Прототип приложения должен быть готов. Заявленный функционал должен быть реализован. Дизайн должен радовать глаз и цеплять души членов жюри. Очень круто, если при этом вы написали код в лучших традициях Роберта Мартина, соблюдая все best practices. Серьезно, очень круто! Но этот момент, на мой взгляд, вторичен.
Планирование
Время строго ограничено, график расписан по часам, вы знаете это заранее. Спланируйте время заранее и обсудите план с командой от первого до последнего часа разработки. Выделите время на сон и на презентацию. И четко следуйте плану. Продумайте все мелочи, потенциальные узкие места вашего приложения. И вы не будете тратить кучу времени на митинги внутри команды из-за впадения в ступор. На своих первых хакатонах мы пускали этот пункт на самотёк, а после переписывали несколько раз непродуманные куски кода — а ведь могли бы поспать. Оставьте время на фикс багов, на проверку, продумайте, что потенциально можно успеть к конкретному моменту.
Команда
Сперва посмотрите требования к количеству человек в команде. Как правило, это число равняется трём-пяти. Допустим, вы собрали команду из 5 человек. Возьмем пример “продуктового” хакатона, где вы захотели написать веб-приложение. Сразу напрашиваются роли — фронтэндер, бэкэндер, дизайнер. Капитаном, в теории, может быть любой человек, независимо от своей роли в проекте. Некоторые команды выделяют роль капитана как проектного менеджера, освобожденного от разработки. Также кто-то берет к себе в команду эксперта по теме хакатона — того, кто разбирается в банковском бизнесе, если это хакатон от банка. Кроме того, иногда берут девопсов, но это, как правило, редкие случаи. С разработчиками понятно, тут все, как в стандартной разработке — задачи, микроспринты. Взять в команду дизайнера — эффективный шаг. У вас будет человек, который будет занят отрисовкой экранов, словом, той ролью, на которую разработчикам не очень хочется отвлекаться — есть риск не успеть все доделать. Также дизайнер может быть и выступающим, и капитаном — он в курсе всего проекта и, как правило, делает красивые презентации. На одном из хакатонов у нас с другой командой было реализовано практически одно и то же, но у них в команде был дизайнер, который отрисовал красивые экраны и сделал красивую презентацию. В итоге ребятам отдали одно из призовых мест. Общая рекомендация — изучите требования к составу команды и соберите удобную команду для себя, чтобы были закрыты все проблемные места и каждый понимал, что ему предстоит делать.
Сон
Сон далеко не последний по важности пункт. Самая холиварная тема для хакатонов. Спать или успеть все до дедлайна — искушение, где полностью правильный ответ дать очень сложно. Как человек, который был по обе стороны баррикад, я могу только выделить свое мнение по данной теме.
Мое мнение — однозначно, спать. Причин много — от самых банальных до тех, которые осознаешь лишь с опытом. Мы все люди, и для плодотворной мозговой активности нам нужен отдых и разгрузка. К тому же, ваша главная цель — получить удовольствие, опыт, продуктивные навыки. Но как быть, ведь время жестко ограничено, и как же уснешь, когда мысли только о том, что появилась нежданная куча багов? Быть может, лучше глотнуть энергетик — и в путь, до победного? Даже в этом случае самым эффективным решением будет 6-ти часовой сон, после чего вступить в бой с новыми силами. Вы удивитесь, но после сна придут новые идеи, дело пойдет легче. Особенно это относится к 48-часовым хакатонам. Исключение, пожалуй, если вы поймали кураж, всё получается, в наушниках играет клевая музыка, вы мчитесь к победе без единого намёка на сон. Но свежий воздух, сон, вода, питание — все еще остаются важными темами, которыми нельзя пренебрегать. Постоять 10 минут на свежем воздухе с утра перед зданием, где проводится хакатон — тоже бывает крайне полезно.
Не падать духом
Никогда и ни при каких обстоятельствах. Вы пришли соревноваться, и только поэтому вы должны гордиться собой. Даже если все летит насмарку и хочется закрыть ноутбук, пойти домой — не паникуйте. Вы не теряете абсолютно ничего. Учтите ошибки и не допускайте их на следующем хакатоне. Поговорите с техническими экспертами, перекиньтесь парой фраз с членами жюри после выступления. Это великолепная возможность получить мгновенный фидбэк. Мой первый хакатон не был успешным в плане призового места, однако мне удалось пообщаться после него с ментором, и он посоветовал мне для развития карьеры прочесть книгу Джеффри Рихтера — “CLR via С#”. И точно, она является одной из ключевых для каждого .NET разработчика, например, я после прочтения этой книги начал лучше понимать устройство платформы .NET, что позволило более эффективно с ней работать. Вы вполне можете найти на хакатоне такого ментора, который имеет серьезный опыт в вашем языке программирования, и получить похожий эффективный совет для себя. Помните — опыт поражений учит нас намного больше, чем опыт побед. Не бойтесь ошибаться, не бойтесь проигрывать, не бойтесь, что будет тяжело — это значит, что вы идёте в правильном направлении!
Заключение
В заключение, хочу еще раз напомнить наиболее важные моменты:
- не бойтесь начинать участвовать в хакатонах;
- идея — больше половины хакатона;
- подготовьте красивую и качественную презентацию;
- разработайте прототип с заявленным функционалом;
- уделите время планированию;
- эффективно сформируйте команду;
- не забудьте про сон;
- никогда не сдавайтесь!
До встречи на хакатонах!