Привет, хабравчане! Меня зовут Максим. Я из Новосибирска, мне 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, где рассказываю про свой путь от студента до … изначально было джуна, но теперь уже путь идет дальше. НЕ учу как программировать, только помогаю и рассказываю как попасть и жить в айти!
Комментарии (16)
GospodinKolhoznik
09.11.2023 12:27+1Ну и как в айти? Лучше, чем в продажах?
masian Автор
09.11.2023 12:27Определённо, видна граница задачи того, что требуется. В продажах просто продай много, не важно кому и как, просто пихай ????
BugM
09.11.2023 12:27+6Вы как раз тот кого хочется на стажера или даже джуна взять. Мотивация зашкаливает, минимальное понимание есть, знания наберутся. На набирание знаний 3 месяца (максимальный испытательный срок) у вас будет. Собеседование по базовым штукам пройти конечно надо, но это вроде несложно.
Курсы это про тех кто просто денег хочет. Их брать как раз не хочется.
Не пишите статей про свой код или что и как вы написали. Хотя бы года 3. И гайды вайти не пишите. И вообще из вашего списка ничего не пишите. Оно все не интересно. Можно про города, особенно региональные про которые не пишут. Но и то только если сами лично знаете. Интернетом все сами пользоваться умеют.
Текущая статья хороша личным опытом и необычностью. Повторить такое уже не выйдет.
Arseny239
09.11.2023 12:27+1Я не совсем понял: откуда в резюме взялась позиция Backend-разработчик в NorthdaleNetwork, если опыта работы не было?...
masian Автор
09.11.2023 12:27Это пэт-проект о котором на собеседовании я так и говорил, что командой студентов делали приложение. Всякие мелкие приложения я не включал в резюме, только то, что действительно хоть как то было похоже на настоящую то работу
hackimov
09.11.2023 12:27Мой путь в IT был другим. Я устроился на первую работу с первого собеседования. Сегодня я техлид с 5 стажем работы с бэкэндом. Я не проходил онлайн курсов, я не имел коммерческого опыта. Все что я делал это смотрел индусов с Ютуба, гуглил решения, и вел свой проект/сайт который сам дорабатывал в виду отсутствия денег на программиста. Т.е. изначально я столкнулся с потребностью,.был сам себе заказчик и сам себе программист. Естественно мой проект имел ценность для других людей, поэтому это стимулировало меня. Когда с накопленным опытом для самого себя я пошёл на собеседование, я прошёл его с 1 раза. Сегодня я Бэкэнд разработчик/технический лидер с официальной зарплатой выше депутата или участника специальной военной операции.
GospodinKolhoznik
09.11.2023 12:275 лет назад... А в начале нулевых брали в программисты всех, кто просто изъявлял желание. Не то, что курсов не надо было проходить, не надо хакатонов и пэт проектов, даже языка не надо было знать! Достаточно было просто быть технарём. Скажете зарплаты были маленькие? Да, небольшие, но с учётом инфляции и покупательской способности те зарплаты джуна были больше, чем зарплаты сегодняшнего джуна.
konstantin_123
09.11.2023 12:27Не совсем понял зачем писать в опыт работы курсы Скилл фэктори, стоит так делать?
masian Автор
09.11.2023 12:27Проблема в конструкторе hh в том, что курсы и учеба падают в "подвал" резюме, а хочется это тоже успеть показать эйчару, который 800 резюме просматривает и тратит по 30 сек на каждое)
Areso
09.11.2023 12:27Как нанимающий человек, отношусь к этому явно негативно.
Они бы ещё домашку по урокам информатики в опыт работы записывали бы
Earthsea
Какой ужас.
masian Автор
КБШЖДХКТН - первый онлайн-хакатон Куйбышевской железной дороги
Jeshua
Ну понятно же, что это стёб
Mimizavr
Вообще респект ребятам за такое название, я понастальгировал
олды поймут