Как стать программистом, переехать в США и получить работу мечты - Виталий Ампилогов 10 стр.


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

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

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

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

Тестовое задание

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

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

Вас обязательно спросят о том, сколько времени вам потребуется для выполнения задания. Не старайтесь произвести впечатление оптимистичными сроками. Трезво оцените свои силы и добавьте дополнительные 30% на случай непредвиденных обстоятельств. В ответе рекрутеру постарайтесь обосновать, почему вам потребуется именно столько времени. Нет ничего плохого в том, чтобы сказать, что в будни вы заняты на текущей работе, а в выходные можете выделить только ограниченный интервал времени. Лучше назвать реалистичный срок выполнения и сделать задание раньше, чем сорвать дедлайн.

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

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

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

Теперь пришло время применить свои основные навыки в области программирования. В процессе написания тестового проекта уделяйте большое внимание чистоте и понятности кода. На практике это подразумевает хорошие названия для функций и переменных, добавление комментариев, написание понятных протоколов (интерфейсов). Избегайте запутанных решений и различных хаков. Также не оставляйте бесполезные комментарии и закомментированный код.

После окончания разработки стоит еще раз просмотреть все файлы и проверить код. Будет здорово, если у вас есть знакомый программист, который сможет посмотреть ваш проект. Дополнительно стоит потратить время на написание юнит- и UI-тестов, поскольку в процессе проверки тестового задания на это обращают большое внимание.

После окончания разработки стоит еще раз просмотреть все файлы и проверить код. Будет здорово, если у вас есть знакомый программист, который сможет посмотреть ваш проект. Дополнительно стоит потратить время на написание юнит- и UI-тестов, поскольку в процессе проверки тестового задания на это обращают большое внимание.

Заключительный этап  это публикация и добавление описания. Выложите свой тестовый проект в свой репозиторий на GitHub. Человек, который будет проверять ваше тестовое задание, будет за это очень благодарен. Проверять задания на GitHub на порядок удобнее, чем задания, присланные в виде архива. Не забудьте добавить в ваш репозиторий подробное описание проекта и дополнительные сведения. Дополнительно Также можно добавить скриншоты приложения или видео, демонстрирующее его работу.

Наличие тестовых проектов в вашем репозитории может очень пригодиться в дальнейших поисках работы. Иногда компаниям достаточно посмотреть имеющийся у программиста код на GitHub вместо выполнения нового тестового задания.

Собеседование

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

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


Знакомство и предыдущий опыт

Первая часть собеседования самая простая: вам предстоит коротко рассказать о своем опыте и проектах, над которыми вы работали. Заранее подготовьте небольшую самопрезентацию на 23 минуты. Особое внимание стоит уделить наиболее актуальному опыту, полученному в последний год. Постарайтесь построить свой рассказ на технических данных и вашем вкладе в развитие проекта. Интервьюеру интересно услышать о том, какие сложные технические проблемы вы решали. Не стоит много рассказывать о продуктовых функциях приложения и прочих деталях, не связанных с вашей основной деятельностью.


Технические вопросы

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

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

Достаточно часто в процессе собеседования просят решить какую-нибудь несложную задачу. Задачи бывают двух типов: алгоритмические и прикладные. Алгоритмические задачи направлены на проверку знаний в области компьютерных наук. Например, вас могут попросить развернуть связанный список или определить, является ли строка палиндромом. Для получения базовых знаний в этой области можно прочитать книгу «Грокаем алгоритмы». В ней просто и понятно донесены основные идеи, связанные с алгоритмами и структурами данных. В дальнейшем эти знания пригодятся вам для поиска работы в США. В российских компаниях решение алгоритмических задач не является основным показателем кандидата в отличие от собеседований в США. Если вы хотите попрактиковаться в решении задач, то можете бесплатно это сделать на сайте leetcode.com.

Назад Дальше