Найти в Дзене
ITшник в США

Что нужно знать front-end разработчику, чтобы переехать в США?

Сперва поговорим о том, какие же все таки навыки мне понадобились для переезда, а точнее для получения рабочей визы L1B. Навыки ES6, ES7, ES8, ES9, ES10. Изучаем все нововведения и учимся использоваться их на практике. Object.freeze, Object.seal, Object.preventExtension. Изучаем блокирование объектов, так как это популярный вопрос на собеседованиях. Event-loop. По-моему, сейчас это любимый вопрос каждого интервьюера. Map, WeakMap, Set, WeakSet. Cookies, session storage, local storage. Вам будет нужно знать, чем они отличаются между собой и уметь правильно применять каждую из технологий в определенных случаях. Шаблоны проектирования: Singleton, Module, Factory, Observer, Adapter и другие. Архитектурные шаблоны: MVC, MVVM, MVP. RequestAnimationFrame. Уделите этому методу больше внимания, особенно, если вам предстоит работать с анимацией. Функциональное программирование: Функции высшего порядка, Чистые функции, Мемоизация, Каррирование. REST и GraphQL. Не стоит зацикливаться на одном REST
Оглавление

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

  • Английский язык. Конечно же, без знания языка вам не обойтись. Необходим уровень не ниже upper-intermediate, в противном случае у вас будут трудности с прохождением собеседований, общением с коллегами и ведением полноценной разработки.
  • HTML/CSS. Несмотря на существование библиотек компонентов и нелюбовь фронтэндеров к верстке, вам нужно знать HTML и CSS на высоком уровне. Обратите внимание на Flexbox, Grids, Repaint/Reflow, CSS анимации, адаптивную верстку. Также рекомендую к изучению ресурс от Google для веб-разработчиков.
  • GIT. Кроме базовых команд важно знать interactive rebase, cherry-pick, git bisect, merge strategies, branching strategies: особенно git flow.
  • Монорепозитории. Желателен опыт в работе с монорепозиториями: Lerna, Nx, Создание монорепозиториев на Nx.
  • Javascript. Знаний только фреймворков будет не достаточно, поэтому еще изучаем:

ES6, ES7, ES8, ES9, ES10. Изучаем все нововведения и учимся использоваться их на практике.

Object.freeze, Object.seal, Object.preventExtension. Изучаем блокирование объектов, так как это популярный вопрос на собеседованиях.

Event-loop. По-моему, сейчас это любимый вопрос каждого интервьюера.

Map, WeakMap, Set, WeakSet.

Cookies, session storage, local storage. Вам будет нужно знать, чем они отличаются между собой и уметь правильно применять каждую из технологий в определенных случаях.

Шаблоны проектирования: Singleton, Module, Factory, Observer, Adapter и другие.

Архитектурные шаблоны: MVC, MVVM, MVP.

RequestAnimationFrame. Уделите этому методу больше внимания, особенно, если вам предстоит работать с анимацией.

Функциональное программирование: Функции высшего порядка, Чистые функции, Мемоизация, Каррирование.

REST и GraphQL. Не стоит зацикливаться на одном REST, GraphQL стремительно набирает обороты и большое количество проектов использует эту технологию. Если же вам предстоит работать с REST, то прочитайте про идемпотентность.

Long-polling. Long-polling - довольно старый подход, но даже сейчас он иногда используется в некоторых сферах, особенно в банковской.

Веб-сокеты. Шанс того, что вам на проекте попадутся веб-сокеты достаточно высок, поэтому рекомендую их знать. И в дополнение научиться работать с https://socket.io/.

Принципы программирования: SOLID, DRY, KISS, YAGNI. SOLID замечательный свод принципов и я бы посоветовал не просто прочитать, а научиться применять его в работе. Если вы сомневаетесь зачем нужен SOLID фронт-энду, то он прекрасно укладывается в приложения на React и Angular. Применение SOLID сделает код вашего приложения более качественным, поддерживаемым и расширяемым.

Алгоритмические задачи. В большинстве случаев вам придется решать алгоритмические задачи на собеседовании, поэтому готовимся на https://leetcode.com/ и https://www.hackerrank.com/.

Хорошим дополнением будут сертификаты об окончании курсов по javascript, чтобы подтвердить свою экспертность в посольстве. Например можно воспользоваться сертификацией от udemy.com, microsoft или курсами от edx.com.

  • Препроцессоры. Здесь все просто - Sass, Less. Если работаете с React, то еще учимся работать с styled-components, jss, css-modules.
  • Angular/React/Vue. Лично по-моему мнению Angular немного более распространен в США, чем React, а уж тем более чем Vue. Поэтому проект со знанием Angular будет найти проще. В идеале иметь продакшн-опыт и Angular, и React, тогда ваши шансы будут выше. Понимание инструментов и экосистемы вокруг них должно быть на высоком уровне, вы должны понимать как фреймворк или библиотека устроены “под капотом”. Так же как и с javascript сертификаты будут хорошим дополнением.
  • Библиотеки компонентов. Учимся работать с material-ui, angular material, react.semantic-ui, ant design.
  • NodeJS. В большом количестве случаев требуется full-stack разработчик, чем просто front-end. Иногда от вас хотят еще и навыки python/java/go. В дополнение к nodejs стоит научится работать с expressjs, меньше вероятность встретить в работе fastify, koa, hapi.
  • Тестирование. Необходимо уметь писать тесты и понимать зачем они нужны, так что разбираемся в unit и integration тестировании. Умение писать E2E тесты будет дополнительным бонусом. Так же стоит знать про пирамиду тестирования.
  • Типизация. Типизация должна стать для вас неотъемлемой частью разработки. Учимся работать с Typescript, необходимо понимание Generics, Enums, Utility Types.
  • CI/CD. Вы должны понимать зачем нужен CI/CD и уметь пользоваться программным обеспечением для этих процессов. Чаще всего достаточно уметь запускать билд и делать релиз, знания уровня DevOps требуются редко. Учимся работать с Jenkins, Teamcity, AzureDevops.
  • AWS / Google Cloud. Огромное количество проектов используют элементы этих сервисов. Я советую уметь с ними работать.
  • Scrum / Kanban. Современный мир разработки помешан на Скраме, большинство коллег пытается развернуть его даже там, где он абсолютно не нужен. Соответственно, вам должно быть комфортно с ним работать. Учим методы оценки, термины, разбираемся как работать в скраме, а главное зачем он нужен и где его лучше применять.
  • Soft-skills. Ваши soft-skills будут играть достаточно большую роль. Скорее всего, вы не получите четко поставленных и описанных задач, вам придется разбираться самим, что именно нужно сделать. Будет много коммуникаций по работе, коллеги с американских проектов предпочитают встречи и звонки для решения любых вопросов. Привычная нам в работе прямолинейность, жесткость и требовательность звучит грубо для американских коллег, всегда стоит учитывать эту разницу менталитетов, если не хотите, чтобы на вас пожаловались менеджеру в первую же неделю.
  • Если претендуете на L1B, то вам будут необходимы специализированные знания. Под этим подразумевается экспертные навыки во внутренних разработках вашей компании, благодаря которым компания сможет доказать, что специалистов с подобными навыками на американском рынке просто нет.

Заключение

В итоге набирается довольно внушительный список навыков, но нужно учитывать, что переехать middle’ом практически не реально, а senior уже должен знать больше половины от предоставленного выше списка. Еще не стоит забывать, что эти навыки и технологии не являются абсолютной гарантией для переезда, каждый случай уникален и вам может понадобиться больше или меньше знаний. Составленный список помог в моем случае и надеюсь также будет полезен вам.