Судя по отзывам на мою предыдущую статью о процессе прохождения интервью, многие хаброколлеги интересуются, как лучше подготовиться к поиску работы на западе. Хочу поделиться моим опытом и дать ссылки, которые будут полезны тем, кто думает о переезде или просто хочет узнать, как это работает в другом мире. Статья ориентирована на среднестатистического разработчика ПО, так что если у вас блестящие навыки разговорного языка и превосходные знания нужных технологий и языков программирования, то многие советы можно пропустить.
Итак, вы задумались о поиске новой работы.
К сожалению, многие интервью очень сильно технические, и есть большой шанс что вас будут спрашивать узкоспециализированные знания. Произвести хорошее впечатление при отсутствии таких знаний очень проблематично, особенно если есть некоторые барьеры в коммуникации (например, при недостаточных навыках разговорного языка). Так что нужно получить/иметь эти знания, и это значит, надо определиться с областью работы. Если у вас нет особых предпочтений, то можно просто проанализировать рынок труда и в целом всю область. Несколько примеров:
В целом, если кандидат следит за новостями, или даже просто читает Хабр, то он уже сможет составить мнение о современных тенденциях. Однако, это совершенно не означает что вам нужно следовать этим тенденциям, просто это может помочь в нахождении интересующей вас области.
Здесь придется пожертвовать своим временем и силами, но оно того стоит. Перечислю примеры в порядке важности (от большей к меньшей):
Прозвучу капитаном очевидность, но советую поискать себя в поисковиках. Учтите, что реиндексирование непопулярных ресурсов происходит не так часто, так что озаботьтесь этим вопросом заранее. Также если на вас есть какой-то компромат в социальных сетях (например, фотки с ваших оргий в Лас-Вегасе), лучше его удалить, или скрыть от публичного доступа. Хотя шанс, что ваши персональные данные будут смотреть, достаточно низкий, лучше перестраховаться.
Несколько ссылок по OSS проектам (пополнение списка приветствуется):
Примеры исследований для профессионального блога:
Учтите, что индексация вашего присутствия займет некоторое время (вплоть до нескольких недель), так что могут потребоваться некоторые SEO-навыки (например, давать нужные ссылки на популярных сайтах).
Есть большой шанс, что резюме будет анализироваться автоматически и будет извлекаться информация в текстовом виде. Это не означает, что надо отсылать простой текстовой файл, все-таки хорошее оформление тоже что-то говорит о кандидате. Советую готовить резюме в pdf-формате (например, я использую LaTeX), и при просмотре скопировать текст в буфер и смотреть что получилось. LaTeX позволяет играть с представлением как я хочу, но конечно, можно использовать и некоторые менее экзотические технологии, как например, просто сделать HTML-страничку. Учтите, что печать в PDF из браузеров может отличаться (например, Chromium меня не особо радует под линуксом), так что попробуйте несколько вариантов.
В начале резюме надо указать ФИО, адрес электронной почты, телефон, адрес проживания. Никаких данных о семье и возрасте, фотографий тоже не надо. В конце список контактов или «References are available upon request», в ��сновном это ФИО, должность и телефон контакта. Электронная почта не используется по очевидным причинам.
В самом резюме обычно указываются знакомые технологии, методологии, библиотеки и языки программирования. Включается информация об образовании и предыдущих местах работы. Если у вас есть блоги и OSS-проекты, надо включить список ссылок тоже. Списки могут варьироваться, например, если вы устраиваетесь на работу веб-разработчиком, то указывать знание C++ не обязательно. Не надо указывать слишком много, лучше фокусироваться на главном. Эту ошибку я достаточно много вижу, рассматривая резюме от русских кандидатов — у них очень длинные и детальные резюме. Поверьте, никто особо это не читает, и акцент делается только на ключевых словах. Так что ограничивайте свое резюме 2, максимум 3 страницами (только в крайнем случае, если вы поменяли с десяток работ, и все они важны для новой позиции).
Когда отсылаете резюме, желательно также включить Cover Letter или просто сделать приписку в сообщение, где вы немного рассказываете о себе, какой вы замечательный специалист и как вы будете рады работать с этой компанией. Желательно описать, какой именно опыт у вас есть в той области, на которой специализуется компания. Если например, они занимаются сетевой безопасностью, можно написать, что вы имеете опыт написания скриптов и 0-day эксплойтов под платформу Metasploit.
Иногда нужно будет торговаться о зарплате. Многие эту информацию скрывают, так что приходится пользоваться такими ресурсами как www.glassdoor.com чтобы знать к чему быть готовым. Также э��у информацию можно использовать для вычисления границ своих зарплатных требований. Не бойтесь завышать, но не перегибайте палку, иногда это может отпугнуть ту сторону (например, могут подумать, что у вас завышенная самооценка и вы будете плохим командным игроком).
Просто несколько советов:
Например, вот список вопросов, которые могут встретиться на интервью для кандидата в Си-программиста (просто привожу пример, какие детальные знания могут понадобиться):
Т.е. некоторые вопросы могут быть достаточно общими, но в реальной практике программисты с этим не сталкиваются. Другие вопросы весьма специализированны под инструментарий. Лично я не согласен с такими методиками проведения интервью, но такое бывает (даже бывает хуже, когда просят описать формат TCP/IP пакета со всеми смещениями на память). Могут быть и другие крайности, про квадратные люки, но на своей практике я такого не встречал. В любом случае, готовиться надо и лучше быть готовыми к худшему.
Итак, вы задумались о поиске новой работы.
Первое с чем надо определиться — это в какой области вы хотите работать.
К сожалению, многие интервью очень сильно технические, и есть большой шанс что вас будут спрашивать узкоспециализированные знания. Произвести хорошее впечатление при отсутствии таких знаний очень проблематично, особенно если есть некоторые барьеры в коммуникации (например, при недостаточных навыках разговорного языка). Так что нужно получить/иметь эти знания, и это значит, надо определиться с областью работы. Если у вас нет особых предпочтений, то можно просто проанализировать рынок труда и в целом всю область. Несколько примеров:
- заходим на monster.com ( dice.com, indeed.com), вводим географическое положение, и смотрим опубликованные вакансии
- www.glassdoor.com — также поиск компаний по местоположению (как бонус есть ревью и зарплаты)
- индекс TIOBE www.tiobe.com/index.php/content/paperinfo/tpci/index.html — хотя индекс и по языкам программирования, некоторые языки чаще используются для каких-то определенных целей (например, Objective-C для разработки приложений под iOS)
- stackoverflow.com — популярные вопросы и вакансии
В целом, если кандидат следит за новостями, или даже просто читает Хабр, то он уже сможет составить мнение о современных тенденциях. Однако, это совершенно не означает что вам нужно следовать этим тенденциям, просто это может помочь в нахождении интересующей вас области.
Повышение сетевого присутствия
Здесь придется пожертвовать своим временем и силами, но оно того стоит. Перечислю примеры в порядке важности (от большей к меньшей):
- Собственные проекты (например на github-е)
- Участие в других проектах, в основном OSS. Важно, чтобы можно было отследить историю ваших коммитов.
- Участие в тематических конференциях и на специализированных сайтах (угадайте, почему зачастую ответы на stackoverflow.com такие развернутые и содержательные)
- Ведение собственного профессионального блога. На блоге лучше не злоупотреблять копированием других или публикацией очевидных и простых вещей. Советую делать исследования в интересующей вас области и публиковать их.
- Иметь профили на специализированных сайтах типа linkedin.com
Прозвучу капитаном очевидность, но советую поискать себя в поисковиках. Учтите, что реиндексирование непопулярных ресурсов происходит не так часто, так что озаботьтесь этим вопросом заранее. Также если на вас есть какой-то компромат в социальных сетях (например, фотки с ваших оргий в Лас-Вегасе), лучше его удалить, или скрыть от публичного доступа. Хотя шанс, что ваши персональные данные будут смотреть, достаточно низкий, лучше перестраховаться.
Несколько ссылок по OSS проектам (пополнение списка приветствуется):
- Google Summer of Code, например, список проектов на 2013: www.google-melange.com/gsoc/projects/list/google/gsoc2013
- sourceforge.net — выбираете популярные проекты, смотрите какие есть ошибки, и что вы могли бы исправить
- Проекты для новичков по улучшению ядра Linux: kernelnewbies.org/KernelProjects
Примеры исследований для профессионального блога:
- Числовые метрики по алгоритмам, библиотекам и языкам программирования (скорость, потребление памяти, количество строк кода и т.п.)
- Сравнение разных библиотек и языков программирования (как по числовым, так и другим метрикам)
- Детальный обзор какой-то узкой области (внутреннее устройство функций или подсистем каких-либо платформ)
- Оригинальные алгоритмы, специализирующиеся по определенным признакам (минимальное потребление памяти или ресурсов процессора, максимальное использование кэша процессора или его MMX/SSE инструкций, векторизация, lock-free и т.п.)
Учтите, что индексация вашего присутствия займет некоторое время (вплоть до нескольких недель), так что могут потребоваться некоторые SEO-навыки (например, давать нужные ссылки на популярных сайтах).
Подготовка резюме
Есть большой шанс, что резюме будет анализироваться автоматически и будет извлекаться информация в текстовом виде. Это не означает, что надо отсылать простой текстовой файл, все-таки хорошее оформление тоже что-то говорит о кандидате. Советую готовить резюме в pdf-формате (например, я использую LaTeX), и при просмотре скопировать текст в буфер и смотреть что получилось. LaTeX позволяет играть с представлением как я хочу, но конечно, можно использовать и некоторые менее экзотические технологии, как например, просто сделать HTML-страничку. Учтите, что печать в PDF из браузеров может отличаться (например, Chromium меня не особо радует под линуксом), так что попробуйте несколько вариантов.
В начале резюме надо указать ФИО, адрес электронной почты, телефон, адрес проживания. Никаких данных о семье и возрасте, фотографий тоже не надо. В конце список контактов или «References are available upon request», в ��сновном это ФИО, должность и телефон контакта. Электронная почта не используется по очевидным причинам.
В самом резюме обычно указываются знакомые технологии, методологии, библиотеки и языки программирования. Включается информация об образовании и предыдущих местах работы. Если у вас есть блоги и OSS-проекты, надо включить список ссылок тоже. Списки могут варьироваться, например, если вы устраиваетесь на работу веб-разработчиком, то указывать знание C++ не обязательно. Не надо указывать слишком много, лучше фокусироваться на главном. Эту ошибку я достаточно много вижу, рассматривая резюме от русских кандидатов — у них очень длинные и детальные резюме. Поверьте, никто особо это не читает, и акцент делается только на ключевых словах. Так что ограничивайте свое резюме 2, максимум 3 страницами (только в крайнем случае, если вы поменяли с десяток работ, и все они важны для новой позиции).
Когда отсылаете резюме, желательно также включить Cover Letter или просто сделать приписку в сообщение, где вы немного рассказываете о себе, какой вы замечательный специалист и как вы будете рады работать с этой компанией. Желательно описать, какой именно опыт у вас есть в той области, на которой специализуется компания. Если например, они занимаются сетевой безопасностью, можно написать, что вы имеете опыт написания скриптов и 0-day эксплойтов под платформу Metasploit.
Иногда нужно будет торговаться о зарплате. Многие эту информацию скрывают, так что приходится пользоваться такими ресурсами как www.glassdoor.com чтобы знать к чему быть готовым. Также э��у информацию можно использовать для вычисления границ своих зарплатных требований. Не бойтесь завышать, но не перегибайте палку, иногда это может отпугнуть ту сторону (например, могут подумать, что у вас завышенная самооценка и вы будете плохим командным игроком).
Собственно поиск работы
Просто несколько советов:
- Не бойтесь отсылать резюме несколько раз в одну и ту же компанию — если вы не подходите сейчас, то можете подойти позже (открылась вакансия, HR не проспал и наконец-то увидел ваше резюме во второй раз и т.п.)
- Будьте готовы к разговору по телефону. Если у вас английский хромает, то советую почитать вслух свое резюме, чтобы быть уверенными как это произносить на нужном языке правильно (особенно если работали в каких-то компаниях с русским названием или имели должность, которая не существует на западном рынке, например «ведущий специалист»)
- Освежите знания, особенно теоретические (алгоритмы, структуры данных, паттерны проектирования и т.п.)
Например, вот список вопросов, которые могут встретиться на интервью для кандидата в Си-программиста (просто привожу пример, какие детальные знания могут понадобиться):
- Для чего нужен gperf и как его использовать
- Напишите реализацию какой-либо структуры данных (стек, дерево, очередь) с использованием массива и/или связных списков
- Рассчитать O какого-либо алгоритма (включая написанные вами на интервью, и дальше может идти вопрос про оптимизацию)
- Обратить односвязанный список без использования дополнительной памяти. Почему рекурсивная реализация (это одна из возможных) не использует стек потока выполнения при компиляции на gcc.
- Как gcc прооптимизирует такой-то код, и какие вообще оптимизации он проводит.
- Как включить информацию отладки в gcc и какие дополнительных механизмы отладки предоставляет компилятор
- Какой порядок вычисления аргументов функций использует gcc, и можно ли на это повлиять.
Т.е. некоторые вопросы могут быть достаточно общими, но в реальной практике программисты с этим не сталкиваются. Другие вопросы весьма специализированны под инструментарий. Лично я не согласен с такими методиками проведения интервью, но такое бывает (даже бывает хуже, когда просят описать формат TCP/IP пакета со всеми смещениями на память). Могут быть и другие крайности, про квадратные люки, но на своей практике я такого не встречал. В любом случае, готовиться надо и лучше быть готовыми к худшему.