
Привет, хабравчане! Меня зовут Максим. Я из Новосибирска, мне 36 лет. Два года назад я начал воплощать в жизнь юношескую мечту: занялся программированием. Базово освоив Python, я стал мониторить рынок труда и через два отклика на стажёра понял, что таких, как я, — сотни. На удалённые стажировки и вакансии с минимальным опытом — по 800 откликов, на вакансии в моём миллионнике — по 50–80 человек. Надо всех обойти, а я из продаж, IT не изучал. Как получить опыт, если ты джун? Я нашёл имбовый способ — сейчас поделюсь.
Эту статью я написал, чтобы помочь начинающим разрабам, аналитикам, датасайентистам и тем, кто только хочет в IT.
Почему именно хакатоны
Самый популярный совет для набора опыта — это пет-проект. Но когда ещё не понимаешь, как и что устроено в IT-проекте, и ты один, проект может затянуться. Хакатон удобнее:
Работа в команде от двух до пяти человек, где присутствуют все основные роли разработки: фронтенд, бэкенд, PM, дизайнер, датасаентист.
Решение реальной проблемы бизнеса — кейс в портфолио.
Срок выполнения задачи, как в спринте, — до двух недель.
За пару недель вы находите новых знакомых в IT, получаете проект в резюме, новые знания и опыт. За полгода пройти достаточно хакатонов, чтобы набраться опыта в разных направлениях, заинтересовать будущего работодателя и получить оффер даже на мидловскую позицию.
Хакатоны — это главная тема, но я начну с предыстории и плавно перейду к тому, как готовиться к хакатонам, как собрать команду и на что делать упор, чтобы найти первую работу. Всё это на личном опыте — вам в помощь.
Самообразование: выход на линию старта
Моя мечта юношества — программирование, но без усилий. Поэтому я стал менеджером — это проще: звонишь, сразу получаешь опыт, деньги и становишься сильнее. Так я проработал в продажах 15 лет, и только к 35 годам задумался об IT. Язык выбрал быстро: большая часть рекламы была про Python.
Накачал книжек, нашёл на торренте свежий курс. Занимался от трёх до восьми часов в день. Но никто не подсказывал в трудных местах, и я увяз. Пока был на этапе переменных и их типов, казалось, всё освою за месяц. Но не справился с задачей на циклы. Тогда решил, что мне нужна помощь.
Оплатил курс. Но чем дальше шёл, тем сложнее всё давалось. Менторы не помогали усвоить информацию на 100%. И тут я получил совет от сокурсников: бери информацию из других источников. Это помогло! Так выше шанс найти разжёванную информацию. В ход пошло всё: ютуб, телеграм-каналы, Хабр, чаты по программированию на Python, помощь новичкам в IT, книги, stackoverflow и т. д.
Когда через полгода дошёл до изучения Django, отправил пару резюме на вакансию стажёра без опыта. Но тестовое было непонятное, и я забил. Однако продолжил учиться.
Возможно, сработал мой спортивный азарт: я с детства занимался борьбой, фехтованием, киберспортом, уже взрослым скинул в качалке 27 килограммов за несколько месяцев. В общем, я пошёл на хакатоны, чтобы получить заветные строчки про опыт командной работы и собрать медальки в виде навыков.
Первый хакатон: тренировочный процесс
Про хакатоны я узнал осенью, когда только-только окончил курс ООП (объектно ориентированное программирование). И уже в декабре 2021 года случился мой первый опыт участия в хакатоне. Это был «КБШЖДХКТН Hack2Corp» — хакатон Куйбышевской железной дороги.
Через телеграм-чат хакатона нашёл команду, которая легко приняла меня. Я сразу сказал, что хочу просто посмотреть: у меня есть базовые знания «питона» и нет опыта. Но ребята, разработчик и PM, оказались гостеприимными, и я даже внёс небольшой вклад в работу.
На решение было всего три дня, особо разговаривать было некогда. Вдобавок у каждого свои заботы, дети, работа... Поэтому мы быстро узнали, кто что умеет и обговорили стек, на котором будем пилить. Мало что успели, но что-то смогли.
Задача была разработать сервис, чтобы автоматически создавать номограммы с отметками всех элементов на пути поезда (светофоры, ЛЭП, станции, стрелки и т. д.) и актуализировать их на основе базы инфраструктурных данных.
Выглядело это так:


Интерфейс с анимацией изменений в реальном времени с помощью Plotly — библиотеки для визуализации данных. Она состоит из двух частей:
Front-End на JS;
Back-End на Python (за основу взята библиотека Seaborn).
Тогда я знал только очевидные «питонячьи» решения, но чувствовал ответственность: искал информацию, подготовил презентацию и представил решение заказчикам. Очень помогли навыки, полученные в продажах.
Успеха мы не достигли, но я хотя бы краем глаза увидел, как работает команда разработчиков и менеджер проекта.
Ещё я понял, что деятельность разработчика не ограничивается написанием кода: нужно правильно задеплоить, создать окружение, подключить к фронту эндпойнты, установить зависимости и сделать многое другое.
Я начал развиваться в более широком ключе: не «питончиком» единым :)
Главное открытие
Вписывайся в таймлайн — заказчику нужно решение здесь и сейчас. И в первый раз, и на других соревнованиях я встречал команды, которые говорили: «Мы подготовили решение на бумажке и больше ничего не успели. Если вам нравится идея, мы готовы после хакатона её доработать, а вы заплатите». Частая история, звучит красиво, но на практике не работает. Компании обычно на такие предложения отвечают: «До свидания, ребята, мы не можем ждать».
Из положительного. Хакатоны — это круто: новые знакомые, новый опыт и знания. И нестрашно: даже ничего не сделав, ничего не теряешь, зато приобретаешь новых знакомых.
Ачивка в резюме с первого хакатона
Участие в разработке сервиса, который позволит в автоматическом формате создавать номограммы и актуализировать их на основе базы инфраструктурных данных. Кроме того, понял, что пора переходить на Linux, так как часто библиотеки на Python и документация к ним лучше адаптирована именно под него.
Навыки и стек:
понимание принципов ООП;
понимание классических структур данных и алгоритмов;
Ubuntu-пользователь;
GitHub;
PyCharm.
Второй хакатон: дебют со своей командой
В мае 2022 года на курсах, где я учился, устроили внутренний хакатон, тоже на железнодорожную тему: про очерёдность движения поездов, больше для Data Science. Сокурсники позвали меня в команду. Решили вместе участвовать, чтобы притереться друг к другу и после выйти уже на серьёзные хакатоны и коммерческие проекты.
Задача хакатона: для каждого вагона сформировать определённую последовательность операций. Мы расширили ТЗ для себя. Моя задача была запихнуть решение DS в приложение на Flask. Наши DS заняли второе место в этом хакатоне, а я приобрёл опыт прикручивания модуля DS к приложению и вывода аналитики на фронт.
Ачивка в резюме
Разработка веб-приложения на основе DS[-решения]: загрузка датасета и его выдача на веб-график с характеристиками решения.
Навыки и стек:
Flask;
Python;
работа с СУБД.
Третий хакатон: повышение ставок — один шаг до офера

Третий хакатон был всероссийским — MoscowCityHack. Было три задачи, по 100 команд на каждую. Жёсткая конкуренция. Среди участников — и новички, и опытные ребята: мидлы и сеньоры IT-компаний. Ставки поднялись, здесь игра пошла на деньги, и потребовались все наши силы. От нас участвовали два бэка, один фронт, два дата-саентиста и проджект-менеджер.
Примерная задача стала известна за две недели. Нашей команде нужно было спарсить данные о промышленных поставщиках Москвы, перенести эти данные в БД, вывести на фронт с разной фильтрацией и добавить аналитику.
Мы начали изучать, как писать парсеры, где брать данные, какой максимум данных мы можем собрать и что с ними делать. Помимо знакомой авторизации на Django, я попробовал написать сам парсер. Сделал это за пару дней.
Заняли мы 12-е место из 50+ команд. Считаю, это супер для команды новичков. Все радовались и кидали стикеры с пивом в наш ТГ-чатик. Мы впервые добились успеха.
Софт-скилы из продаж опять пригодились: помогли выступить ровно и спокойно. Все отдавались работе по полной. Вот тогда я в первый раз почувствовал, что мечта где-то рядом: я могу решать любые задачи с помощью алгоритмов, наконец-то набрался опыта в командной разработке и становлюсь крутым.
Главные открытия
Первое: ходите на открытые питчинги, там можно нахвататься решений на будущее. Второе: всегда помните о пользе для бизнеса. На презентациях мы уделяли больше внимания технологиям, которые применяли. А заказчикам это было не особо интересно: они ждали конкретных бизнес-решений, которые принесут им выгоду.
Для практики мы продолжили участвовать в хакатонах. И не оставляли проекты с предыдущих хакатонов, а доводили их до ума, как хотел бы заказчик.
Ачивки в резюме
Опыт работы в команде. Разработка сервиса по сбору и анализу информации о продукции производителей Москвы для развития импортозамещения. Моя роль — создание парсинга сайтов и сбор информации о производителях для приложения в json-формате. Собрано 6000 записей по 20 значений в каждой.
Навыки и стек:
beautifulsoup4, lxml, json;
регистрация и аутентификация по токенам;
создание permissions и моделей для модератора, компании и сотрудника департамента Москвы;
Celery/redis для выполнения парсинга по графику;
Django, Django REST Framework (DRF);
GitHub;
Heroku.
Финишная прямая: как после 250+ откликов я чуть не сдался, но всё-таки устроился на работу
После участия в хакатонах я снова начал прощупывать рынок труда. Но сначала проапгрейдил резюме: практику с учёбы и хакатонов растянул на страницу, а прежний 15-летний опыт сократил до минимума. Примерно так выглядело моё резюме: https://t.me/SibDevJun/18. После этого меня стали приглашать на технические собеседования.
Я думал, техсобесы — это уже проще: главное — практика, а база, теория — это ноль. На деле оказалось, что нужно знать всё — не зубрить, а именно понимать. После пары-тройки собеседований я начал проходить основные вопросы и получать тестовые. К 15–20-му тестовому выполнял почти 100%, улучшал качество кода.
Я отправил 250+ откликов, решил 20+ тестовых и прошёл больше 30 собеседований. Джуновские вакансии заканчивались, а работы не было. Я почувствовал «плато тренировки» — это спортивный термин: когда выложился на занятиях по полной, а прогресса нет.
Тогда я расширил поиск: смотрел предложения с опытом от года, а потом и вовсе всё подряд. Главное, попадать в стек вакансии хотя бы на 80%.
Стаж 3-6 лет — именно столько было в вакансии, на которую я откликнулся и получил офер. Но взяли меня как начинающего специалиста, конечно же.
Саммари: как хакатоны помогают в поиске работы


На днях мне рассказали, почему выбрали меня. Если коротко, кандидатов, окончивших даже известный курс, сразу отметали. Мной заинтересовались только потому, что я активно участвовал в хакатонах.
Знакомый студент онлайн-школы тоже решил попробовать себя в хакатонах. В его команде оказался лид из IT-компании. После хакатона мой знакомый получил офер и сейчас уже мидл в той компании.
Самые частые страхи начинающих айтишников по поводу хакатонов: «я не смогу один», «у меня нет команды», «я ничего не умею».
99% хакатонов дают возможность найти команду. Можно войти в ту, которая ищет конкретного специалиста. Или набрать самому, ведь людей с опытом и без, которые тоже ищут команду, всегда море в чатах.
И недостаток знаний не проблема. Мой первый хакатон был именно таким: я напросился в команду, чтобы посмотреть, как идёт эта самая «разработка». А если вдруг в процессе поймёте, что можете чем-то помочь, всегда можете влететь в разработку в подходящий момент.
А главное, даже если вы ничего не сделаете, вас никто не будет ругать. Зато вы прочувствуете от и до, как проходит хакатон, чтобы в следующий раз прийти более подготовленным. Провалить хакатон нестрашно. Команд много, и, если не выйдете на питч, вас не запомнят. А если выйдете, нужно сделать всё, чтобы запомнили. Даже если решение не дотягивает до 100% техзадания. И чем больше хакатонов пройдёте, тем охотнее вас будут принимать в новые команды, а потом и на работу.
Буду рад увидеть ваши комментарии к статье и вас у себя в телеграм канале https://t.me/SibDevJun, где рассказываю про свой путь от студента до … изначально было джуна, но теперь уже путь идет дальше. НЕ учу как программировать, только помогаю и рассказываю как попасть и жить в айти!