«Рекрутеры не дают прохода» — история веб-разработчика
Михаил Логинов оставил собственный бизнес ради IT. Год работал в тестировании, окончил курс Frontend в GeekBrains и уже три месяца трудится веб-разработчиком полного цикла. Стоило ли оно того? И реально ли собрать портфолио за время учебы? Об этом и о пути в профессию сейчас поговорим.
— Михаил, с чего начался ваш путь в разработку и в GeekBrains?
— В детстве любил математику — побеждал на олимпиадах и в результате без экзаменов поступил на мехмат Ростовского государственного университета по специальности «математик, системный программист».
В университете давали хорошую теоретическую базу, но к реальной разработке это не имело отношения. Дальше я занялся собственным бизнесом и на восемь лет забыл о программировании.
Но бизнес шел нестабильно — мне были интересны альтернативы. Обратил внимание на зарплаты в IT и решил попробовать. Для начала прошел бесплатные курсы Portnov Computer School и устроился тестировщиком. Удивительно, что меня в 30 лет взяли без опыта!
Я ежедневно общался с разработчиками, пробовал их инструменты, привыкал к их порядкам и жаргону. Через несколько месяцев стал просить у начальства небольшие задачки по программированию. Когда решил, что хочу учиться на разработчика, нашел GeekBrains.
Платить за учебу не пришлось — курс Frontend я выиграл в конкурсе от GB «Мы ищем таланты». Из восьми тысяч претендентов отбирали по 30 человек в две группы: Fronted и Ruby. Меня интересовал только Frontend, хотя проходной балл здесь был выше, а конкурс — более 100 человек на место!
Тест включал задачи по дискретной математике — тут мне и пригодился мехмат…
— Почему выбрали веб?
— Меня завораживает магия онлайн-сервисов. До их появления под каждую мелкую задачу приходилось ставить по десктопному приложению. Нельзя было взять и нарезать картинки онлайн или начать вести заметки в облаке.
До сих пор удивляюсь скоростям веб-сервисов! Забываешь, что твои файлы проделывают путь «через весь интернет». Это вдохновляет.
Но решающим фактором была популярность веб-разработки. Ведь программировать я планирую не «для себя». Важно, чтобы мои умения пользовались спросом.
Выполненный Михаилом проект из курса "HTML/CSS". Смотреть онлайн
— Чем занимаетесь сейчас?
— Я веб-разработчик полного цикла: пишу и серверную, и клиентскую сторону приложений. Стек технологий: Vue (Vuex, Nuxt.js, Apollo), React (Redux), Node.js (TypeScript, GraphQL, Mongodb).
Меня сразу взяли на зарплату ближе к уровню middle. До максимумов, которые были в бизнесе, не дотягивает, но тут другие преимущества: больше стабильности и перспективы карьерного роста.
Рекрутеры не дают прохода — предлагают работу, в том числе с релокацией в другие города и страны. Иногда откровенно говорят: «Скажите, сколько вы зарабатываете, и за такую же работу мы заплатим больше». :)
А ведь еще полтора года назад я не знал даже основ веб-разработки. Понятия не имел, что такое CSS и «ре-по-зи-то-рий».
— Рекрутеры вас находят на работных сайтах (hh.ru, Superjob) или вы еще на каких-то площадках разместили резюме?
— Я искал работу через HeadHunter — там меня в основном и находят. Еще пишут в Linkedin, но этот аккаунт я завел больше «на вырост»: если решу искать работодателя за рубежом.
Когда в следующий раз понадобится работа, воспользуюсь еще и объявлениями, которые проскакивают в чатах программистских сообществ.
— Работаете в офисе?
— Да, в просторном офисе в центре Ростова-на-Дону. У нас в компании около ста человек. Подразделения расположены в России, Украине, Израиле и США. Приятно быть частью большой команды и решать задачи плечом к плечу с профессионалами своего дела.
— Как в Ростове с вакансиями? И в плане количества, и в плане уровня компаний.
— В нашем городе нет IT-корпораций с мировым именем, но вакансии для разработчиков есть всегда. Одновременно людей набирают сотни небольших компаний, не считая удаленных вариантов.
— Насколько пригодился опыт тестировщика?
— На новой работе я уже писал unit-тесты для своего проекта, и хорошо, что я умел это делать. Все разработчики так или иначе тестируют свой код. Но есть и еще один важный момент.
Тестирование стало для меня черным ходом в веб-разработку, хотя изначально я этого не планировал. Именно тогда у меня появился минимальный «опыт коммерческой разработки», жизненно необходимый кандидату на позицию junior developer.
Я понял, что в IT нехватка опытных специалистов и им готовы предлагать любые деньги и условия. Люди без знаний видят такие вакансии на HeadHunter и отчаянно стремятся на стартовые должности в разработке. Конкуренция огромная. Получить место джуниора — ключевой и самый сложный момент в карьере разработчика. К этому нужно готовиться. Тестирование дало мне такую возможность.
— Какие проекты, сделанные в GB, вы взяли в портфолио?
— Например, два fullstack-проекта на React + Redux + Node.js + Express + Mongodb, которые мы делали в рамках курса React. Одно из приложений общается с сервером в реальном времени с помощью Socket.io.
Еще я включил в портфолио frontend-приложение на Vue + Pug + Stylus, сделанное во время курса JavaScript #2. Преподаватель вел факультатив по Vue, а я был рад освоить эту технологию.
Добавил три верстки — в основном на моем любимом стеке Pug/Stylus/Gulp — и небольшую игру на HTML Canvas.
Верстка из курса "HTML5/CSS3". Смотреть онлайн: здесь и тут
Сейчас не ищу работу, но при случае обязательно включу в портфолио и более новые проекты: тот, что сделан в рамках командной разработки, например. Кстати, надо будет упомянуть, что я стал «контрибьютором» популярного компонента для Vue.
По своему опыту рекомендую будущим разработчикам уже во время учебы наполнять портфолио проектами. Пусть они не будут шедеврами, но поставьте себя на место работодателя. На собеседовании кандидат говорит, что знает CSS и JavaScript, но не может показать ни одного проекта. Что он реально умеет — неизвестно. Другой соискатель дает ссылки на свои работы: «Они еще не доделаны, но вот верстка, тут я упражнялся с таким-то фреймворком, а здесь у меня простенький API». Сразу понятно, какие задачи можно доверить кандидату на первых порах. Подумайте об этом.
Работодатели зачастую даже не просят меня выполнить тестовое задание. Им достаточно взглянуть на похожие проекты в моем портфолио!
— Как давалась работа над проектами: насколько было сложно? И что было самым трудным за все время обучения?
— От каждого курса я старался взять максимум. Для меня не стоял вопрос, делать дополнительное задание или пропустить. Ведь я учусь для себя.
Не все технологии, которые я применял, входили в программу курсов, но мне попадались замечательные преподаватели: они рассказывали больше и готовы были дать совет по темам за рамками учебного плана.
Например, я быстро перешел от обычной верстки на HTML/CSS к использованию шаблонизатора Pug и препроцессора Stylus. Когда преподаватель стал рассказывать о модных Single Page Applications, я охотно перешел на эту технологию с помощью Vue.
Проект из курса "JavaScript #2" (Vue)
Труднее всего было не нарушать дедлайны. Ведь во время учебы я не переставал работать, а задания делал по вечерам и в выходные.
— Расскажите подробнее о командном проекте. Насколько понимаю, он был самым масштабным. Как распределились роли в команде? Вы руководили?
— В командной разработке мы примеряли разные роли, и я не ставил себе цели руководить. Хотелось углубить знание React-Redux, и это удалось.
Вместо «гипотетического учебного» мы сделали проект для реального бизнеса, и он будет внедрен. Это сервис аренды автомобилей Rent Auto для компании, у которой свой автопарк в Екатеринбурге. Идею предложил наш руководитель проекта.
Командой из пяти человек мы сделали и клиентскую, и серверную часть: в том числе отдельный сайт для администраторов сервиса и базу данных.
Два backend-разработчика реализовали сервер на Ruby и MySQL. Руководитель проекта выступил также третьим бэкендером. Еще у нас были два фронтендера и дизайнер.
Лично я написал пользовательское веб-приложение (кому интересно — вот оно). Не считаю его чем-то выдающимся, но в целом все получилось. По сути, это Single Page Application. Клиент выбирает машину из каталога, время, когда она будет нужна, и заполняет заявку.
По макету дизайнера я сверстал сайт с помощью Stylus, Bootstrap и Bem. Применил адаптивную, кроссбраузерную и кроссплатформенную верстку. Использовал современные подходы: grid и flex. Сердце проекта — React. К нему прикручены хранилище данных Redux и другие библиотеки.
Для сборки мы использовали Webpack и компилятор Babel. Выдержать единый стиль помог Eslint.
В работе над этим проектом мы погрузились в условия, максимально близкие к «боевым», то есть к настоящей коммерческой разработке. Такой опыт особенно ценен.
Кстати, я делал сразу два командных проекта. Так получилось, что я занимался в двух группах.
— Как так?
— Из-за перетасовки групп внутри одного потока меня сначала записали в другой проект. Все студенты уже были знакомы, и я не сразу понял, что оказался в чужой группе. А позже не захотел подводить команду и продолжил помогать с проектом. Все, с кем я работал, — отличные ребята. Надеюсь, их карьера сложится, как они хотят.
— К другим направлениям присматриваетесь? Что-то кроме JS хотели бы изучить?
— Мне интересны и разработка игр, и более низкоуровневое программирование. Но я понял важную вещь, которую советую запомнить всем, кто идет в IT. Технологий, языков программирования, фреймворков и подходов очень много. Никто не знает и не может знать их все. Выберите направление по душе и изучайте так глубоко, как только сможете.
Знание одного популярного фреймворка дает вам востребованную профессию, хорошую зарплату, перспективы. А знание «вершков» от всех языков только вызывает улыбку у работодателя. Не получится писать коммерческий код без погружения в конкретную технологию.
Я освоил актуальный, модный стек технологий и пока не собираюсь его расширять или менять. А вот углублять свои знания и развиваться как специалист буду еще долго. Посвящаю этому все свободное время.
— Есть любимые книги и статьи по специальности, которые особенно помогли?
— Чтобы получить позицию разработчика, я занимался по 4–5 часов в день в течение 8–9 месяцев. При этом часть знаний тут же применял в тестировании. Было очень полезно знакомиться с коммерческими проектами, смотреть на проблемы, которые возникают у разработчиков, иногда даже предлагать решения.
Всем советую: если есть возможность, на время обучения найдите себе должность, близкую к разработке — сисадмин, верстальщик, тестировщик. Будете развиваться «без отрыва от производства».
Из учебных ресурсов для начинающих, помимо GeekBrains, рекомендую FreeCodeCamp, серию мобильных приложений Solo Learn и YouTube-канал Traversy Media. Еще советую грызть гранит науки на learn.javascript.ru, хотя это и сложновато.
Если уже вышли на продвинутый уровень — смотрите уроки технопарка Mail.ru, которые читают в МГТУ им. Баумана, записи уроков от Академии Яндекса и курс по JavaScript от Киевского политехнического института (лекции этого года есть на YouTube). Упомяну и канал «Веб-Стандарты» — там вы найдете доклады веб-разработчиков с крупных русскоязычных конференций.
При подготовке к собеседованиям на позиции уровня middle и выше полезны ресурсы hackerrank.com и leetcode.com.
— Как планируете развиваться дальше?
— Продолжу учиться, но пока не уверен, как именно. Я работаю с современными технологиями минимум 40 часов в неделю, а это уже неплохое развитие. Постоянно ищу свежую информацию по своей специальности. Упомянутые выше ресурсы очень в этом помогают.
Сейчас меня приглашают на стажировку в Mail.ru, и еще я дополнительно прохожу в GB курс по Node.js.
Портал GeekBrains хочу отдельно поблагодарить за возможность, которую он мне подарил. Вы даете людям шанс навсегда изменить жизнь. Никакая волшебная пилюля не превратит новичка в программиста с гигантской зарплатой, но вы даете ключ, которым можно при желании открыть двери в удивительную жизнь разработчика.
— Спасибо, что уделили время! Может быть, желающие учиться на веб-разработчика еще что-то спросят в комментариях.