История успеха, или как отчислиться из университета, но всё равно стать фронтенд-разработчиком

Всем привет! Я очень давно пытался собраться и написать свою историю успеха, и кажется, время пришло! Меня зовут Леша, и я уже почти два года как фронтенд-разработчик. Это моя история о том, как я сумел преодолеть все трудности и вкатиться в эту профессию.
Содержание
- Жизнь «до» и учеба в университете
- Первая ступень обучения и первая работа
- Учеба на Хекслете
- Вторая работа
- Послесловие и советы
Жизнь «до» и учеба в университете
Кем я только не работал в жизни: разнорабочим на заводе, инженером по ремонту компьютеров и ноутбуков (рассказывал об этом у себя в твиттере), инструктором и помощником администратора в боулинг-клубе, аниматором на точке с шлемом виртуальной реальности Oculus Rift, рабочим у ландшафтного дизайнера, рабочим на стройке.
Вообще, куда я только не хотел поступать после школы. Сначала — в академию МЧС, начал заниматься своей физической подготовкой, и даже нашел знакомого, который эту академию уже заканчивал, он давал советы о том, как проще поступить. Потом эту идею я отбросил и захотел стать врачом — ходил на подготовительные курсы в медицинскую академию, но с химией у меня сложились тяжелые отношения, поэтому от идеи стать врачом тоже пришлось отказаться. Хотел стать и журналистом — благо вовремя понял, что журналистики в России нет и жизнь журналиста тяжела и неказиста (почти как программиста, но платят намного меньше).
Когда пришла пора принимать окончательное решение, остановился на направлении «Информатика и вычислительная техника» в Вятском Государственном Университете. Там же учился мой отец, и вообще — компьютер был у меня с самого детства, даже тогда, когда ни у кого еще не было. Отец работал на заводе в отделе автоматизации систем управления, поэтому мог позволить себе собрать домашний компьютер по запчастям. Другой вопрос, что я не был из числа тех вундеркиндов, которые программируют с пеленок. Я играл в игры (а делать их — не хотел), смотрел фильмы и сериалы, развлекался, но не писал код до учебы в ВУЗе, не считая информатики в школе. А еще был долгий период, когда я ходил помогать отцу обслуживать компьютеры в техникум около дома: мы чинили компьютеры, настраивали сеть, устанавливали нужные программы, и вообще — старались сделать жизнь студентов и преподавателей проще.
Я буквально кое-как поступил на это направление, потому что туда поступали самые умные ребята из области, и конкуренция была приличная: я был в самом низу списка по баллам ЕГЭ, при том, что баллы были хорошие, ведь я даже закончил школу на серебряную медальку. Это очень тяжелое и сложное направление, с большим количеством основ и низкоуровневых знаний — от ассемблера, до того, как сделать свой процессор в гараже: теория автоматов, архитектура ЭВМ, вычислительная и дискретная математика, мат анализ, теорвер, математическая логика, компьютерная графика, электротехника, схемотехника ЭВМ, — вот лишь неполный список того, что нам преподавали.
В итоге я не потянул эту учебу, с головой утонув в огромном разнообразии внеучебной деятельности: студенческий клуб, выступления на сцене, профком, организация мероприятий, волонтерство, поездки по всей России от университета, написание статей про гаджеты и технологии в молодежное издание. Но это отдельная большая история. В любом случае, университет дал мне какие-то самые базовые основы, и подарил возможность не бояться программирования как такового, дал понимание, что именно этим я и хочу заниматься в будущем.
После лабораторных в университете на Pascal, С++ и Java — Javascript был мне совсем не страшен. По-прежнему сложен, но совсем не страшен. Но лабораторные в университете и реальная разработка — совершенно разные вещи. Оглядываясь назад — радуюсь, что такая хардкорная учеба не убила во мне любовь к программированию, и это не сказки, такое действительно происходило с многими ребятами. Из тех 65 человек, с кем я поступил — диплом получило 7. Ну и софт-скиллы, конечно. Университет мощно прокачал мои навыки коммуникации, организации людей и мероприятий, публичных выступлений, поиска и анализа даже самой тяжелой для понимания информации.
После были попытки вкатиться в iOS-разработку (недавно писал об этом в твиттере), а потом — армия, по возвращению из которой возник вопрос — чем же мне заниматься. Понятно, что писать код, но в какой области? К тому момент хайп вокруг фронтенда достиг своего пика, и я решил — стоит попробовать, несмотря на то, что многие друзья всё-таки ушли в мобильную разработку. В моем небольшом городе даже проводили митапы для iOS-разработчиков (Peer Lab) — это были единственные встречи айтишников в городе. А до этого я уже проходил пару уроков на HTML Academy, поэтому туда и направился.
Первая ступень обучения и первая работа
Я не покупал никакие курсы у HTML Academy, а проходил только их тренажеры. В целом было несложно, но очень интересно. Параллельно заглядывал в раздел верстки на Free Code Camp, там бесплатно, качественно, но на английском. На тот момент я еще довольно плохо читал по-английски, и из-за этого FCC шел тяжело. Были и некоторые откровенно спираченные курсы — «Профессия веб-разработчик" от Ивана Петриченко на Udemy, и два курса «Типичный верстальщик" от Анны Блок. Можно меня за это критиковать, но тогда в кармане было шаром покати — и покупать их варианта не было, ничего не подпишешь, все мы не без греха.
Так прошло примерно 3-4 месяца учебы. В один прекрасный день с деньгами стало совсем плохо, и откладывать поиск работы больше было нельзя. Меня пугала идея удаленки, это было до пандемии, и идея о том, что джуну лучше работать в офисе — крепко сидела в моей голове. Отправился на HH, сделал резюме как смог и как умел, и стал ждать откликов. Конечно, их не было, ровным счетом ни одного, если не считать всякие бредовые звонки с вакансиями на специалиста техподдержки. Также самостоятельно мониторил вакансии на IT-портале своего города, но там почти в 100% случаев требовались люди с опытом. А еще было очень много вакансий на 1С. После более глубокого изучения вопроса поиска работы, прочтения статей и просмотра видео на ютубе — начал откликаться сам, писать сопроводительные письма, и, в целом, стал искать активно, откликаясь на большое количество вакансий.
Через неделю мне дали мое первое тестовое задание — надо было по одной переворачивать карточки c картинками на экране с определенным интервалом, да так, чтобы одна начинала переворачиваться в тот момент, когда еще не закончила предыдущая, т.е «внахлест». Конечно, надо было применить JS, который я знал очень посредственно, даже несмотря на то, что уроки по JS в тренажерах HTML Academy были. Но этого было мало — на тот момент там не давали основ, и предлагали сразу работу с DOM. Я легко и быстро сделал симпатичную верстку, но со скриптом были проблемы. Вторая противоречивая вещь в моей истории — я попросил друга помочь мне с этим тестовым заданием, а на тот момент он уже год как работал веб-разработчиком. Сразу скажу: сейчас меня не мучает совесть за тот случай, и я отношусь к такой помощи нормально. Если это поможет вам найти работу — то ничего плохого в этом нет. Собеседование всё равно проходить вам, и работать тоже, и если вы понимаете код, который вам помогли написать, если вы сможете воспроизвести его самостоятельно, сможете его отредактировать и внести правки, ответить на вопросы по этому коду — всё в порядке.
Сидя за столиком в McDonald и попивая колу со льдом, друг помог мне закончить начатое. В итоге тестовое задание приняли, выдав скромный фидбек с недочетами, что уже неплохо — ведь фидбека зачастую можно и вовсе не дождаться. Позвали на собеседование, моему волнению не было предела, и я выдохнул, только когда мне сказали выходить на работу с понедельника. Само собеседование было очень простым: обсудили то, что мои проекты по верстке на GitHub никуда не годятся, поговорили про учебу в университете и жизнь в целом, немного поговорили на английском с одним из разработчиков. Я был приятно удивлен, поняв, что мой английский — гораздо лучше, чем я о нем думаю.
Читайте и другие истории успеха:
Решить первый проект во сне и стать программистом, или Как Хекслет подарил мне состояние потока
Так началась моя первая работа верстальщиком. Компания занималась разработкой своего конструктора сайтов, а я делал шаблоны-блоки — затем они выливались в темы для этого конструктора, подобные тем, что лежат на Themeforest. Блоки были кастомизируемыми, в них можно было много чего менять. То есть, захотели вы сделать сайт для своей медицинской клиники — скачали конструктор, выбрали тему Medicine, накидали блоков, сделали текст и картинки под себя, подогнали всё как вам надо, и ваш сайт готов.
Поначалу было сложно: каждый день поход в офис, трекер рабочего времени, новый софт, всё новое. Если бы это была просто вёрстка — было бы проще, но надо было сделать так, чтобы моя верстка работала внутри конструктора, чтобы всё менялось и кастомизировалось, было адаптивным, и выглядело отлично. Но человеческое отношение, комфортный офис, кофе-машина и сладости конечно оказывали приятное впечатление, особенно первое время.
Мою первую тему просто уничтожили — в ней всё было плохо. К счастью, я узнал, что абсолютно все новички в компании через это проходят, и первую тему уничтожают в пух и прах. Но закончилось всё хорошо: я всё поправил, и после этого дело пошло — одна тема за другой, и так без конца на протяжении года. Примерно через год, когда рутина и этот конвейер встали в горле комом, я попросил задачу посложнее. Я сделал плагин для feedback-чата на сайте, тестировал новый продукт компании — и это было довольно интересно. Я благодарен этой компании за опыт: может я и не стал магистром верстки, но уж точно стал верстать гораздо увереннее.
Учеба на Хекслете
Неизвестно, что бы было дальше, если бы в один прекрасный день я не наткнулся на Вику в твиттере, где она писала про учебу на Хекслете. Мне стало интересно — я ей написал с вопросом, что это за Хекслет вообще такой, и она мне продала идею учиться на этой площадке буквально за 5-6 сообщений. Это было почти сразу, после того, как я устроился на первую работу, поэтому началось самое тяжелое время: работа в офисе, а затем учеба на Хеслете после работы до ночи. Но вводный курс так зацепил качеством материала, что сомнений не было — надо продолжать. Хекслет — первая площадка, где я встретил глубину, подробные основы, последовательность и надежду на светлое будущее (не ирония). И комьюнити, конечно, чаты в слаке, обсуждения в каждом уроке, возможность всегда задать вопрос — это бесценно.
Учеба шла очень медленно и тяжело, потому что после работы времени не очень много, сил очень мало, и поначалу такой низкий темп напрягал и деморализовывал. Со временем я смирился и отпустил свое желание как можно быстрее выучить всё и сразу. Решал все задачки сам, не подглядывал в решение учителя, проходил испытания, даже те, которые были направлены скорее на алгоритмическое мышление, чем непосредственно на фронтенд. Некоторые задачи и испытания не мог решить 2 дня, 3 дня, неделю и больше — бывало всякое, даже руки опускались, но неизбежно накатывающее чувство эйфории от в конце концов решенной задачи, стремление развиваться и получать заветную Козулю помогало не опускать руки. В течение года, я практически полностью прошел профессию «Фронтенд-разработчик» и даже осилил 2 проекта.
Проекты — это вообще лучшее, что вы можете сделать на Хекслете, особенно с проверкой ментора. Особенно учитывая, что сейчас есть автоматизированные тесты. Именно после проектов я почувствовал силу, способность написать что-то большое самостоятельно.
Вторая работа
Со всеми этими новыми знаниями пришло понимание, что пора двигаться дальше и искать новую работу. Я написал заявление об увольнении, отработал положенные две недели, начал искать и готовиться. Было несколько неудачных собеседований — то не мог нормально рассказать про Event Loop, то не мог нормально объяснить, как работает под капотом та или иная асинхронная функция, то не хватало каких-то знаний — про базы данных, например.
Важная мысль, которую я хочу донести до всех ребят, кто учится на тут: Хекслет — не волшебная пилюля. Да, Хекслет очень крутой, на мой вкус — лучшая площадка для обучения на русском языке, но ответственность за ваше образование несете только вы. Порой пройти даже всю профессию целиком — недостаточно, порой даже решенные задачи и пройденный материал не означают, что вы сможете четко ответить на поставленные вопросы на собеседовании. Вы сами должны узнать свои слабые места и подтянуть их до нужного уровня. И есть только один способ эти слабые места узнать — писать код, делать свои проекты, и ходить на собеседования.
После нескольких неудачных попыток я случайно наткнулся на несколько лонгридов про Anki и long-term memory. В целом, мне всегда была интересна тема запоминания информации, различные техники, которые позволяют делать это быстро и эффективно, как запоминать большие объемы информации надолго, а не выбрасывать из головы сразу же после применения (экзамена, например). На эту тему рекомендую книгу Джошуа Фоера «Эйнштейн гуляет по Луне: Наука и искусство запоминания». В целом, это тоже отдельная огромная тема, и я не буду подробно на этом останавливаться. Оставлю лишь две ссылки на интересные статьи на эту тему.
Опишу процесс коротко: открывал материал на Хекслете или из какого-нибудь сборника вопросов и ответов для подготовки к собеседованию на позицию фронтенд-разработчика, читал материал, самостоятельно составлял на его основе много кратких(!) вопросов и ответов — и заносил в Anki, а затем учил. Что мне это дало? После того, как я начал этим заниматься — я тут же прошел следующее собеседование, где меня гоняли по основам JS довольно сильно. Конечно, я ответил не на все вопросы: например, я не знал, как убить сетевой процесс из терминала, так и не выучил ничего про базы данных. Но тем не менее — это был совершенно иной уровень, и его оказалось достаточно. А уж live Coding был вовсе простой, тем более после задач и испытаний на Хекслете — банальный FizzBuzz. Правда, когда меня попросили переписать его рекурсивно — я слегка струхнул, но в итоге справился.
Теперь у меня совершенно другая работа, интересные и сложные задачи, удаленка, зарплата, выросшая в 3 раза. Сейчас пишу на Vue, при том что Vue я и вовсе не учил никогда, и на собеседовании о нем не было ни слова — я смог довольно быстро разобраться, что к чему, и учил «по дороге». Вся подготовка по Vue, что у меня была — пара просмотренных уроков в бесплатном курсе Ильи Климова, на тот момент их вышло совсем немного. Кто бы что ни говорил, а Vue — самый дружелюбный фреймворк для старта.
В планах — выучить Nuxt, TypeScript, а также вернуться к экосистеме React и подтянуть основы (привет, СИКП!), потому что я совсем не хочу быть разработчиком одного фреймворка — я хочу быть инженером по разработке программного обеспечения (aka Software engineer), а не просто Vue-developer'ом.
Составьте свое первое резюме:
Вы можете бесплатно опубликовать свое резюме в нашем сервисе «Хекслет-CV» и получить советы по его улучшению от разработчиков и HR-менеджеров
Послесловие и советы
В конце попробую дать несколько советов новичкам. Начну с самого противоречивого и неоднозначного, но это — мой опыт.
-
Не бойтесь первого выгорания. Обязательно почитайте о нем статьи, посмотрите видео, что это такое, как с ним бороться, как его предотвратить, и что делать, если оно уже наступило. Выгорание — не миф, а реально серьезная штука. И чтобы научиться его эффективно предотвращать и бороть — его надо пережить, это точно такой же опыт, как и любой другой. Со мной оно случалось, и даже несколько раз, я выпадал из учебы на месяц и больше. Зато теперь я четко знаю, и даже чувствую — когда стоит выдохнуть и сделать паузу. А советы о том, что нужно много спать, отдыхать, плотно кушать, и пить много воды — вам и так дадут, из каждого утюга трубят. Тем не менее, если вам удастся избежать выгорания на протяжении всей карьеры — это будет замечательно.
-
Учите материал, когда готовитесь к собеседованиям, особенно если вы не понимаете его глубоко. Вы и не подозреваете, насколько сильно могут повлиять запомненные кусочки информации на понимание общей картины. Конечно, вы не раз слышали о том, что собеседование — не экзамен, и это действительно так. Но также верно и то, что надо держать в голове большие объемы информации и уметь качественно её преподнести. В целом, уделяйте внимание не только тому, где вы учитесь, и что вы сейчас изучаете, но и тому, как именно вы это делаете — это может сыграть решающую роль. Здесь же посоветую курс Learning how to learn на Coursera, где об этом рассказано подробно.
-
Возьмите ответственность за свое образование на себя. Только вы выбираете площадку, на которой будете учиться, только вы выбираете наставника. Только ваша задача — запомнить то, что нужно запомнить. Научиться писать код — тоже ваша задача, вся ваша карьера — это ваш личный большой проект, над которым работать только вам, и в конце концов спросить будет не с кого, кроме как с самого себя.
-
Ходите на собеседования — и как можно раньше. Это сложно, это волнительно, это выматывает физически и эмоционально, но это — необходимо, это тоже опыт и важный скилл, не говоря о том, что это отличный способ выявить свои слабые места и пробелы в знаниях.
-
Будьте в сообществе, будьте «на волне». Заведите твиттер, и пишите туда всё что вам захочется, не боясь осуждения со стороны бородатых дядек-сеньоров, заведите LinkedIn и приведите его в порядок, сделайте красивую страницу на GitHub, вступите в профильные чаты в телеграме и залетайте туда время от времени поболтать, ходите на митапы и конференции, на сходки, везде — если есть такая возможность. Я нашел свою текущую работу, потому что мне написала HR из твиттера на почту. Коммуникация и нетворкинг — наше всё. Не умеете общаться — учитесь сейчас, без этого будет тяжело. Однажды я попал на собеседование в одну очень привлекательную компанию, в которой действительно хотел работать, только потому что не постеснялся и сам написал на почту HR, и даже прошел первый этап, но у меня на руках уже был другой привлекательный оффер, и я его принял.
-
Любите себя. Не делайте паршивые тестовые задания, выполнение которых занимает несколько недель. Не работайте бесплатно, не работайте за гроши, ищите код-ревью, менторинг, хорошие инженерные практики — это то, чего мне не хватало на старте, и сильно замедлило мою карьеру тогда, когда мне хотелось максимально быстрого роста.
На этом всё! Спасибо всем, кто сумел дочитать до этого момента.
Подписывайтесь на меня:
Давайте дружить =)
Никогда не останавливайтесь:
В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях
Alexey Pavlov
4 года назад