Перевод статьи Сэма Вильямса «How I Doubled my Salary in 5 Months and Got an Amazing Job».
Это определенно было непросто, но я за 5 месяцев сумел пройти путь от низкооплачиваемой должности джуниора до разработчика с хорошей зарплатой и даже получить удовольствие от процесса. Вот как это было.
6 месяцев назад я уволился с должности младшего JavaScript-разработчика и начал свое 5-месячное путешествие по юго-восточной Азии. Неделю спустя после возвращения в Великобританию у меня было 3 предложения работы. Я принял одно из них, и моя зарплата на этой позиции в два раза выше, чем мои прежние заработки.
Цель
Я планировал, что буду путешествовать по юго-восточной Азии примерно 3-6 месяцев, а по возвращении хотел получить лучшую работу, чем была у меня до этого. Проработав на позиции младшего JavaScript-разработчика, я понял три вещи:
- Я люблю программирование не только в качестве хобби, но и в качестве работы.
- Мне нравится работа с бэкендом.
- Мне не сильно нравится Angular.
Вооружившись этими фактами, я приступил к постановке целей, которые хочу достигнуть к концу путешествия, и определения вещей, которые мне нужно выучить к тому моменту.
Моей целью было стать Full stack разработчиком-мидлом.
Рекогносцировка
Чтобы понять, над чем мне нужно поработать для достижения моей цели, я поискал привлекательные для меня вакансии и просмотрел, что требуется от кандидата, а что является желательным.
Таким образом я составил список того, что требовалось в большинстве случаев:
- Уверенное знание JavaScript
- По крайней мере один фреймворк (обычно React или Angular)
- Способность создавать REST API (обычно express)
- Знание одной или более базы данных (обычно MongoDB или SQL).
Составление плана
Проанализировав полученную информацию, я определил, что мне нужно подтянуть:
- Мне было необходимо дочитать «You Don’t Know JS». Эта книжная серия помогла мне понять основы JavaScript, и я рассудил, что она подойдет и для изучения более продвинутых вещей.
- Я должен был очень хорошо освоить один из фреймворков. Я выбирал между Angular, Vue и React. Остановился я на последнем. Angular я не любил, Vue редко попадался в требованиях в вакансиях, а с React мне уже приходилось немного иметь дело и он мне нравился.
- Хотя я мог создать express API с нуля, но уверенности мне не хватало, я умел делать только что-то базовое. Мне нужно было заняться этим вопросом, особенно если я хотел получить работу, связанную по большей части с бэкендом.
- Я мог держаться реляционных баз данных (postgreSQL) или изучить что-то новое. Я решил, что займусь изучением MongoDB, поскольку она весьма популярна, и добавлю к своему резюме NoSQL.
Я не знал точно, сколько продлится мое путешествие, а потому решил спланировать свое обучение таким образом:
- Изучение React (и Redux) одновременно с чтением «You Don’t Know JavaScript».
- Улучшение знаний по express и изучение MongoDB.
- Создание чего-нибудь с использованием приобретенных знаний.
- Изучение остального.
Для такой расстановки приоритетов была разумная причина. Если бы я закончил свое путешествие, выполнив пункт 1 и частично — 2, я все равно мог бы претендовать на позицию разрабочтика-мидла, правда, ограничившись фронтендом.
А если бы я сразу занялся бэкендом, то по истечении 3 месяцев у меня по-прежнему не было бы уверенного знания фронтенд-фреймворка, а это было бы препятствием для получения любой работы уровня мидла. Я мог бы претендовать на должность чистого бэкенд-разработчика, но там обычно нужно было больше опыта.
Изучение React и Redux, а также чтение «You Don’t Know JS»
Мне уже приходилось иметь дело с React, с помощью видео на Youtube и обычных руководств в вебе, но в этот раз я хотел быть уверенным, что учусь правильно. Это привело меня к приобретению курса «React JS and Redux: Mastering Web App» от Udemy.
Это был потрясающий курс. Мой небольшой опыт с React очень мне пригодился, но у меня не было опыта с Redux. К концу курса я чувствовал, что смог бы построить достаточно сложный вебсайт. Я был уверен в своих знаниях синтаксиса и форматов React и контроля данных Redux.
Прохождение этого курса заняло у меня примерно 2 недели, но я работал над ним всего по паре часов 1-2 раза в неделю. В Азии я был в отпуске, поэтому учеба не была моим приоритетом.
Параллельно с работой над курсом я прочел последние несколько книг из серии «You Don’t Know JS». Я сохранил онлайн github-версию на своем телефоне и читал ее, отдыхая между восхождениями.
Теперь, имея небольшой реальный опыт работы, я понял намного больше по сравнению с последним разом, когда пытался читать эти книги. Такие вещи, как Promises действительно тяжелы для понимания, если вы никогда ими не пользовались.
Улучшение знаний по express и изучение MongoDB
Освоившись с фронтендом, я решил, что пора начать работу над моими навыками бэкенда.
Я решил опять обратиться к курсам Udemy. Я обнаружил, что поскольку они полностью укомплектованы, обучение идет более плавно и затрагивает все аспекты. Конечно, вы можете выучить все то же самое бесплатно с помощью Youtube или других онлайн-руководств, но они, похоже, никогда не освещают достаточно хорошо всю тему.
Предстояло решить, какой курс выбрать. Там были платные и бесплатные, короткие и длинные.
Я решил сделать инвестицию в себя и купить курс ($10 – совсем не много за такое количество информации), а также сумел сузить выбор до 3 курсов длительностью от 7 до 25,5 часов.
7-часовой курс был соблазнителен, ведь его можно было пройти за неделю (я все еще наслаждался своим отпуском). 25-часовой курс был, конечно, намного длиннее, но вроде бы раскрывал большее количество тем. К тому времени я решил, что буду путешествовать до тех пор, пока мой банковский счет это позволяет, а потому остановился на 25- часовом курсе – Node with React: Fullstack Web Development. Я уже делал обзор этого прекрасного курса здесь.
Поскольку я уже проходил ранее курс по React и Redux, меня ждало повторение вещей, касающихся React. Поэтому, чтобы не тратить зря время, вы можете просто пропускать видео, которые уже знаете, или просматривать их на скорости 2x, чтобы освежить знания и лучше усвоить полезные советы.
Бэкенд — главное отличие этого курса. Огромное количество тем включает: oAuth, работу с email, платежи, работу с API key, MongoDB, mongoose и расширенное развертывание.
Этот курс такой длинный именно потому, что детально раскрывает большое количество тем. Это и хорошо, и плохо, но я в итоге просмотрел большую часть видео в ускоренном режиме с остановками, где мне было необходимо.
Этот курс, конечно, занял больше времени, чем первый, но я сумел покончить с ним примерно за 1,5 месяца.
Я начинаю писать
В какой-то момент, находясь в Китае, я решил написать статью о том, как ужасно пытаться заниматься разработкой в Китае. Ее приняли к публикации на Free Code Camp, и сейчас моя статья набрала уже 1,6 тыс. прочтений. Я был в восторге от того, что люди читают написанное мной, и им это нравится.
Я решил, что попытаюсь написать больше статей о том, чем я занимался, и классных вещах, которые находил. В итоге это дало мне прекрасную тему для разговоров, когда дело дошло до интервью.
Ведение блога это отличный способ документировать свой прогресс и, собственно, видеть его.
Создание чего-нибудь с использованием приобретенных знаний
Теперь, имя все необходимые мне инструменты, я хотел создать что-нибудь с их помощью. Я путешествовал уже 3,5 месяца и предполагал, что смогу себе позволить еще 1-3 месяца. Это означало, что вскорости нужно будет задуматься о поиске работы, если я хотел приступить к ней как можно быстрее по возвращению.
Чтобы начать подавать отклики на вакансии мне нужно было обновить свое CV и портфолио. Это дало мне отличный повод воспользоваться своими новоприобретенными навыками для создания нового портфолио с использованием Node и React.
Что я и сделал. Вот результат. Как я уже говорил, я не дизайнер, но работает все хорошо. Я даже использовал wordpress API для размещения постов блога на этой странице.
Я знал, что дизайн был ужасен, поэтому я опубликовал это в сабреддите отзывов по веб-дизайну. Я получил много хороших советов, большая часть которых касались изучения основ веб-дизайна (на это потребовалось бы еще несколько месяцев).
Я воспользовался одним советом: использовать существующие загрузочные файлы. Так у меня получился совершенно новый вебсайт, без использования навыков, которыми я воспользовался ранее, но зато не такой кричащий.
Подача заявок по вакансиям
Следующее место, которое я посетил, была далекая зона для восхождений в горах в Лаосе. Это означало, что доступ к электричеству и wifi там будет минимальным. Поэтому я оставил свой ноутбук в Бангкоке на все 2 недели, которые провел в Лаосе.
Когда я добрался до кемпинга в Лаосе, я обнаружил, что у них есть даже 4G! Я купил местную sim-карту (£2 за 1.5GB и в дальнейшем 89p за каждый лишний GB) и получил достойное качество доступа к интернету. К тому времени я знал, что до возвращения домой проведу в Лаосе 2 недели, а затем еще около 4 недель в Китае. Пришло время искать работу.
Прогресс
В следующие 1,5 месяца я подал заявки больше чем по 50 вакансиям, вел переписку и общался в LinkedIn примерно с 25 людьми и сумел договориться о 5 собеседованиях на неделю после возвращения. Большая часть моего общения припадала на электронную почту, но если кто-то хотел пообщаться лично, я старался это устроить (учитывая 8-часовую разницу во времени).
Я думаю, что личное общение – отличный способ наладить отношения между вами и другим человеком, а это повышает ваши шансы получить приглашение на собеседование или рекомендацию.
Если вы испытываете неудобство, общаясь по телефону или Skype, вы можете пользоваться электронной почтой, но я думаю, что так вы упускаете возможность улучшить свои шансы.
Создать больше вещей
Один из интервьюеров попросил меня сделать прототип того, что бы я сделал для компании с ужасным вебсайтом и минимальным обслуживанием клиентов. Это было классно, поскольку подтолкнуло меня к изучению прототипирования. Я написал серию статей о том, как я прототипировал и создавал веб-сайт. Сам сайт можно посмотреть здесь, а статьи почитать здесь.
Последнее, что я сделал, это создал чат-бота для возврата заказов. Мне пришлось изучить работу чат-ботов, а создание достойной рабочей версии бота заняло примерно неделю. Это был мощный фактор, повлиявший на получение мной работы.
Собеседования
У меня было 5 приглашений на собеседования и я должен был превратить их в предложения работы.
Подготовка
Я писал статьи о подготовке к интервью по JavaScript и умении проходить интервью. Я убедился, что выполнил все необходимое.
Я знал все, что хотел подчеркнуть, знал, как отвечать на вопросы о своих слабых местах и на прочие вопросы, которые задают в любой компании.
Интервью
Я всегда хорошо показывал себя на собеседованиях. Будучи от природы интровертом, я научился вести себя, как экстроверт, и располагать к себе людей, проводящих интервью. Если вы знаете, что на собеседованиях чувствуете себя на в своей тарелке, я советую найти книгу об эмоциональном интеллекте и почитать о том, как вести себя более уверенно.
Два моих интервью прошли в режиме онлайн, а в остальных случаях меня ждали технические тесты, где моя подготовка полностью себя окупила. У меня были небольшие промахи, но я озвучивал ход своих мыслей и хорошо справился со всеми задачами.
Предложения работы и обсуждение условий
После первых трех интервью у меня было два предложения работы. После четвертого интервью я понял, что это не «моя» компания, так что сразу сказал, что работу мне можно не предлагать. Если вы окажетесь когда-нибудь в подобной ситуации, старайтесь сразу говорить, что не планируете принимать предложение.
Итак, у меня были две компании, желавшие меня нанять. Пришло время поторговаться. Я никогда не был хорош в подобных переговорах и том, чтобы просить что-то для себя, но я почитал пару статей на эту тему и подготовился.
«Вы можете говорить себе: «Ну, я не хочу иметь завышенные ожидания, а предложение уже довольно щедрое, так что мне стоит просто согласиться».
Нет. Торгуйтесь.
Или, может: «Я не хочу начинать с неверного шага и выглядеть жадным в глазах будущего работодателя».
Нет. Торгуйтесь.
«Но это маленькая компания и…»
Нет. Заткнитесь. Торгуйтесь».
— Из Ten Rules of Negotiating a Job Offer. Рекомендую почитать, если вы в поисках работы.
Я, правда, не сильно хорошо торговался, но несколько вещей сыграли мне на руку. У меня было два равных предложения, но я предпочитал одну компанию. Я написал себе маленький сценарий и (после дыхательных упражнений для успокоения) позвонил директору этой компании.
«Здравствуйте, Дэйв. Я звоню, чтобы рассказать о том, как у меня обстоят дела. Спасибо за сделанный мне оффер, я рад, что вы считаете, что я подхожу для вашей компании. У меня есть еще одно предложение, и я приму решение в выходные, а вам сообщу в понедельник до обеда.
Есть одна вещь, которая могла бы придать веса вашему предложению. Мне потребуется переезд к месту работы (где бы оно ни было), и если бы мне помогли с его оплатой, это было бы потрясающе».
Случилось все в итоге не совсем так, но все равно это сильно помогло. Я сообщил, что благодарен за предложение, обозначил, когда приму решение, и попросил улучшить предложение без повышения ставки.
Итоги
Я узнал, что мне было нужно для получения желанной работы. Я воспользовался этим знанием для создания плана и затем прошел платные онлайн-курсы для ускорения процесса обучения.
Я перерыл кучу вакансий и получил приглашение на 5 интервью. Я обсудил условия с двумя компаниями, понравившимися мне больше всего.
Уже две недели я работаю в MissionLabs и я просто счастлив!
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]