Дисклеймер : меня зовут Никита Евдокимов и моя история — это, скорее, ошибка выжившего , помноженная на удачное стечение обстоятельств. Тем не менее, я хочу поделиться своим опытом, чтобы вы могли повысить свои шансы быстрее найти свою первую работу во фронтенде и избежать моих ошибок.
От команды Практикума: нам не нравятся статьи с кричащими заголовками: мы не даем пустых обещаний и быстрых легких побед. Поэтому вы можете сперва попробовать курсы веб-разработки от Яндекс.Практикума , где первые 20 часов занятий – бесплатные. Так вы успеете понять, нравится ли вам разработка, прежде чем отправиться с нами в большое путешествие по смене своей профессии.
Моя история не сильно отличается от истории других студентов Практикума: я решил изменить свою жизнь и стать фронтенд-разработчиком. Правда, чтобы показать серьёзность своих намерений, я уволился с работы, и посвятил всё свободное время учёбе.
Для этого я заранее подготовил финансовую подушку — отложил деньги на полгода жизни в режиме «умеренно затянутого пояса». Такой срок я выбрал не случайно: большинство работодателей ищут разработчиков со знанием хотя бы одного фреймворка, и по моим расчётам примерно к этому времени должен был закончится курс по React.
Дополнительно, за месяц до «даты Х», я записался в карьерный трек Практикума. Это специальная программа внутри Практикума, которую проводят HR-консультанты — специалисты, подбирающие сотрудников в ИТ-компании. И это был суперполезный опыт!
Подготовка
Я работал вместе с наставницей Юлей Яковлевой — большое ей спасибо за подсказки и поддержку!. В общих чертах программа выглядела так:
- сперва она дала теорию — как ИТ компании отбирают сотрудников, как подготовить резюме и сопроводительное письмо, чтобы заинтересовать рекрутеров.
- затем я подготовил эти документы, она их проверила и дала советы по улучшению.
- после — провела тестовое собеседование, чтобы проверить мои навыки самопрезентации и дать обратную связь.
Я при всём желании не смогу выложить весь объём теории, но с радостью поделюсь принципами, которые помогли мне оформить резюме и сопроводительное письмо.
Несколько советов по оформлению резюме для разработчиков без опыта
→ Резюме не должно быть избыточно длинным, особенно у начинающего разработчика.
В поиске соискателя рекрутеры отсматривают десятки, если не сотни резюме. И они чисто физически не могут вникать в каждую строчку. Значит, текст должен быть лаконичным, по делу, без воды — а ещё лучше, если он подготовлен специально под эту вакансию.
По этой же причине не стоит утяжелять его нерелевантными достижениями. Например, в студенчестве я играл в театре, и наша труппа в 2011 году взяла гран-при на одном региональном конкурсе. Мне-то об этом приятно вспоминать, но для рекрутера эта информация, скорее, бесполезна. Значит, её стоит убрать.
→ Хорошее портфолио может компенсировать отсутствие опыта
В резюме не стоит говорить о том, что у вас нет коммерческого опыта — это понижает шансы попасть на собеседование: лучше покажите свои навыки, опубликовав ссылку на GitHub. В конце концов, про опыт можно рассказать уже во время собеседования, когда у рекрутера уже будет о вас какое-то впечатление.
Несколько советов, как оформить GitHub:
- Сверстайте адаптивно и кросс-браузерно несколько лендингов, чтобы показать навыки вёрстки.
- Найдите публичное API и сделайте на его основе мини-сервис, вроде генератора шуток или библиотеки лучших ужастиков. Так вы покажете, что умеете работать с REST и асинхронными запросами.
- Также не стоит забывать о проектах из Практикума — их стоит оформить для просмотра людьми «извне» (хотя бы сделать красивое Readme).
→ В резюме стоит подробно рассказать о последнем месте работы
Перечислить основные достижения и коротко рассказать, как ваша работа повлияла на компанию. Это если, конечно, вам действительно есть о чём рассказать. Если нет — лучше не надо.
Такой рассказ может помочь, если вы ищете работу в той же сфере, в которой работали раньше: например, бывший бухгалтер будет находкой для сервиса, который разрабатывает инструменты для бухгалтеров. И это точно выделит его среди других новичков.
→ Раздел «О себе» — один из самых важных
Потому что он позволяет показать себя живым человеком, а не просто «функцией для отрисовки интерфейса».
Расскажите о своих хобби и увлечениях: любите играть в консоли? Круто! А во что именно? Читать? Классно! Что сейчас читаете? И так далее.
Для меня это стало открытием, но сейчас рекрутеры больше обращают внимание на soft-skills. Это слово сложно однозначно перевести на русский язык, но в общих чертах оно означает черты личности, характер и убеждения.
Блок «О себе» как раз позволит рекрутеру хотя бы косвенно понять, что вы за человек — и задать дополнительные вопросы уже во время собеседования.
→ Опционально: резюме стоит украсить фотографией
Советую выбрать то, на котором вы одеты, а фон радует глаз. Это самый спорный пункт, но к сожалению дела обстоят так, что встречают по одёжке, нравится нам это или нет.
Пара слов о сопроводительном письме
Оно составляется под каждую вакансию отдельно, его задача — дать чуть больше информации о вас, плюс продемонстрировать, что вы как следует ознакомились с вакансией и знаете, чего хотите.
Как показывает практика, рекрутеры игнорируют отклики на вакансии, которые идут без сопроводительного — поэтому потратьте время, чтобы подготовить хороший текст.
Своё я составил по такой структуре:
- Приветствие.
- Абзац о том, какие технологии из вакансии я знаю.
- Абзац о том, с какими технологиями я пока не работал, плюс отработка возражения — я быстро учусь и смогу в них разобраться самостоятельно.
- Ссылка на проекты и предложение отправить тестовое задание по такому-то каналу связи.
- Прощание.
Небольшой совет — пробуйте разные приветственные фразы и наблюдайте за тем, на какие отвечают чаще всего. Такой вот «A/B-тест на минималках» позволит найти оптимальную подачу.
Например, на мои письма, которые начинались с фразы «Добрый день, я начинающий фронтенд-разработчик, сейчас заканчиваю курсы» отвечали реже, чем на письма без этого уточнения.
Приступаем к поиску
Прежде чем приступить к поиску, я наметил простой план действий — ежедневно уделять не менее двух часов на изучение новых вакансий на «Хэдхантере», отбор подходящих, редактирование резюме и сопроводительного письма, а также разбор откликов.
Я решил не откликаться на все вакансии подряд, в которых есть слово «фронтенд-разработчик» — на мой взгляд, это всё равно как стрелять из пушки по воробьям: лишняя трата времени и для меня, и для рекрутера.
Вместо этого я тщательно отбирал вакансии, чтобы откликаться максимум на 5-6 в день. Это позволило больше времени уделить «кастомизации» резюме и сопроводительного письма, чтобы повысить вероятность ответа.
Мои «критерии отсева» были такими:
- Вакансия подходит под мой фреймворк — React/CRA . Я решил, что для первого места работы стоит откликаться на вакансии, которые помогут углубить знания, приобретённые в Практикуме. Я не против выучить Vue или Angular, но как по мне лучше это сделать позже, когда как следует набью руку в React.
- Требуемый опыт работы — 1-3 года или «без опыта» . Это на самом деле спорный фильтр, поскольку очень часто работодатели заполняют эту графу рандомно: в «без опыта» попадают и вакансии для синьор-позиций. Я пошёл от обратного — исключил из выборки те позиции, для которых я явно не подойду по опыту — 3-6 лет и 6+ лет.
- В вакансии нет явного указания, что нужен миддл или синьор . Понятно, что это абстрактные уровни оценки: навыки разработчика, который считается миддлом в одной компании, могут соответствовать навыкам джуном в другой. Но я для себя решил, что если рекрутер точно определяет, что джун не подойдёт, то я не буду тратить время, чтобы его переубедить.
- Если указана зарплата, то она должна быть «в рынке» . Медианная зарплата джуна-фронтендера — 50 000 рублей. Я решил не откликаться на вакансии, в которых зарплата ниже этой суммы и выше 70 000 рублей.
Искать работу гораздо легче, если воспринимать процесс как игру: любая игра даёт обратную связь, которая позволяет корректировать стратегию и продвигаться дальше по уровню.
Поэтому я решил сделать поиск работы более «фановым» и завёл для себя табличку, разделив этапы поиска работы на 4 «уровня». Соответственно, у меня была простая цель — хотя бы раз достичь четвёртого уровня.
И каждый раз, когда я «срезался», то пытался проанализировать, что именно я сделал не так, и как можно улучшить результат. «Да, у этого парня своеобразные представления о фановости», — наверняка подумаете вы, и я с вами полностью согласен!
Всего за три дня я отправил 16 откликов. Статистика такая:
Это не оригинал таблицы, в оригинальной я добавил ссылки на вакансию, уровень зарплаты и примечания.
Из пяти компаний, которые заинтересовались резюме, три сразу пригласили на собеседование по телефону, а две — отправили тестовые задания. Тестовые мне выполнять не пришлось — их прислали уже после того, как я получил два предложения о работе. По той же причине я отказался и от одного телефонного собеседования.
На всякий случай покажу, что требовалось сделать в тестовых:
Тестовое задание №1
Задача: Реализовать прототип библиотеки для отображения линейных графиков с использованием WEB Canvas.
- Представить свой API для задания массива «графиков». Каждый «график» должен иметь: a. Наименование параметра; b. Массив точек (X,Y).
- Библиотека должна поддерживать следующие функции: a. Отслеживать изменение собственных размеров и обеспечивать автовписывание; b. Отображать оси, с указанием отображаемых на осях параметров; c. Отслеживать положение мыши с отображением всплывающей подсказки по точкам; d. Масштабирование области графиков.
Срок выполнения: 1,5 недели.
Тестовое задание №2:
Задача: Сверстать и запрограммировать страницу интернет-магазина.
Функции:
- Слайдер
- Фильтрация по типам товаров
- Сортировка по убыванию и возрастанию цены
- Добавление товара в корзину
- Открытие и закрытие модального окна с корзиной
- Изменение количества товаров в корзине
- Расчет стоимости товаров в корзине
- Удаление товара из корзины
Требования:
- Адаптивность
- Минимальная кроссбраузерность (последние версии Chrome и Safari)
- Сохранение пропорций изображений при изменении ширины экрана
- Соответствие макету
- Не использовать Bootstrap и jQuery
- Круто, если используете Pug
- Из JS-фреймворков / библиотек можно использовать только Vue.js (при желании)
Срок выполнения: неделя.
Собеседования
В первый же день поисков со мной связалась рекрутер компании, которая занимается переводами документации. Она задала несколько уточняющих вопросов (какие именно — уже не помню, но ничего неординарного не было), и предложила на следующий день (3 ноября) созвониться с руководителем отдела ИТ-разработки.
Спустя несколько часов мне написал представитель стартапа, который разрабатывает новый премиальный дейтинговый сервис. Он поинтересовался, когда мы можем созвониться — а я решил ковать железо пока горячо и предложил прямо сейчас, через Zoom.
Обычно первым делом рекрутеры проводят «скоринговое» интервью, чтобы как раз оценить soft-skills кандидата. И если всё в порядке — с ним проводят уже техническое интервью. Поэтому я немного растерялся, когда включилась камера, и на меня уставились три человека — тот самый представитель (оказалось, что он — один из сооснователей), его партнёр, а по совместительству финансовый директор, и бэкенд-разработчик.
Они рассказали коротко о продукте — точнее о том, что его пока нет, но есть инвестиции, дизайн-макет, бэкенд и горячее желание его разработать, — порасспрашивали меня о том, почему я решил уйти из медиа во фронтенд и тут началась техническая часть.
Я не ожидал, что собеседования начнутся так быстро, поэтому к техническому интервью не готовился — пришлось рассчитывать на остаточные знания. Вот что спрашивали:
— Знаю ли я алгоритмы? Какие именно?
— Как оценивается их сложность?
— Чему будет равна временная сложность алгоритма Х?
— Основные принципы ООП?
— Что такое чистые функции? Что такое замыкание?
— Что происходит, когда мы вводим название сайта в адресной строке?
Я волновался, но меня подбадривала реакция бэкендера на мои ответы — он выглядел не как экзаменатор, а, скорее, как одногруппник, который наблюдает за товарищем на зачёте: радуется удачным ответам и переживает за неудачные.
Ребята мне сразу понравились. Не могу сказать, чем именно — просто почувствовал, что хочу работать вместе с ними и создать этот проект. Они позже сказали, что я тоже произвёл хорошее впечатление — умением рассуждать и «общей адекватностью».
Мы договорились встретиться на следующий день (3 ноября) в офисе и пообщаться лично. И уже после этого принимать решения. В тот же день, на пару часов раньше, у меня было то самое собеседование с переводческой компанией.
Поскольку вопросы на собеседовании в стартапе были не особенно сложными, я почувствовал ложную уверенность в своих силах — что сыграло со мной злую шутку. Если бэкендер из стартапа задавал «общепрограммерские» вопросы, то здесь руководитель ИТ-отдела спрашивал конкретно о специфике JS, и не удовлетворялся «поверхностными» ответами:
— Проверим, знакомы ли вы с ООП. Назовите основные принципы? — Наследование, полиморфизм и инкапсуляция. — Прекрасно, теперь расскажите о том, как реализовать их в JS. — { рассказываю } — Замечу, что вы перепутали полиморфизм и наследование. Но пойдём дальше.
Вот ещё несколько вопросов с того собеседования:
— Что такое Event Loop?
— Как интерпретатор обрабатывает синхронный и асинхронный код?
— Что такое побочные эффекты у функций?
— Что такое промисы? Какими состояниями они обладают?
— Основные HTTP-методы?
— Основные коды состояния в HTTP-ответе?
И многое другое. Большинство атак я отбил, но впереди было финальное сражение — вопросы на знание React.
— Расскажите, что такое props drilling и какие способы решения этой проблемы вам известны. — Я ни разу не сталкивался с этим термином. — Хорошо, а какие вообще проблемы с пропсами существуют? — Когда их приходится прокидывать из родительского компонента вглубь дочерних. — Отлично, вот вы и назвали, что такое props drilling. И как его избежать? — С помощью хука createContext, который создаёт новый контекст, и хука useContext, который позволяет дочернему компоненту подписаться на контекст. — Замечательно. Вижу, что с Context API вы знакомы, а теперь расскажите Наталье [рекрутеру], что такое, собственно, хуки.
Дальше было полегче:
— Из каких библиотек состоит React?
— Какие основные компоненты существуют в библиотеке Router DOM?
— Какие хуки есть в Router DOM?
— Где React рендерит код — на сервере или на клиенте?
— Какие компоненты бывают в React?
И так далее. С этим вопросами я тоже справился. А вот последний прорвал мою линию защиты как нож масло.
— Хорошо. А что же такое JSX? — Синтаксис, который позволяет использовать HTML внутри React. — Тут вы ошибаетесь, конечно — никакой HTML внутри React не используется. Разметка да, но не HTML. Это описание интерфейса — с помощью Babel JSX-код транспилируется в вызовы метода React.createElement, то есть это своего рода синтаксический сахар. В общем, учите матчасть.
На этом собеседовании у меня снова было ощущение, что я сдаю зачёт — правда на этот раз не лояльному преподу, но я благодрен ему за развёрнутые комментарии моих ошибок: это очень крутое чувство, когда ты находишь пробелы в знаниях и можешь тут же их заполнить.
Несмотря на некоторую надменность, он произвёл хорошее впечатление — было видно, что он горит разработкой, разбирается в теме и следит за обновлением инструментов. К моему удивлению, под конец беседы он позвал меня на работу.
Я попросил отсрочку до вечера — и поехал на второе собеседование в стартап и в конце концов выбрал его. Правда, через месяц решил уйти, но это уже другая история.
Финальные советы
→ Если вам отказывают после собеседования или тестового задания — просите обратную связь.
Если причина именно в навыках — это отличная возможность, чтобы их прокачать. Может я мазохист, но мне нравится ошибаться — исправляя ошибку, лучше разбираешься в нюансах, узнаешь больше разных штук.
Чтобы прокачать технические навыки, советую порешать задачки на CodeWars или попроходить тесты на Skillotron .
→ Не расстраивайтесь, если получаете отказы
Отказ не означает, что вы плохой разработчик или человек. Он означает всего лишь то, что вы не подходите на одну отдельно взятую позицию — и для этого может быть тысяча независящих от вас причин.
Я рассуждал так — если я не подхожу компании, значит и она мне не подходит. И отказ означает только то, что я стал на шаг ближе к месту, в котором мне будет классно и круто.
→ Прохождение интервью — это навык
И его тоже можно прокачать. Рекрутеры задают плюс-минус одинаковые вопросы — подготовьте ответы (а лучше истории) заранее. Чтобы пройти техническое собеседование — посмотрите на ютубе записи публичных интервью с фронтендерами: какие вопросы им задают и как они на них отвечают.
→ Не бойтесь откликаться на вакансии
Если они подходят по стеку/навыкам/зарплате, но из описания возникает ощущение, что компании нужен фронтенд-супермен. Компании чаще всего приукрашивают сложность и «идеальность» портрета кандидата.
Не страдайте от «синдрома самозванца» — рискните, вы же всё равно ничего не потеряете. Возьмут — хорошо, не возьмут — см. совет №1.
От команды Практикума: нам не нравятся статьи с кричащими заголовками: мы не даем пустых обещаний и быстрых легких побед. Поэтому вы можете сперва попробовать курсы веб-разработки от Яндекс.Практикума , где первые 20 часов занятий – бесплатные. Так вы успеете понять, нравится ли вам разработка, прежде чем отправиться с нами в большое путешествие по смене своей профессии.*
*да, мы повторили сообщение из начала статьи для тех, кто дочитал. просто поразительно, какой вы любопытный человек! Специально для таких автор статьи даже рассекретил свое резюме .
Как научиться фронтенд-разработке, найти первую работу и не набить шишек
Время на прочтение
10 мин
Количество просмотров 40K
Фронтенд, возможное, лучшее и самое приветливое направление, чтобы войти в ИТ. Но с ним не все так просто — во фронтенде легко начать и трудно стать мастером. В нем не будет мук выбора языка программирования, но будет борьба с его недостатками. В этой сфере есть очень много инструментов, изучение каждого из которых тянет на освоение отдельной профессии.
О том, как правильно учиться, как не набить шишек и двигаться по карьере, мы расспросили у Олега Шикова, декана факультета веб-разработки в GeekBrains и у Дарьи Дьячковой, начинающей веб-разработчицы.
В 2015 году Дарья Дьячкова поступила в НИУ ВШЭ на факультет Мировой экономики и мировой политики потому что в школе больше всего любила языки — учила английский и немецкий, постоянно выигрывала олимпиады. Ей нравилась эта сфера, но не до блеска в глазах, поэтому Дарья продолжала искать будущую профессию. В 2018 году она пришла на день карьеры в одно из HR-агентств, после которого сменила направление в неожиданном направлении.
«Я прошла длинный психологический тест, где мне посчитали тип личности-склад ума и прочее. Не в обиду психологам, но я к таким тестам отношусь скептически. После теста мне сказали, «эх, программист пропадает» и предложили послушать выступление про переход в мир ИТ. Я пожала плечами, пошла — и зажглась».
Дома она начала гуглить, смотреть обзоры профессий. Раньше Дарья мастерила веб-странички на Tilda и Wix, вела свой блог-обзор международных новостей, поэтому подумала о фронтенде в первую очередь. Тем не менее она просмотрела все вводные вебинары профессий и языков программирования, попробовала написать маленький кусочек кода на нескольких языках программирования и выбрала JS, как самый близкий по духу.
Что делают фронтендеры
«Если вы открываете любую страницу в браузере, все, что вы видите перед собой на странице — это делают фронтендеры. Но на самом деле их работа намного сложнее одного внешнего вида», — рассказывает Олег Шиков, декан факультета веб-разработки в GeekBrains.
Олег писал код с детства. Первые эксперименты были на языке С, а в 2011 году он перешел на Javascript. Многое из того, что есть в технологии сейчас, тогда только зарождалось. HTML и CSS не имели больших возможностей, а в индустрии преобладал Flash. Профессия в целом была намного проще — всего лишь HTML-верстка и несложное оформление. Достаточно было писать теги и красиво их оформлять на CSS. Пользователи нажимали кнопку, и страница полностью обновлялась. Уходил запрос на сервер, сервер отдавал новую верстку. Но такой подход не позволял делать отзывчивый интерфейс.
«Задача фронтендера в наши дни — строить логику сайтов на стороне браузера», — говорит Олег, «Эта логика разрабатывается на языке программирования JavaScript. Современные сайты могут полностью работать на стороне клиента, делая запросы серверу лишь изредка, например, чтобы сохранить данные пользователя или загрузить необходимую информацию. То есть сейчас мы запрашиваем не полностью обновленную страницу, а только необходимую информацию, и грамотно ее отрисовываем в браузере. Благодаря такому поведению, сайты становятся отзывчивее и экономят часть трафика пользователя».
Учить фронтенд — это учить JavaScript?
Определившись с направлением, Дарья поступила на факультет веб-разработки в GeekBrains. В представлении многих обучение фронтенду слилось с изучением языка Javascript, но, как считает Олег Шиков — это не совсем верно.
«Первое с чего надо начать — это конечно HTML. Он предельно прост, с ним очень легко справиться, очень легко написать свой первый сайт. Конечно, он не будет отзывчивым, но он будет работать, и его уже можно будет выложить в интернет. Далее необходимо добавить этому сайту красивый внешний вид, чтобы это было не просто полотно текста, а удобная и красивая страница с визуальными элементами. В этом поможет CSS – каскадные таблицы стилей. Пары недель хватит, чтобы освоить и HTML, и CSS. А сразу после надо приступать к JavaScript, потому что он — основа основ для того, чтобы делать отзывчивый интерфейс».
Но когда к технологии приходит популярность, следом за ней идет море критики. Многие опытные разработчики один за другим вскрывают в своих докладах, выступлениях и статьях проблемы и языка и предлагают альтернативы. Новичка эти обсуждения могут только сбить с пути. Как считает Олег, начинать изучение фронтенда с других языков только потому, что их больше хвалят профессионалы, будет ошибкой.
«Несколько лет назад все дружно ругали PHP, сейчас все дружно ругают JavaScript, это такой мейнстрим. Конечно, JavaScript не без проблем, с этим никто не спорит. Но например, TypeScript (другой популярный язык от Microsoft, являющийся расширением возможностей JS) не выполняется в браузере сам — он переводится (компилируется) в JavaScript. Если мы что-то напишем на TypeScript, то все равно получим JavaScript, который уже выполнится в браузере. Чтобы грамотно отлаживать код необходимо знать JavaScript и уметь работать с браузером».
Но Дарья находит время, чтобы учить вещи, которые и не входят в программу.
«Я привыкла много учить и разбираться до конца, я из тех людей, кто читает все дополнительные материалы к статьям и делает доп.задания, потому что им просто интересно. Нахожу время осваивать, например, Nuxt.js, Typescript, Vue.js, Webpack и Stylus».
Что такое React, Vue и Angular и как их выбирать
Помимо Javascript и других языков от фронтендеров требуют знание различных инструментов для работы. На чистом JavaScript довольно сложно разрабатывать интерактивные отзывчивые интерфейсы веб-страниц без использования сторонних библиотек.
Библиотека — это тоже JavaScript код, уже написанный другими разработчиками. Он предоставляет удобный набор решений, чтобы выполнять заготовленные действия, которые регулярно требуются в работе. В вебе есть большое разнообразие таких библиотек, которые упрощают написание отзывчивых интерфейсов для веб-сайтов. В их числе самые известные — это React, Vue и Angular.
«Выбор между ними — сложный вопрос. Можно выучить все три. Это не сверхсложная задача, потому что когда поймешь, как работать с одним, каждый последующий будет учить проще. Но по моим наблюдениям, они используются немного в разных сферах. Angular — один из самых старых. Он чаще используется в корпоративном сегменте, на больших проектах, с поддержкой легаси кода, который был написан несколько лет назад. React используется повсеместно. Он первый в списке, когда пишут новые интерфейсы и веб-сервисы. Про Vue можно сказать, что он простой, молодой, крутой и мейнстримный.
Я бы советовал попробовать написать простую логику на всех трех фреймворках — условно говоря todo лист — на основании своих ощущений понять, какой нравится больше, и учить его. Либо посмотреть вакансии в своем городе, и выбирать, например, React, потому что большинство вакансий на фронтенд-разработчиков требуют знания именно React. Но переучиваться потом будет не сложно».
Дарья пишет приключенческие романы и разрабатывает на Nuxt.js справочник по вселенной своей книги. Еще она делает проекты и лендинги для своих друзей, поэтому выучила адаптивную верстку, медиа-запросы и прочее. «Я начала React.js, придумала проект на будущее, который хочу воплотить на React Native. Пока планирую архитектуру, рисую блок-схемами, и читаю про технологии, которые можно использовать».
Как проходит учеба
«Когда началось обучение, преподаватели все отлично объясняли – для меня важно выстроить полученные знания в систему. Домашние задания помогали закрепить навык, бонусом давали наводку где и что ещё поучить. Много читала и осваивала сама, смотрела руководства и мини уроки на YouTube. На GeekBrains всегда можно написать преподавателю или наставнику курса или своей группе в чат. Все помогут, объяснят. Если нашел интересную статью – тоже есть с кем поделиться и обсудить.
Думаю, ощущения, когда видишь свой первый Hello world, не забудет никто. Да и в целом, ощущения, когда сделал по макету красивый UI, а он ещё и работает – это драйв».
Учеба длится полтора года. Олег Шиков считает, что просто учить синтаксис — это скучно, поэтому учеба сразу строится вокруг проектов. «Мы даем базовые вещи, синтаксис, и сразу пытаемся применить их на практике, пишем простые веб-страницы. После этого мы даем PHP, тем самым обучая студентов бекенд (серверной) разработке. Некоторым начинающим разработчикам кажется, что достаточно выучить HTML с JavaScript, и этого хватит, чтобы стать востребованным на рынке. На деле не совсем так. Нужно знать архитектуру, алгоритмы, паттерны и фреймворки — и не просто знать. Необходима еще практика, надо написать свой продукт, поучаствовать в коллективной разработке».
В начале обучения студенты пишут код по отдельности, проверяя его с преподавателем, а к середине обучения начинают разрабатывать продукт вместе со своими одногруппниками, благодаря чему получают опыт командной разработки.
Помимо учебы Дарья любит заниматься на платформе Kodiri.com, где проходят международные соревнования по JS. «Там можно тренироваться и одному, решать задания на время, точность и красоту кода. Я познакомилась с основателем платформы Рикардо — он классный парень. Теперь пишу для них задачки. К каждому заданию я прикладываю эталонное решение и тесты (так я, кстати, начала писать юнит тесты). Мне забавно соревноваться с другими игроками, когда вероятность, что хотя бы одно из пяти заданий будет твоего авторства ≈0.94. Да, я посчитала, мне было любопытно, почему я так часто их встречаю. Свои честно решаю и в ответы не смотрю. Захватывает элемент геймификации, я уже получила высшие погоны (Императорское Величество), теперь осталось подвинуть Юраша как лучшего игрока месяца. Этого элемента игры и духа соревнования в обучении мне недоставало, в целом, думаю, стоит добавлять подобные возможности в образовательные платформы. Несколько дней задачек Kodiri на скорость, и я во сне напишу arr.map(e =>».
Поиски первой работы
На каком этапе начинать поиски работы — очень спорный вопрос в индустрии. Одни убеждены, что только годы обучения и проработки теории на практике в безопасных условиях дают человеку право просить деньги за разработку. Другие наоборот — что учиться надо работая на настоящей работе. По словам преподавателя многие студенты идут по второму пути.
«Я знаю студентов, которые получали первые заказы или устраивались в фирмы на третей четверти. Они продолжали обучение, совмещая его уже с работой. Все зависит от человека и его способности учиться. Начинающему разработчику проще устроиться в маленькую компанию, чем в большую. В компаниях вроде Mail.ru или «Яндекс» строгий отбор. Далеко не каждый опытный разработчик сможет туда устроиться. Но попытать счастья, конечно, может каждый».
Когда у Дарьи за плечами было полгода обучения и резюме-портфолио в форме сайта, она прошла несколько собеседований, но навыков устроиться фронтенд разработчиком ей не хватило.
«На первом собеседовании было страшно. Я откликнулась на вакансию фронтенд разработчик Vue. Готовилась тщательно, повторила весь материал JS и Vue, и все что выучила за полгода GeekUniversity, разобрала tricky questions и всякие мелочи, где JS ведёт себя непредсказуемо. Собеседование проходило по Skype. Небольшая компания, сразу техническое интервью, минуя HR. Я бодро отвечала на вопросы, мы говорили целый час… а потом оказалось, что они всё-таки искали фулстек разработчика. Бывает».
На Хабр Карьере вы можете посмотреть свежие вакансии для фронтендеров и подписаться на рассылку новых.
«Джуниор-разработчикам задают простые вопросы, чтобы убедиться, что они знают основы», считает Олег, — «Я бы спросил про адаптивную и семантическую верстку, про то, как работать с чистым JavaScript. Сейчас тренд на фреймворки и библиотеки, те же React, Vue и Angular, а «ванильный» JavaScript без дополнительных библиотек — его не все знают. Я бы хотел убедиться, что разработчик знает, как с ним работать, а не сразу кинулся в лагерь условного React.
В любом случае вам придется потратить какое-то время, чтобы откликаться на разные вакансии, проходить разные собеседования. Проходить их — это тоже определенный опыт и навык. Отказы — это нормальная ситуация, бояться вообще не нужно»
«Спустя ещё два собеседования мне порекомендовали продолжить обучение и попробовать снова позже. Нужны были и общие знания — протоколы, архитектурные решения и прочее. Я и сама понимала, устраиваться было рано. Поэтому нашла классную смежную работу с ИТ — устроилась инженером технической поддержки в Букмейт. В обязанностях отвечать читателям на вопросы по работе приложения и сайта, что-то мелкое советовать как чинить, на проблемы покрупнее оформлять баги в JIRA и Confluence. Плюс, теперь отлично представляю, как обычные пользователи юзают UI/UX нашего приложения. Подсказка, «это не баг, это фича». Или когда разработчики хотели как лучше, а пользователи не поняли, как это и зачем.
Хороший шанс посмотреть на обе стороны — как пользователи юзают приложение, и как разработчики его развивают и чинят».
Как развиваться в профессии
— Я бы советовал развиваться в фулстек-разработчика, знать и бекенд, и фронтенд. Если же говорить только про фронтенд, то — хоть и необходимо хорошо знать JavaScript — без фреймворков никуда. Их надо учить.
На TypeScript стоит посмотреть, хоть его и не требуют во всех вакансиях. На самом деле он интересный, и JavaScript-разработчику выучить его очень просто. По факту это тот же самый язык с дополнительными фичами, которые позволяют писать более надежные системы. TypeScript добавляет в язык явную систему типов, которая позволяет сказать, что эта переменная будет числовая, а эта переменная — строковая.
В чистом JavaScript такого нет, там переменная может иметь любой тип, и это иногда приводит к ошибкам. Вы ожидаете число в переменной, а получаете, например, строку или объект, и у вас из-за этого ломается логика работы программы. TypeScript помогает избежать такой ошибки.
Сейчас многие смотрят в сторону PWA. Дело в том, что, как я уже говорил, рынок смартфонов огромный. Большинство пользователей, которые заходят к вам на сайт, с большой вероятностью делают это с телефона.
PWA (Progressive Web Applications) — это сайты, которые имеют дополнительные возможности, позволяющие удобно работать с ними в том числе со смартфона. Например, на андроиде PWA-сайт можно добавить себе на на стартовый экран и запускать, просто нажимая иконку. Есть возможности, которые позволяют улучшить сайт так, что он будет работать, даже когда на смартфоне нет интернета. То есть, это практически нативное приложение. Недавно Google выпустил обновление Google Play, благодаря которому вы можете добавить свой PWA-сайт в магазин, и пользователи смогут его скачивать и обновлять как обычное нативное приложение, которое почти неотличимо от обычного, написанного, например, на Java. А на самом деле оно написано на JavaScript и сверстано с помощью HTML.
Зарплаты
Медиана зарплаты фронтендера-стажёра находится на уровне 35 тысяч рублей. Специалист младшего уровня может рассчитывать на 50 тыс., миддл — уже на 97 тыс. Синьор и лид получают в среднем 170-190 тысяч рублей.
По данным калькулятора зарплат Хабр Карьеры средняя зарплата фронтенд-разработчика составляет чуть менее 110 000 рублей (диаграмма кликабельна).
Что почитать и посмотреть для самостоятельного изучения
Онлайн:
- Сайт по изучению JS learn.javascript.ru
- Сайт по изучению паттернов refactoring.guru/ru
- Очень удобная песочница JS и HTML/CSS прямо в браузере с возможностью делиться результатами своей работы — jsfiddle.net
Книги непосредственно про JS и HTML/CSS:
- You Don’t Know JS (есть перевод на русский „Вы не знаете JS“)
- »HTML5. Недостающее руководство”. Мэтью Макдональд
- «Большая книга CSS3». Дэвид Сойер Макфарланд
- «JavaScript. Подробное руководство». Флэнаган Дэвид
- «JavaScript. Шаблоны». Стефанов Стоян
- «JavaScript. Оптимизация производительности». Закас Николас.
Книги по программированию:
- «Объектно-ориентированное мышление». Мэтт Вайсфельд
- «Совершенный код». Стив Макконнелл
- «Изучаем SQL. Линн Бейли или MySQL 5». Игорь Симдянов, Максим Кузнецов
- «Регулярные выражения». Фридл Джеффри
- «Приемы объектно-ориентированного проектирования. Паттерны проектирования». Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес
- «Чистый код». Роберт Мартин
- «Компьютерные сети». Эндрю Таненбаум, Дэвид Уэзеролл
- «Современные операционные системы». Эндрю Таненбаум, Херберт Бос
- «Алгоритмы. Построение и анализ». Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн.
Ученик
(6),
закрыт
4 года назад
Дополнен 4 года назад
Я владею: HTML, CSS, Photoshop, адаптивной вёрсткой и начальным уровнем JS. В планах изучить JS полностью + react js + какую-нибудь CMS. Но с текущей ситуацией с поиском работы мотивация уходит даже не в ноль, а далеко в отрицательные значения… Всё учишь и без толку. Требования только растут. А платить выше 20к за такое мало где хотят.
Дополнен 4 года назад
Если что, имеется портфолио из 12 сайтов.
Татьяна Шеховцова
Искусственный Интеллект
(270414)
4 года назад
Если для вас это дичь – самое время всё забросить, т. к. учить придётся всю жизнь (даже во время работы постоянно учить новое)
А опыт нарабатывается за копейки или вообще забесплатно
Дмитрий СмирновУченик (6)
4 года назад
Не спорю про учёбу всю жизнь, это понятно. Но даже для начала карьеры приходится потратить колоссальное время на изучение всего этого. И это убивает больше всего.
IT специалист гений инженер
Мастер
(2455)
4 года назад
Найди человека который поможет с этим, нужны знакомые ток через них устроишься на работу, но прежде ты должен показать свои работы, создай несколько сайтом самостоятельно при собеседовании покажи им свои работы. В начале много не получишь пока не докажешь на что способен
ivtst1
Просветленный
(30461)
4 года назад
Ну а что ты хотел. Программистами не рождаются. И этому не учат. Для этого нужен своеобразный склад ума, куча терпения, времени и огромное желание. Это только для начала…
А вообще, я ты тебе посоветовал, не сразу в программисты идти, а в начале в смежную область, в тестировщики к примеру. Там требования гораздо ниже, но и если ты чего-то стоишь в программировании, то тебя заметят и сделают программистом и получишь реальный опыт.
А я так вообще влез в эту тему без профильного образования. По образованию физхимик. Но было огромное желание и интерес. Начал с тестировщика оборудования и в той же первой конторе уже перешел в программисты. Первый опыт и знания языков приобретал дома. Самый лучший способ, на мой взгляд, это ставить перед собой конкретные задачи и их реализовывать, попутно изучая как.
Выпускники курсов по JavaScript часто спрашивают, что делать после обучения. Где искать работу? Какую область разработки выбрать?
После раздумий на эту тему, обсуждения с коллегами и рассказов заинтересованных выпускников я составил набор опций, который, на мой субъективный взгляд, поможет успешно найти работу, а заодно и разобраться, в какой области разработки ПО лучше живётся.
Некоторыми рекомендациями очень просто воспользоваться, некоторыми сложнее. Они отсортированы по субъективной степени сложности реализации, но как на самом деле — станет понятно только на практике.
Сложность 0/10. Ничего не делать
Есть мизерный, но всё же отличный от нуля шанс, что наставник, с которым вы работали на курсе, порекомендует вас в свою компанию. Таких студентов мало, и если вы один из них, скорее всего, вы уже знаете о таком развитии событий ещё до окончания защиты.
Для остальных есть целый ряд идей, как повысить шансы устроиться на работу в интересную компанию.
Сложность 1/10. Используйте бесплатные онлайн-конференции
Во время пандемии можно найти онлайн-конференцию на любую тему. Внимательно слушайте доклады — это позволит вам лучше понять, интересен ли вам фронтенд, робототехника, умный дом, искусственный интеллект, веб-дизайн или создание новых языков программирования.
Например, посмотрите расписание митапов на сайте Dev.Events. Среди запланированных событий вы найдете немало бесплатных в любом разделе разработки.
Результатом участия в таких мероприятиях для вас будет не только лучшее понимание той области, где вы хотите применить свои умения, энергию, но и знакомство с интересными докладчиками, с их взглядами, идеями и предпочтениями.
Сложность 2/10. Учите английский язык
Все мы с детства знаем анекдоты о том, что у врачей неразборчивый почерк. Еще мы знаем что профессиональный язык врачей — латинский. В нашей профессии эту роль выполняет английский язык.
Конечно, есть необычные исключения, когда исходный текст программы пишется кириллицей, но, согласитесь, это исключения. В основном и модные, и популярные, и экзотические языки программирования, учебники к ним и примеры использования легче найти на английском.
В вашем смартфоне наверняка найдется местечко для тренажёра по английскому языку. Выделяйте ему немного машинного времени процессора вашего телефона и вашего мозга. Занимайтесь регулярно и быстро заметите, как осваиваете язык.
Сложность 3/10. Общайтесь не только напрямую с работодателями, но и с рекрутерами
Возможно, прямо сейчас у рекрутера заказали специалиста именно с вашей компетенцией. Возможно, закажут в будущем. Оставляйте сведения о себе, обновляйте их регулярно. Хорошие места для виртуальных контактов с рекрутерами в IT — LinkedIn, Хабр Карьера, ваши профили в StackOverflow и на GitHub. Проявляйте желание, будьте активными, и вас обязательно заметят.
Как стать ценным сотрудником и вырасти в компании
Сложность 4/10. Рассказывайте о своих идеях и находках в социальных сетях
Думаете, что знаете слишком мало? Скорее всего, это не так. Оглянитесь в недалёкое прошлое — как много вы узнали за последние полгода? Кто-то ещё только начинает движение по вашим стопам, а вы уже умеете и верстать, и программировать.
После того, как вы побываете на виртуальных конференциях и послушаете презентации, у вас наверняка появится собственный взгляд по изложенным темам. На конференциях участники задают вопросы, и часто эти вопросы вы бы сформулировали по-другому. Сделайте это. Расскажите о своей идее единомышленникам Вконтакте, на Фейсбуке или в Телеграме — в социальных сетях вы без труда найдёте группу по интересам. К примеру, есть форум по JavaScript в VK и в группе академии, а ещё чат сообщества Академии.
С помощью рассказов о своих идеях вы тренируетесь извлекать идеи из своей головы (а идеи в голове всегда есть) и доносить их до коллег. Работодатель заинтересован в том, чтобы сотрудники умели взаимодействовать с коллегами
Сложность 5/10. Обсуждайте ответы на вопросы на StackOverflow
Работает так — вы находите вопрос, который вам интересен, изучаете его и комментируете. Если пока учите английский, используйте русский (но для тренировки можете пробовать составлять ответы по-английски). Участвуйте в обсуждениях на StackOverflow. Пробуйте рекомендованные ответы, отмечайте хорошие. Задавайте свои вопросы.
Если разработчик работает, то он почти каждый день ищет ответ на какой-нибудь вопрос. Пробуйте задавать вопросы на SO. Ваша карма в этом сообществе много скажет вашему потенциальному работодателю.
Сложность 6/10. Ходите на онлайн и офлайн-собеседования.
Умение проходить собеседования — тоже навык, а пройти собеседование — задача. Эту задачу тоже надо уметь решать.
Желательно решать похожие задачи регулярно и регулярно проходить собеседования, поэтому никогда не отказывайтесь от приглашений, даже если вы уже работаете. Используйте этот шанс для получения психологической устойчивости и улучшения навыков общения.
Когда однажды в получите приглашение на собеседование от большой компании, вы уже будете чувствовать и вести себя уверенно и соответствовать статусу этой самой компании.
Сложность 7/10. Делайте проекты публично, под запись, например, на Ютубе
Любые проекты, которые придут в голову. Даже если вы повторяете React-redux counter, вы всегда привнесёте что-то от себя. Если комментирование в микрофон собственных действий не ваш конёк, делайте задачки и выкладывайте их на гитхаб.
Ещё вы можете найти целый ряд тренировочных задач и заниматься ими. Оформляйте каждую задачу как проект, по критериям и с использованием eslint, так, чтобы вам было приятно и понятно читать ваш код через месяц. Пробуйте даже в простейшую задачу добавлять работу с инструментами, такими, как модульное тестирование.
Верно говорят, что на каждого поющего хотя бы пять человек слушающих, да найдется.
Сложность 9/10. Предлагайте вклад в Open Source проекты.
Изучайте чужие проекты с открытым кодом, предлагайте PR. Это может быть опечатка, фича, нереализованная из-за нехватки рук, или модульный тест. Вы получите приятное ощущение принадлежности к сообществу, получите огромный опыт и знания
Это и самая сложная, и одновременно самая простая рекомендация. Начните с инструкции по первому вкладу в проект, и дальше всё получится. Может оказаться, что не вы будете искать работу, а компании будут стоять в очереди за вашей экспертизой.
Сложность 11/10! Наймите себя на работу сами
Когда вы научили себя генерировать идеи, общаться с коллегами и большими компаниями, создавать чистый и легко поддерживаемый код, тогда вы находите инвесторов, создаете свою собственную компанию и нанимаете себя на работу. Но эта рекомендация из другого раздела.
Да и HTML Academy всё равно гарантирует трудоустройство выпускникам профессии — так что оставьте этот сложный вариант на крайний случай
Ещё по теме
- Как провалить собеседование
- 17 ошибок, которые испортят любое резюме
- 10 правил онлайн-собеседований
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
ТелеграмПодкастБесплатные учебники
Вот я и закончил профессию «Фронтенд-разработчик» на Хекслете. На руках заветный сертификат, но это только начало.
- Знакомство с вёрсткой
- Интенсивы
- Про Хекслет
- Про резюме и трудности при смене профессии
- Про собеседования
- Про проекты на Хекслете
- Про Open Source
- Заветная работа
- Благодарности
Меня зовут Евгений. По образованию я инженер КИПиА. Моя основная работа связана с обслуживанием различных систем автоматики. В основном, это инженерные системы. Автоматизация вентиляции, отопления, обслуживание измерительных датчиков. Но в мою работу входило также и программирование промышленных контроллеров. Для меня это всегда была самая сложная и интересная работа. Но так вышло, что со временем на работе таких задач стало все меньше, и я больше занимался техническим обслуживанием инженерных систем и поддержанием их рабочего состояния. Мне стало скучно. И я решил, что хочу больше заниматься именно программированием.
Свой путь в «большое» программирование я начал в 2015 году, когда вдруг осознал, что действительно хочу стать разработчиком. Тогда я начал активно читать «Хабрахабр», при этом большую часть статей я не особо понимал, но все равно было очень интересно. Нужно было выбрать первый язык. Я пошерстил интернет на эту тему, перечитал уйму разных статей — и выбрал Python. В качестве курсов я выбрал Codecademy и начал читать Марка Лутца «Изучаем Python». Даже поставил себе цель на SmartProgress и каждый день описывал свой прогресс. Вот ссылка. Курсы на Codecademy оказались довольно поверхностными, а книга Лутца очень объемной.
Тогда я начал искать какие-то дополнительные ресурсы для изучения программирования, наткнулся на Хекслет и даже зарегистрировался на нем. Но учиться на нем тогда не начал, потому что на тот момент меня больше привлек сервис Checkio.org. У него был очень клёвый дизайн и много интересных задачек по Python.
Чтение Лутца, курсы на Codecademy и решение задач на Checkio, отписка на SmartProgress — в таком вялотекущем режиме прошел мой 2015-й год. Прогресса особого не было, нужно было писать какой-то свой pet-project, чтобы применять полученные знания. Но я не знал как. И забросил это дело.
Знакомство с вёрсткой
В 2016 году я озадачился тем, что хочу сделать собственный сайт, но не знаю как. Тогда я хотел запустить свой бизнес — конечно же в интернете. Собирал сайт на конструкторе, пробовал установить WordPress и сделать что-то на нём. Я хотел, чтобы всё было красиво, а получалось либо коряво, либо результат меня совсем не устраивал. Тогда я понял, что мне нужно изучить вёрстку. Я нашел Html-Academy и её интерактивные курсы — и меня затянуло. Я прошел все бесплатные курсы и даже на месяц купил подписку. Всё это обучение шло параллельно с основной работой. Тогда я начал верстать свои первые макеты, стало что-то получаться. Так прошел весь 2016 и половина 2017 года. Когда HTML и CSS я более или менее освоил, то понял, что совсем не знаю JavaScript. Я выбрал его как основной язык и начал активное изучение. Начал с книги «Eloquent JavaScript», тогда же я стал больше смотреть тематических видео на YouTube.
В это же время я понял, что хочу ближе познакомится с IT-тусовкой. Я каждую неделю слушал подкасты по фронтенду, стал сначала посещать местные митапы, затем — бесплатные конференции.
Интенсивы
Мое обучение шло довольно медленно. И я решил, что мне не хватает практики и командной работы. В начале 2018 года я принял решение пройти базовый курс по вёрстке от Html-Academy. Даже не смотря на то, что вёрстку на тот момент я более или менее знал, выбрал именно базовый курс — но самый сложный макет. Курс оказался очень интересным и насыщенным. На выходе я получил свёрстанный интернет-магазин, который не стыдно было положить в портфолио. Но так как на тот момент я уже больше изучал JS, а на втором курсе академии была продвинутая вёрстка, я купил интенсив от Loftschool. Потому что в нём, судя по описанию, было больше JavaScript и еще давали Vue.js. Летом я закончил этот курс, где сделал за все время собственный сайт-портфолио и немного изучил Vue. Но всё равно чего-то не хватало. Было много практических заданий, но как будто не было прочных фундаментальных знаний. В тот момент я начал активно читать Slack Хекслета и смотреть лекции на YouTube. И меня очень сильно зацепило. Я понял — вон оно, это именно то, что мне нужно! И с 1 сентября, я, как прилежный ученик, начал проходить курсы на Хекслет.
Про Хекслет
Я выбрал профессию «Фронтенд-JavaScript» и поставил себе цель — полностью пройти профессию и завершить все проекты. Что больше всего меня поразило, так это то, что на самом базовом курсе «Введение в программирование» даются очень глубокие фундаментальные знания. Особенно мне понравился сам формат обучения. Небольшая лекция и сразу практическая задача. Это позволяло учиться в комфортном режиме. Что было, как бальзам на душу, по сравнению с 2-х часовыми вебинарами на других курсах. Уровень практических задач заставлял мой мозг сильно напрягаться. Это не было похоже на Codecademy, плюс много непонятных терминов — СИКП, пары cons, car, cdr, рекурсия, каррирование. Что это вообще такое? Курс «Введение в программирование» пролетел незаметно. Я, не раздумывая, оплатил подписку и продолжил свой путь.
Мне очень понравилось, что если ты не можешь долго решить задачу, к каждой есть топики. В них можно задать свой вопрос, либо найти чей то ответ, который подтолкнёт тебя к верному решению. Также у Хекслета очень дружелюбное комьюнити в Slack — можно задать свой вопрос там. Спасибо всем ребятам, кто не раз помогал мне, когда я упирался в проблему. Единственное, чего мне не хватило для более качественного обучения — личного наставника, к которому всегда можно обратиться за советом. Но насколько я знаю, у Хекслета уже есть такая возможность.
Про резюме и трудности при смене профессии
Работу программистом я начал искать в середине 2018 после окончания курса на Loftschool. Для начала нужно было составить резюме, и я решил оформить его на «Мой круг». В резюме я указал все свои учебные проекты и желаемую должность — frontend-разработчик. Но одного сервиса «Мой круг» было недостаточно, так как основная площадка для поиска работы — это HH. Вот тут начались проблемы — у меня уже было резюме на HH по основной специальности, я решил создать новое. Но с новым резюме я никак не мог пройти модерацию, потому что постоянно прилетал отказ.
Когда ты меняешь профессию, HH обязательно требует указывать твоё предыдущее место работы. На тот момент я этого не знал, поэтому в новом резюме указывал только учебные проекты и как последнее место работы — фриланс. Тогда я действительно занимался фрилансом — делал сайты для бизнеса для своих друзей. В конечном счёте, в резюме я добавил два последних места работы по специальности, а в разделе «О себе» подробно описал почему я решил сменить профессию. И моё резюме приняли.
Используя эти две площадки, я начал мониторить рынок и откликаться на вакансии. Я принял решение сразу позиционировать себя как frontend-разработчик — без приставок junior. На основной работе у меня был хороший доход, поэтому при смене профессии я решил, что буду искать примерно такой же уровень. Но тогда я еще был готов к просадке в 20% на начальном этапе.
Но всё изменилось в конце 2018 года. У меня нет собственного жилья, а мы с женой жили на съёмной квартире. В конце года у нас родился сын, и жилищный вопрос встал особо остро. Мы купили квартиру в ипотеку. Маленький ребёнок и ипотека — это самые большие статьи расходов и большая ответственность. Поэтому при поиске работы программистом я уже не мог позволить себе просадку и искал зарплату, которая равнялась бы основному доходу. Это накладывало определенные ограничения. Не каждый работодатель готов платить такую сумму за человека, у которого в портфолио только учебные проекты, но я не сдавался и продолжал уверенно идти к своей цели — активно откликался на все вакансии, которые мне попадались. Поначалу были сплошные отказы и первые отклики пошли не сразу, — но все-таки они были. И вот спустя 3 месяца меня приглашают на первое собеседование.
Про собеседования
Первое приглашение на собеседование я получил в какую-то аутсорсинговую компанию. Они занимались разработкой софта для банковского сектора и даже игр. Но это было не техническое собеседование, а скорее общее с HR и директором компании. В целом оно прошло гладко — из вопросов я больше всего запомнил часть про методологию scrum, agile (про них я ничего не знал). А также у меня спросили почему Vue, а не React? Мне не перезвонили, и я продолжил свои поиски.
Второе собеседование было в компанию, которая разрабатывала софт для государственных заказчиков. На этот раз это было чисто техническое собеседование. Собеседовал меня один на один тимлид компании. Гонял по всем вопросам — HTML, СSS, Git, performance, как работает браузер, сети, HTTP, JavaScript, Vue.js. На первую половину вопросов я ответил довольно бодро и уверенно. А когда пошли более глубокие вопросы по JS и Vue — начал немного плавать. В целом я оказался крайне доволен этим собеседованием, так как прошёл его достойно. Тимлид дал мне положительный фидбек и готов был взять на работу — нужно было согласование с hr и бизнесом. Но у них оказались другие планы. Через два дня на созвоне с HR она мне отказала, по причине того, что у меня нет коммерческого опыта разработки. И за такую сумму они не готовы меня нанять, так как им легче найти на рынке студента с меньшими амбициями. Я не сильно расстроился и продолжил искать дальше.
Летом 2019 на меня выходит HR крупной туристической компании и предлагает работу. Я соглашаюсь на скайп-интервью. Беседа с техническими специалистами показала, что они не очень уверены в моих знаниях и предложили выполнить тестовое задание. Я согласился. Нужно было реализовать небольшое SPA-приложение на Vue — корзину покупок. Две недели я активно делал это задание и старался сделать его максимально качественно. Я по максимуму прилизал приложение и задеплоил его на Github pages. Не успел только написать тесты, и отправил на проверку.
Неделю я ждал от компании ответа. Первично они оценили его положительно, но взяли время для окончательного принятия решения. И вот, спустя неделю, я получаю от них на почту свой первый оффер! Я был немного ошарашен. В оффере говорилось, что они по достоинству оценили мое тестовое и выбрали в качестве финального кандидата меня. Зарплату мне предложили такую же как на моей основной работе. Всё выглядело просто шикарно, но меня накрыл страх. Мне вдруг резко стало страшно. Страшно уходить с текущей работы, здесь я всё знаю, все стабильно. Что ждёт меня там? Я же ничего не знаю. Ничего не умею. А вдруг я не справлюсь? А вдруг меня уволят? Как я буду платить за ипотеку? Все эти вопросы роем кружились в моей голове и я, как будто находился в оцепенении. Я не знал что мне делать. Я созвонился с HR и начал более подробно расспрашивать про компанию и про работу.
Оказалось, что у компании сейчас нет свободных мест в офисе и на время, пока они ищут офис побольше, мне предлагали поработать месяц или два на удалёнке. Также в компании была очень маленькая белая зарплата, всё остальное чёрным налом. Эти два фактора очень сильно меня смутили и только усилили мои переживания. Какая удаленка, я же искал офис? Как я буду коммуницировать с командой? Я же зелёный джун, а вдруг я не справляюсь с задачами и не у кого будет спросить совета? Чёрная зарплата, — а вдруг мне выплатят не всю сумму или лишат за что-то? Все эти вопросы только усилили мою неуверенность в себе и в компании. И я отказался. Зато я получил бесценный опыт. Я понял, что даже джуном можно найти достойную зарплату, если грамотно подойти к выполнению тестового задания.
Поиски работы продолжились. После этого было еще несколько собеседований, всех уже не вспомнить. Но больше всего я запомнил своё самое провальное собеседование. Это была небольшая компания, которая занималась логистикой. Я нашел их на HH и откликнулся, даже не смотря на странный стек. На клиенте они использовали Backbone, Marionette, MVC-архитектуру. Меня позвали на собеседование. Не то чтобы я прям хотел работать в этой компании, скорее наоборот. Я согласился только ради опыта собеседования. Все пошло не по плану с самого начала — меня завели в переговорку и попросили подождать. Собес проводили сразу три разработчика, должности их я не знал. Они начали сразу немного в агрессивной форме. После вопросов обо мне, начали указывать мне на баги, которые нашли в моих учебных работах. И говорили об этом в ироничном ключе. Я сразу стал жутко переживать, и чувствовать себя неловко. Отвечая на один вопрос, меня могли перебить и тут же задать другой. Сложилось впечатление, что разработчики тешили своё ЧСВ. Потом мне дали самую простую задачку. Написать на листочке функцию анаграмму. Я конечно же знал, как перевернуть строку, но так как изначально я сильно растерялся, захотел почему то решить её именно через рекурсию. Но шестерёнки в моем мозгу, как будто заклинило, и я даже не смог выдать рабочее решение. Я попросил другую задачу, но опять же не смог её решить. В итоге интервьюер сказал, что собеседование на этом закончено. И поглумился над тем, что я джун, а прошу такую большую зарплату. Вот такой был факап. Но я не расстроился. Этот случай наоборот придал мне уверенности, и я продолжил свои поиски.
Про проекты на Хекслете
Параллельно с поиском работы я продолжал активно учиться на Хекслете и проходить проекты. Первый проект оказался не таким сложным — самое трудное было настроить окружение, CI/CD, разобраться, как работает npm, как опубликовать пакет и записать asciinemу. Проект который взорвал мой мозг — вычислитель отличий, вот где по-настоящему пришлось попотеть. Помню, были моменты, когда ты открываешь шаг и просто не понимаешь, как к нему подступиться. Это было больно — но через эту боль я чувствовал, что расту.
Самый интересный момент произошёл со мной в начале 2020 года. В начале января я оплатил четвертый проект. В то же время в Slack-канале job я увидел интересное объявление, которое меня заинтриговало, где пользователь Михаил запрашивал помощь в разработке Open Source проекта конференции IT Global Meetup. Стек: React, Storeon, Parcel. Опыта в опенсорсе у меня не было. Единственный PR, который я сделал – были примеры тестовых для hexlet/ru-test-assignments. Я тогда только закончил курсы по React/Redux, но не писал на этих технологиях. Я написал Михаилу, что так мол и так. Такой то опыт — готов помочь. И оказался в деле. Также со мной в команде оказались ребята из Slack-комьюнити Хекслета.
Про Open Source
Проект я тогда отложил и погрузился в этот Open Source. Мы работали с ребятами в команде, проводили совместные созвоны, распределяли задачи через issues на GitHub. Постоянно обсуждали какие-то решения в нашем телеграм-чате. В общем — это была настоящая командная работа. Не все фичи, которые мы разрабатывали, попали в итоге в продакшен, но с горем пополам этот проект был запущен. Конечно, пандемия коронавируса внесла свои коррективы в работу конференции IT Global Meetup, но это уже другая история. Этот проект очень сильно мне помог. Я почти сразу добавил его первым пунктом в своё резюме. И на всех последующих собеседованиях выглядел уже более привлекательно для работодателей.
Мой совет всем новичкам — не бойтесь опенсорса. Хотите получить реальный опыт работы, но не знаете как? Open Source — ваш лучший выбор! Даже сейчас я стараюсь находить свободное время и контрибьютить в опенсорс. Например, в проекты Хекслета.
Заветная работа
В марте этого года мне неожиданно прилетает письмо на почту, примерно такого содержания. «Евгений, ваше резюме на HH еще актуально? Ищем сейчас фронтендера. Требования — такие…, задачи…, условия…. Смотрю на лейбл отправителя — компания «Газпромнефть». Я был заинтригован и тут же дал ответ — мол да, актуально. Списываемся в телеге, созвон, мне рассказывают более подробно про проект и стек. Звучит интересно, я договариваюсь на этот же день на собеседование. Приезжаю к ним уже через полтора часа. Беседую с руководителем и бекенд-разработчиком. По технологиям расспрашивает фронтендер. Всё проходит очень гладко. Мне задают вопрос, в случае успешного рассмотрения, через какой срок я готов выйти на работу ? Я говорю, что минимум через две недели. Прощаемся. На следующий день звонок. Евгений — твою кандидатуру утвердили. Радуюсь в душе. Ура! Меня готовы взять. Но вида не подаю. Говорю, что готов к ним выйти, но чтобы запустить процедуру увольнения, хочу получить от них официальный оффер. Мне говорят, что контора крупная и всё идёт через бюрократию долго. Я понимаю, что возможно ничего мне не светит в данной ситуации и тупо забиваю. Тем более в самом разгаре началась пандемия коронавируса и карантин. Продолжаю дальше ходить на свою работу и параллельно откликаться на вакансии. Каково же было моё удивления, когда спустя почти месяц, мне прилетает на почту официальный оффер. С требованием принять решение до конца дня. Снова всё тот же страх накатывает на меня. Сердце бешено колотится в груди, и я судорожно решаю, что же мне делать. Трезво оценив ситуацию и посовещавшись с женой, я понимаю — что это мой шанс и его нельзя упускать. Я же так давно его ждал. Я подписываю оффер и в этот же день пишу заявление на увольнение. Я прыгнул в омут с головой и ничуть об этом не жалею.
Читайте и другие истории успеха:
Решить первый проект во сне и стать программистом, или Как Хекслет подарил мне состояние потока
В итоге я работаю фронтенд-разработчиком в крупной компании, которая занимается цифровыми решениями. У меня интересный проект, связанный с большим объемом данных и их визуализацией. Мой стек на текущей работе: Vue.js, Vuex, Vue-router. Выучил я его, потому что активно использовал для выполнения тестовых заданий. Но данный стек — не приговор, в свободное время я пишу на React.
После того, как выходишь на рабочее место, нужно постоянно продолжать учиться. Конечно, ты учишься во время работы, но лучше расширять свой кругозор и попробовать другой язык программирования. Или пройти другую профессию на Хекслете. Сейчас я работаю на удаленке, поэтому все коммуникации с командой происходят в мессенджерах. Приходится очень быстро учиться, а также разбираться в предметной области, чтобы лучше понимать требования заказчика.
Благодарности
В конце своей истории я бы хотел высказать благодарность всем участникам проекта Хекслет. Ребята делают крутой продукт, который готовит на выходе настоящих специалистов. Этот проект я дико рекомендую всем своим знакомым, кто интересуется темой программирования и хочет попробовать себя в профессии. Я, кстати, уже даже привёл несколько человек.
Хекслет помог мне посмотреть на мир программирования под другим углом, я стал глубже разбираться в фундаментальных основах и по-другому анализировать и решать инженерные задачи. Также хотел сказать огромное спасибо наставникам и всем участникам комьюнити в Slack. Ребята — вы супер! Мои планы на будущее не ограничиваются фронтендом. Я собираюсь пройти профессию по бекенду и поглубже изучить Node.js. В свободное время продолжу контрибьютить в Open Source проекты.
Мой совет всем, кто только в начале пути. Ребята, верьте в себя! Ставьте себе цель и потихоньку идите к ней. Старайтесь выделять на обучение хотя бы 30 минут в день. Как можно раньше ходите на собеседования. Слушайте подкасты и посещайте конференции. Не зацикливайтесь на технологиях и расширяйте кругозор.
Таков мой путь. Он был не быстрым, но его надо было пройти.
Никогда не останавливайтесь:
В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях