Пять шагов на пути в IT-компанию своей мечты: что нужно сделать в самом начале

В этой статье мы рассказываем, что нужно сделать (и чего делать не нужно), если вы хотите найти работу в IT-компании из США, и подробно объясняем, для чего нужен каждый шаг на пути к этому и из чего он состоит. Каждый пример мы разбираем с практической точки зрения и даём свои рекомендации. Часть из них может показаться очевидными, но это не значит, что они не сработают :-)

TL:DR — Пять шагов для трудоустройства

  1. Запустите свой проект, который вам нравится или который вы давно хотели сделать, и периодически рассказывайте в блогах, что у вас получается. Это пригодится на собеседованиях.
  2. Развивайте алгоритмическое и структурное мышление и изучайте новое. И не забывайте, что IT не стоит на месте и постоянно появляется что-то новое. Чтобы не оказаться в числе отстающих, изучайте всё, что относится в вашей области рабочих знаний.
  3. Ищите работу на разных площадках и с разным подходом к поиску. Очевидный шаг, но в нём тоже есть свои тонкости — например, зайти в компанию по рекомендации изнутри НАМНОГО проще, чем попасть в ту же компанию на ту же позицию обычным способом.
  4. Грамотно пройдите все этапы интервью. Грамотно — это значит не просто дать везде правильные ответы, но и показать себя профессионалом и опытным специалистом.
  5. Проведите переговоры и выберите наилучшее предложение. Иногда деньги — это не главное, что может повлиять на выбор.

Звучит просто и очевидно, но это работает. Единственный минус — чтобы пройти весь этот путь самостоятельно, нужно много сил, времени и желания. Но это не означает, что это сделать нереально — всё реально, если поставить себе такую цель и идти к ней. В любом случае, если есть желание, но непонятно, с чего начать, то вы всегда можете прийти к нам в Insquad — мы бесплатно поможем и с резюме, и с собеседованиями, и с организационными вопросами.

Шаг 1. Запустите собственный проект

Это может быть что угодно — своя программа для анализа слов и высказываний политиков, робот, который приносит телефон в кровать или умный дом на Raspberry Pi. Главное — периодически рассказывать о том, как идёт процесс или что нового в проекте. Ну и конечно, хорошо бы, чтобы этот проект был из той же области, в которой вы хотите найти работу.

Для примера возьмём классический проект из робототехники — свой беспилотный робот-автомобиль, который будет сам ездить по полу в квартире. Сразу после начала работ над ним начинайте писать — рассказывайте у себя в блоге или на других площадках о том, что нового на этом этапе, какие решения вы применили или что не сработало.

Чаще всего результат будет такой — у вас будет достаточно просмотров и комментариев, чтобы вдохновить вас на продолжение истории. Но нас интересует другой побочный эффект такого проекта (и блога). Когда вас на этапе первичного отбора спросят, почему вы хотите заниматься именно этим направлением в IT, у вас будет, что рассказать рекрутеру :-) Одно дело, когда на собеседование приходит человек, который просто что-то рассказывает, и совсем другое — когда он может продемонстрировать результаты своей самостоятельной работы в этой области и показать блог на эту тему.

Если вы не знаете, что взять в качестве своего личного проекта, вот несколько идей, которые могут помочь с выбором:

  • Если вы хотите найти работу во фронтенд-разработке, сделайте крутой интерактивный сайт на популярных фреймворках, например, React или Angular.
  • Если по душе больше серверная разработка и бэкенд в целом, попробуйте создать веб-сканер, ещё одну поисковую систему на Memcached и Elastic Search или напишите свой API для внешнего сервиса, у которого его нет. Будет сложно, но интересно.
  • Нравится мобильная разработка? Напишите и опубликуйте приложение Apple или Android. На всякий случай отметим, что публикация приложения в App Store занимает гораздо больше времени, чем Google Play.
  • Если хотите в AI/ML, возьмите одну из существующих моделей глубокого обучения компьютерного зрения или обработки естественного языка и попробуйте сделать из него полноценный продукт. Например, систему доступа на объект, которая работает так: система через динамик говорит какую-то фразу, человек её произносит в камеру, а нейросеть пытается распознать, есть ли человек с таким лицом и голосом среди работников.
  • Если вы увлекаетесь робототехникой, попробуйте сделайте робота с помощью Raspberry Pi или Nvidia Jetson Nano. Если нужно скрестить робототехнику и ИИ, возьмите Jetson Nano — у него есть графический процессор, который можно использовать для deep learning.

Если у вас и после этого нет идей для проекта — тогда просто внесите свой вклад в один из проектов с открытым исходным кодом, или поработайте над TensorFlow или PyTorch, если вы увлекаетесь AI/ML. Может показаться, что надо быть экспертом, чтобы работать над такими серьёзными проектами, но на самом деле в них много простых функций, которые можно улучшить, исправить ошибки или проставить комментарии. Так вы сможете глубже познакомиться с исходным кодом проекта, а это вам в любом случае будет полезно при работе в этой области.

Обязательно напишите статью (а лучше несколько) про свой проект

Как только вы закончите проект или очередной этап работы над ним, обязательно сообщите об этом миру. При этом недостаточно просто опубликовать готовый код на GitHub. Смысл в том, что большинство людей предпочитают читать блоги о том, ЧТО делает код, а не о том, какие команды вы для этого использовали (хотя это тоже может быть интересно).

Хороший блог с подробными рассказами о проекте — это отличный маркетинговый материал и для вашего проекта, и для вас. На собеседованиях это сразу выделяет вас среди остальных соискателей, которым обычно нечего показать.

Да, написание такого блога, а тем более, с фотографиями или видеовставками, требует времени. Но это время однозначно окупается, когда речь заходит о том, что нужно подтвердить свои навыки в этой области. Но в любом случае нужно помнить простую вещь: вы должны наслаждаться тем, что делаете, а не делать проект только для того, чтобы получить работу.

Шаг 2. Развивайте алгоритмическое и структурное мышление и изучайте новое

Мы уже писали об этом в самом начале, но повторим снова: IT развивается очень быстро, поэтому нужно постоянно обновлять свои знания, пробовать новые фреймворки, технологии и подходы к решению задач.

Но кроме очевидного совета «Следите за всем новым в индустрии» есть два направления знаний, которые могут очень пригодиться на любом собеседовании в крупную IT-компанию из США:

  • алгоритмы и структуры данных
  • проектирование систем

Даже если вы не устраиваетесь на позицию архитектора, у вас могут спросить — а как ваше решение повлияет на систему в целом? А если бы вы проектировали новую фичу с нуля, то как бы вы всё организовали внутри приложения? И вот тут эти два навыка будут как нельзя кстати.

Алгоритмы и структуры данных

Если выбрать один навык, который нужно освоить для всех технических интервью, то это будет навык кодирования алгоритма и структур данных (A&DS). Независимо от размера компаний, они будут проверять вас на умение записать выбранный алгоритм или решение на любом языке программирования. Это делается для того, чтобы посмотреть на ваши навыки программирования, и на этом этапе компаниям вообще всё равно, какой язык вы используете.

Для такого технического интервью многие рекомендуют Python. Это простой, понятный и лаконичный язык, пусть и не всегда самый оптимальный для каждой задачи. Зато всем сразу будет видна логика и ход алгоритма, а это намного важнее на этом этапе.

Теперь немного про книги и сайты, которые помогут прокачать этот навык:

Cracking the Coding Interview Book (CtCI): в ней около 700 страниц, но они стоят того, чтобы их прочли. Кроме всей теории по этой теме, в книге много практических вопросов с решениями и разбором.

Пять шагов на пути в IT-компанию своей мечты: что нужно сделать в самом начале

LeetCode.com: Если вы почувствуете, что предыдущая книга не дает достаточно практики, зайдите на Leetcode. Сайт считается самой полной и струкрутированной онлайн-базой вопросов для интервью по программированию. Хотите почувствовать себя на настоящем собеседовании — заходите, решайте задачки и отвечайте на вопросы. Если прорешаете все задачи, то большинство собеседованиий будет пройти намного проще.

Пять шагов на пути в IT-компанию своей мечты: что нужно сделать в самом начале

Практические решения LeetCode Тушара Роя: Тушар, когда снимал эти ролики, работал в Apple, и многое из того, о чём он рассказывает, действительно применяется в программах этой компании. Просмотр его видео может научить вас не только этим алгоритмам, но тому, как самому представлять сложные идеи и алгоритмы. Это пригодится на собеседовании, когда вас попросят объяснить, как работает то или иное решение.

Проектирование систем

Второй по важности навык, который стоит освоить, это проектирование систем. При найме сотрудника на ответственную позицию вас, скорее всего, попросят рассказать о том, как бы вы проектировали какую-то часть проекта, если бы вам её поручили целиком. Например, это может быть система для организации чата техподдержки внутри приложения, или система мониторинга нагрузки работы сервера.

Во время выполнения этой задачи рекрутер проверяет у вас сразу хард- и софт-скиллы.

С одной стороны, нужно уметь разбираться в разных областях программирования, например, что такое распределенная база данных, распределенный кэш в памяти, менеджер конфигурации, сетевое хранилище файлов, локальная поисковая система и так далее.

С другой стороны здесь нужно уметь презентовать и объяснить дизайн своей системы, а также уметь его защитить. А для этого понадобится и умение вести переговоры, и доносить мысль до собеседника, и умение слушать и задавать встречные вопросы.

Теперь о том, как подготовиться к этому:

  • Cracking the Coding Interview Book. Снова. В этой книге есть глава, в которой обсуждался дизайн системы, но она рассматривается на довольно базовом уровне, поэтому она даст только самое общее представление.
  • Канал Gaurav Sen's System Design на YouTube. Там около 30 коротких видео, где в половине из них автор подробно разбирает отдельные компоненты разных системы, а в остальных он обсуждает сценарии их использования, например, для того, чтобы создать аналог Netflix, Tinder или Facebook. Gaurav Sen's System Design
  • Видео Тушара Роя о системном дизайне. У него кроме практических решений из предыдущего раздела есть плейлист с такими же подробными видео по системным дизайну. Лучше смотреть эти видео после Гаурава, так как Гаурав даёт самую основу в системном дизайне, а Тушар говорит о том, как он применяет эти знания на практике. Tushar Roy — System Design

Выводы

Самостоятельный поиск работы в IT-компании из США — тернистый и непростой путь. Чтобы сделать его проще, стоит заранее подумать о том, что может пригодиться при собеседовании и найме:

  • Запустите свой проект и ведите блог с рассказами о проекте.
  • Лучше всего, если этот проект будет из той же области, куда вы хотите устроиться.
  • Постоянно изучайте всё новое, что относится к вашей профессиональной деятельности.
  • Научитесь быстро описывать любые алгоритмы и объяснять необходимые для этого алгоритма структуры данных.
  • Чем понятнее вы сможете выразить объяснить свою мысль, тем лучше. Иногда для этого нужно просто что-то нарисовать на листочке, чем пытаться объяснить словами.
  • Изучите проектирование систем. Это пригодится практически на любом собеседовании.
  • Прорешайте сборники задач и вопросов, которые обычно спрашивают на интервью. Многие компании до сих пор берут их оттуда.

Что дальше

В следующей статье мы поговорим про резюме, про то, как его составить и где лучше всего искать работу — по знакомству или на площадках объявлений.

Если у вас есть вопросы по теме статьи — ждём их в комментариях, а мы подробно разберём их в следующих статьях. А если вам хочется сократить этот путь и устроиться разработчиком в США за 2-4 недели — приходите к нам, поможем.

66
1 комментарий

Как вариант - устроиться на работу в международную компанию через аутстаффинг-сервисы. Так, кстати, и заморочек гораздо меньше. Мы в Rubrain.com так устроили уже сотни разработчиков, которые успешно работают в американских, японских, европейских корпорациях.