
Полная версия
Как стать программистом, переехать в США и получить работу мечты
Как вы можете заметить, разработав самостоятельно всего два приложения, можно составить неплохое резюме. На рынке множество вакансий с опытом работы от года, что вполне соответствует времени обучения и создания своих проектов. Поэтому важно как можно раньше начинать работу над своими проектами, которые станут хорошей основой для вашего резюме.
Поиск вакансий
Первый этап поиска работы – это поиск вакансий и установка контакта с рекрутером компании. Найти вакансии можно на различных онлайн-площадках, таких как HeadHunter, SuperJob, «Хабр Карьера», Rabota.ru. Здесь нет ничего сложного: регистрируетесь на сайте, заполняете свои данные и отправляете отклики. Для кандидатов эти сервисы всегда бесплатные.
Последнее время активно развивается поиск работы в Telegram-каналах. Самые популярные из них: DevJobs (@devjobs), Job Geeks (@jobgeeks), Tproger (@tproger_official), MyJobIT (@myjobit), GetIT Russia (@headzio), Logic (@logic), ForDev (@fordev), Mobile Dev Jobs (@mobile_jobs), DevOps_Jobs (@devops_jobs_feed), JavaScript Jobs (@javascript_jobs_feed). Можно подписаться на эти каналы и откликаться на вакансии, которые соответствуют вашим навыкам и опыту.
Еще один вариант – поиск вакансий на сайтах компаний. Не все ИТ-компании публикуют объявления на сторонних ресурсах. Также если вы хотите попасть в определенную компанию, но в настоящее время у них нет подходящей вакансии, вы всегда можете отправить свое резюме и поинтересоваться, нет ли у них подходящей для вас позиции.
Следующий способ поиска работы – социальная сеть LinkedIn. Я настоятельно рекомендую вам зарегистрироваться в LinkedIn, заполнить там профиль и развивать свою сеть контактов, несмотря на то что этот сервис, вероятно, по-прежнему заблокирован на территории России. В дальнейшем LinkedIn будет играть важную роль в поиске работы не только в России, но и в США. Не забудьте указать, что вы в активном поиске работы, и ежедневно добавляйте новые контакты вне зависимости от личного знакомства. Широкая сеть контактов откроет вам доступ к рекрутерам крупных ИТ-компаний по всему миру.
Вероятно, в LinkedIn вас найдут независимые рекрутеры, которые работают сразу с несколькими компаниями. Не переживайте, вам ничего не придется платить, поскольку агенты получают комиссию с компании, если вы пройдете собеседование и примете оффер.
Москва и Санкт-Петербург предлагают большое количество вакансий, получить приглашение на собеседование будет достаточно просто. В других крупных городах выбор вакансий будет меньше, но по-прежнему получить отклик потенциального работодателя не должно составить большого труда.
Если у вас есть компания мечты, в которой вы очень хотите работать, то не стоит отправлять туда резюме в первую очередь. Для начала потренируйтесь на других вакансиях. Это позволит вам лучше понять структуру собеседования и привыкнуть к стрессу.
В процессе поиска работы обязательно попробуйте устроиться в крупные российские ИТ-компании, такие как «Яндекс», Mail.ru, Avito, Сбербанк, «Тинькофф Банк». Если у вас получится попасть в одну из этих компаний, то вы быстрее наберетесь опыта и получите возможность поработать над большими и интересными проектами. Также можно попробовать устроиться в аутсорс-компании (занимаются разработкой под заказ), которые имеют офисы в США. Это позволит в дальнейшем перевестись в американский офис компании. Одна из самых известных компаний в этой сфере – EPAM.
Составьте список компаний, где бы вы хотели работать, но не спешите начинать свои поиски работы с этих компаний. Сначала нужно потренироваться в прохождении собеседований, для этого отправляйте резюме и отклики на все подходящие вакансии. После нескольких собеседований вы будете чувствовать себя намного уверенней и будете знать, чего примерно ожидать в следующий раз.
В процессе поиска первой работы вам предстоит отправлять десятки резюме и получить много отказов. Но благодаря большому количеству вакансий у вас будет возможность увеличить свои шансы, совершая много попыток.
Разговор с рекрутером
Если ваше резюме привлекло внимание рекрутера, то вскоре вы получите email с предложением пообщаться. На этом этапе основная задача рекрутера – отсеивать неадекватных кандидатов. Также он выясняет, соответствуете ли вы имеющейся вакансии и насколько релевантен ваш опыт работы.
Как правило, общение с рекрутером начинается со знакомства. Он коротко расскажет о компании и вакансии, на которую вас рассматривают. Далее вам предстоит рассказать о себе. Важно построить свой рассказ таким образом, чтобы за одну минуту успеть рассказать обо всех своих самых значимых успехах в области разработки программного обеспечения. Не забудьте упомянуть свои опубликованные проекты и различные сложности, которые вы преодолели.
Далее могут последовать еще несколько вопросов о вашем предыдущем опыте и практических навыках. Иногда в процессе телефонного разговора вам могут задать простые технические вопросы, а также спросить о зарплатных ожиданиях. В конце разговора у вас будет возможность задать свои вопросы.
Если вы договорились о телефонном звонке, то постарайтесь найти тихое место, где вам не будут мешать. Старайтесь разговаривать вежливо вне зависимости от того, как разговаривают с вами. Для того чтобы увеличить свои шансы на прохождение на следующий этап, упомяните, что вы готовы выполнить тестовое задание. В заключение разговора поблагодарите за звонок и уделенное вам время.
Как правило, телефонное интервью длится 15—25 минут. Если все пройдет хорошо, то рекрутер покажет ваше резюме техническим специалистам, и они примут решение о приглашении на собеседование. Также перед техническим собеседованием вас могут попросить выполнить тестовое задание.
Одна из самых распространенных ошибок на этом этапе – слишком много говорить о деньгах. Для рекрутера это является признаком того, что долго вы в компании не проработаете. Отсутствие интереса к вакансии тоже может послужить причиной к отказу.
Тестовое задание
Тестовое задание помогает потенциальному работодателю понять, как вы пишете код. Это очень важный этап, и стоит отнестись к нему максимально серьезно. Хорошо выполненное тестовое задание даст вам большое преимущество перед другими кандидатами.
Первое и самое важное, что стоит сделать, – это понять задание. Внимательно прочитайте его: возможно, некоторые требования будут для вас непонятными. В этом случае составьте список вопросов и отправьте их рекрутеру. Иногда компании специально добавляют неопределенность в задание для того, чтобы увидеть способность кандидата уточнять требования. На начальном этапе необходимо полностью определить требования, иначе в дальнейшем придется многое переделывать.
Вас обязательно спросят о том, сколько времени вам потребуется для выполнения задания. Не старайтесь произвести впечатление оптимистичными сроками. Трезво оцените свои силы и добавьте дополнительные 30% на случай непредвиденных обстоятельств. В ответе рекрутеру постарайтесь обосновать, почему вам потребуется именно столько времени. Нет ничего плохого в том, чтобы сказать, что в будни вы заняты на текущей работе, а в выходные можете выделить только ограниченный интервал времени. Лучше назвать реалистичный срок выполнения и сделать задание раньше, чем сорвать дедлайн.
Процесс выполнения тестового задания очень похож на упрощенный процесс создания своего проекта. Начните с составления to-do-листа. Постарайтесь разбить задание на много мелких подзадач. Не забудьте добавить в этот список тестирование, проверку чистоты кода, написание комментариев, юнит-тесты.
Тестовое задание для программистов не предполагает изысков в дизайне, поэтому используйте стандартные компоненты. Придерживайтесь простого и аккуратного визуального стиля в вашем проекте. Вполне вероятно, что программист, который будет проверять ваше задание, даже не запустит ваш проект, а будет смотреть только код.
Не поддавайтесь желанию как можно раньше начать программировать. Перед тем как начать писать код, будет полезно составить примерный список основных элементов вашего проекта: визуальные компоненты, сервисы, хелперы, утилиты и т. д. Если ваш проект содержит пользовательский интерфейс, то набросайте прототип на листе бумаги – это поможет понять, какие компоненты вам понадобятся. Таким образом, потратив немного времени на планирование, вы сэкономите много времени в процессе разработки.
Теперь пришло время применить свои основные навыки в области программирования. В процессе написания тестового проекта уделяйте большое внимание чистоте и понятности кода. На практике это подразумевает хорошие названия для функций и переменных, добавление комментариев, написание понятных протоколов (интерфейсов). Избегайте запутанных решений и различных хаков. Также не оставляйте бесполезные комментарии и закомментированный код.
После окончания разработки стоит еще раз просмотреть все файлы и проверить код. Будет здорово, если у вас есть знакомый программист, который сможет посмотреть ваш проект. Дополнительно стоит потратить время на написание юнит- и UI-тестов, поскольку в процессе проверки тестового задания на это обращают большое внимание.
Заключительный этап – это публикация и добавление описания. Выложите свой тестовый проект в свой репозиторий на GitHub. Человек, который будет проверять ваше тестовое задание, будет за это очень благодарен. Проверять задания на GitHub на порядок удобнее, чем задания, присланные в виде архива. Не забудьте добавить в ваш репозиторий подробное описание проекта и дополнительные сведения. Дополнительно Также можно добавить скриншоты приложения или видео, демонстрирующее его работу.
Наличие тестовых проектов в вашем репозитории может очень пригодиться в дальнейших поисках работы. Иногда компаниям достаточно посмотреть имеющийся у программиста код на GitHub вместо выполнения нового тестового задания.
Собеседование
Собеседование с техническим специалистом компании – это главный этап в процессе поиска работы. В основе собеседования лежит проверка ваших профессиональных навыков, способности писать качественный код и показывать хорошие результаты. Собеседование состоит из нескольких частей и, как правило, включает в себя следующие этапы: знакомство и обсуждение опыта работы, проверка знаний языка программирования, проверка прикладных знаний, решение задач. Этапы могут отличаться в различных компаниях. Где-то вас могут спросить только про прикладные навыки, а где-то заставят решать задачи на алгоритмы и структуры данных.
Постарайтесь быть вежливым и не забывайте улыбаться, даже если вам хамят. Важно, чтобы о вас сложилось хорошее впечатление вне зависимости от результатов собеседования. Такой подход добавит вам дополнительные баллы при принятии решения о вашем найме, поскольку мало кому хочется работать с токсичными людьми.
Знакомство и предыдущий опыт
Первая часть собеседования самая простая: вам предстоит коротко рассказать о своем опыте и проектах, над которыми вы работали. Заранее подготовьте небольшую самопрезентацию на 2—3 минуты. Особое внимание стоит уделить наиболее актуальному опыту, полученному в последний год. Постарайтесь построить свой рассказ на технических данных и вашем вкладе в развитие проекта. Интервьюеру интересно услышать о том, какие сложные технические проблемы вы решали. Не стоит много рассказывать о продуктовых функциях приложения и прочих деталях, не связанных с вашей основной деятельностью.
Технические вопросы
Далее вам предстоит ответить на вопросы, связанные с языком программирования и наиболее популярными фреймворками. Для подготовки к этому этапу поищите в поисковике информацию по запросу [название вашего языка программирования] + вопросы на собеседовании. Предстоит подготовить ответы на эти вопросы, чтобы увеличить свои шансы на получение работы. Сходив на несколько собеседований, вы поймете, какие темы в основном интересуют интервьюеров. Я встречал парней, которые сходили на десятки собеседований и уже знали ответы на практически все вопросы. Однако опытный интервьюер в такой ситуации начинает задавать более глубокие вопросы. Поэтому просто зазубрить ответы без общего понимания и практического использования не получится.
Следующая часть собеседования – это архитектура, паттерны и общие принципы разработки. Вас обязательно спросят о том, какую архитектуру вы использовали в своих приложениях, какие есть плюсы и минусы этой архитектуры. Также будьте готовы рассказать про принципы SOLID и привести примеры из реальной жизни.
Достаточно часто в процессе собеседования просят решить какую-нибудь несложную задачу. Задачи бывают двух типов: алгоритмические и прикладные. Алгоритмические задачи направлены на проверку знаний в области компьютерных наук. Например, вас могут попросить развернуть связанный список или определить, является ли строка палиндромом. Для получения базовых знаний в этой области можно прочитать книгу «Грокаем алгоритмы». В ней просто и понятно донесены основные идеи, связанные с алгоритмами и структурами данных. В дальнейшем эти знания пригодятся вам для поиска работы в США. В российских компаниях решение алгоритмических задач не является основным показателем кандидата в отличие от собеседований в США. Если вы хотите попрактиковаться в решении задач, то можете бесплатно это сделать на сайте leetcode.com.
В конце технического собеседования у вас будет возможность задать свои вопросы интервьюеру. Стоит подготовить вопросы заранее – это поможет вам понять, как устроена компания изнутри. Как правило, полезно спросить, какие технологии используются, как устроен процесс разработки и работа в команде. Задавая вопросы, вы покажете свою заинтересованность в работе именно в этой компании.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «ЛитРес».
Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.