Неделю назад мы записали подкаст с Евгением Ким, Software Engineer at Google. У Евгения крутой опыт работы в США, которым он поделился. Поговорили о том, как пройти интервью в Amazon и Google, как проходить несколько этапов интервью, что учитывать и учить, какие навыки проверяются и важны ли софт-скилы. Личный опыт Евгения будет полезен всем, кто хотел бы поработать удаленно или переехать в США. Прикладываем видеоверсию, если удобнее смотреть и слушать. Содержание:   - Почему именно США?  - Где в США искать работу и на что стоит рассчитывать?  - Чем интервью в США отличается от других стран? Как подготовиться?  - Какие вопросы и этапы собеседования были в Google и Amazon?  - Какие навыки проверяются и как? Как оценивали софт скилы?  - Как оценивается глубина знаний по технологиям?  - Дают ли тестовые задания? В чем сложность?    Дальше слово передаем Евгению Однажды у меня появилась идея, что в Штатах круто, интересно, и большая концентрация технологических компаний. Хотелось посмотреть на  Стэнфордский университет — альма матер этих стартапов. В какой-то момент я решил, что я хотел бы съездить на каком то этапе своей жизни в эту страну, попробовать себя в этих стартапах.  Я как раз закончил четвертый курс в Томском университете систем управления и радиоэлектроники на специальности автоматизированные системы радиоуправления (аналог software engineering) и получилось поучаствовать в программе Work Experience USA. Студенты не на последнем курсе моги поехать в Штаты на работу. Конечно, ничего выдающегося студенты не ждали: это была неквалифицированная работа на минимальном окладе в пиццерии, в гостинице или курьером. По программе работал помощником на стройке (разнорабочим).  Приехал из США, закончил университет, переехал в Москву и набирался опыта. Мне удалось поработать в одной из крупных компаний, которые могут конкурировать с мастодонтами из США. Я не искал целенаправленно работу в Штатах: меня все устраивало, рос как специалист, постоянно появлялось желание что-то изучить и участвовать в новых проектах. Позже этот опыт помог получить несколько предложений от Google и Amazon. На определенном этапе карьеры, после лаборатории Касперского, пришла пора посмотреть на что-то новое. Мне удалось переехать. Путь до этих компаний занял у меня примерно 8 месяцев. Когда я искал работу в Штатах, закидывал удочку везде: indeed; haired; linkedin. Также есть много агрегаторов, которые собирают инфу с различных сайтов, компаний, рекрутинговых агентств. Ещё есть рекрутинговые агентства, но это весьма сомнительно. Выхлоп от них нулевой. Например я не ищу работу уже года два, и все это время мне иногда поступают предложения от рекрутинговых агентств.  Самый эффективный способ — отправлять резюме напрямую, в ту компанию, куда хотите попасть. Никто не мешает это сделать. Например, еще в Москве мне довелось поработать три месяца с великолепным специалистом — техническим директором в одной из компаний. Сейчас он работает Principal Engineer в Airbnb. Когда я переезжал в США, мне было интересно последовать по стопам человека, на которого ориентируюсь.Через него я получил приглашение на отбор в Airbnb, но дальше не прошел. Так бывает, я не расстраиваюсь. После этого я заинтересовался — какие компании мне были бы интересны. Следующие 4 месяца рассылал резюме в крупные компании в Долине и стартапы. При этом это можно делать регулярно В компаниях есть cooldown — определенный период, в течении которого вас не могут позвать на собеседование. Это может ыбть полгода, 9 месяцев, год. Получается, что раз в год или чаще можно стучаться в Google, Amazon или Netflix, и каждый раз будете пробоваться на уровень выше.  Любой собеседование имеет элементы удачи — не повезло с одним, повезет с другим. В России я прошел примерно 40 интервью и все они были разные. Но когда я столкнулся с собеседованиями в США, то на меня это произвело «вау-эффект». Когда я увидел эту модель собеседования, то понял, что она идеально оценивает кандидата. В этой модели минимум ошибок.  В этой схеме отбор разбит на несколько этапов — раундов, обычно 5. На каждом этапе собеседования проводят разные люди. Это помогает точнее оценивать кандидата и уменьшать вероятность ошибок. На каждое интервью отводят примерно час, но 5-15 минут теряется на организационные вопросы: подготовиться, выпить чай, кофе, сходить в туалет. Остается. 45 минут на собеседование. Например, компания приглашает разработчика с опытом 15 лет. За 45 минут невозможно всесторонне оценить человека — погрешность будет очень большая. Я вспоминаю интервью в России, когда мне давали листик с кодом и спрашивали. что выведется в результате? Проверить результат код — 2 минуты, зачем мне это знать? Вряд ли этот тест может показать навыки и способности кандидата, понять, как он думает, и как будет решать задачи.  В США любое интервью сводят к оценке способностей. Оценивается способность аналитически мыслить, оценивать задачу стандартно и нестандартно и задавать вопросы. После того, как поставили задачу, смотрят на реакцию. В разных компаниях есть шаблоны на которых указано на какие аспекты обращать внимание: насколько быстро кандидат решил задачу; задачи подразумевают несколько решений: какое решение ты выбрал простое или пошел дальше; смогли ли вы устранить варианты, которые усложняют задачу; многие задачи подразумевают не однозначные формулировки, чтобы стимулировать вас задавать вопросы; сколько исключений смог рассмотреть, как быстро.   Когда вы пришли к решению, вы должны его запрограммировать. Никто не смотрит сколько вы поставили запятых или открыли скобок. Важна алгоритмическая постановка и структурирование кода. Например, когда я собеседовался, то писал код с таким количеством ошибок, что я бы весь день его исправлял, чтобы он скомпилировался (решал на доске). Но на это никто не смотрел, оценивали умение решить задачу. Когда подготовиться: Изучать теорию: структуры, хэш-таблицы, индексы. Смотреть YouTube-канал Google с разборами некоторых задач. Leetcode.com  — сборник задачек для интервью. Это то с чего стоит начать. Большинство задач утекает на этот ресурс: кандидат сходил на собеседование, а потом опубликовал на Leetcode. У большинство задач, которые я задаю кандидатам, есть аналоги на hackerrank.com. Если вы досконально разберете типичные задачи и поймете все варианты решения, то легко решите остальные подобные. Практикуя решение задач вполне достаточно, чтобы пройти техническое собеседование. Здесь нет ничего сверхъестественного. Если у вас есть 2-3 года опыта и вы знаете алгоритмы, то подготовка займет 2-3 месяца в спокойном режиме. Никто не будет вас специально топить. Более того, интервьюер всегда подскажет, если видит, что человек потерялся или не смог уловить суть задачи. Это, конечно, повлияет на итоговый результат не в лучшую сторону, но это не критично. Не будет такого «Ага, кандидат замялся, мы его не берем, ха!» Интервьюер может вас направить или подтолкнуть к какому то решению. Если вы не смогли отсечь половину решений, интервьюер вам подскажет. Более того, у нас в компании есть список подсказок, который может интервьюер дать. Это нормально. Системный дизайн. Это отдельный раунд (из пяти). В дизайн-интервью будет оцениваться насколько человек умеет проектировать системы, какой у него опыт. Здесь без какого-то опыта работы будет тяжело. Например, вам зададут самый простой вопрос «спроектируйте поисковую строку Яндекс». В Яндексе сотни, если не тысячи человек работают над поиском. От того, как спроектирована вся система, инфраструктура, алгоритмические основы, лингвистические особенности, зависит все. Здесь нет правильного ответа.  Интервьюер будет смотреть на то, насколько подробно и детально вы будете подходить к решению. Например, у вас будет распределенная система, такие аспекты отказоустойчивости столько серверов, гео распределенная инфраструктура. Если что-то интервьюеру будет интересно, то он начнет об этом расспрашивать: а какая у вас будет база данных, NoSQL или реляционная.  Дизайн-интервью. Это один из раундов или behavior. Это обязательный раунд для мидлов и старше. Если претендуете на джуниора, или ближе к мидлу, то скорее всего его не будет (но и для сеньоров бывают исключения). На этом этапе не будет никаких технических задач, а будут вопросы из вашего опыта, например, «Вы видели проблему и как поступили?». Например, в некоторых компаниях есть принципы. Я помню один из принципов «Не согласились, а сделай», когда меня спрашивали пример из личного опыта, когда не согласился с тимлидом и прогнул свое решение. Как правило, это просто разговор с определенным менеджером. Этот раунд проходит большинство. Никто не сможет проверить досконально сказали вы правду или нет. Но лучше иметь сценарии из вашего опыта, которые накладываются на эти принципы. Просто если вы будете понимать что это за принцип и как его трактовать это будет бонусом в копилку при оценке кандидатов. Не думаю, что софт скилы играют большую роль. В первую очередь оцениваются технические знания и  насколько они подходит для позиции. Иногда случаются ошибки, когда человека могут нанять на джуна вместо мидла. Это случается, если у кандидата не получится убедительно рассказать о своем опыте. Такое может случиться из-за погрешности в собеседованиях. Все таки их пять и ошибки случаются. Но такие люди быстро дорастают до претендуемой позиции. Например, сеньор это тот человек, что способен декомпозировать задачу и решить ее сам. Но его отличие от мидла, что он влияет на людей вокруг себя и передать часть ответственности и задач. Но такие вещи тяжело понять сразу, поэтому бывают ошибки. Софт скилы не настолько важны, чтобы повлиять на результат. Никто не будет смотреть насколько вы эффективно общаетесь или насколько вы хороший командный игрок. Например, в моей команде есть и интроверты и экстраверты, но все мы хорошо работаем. Возможно, на позиции ПМ или менеджера софт-скилы важны, но на должность программиста от младшего мидла до сеньора они не особо влияют. Мне нравится в крупных компаниях, например, в том же Google, что там всегда придерживались принципов объективности и максимально изолированной оценки. Система с несколькими раундами позволяет избежать субъективности. Например, я могу провести интервью и собрать свои впечатления о кандидате. Но я могу ошибаться и быть субъективным, поэтому пишу фидбек не употребляя местоимений, обезличено.. Но я не буду принимать решение  о том, нанимать человека или нет. Это решение будет принимать другой. Этот фидбек уходит человеку который будет принимать решения. Он будет отталкиваться от фактов. Если у нас будет два кандидата, которые одинаково равны, то может случиться так, что наймут обоих. Или дадут дополнительное задание. Например, у меня было так, что я прошел 5 раундов и потом звонит рекрутер и говорит, что они не могут решить кого брать и предлагают провести еще один раунд. Нас не тренируют оценивать потенциал роста. Как правило, человек, что соответствует текущим требованиям, уже сформирован в своих карьерных целях. Это сформированный специалист и может выполнять требуемые обязанности. Бывает такое, что на собеседованиях спрашивают кем вы видите себя через пару лет, но заранее такие вопросы не готовят. По умолчанию подразумевается, что он будет расти в своей карьерной ветке.  Бывает такое, что некоторые специалисты работают на одной позиции 5-10 лет. Это нормально, значит человек комфортно себя чувствует и хорошо выполняет свою работу. И это хорошо. Это не значит, что человек достиг потолка и мы его не возьмем потому что нет потенциала. Если он соответствует вакансии — возьмем. Есть некоторые проекты, в которых можно вливаться полгода и никто не будет каждую неделю подгонять или задавать вопросы «А правильно ли мы наняли человека?» А бвает так, что через полгода человек шагает на ступень выше, но обычно это связано с теми погрешностями, что я говорил. А еще может быть связано с другими понятиями градации уровней. Как правило, у нас есть твердые понятия: джун, мидл и сеньор. Но во многих компаниях в этой шкале десятки уровней. Например, в Microsoft есть 62, 63, 65 уровни. Здесь уже тяжело понять где мидл, а где сеньор. Это удобно, можно шагать с уровня на уровень, а не перескакивать с одной квантовой орбиты на другую, предварительно 3 года копя энергию. Нанимается человек, который может выполнять свою работу. Стандартная практика не подразумевает оценку потенциала. Оценивают потенциал выполнять рабочие обязанности. В свое время я записывал какие вопросы мне интересны. Например, мне важно насколько часто в компании происходит переоценка. Если я этого года работал очень эффективно, я б хотел иметь возможность перейти на след ступень. Также мне важно знать есть ли возможность перейти в другую команду. Я стараюсь в первую очередь узнать насколько сложно мне будет перейти в другую команду.  Бывает, что при собеседовании вам рассказывают интересную историю, что компания решает глобальные проблемы каждый день и от этого зависит весь мир. Но когда начинаете работать, ожидания расходятся с реальностью. В больших компаниях есть практика устроить внутреннюю реловкаю. Чем терять специалиста, роще перевести его в другой отдел или даже страну.  В Штатах также важны социальные бенефиты. Это страховка, насколько она масштабна, что покрывает. Часто все узнать вы можете только после устройства. Но спросить точно нужно.  Не стоит приукрашивать. Но я часто встречаюсь с тем, что наши ребята, в том числе и я сам, недооценивают свою роль в команде. Например, у меня есть ментор в команде (он тоже иммигрант). Он говорит, что наши люди часто недооценивают или не могут правильно сформулировать свою роль в проекте. Что лучше: — Я участвовал в создании продукта N. или — В команде работал над продуктом N: созданием системы транзакций, внедрением и отладкой. Одна и та же роль описана поверхностно и глубже. Второй вариант больше скажет интервьюеру, чтобы он понял, что вы делали, чем занимались и чем будете полезны команде. Это не имеет ничего общего с приукрашиваем — это правда, которую вы описываете. Ложная скромность здесь только будет мешать. В маленьких компаниях можно получить больше разностороннего опыта. В больших все больше формализовано. Из лидеров индустрии это Яндекс, Лаборатория Касперского, JetBrains. Я не знаю ни одной топовой компании в США, которые бы не использовали продукты JetBrains. Например, в Лаборатории я получил опыт абсолютно нового подхода к разработке: все должно быть максимально безопасно, отлажено, покрыто тестами чуть ли не на 97%, чуть ли не каноничный аджайл со всеми ретро и демо. Через несколько месяцев я влился в процесс и стал понимать, как процессы использовать для своего развития. Этот опыт в дальнейшем мне помог. Также важны коллеги — это самый главный ресурс, которым вы можете воспользоваться. Ребята с которыми я работал, сейчас разбросаны по всему миру, в Штатах, в голландии, в Австралии. Это была очень сильная команда, которая меня вытянула на уровень выше. Если есть интересный проект и команда — берите, неважно, какая компания.  Все, что вы получите, сможете потом отшлифовать, пройтись по алгоритмам, закрепить и сможете проходить собеседования в крупные компании. Это, пожалуй, главное. Без визы не устроиться в Штатах. Часто вижу сообщения, что Трамп отменяет визы для эмигрантов или ставит на паузу. Но я знаю, что по-прежнему работает лотерея, работодатели принимают на работу сотрудников из-за рубежа. Штат сотрудников крупных IT-компаний на львиную долю состоит и эмигрантов и экспатов. Если сейчас закроют все рабочие визы, то представьте, что случится. Я знаю два вида виз. Иммиграционные визы вы делаете сами (или участвуете в лотерее), приезжаете и ищете работу. Рабочие визы, например, L1 и H1 делает работодатель. Нужно найти работодателя, который займется этим для вас. Например, устраиваетесь в Microsoft в Москве, а потом переезжаете в Редмонд. Всеми документами и оформлением занимается компания. У больших компаний есть ресурсы и специалисты, но этим занимаются и небольшие.  Визы выдаются по квотам и большим компаниями легче получить больше виз. Но я чаще устраивался в небольшие и основанные выходцами из СССР. Они хорошо понимают, что можно получить качественных специалистов по цене ниже рынка. Поэтому они тоже занимаются релокацией разработчиков.   Если работаете на компанию несколько лет подряд, то можно оформить ВНЖ, чтобы не продлевать визу. Можно рассчитывать, что юристы компании с этим помогут и этим занимаются не только большие компании. Но лучше узнать о такой практике заранее, до трудоустройства. Есть 2 вида трудоустройства: за оклад и почасовое. За оклад — работа бессрочная, а почасовая подразумевает определенное число часов. В первом случае можно легко уволиться самому, но также легко быть уволенным. Конечно, если вас увольняют без причины, то можно обратиться в коллегию адвокатов, и теоретически что-то отсудить. Но такое, как правило, не случается и все расстаются по-дружески. К тому же, это позволяет вам вернуться на ту же позицию без вопросов. К тому же, если у вас виза L1, то у вас есть две недели, чтобы найти новую работу, иначе придется уехать из страны. А если вы расстались по-дружески, то можно вернуться обратно в двухнедельный срок. YouTube-канал Евгения. dvprogram.state.gov - официальный сайт лотереи “Green Card”. numbeo.com  - Поиск информации о стоимости проживания. leetcode.com - Сборник задачек для интервью. “Grokking the System Design Interview” на educative.io. glassdoor.com - Статистика по зарплатам различных компаний. levels.fyi - Статистика по зарплатам FAANG. hackerrank.com Мы headz.io сейчас активно развиваемся в России у нас больше 700 работодатели на площадке уже за полгода, и мы продолжаем расти. Сейчас у нас появляются вакансия с релокейтом, и удаленными из-за рубежа. В конце этого года планируем заняться этим вопросом более существенно, поэтому, если кто-то планирует переехать — подключайтесь к платформе.  HR tech Entrepreneur, основатель сервиса headz.io