Очередная история успеха после череды неудач. Расскажу, чего мне стоило получить офферы от Facebook, Google, Amazon, JP Morgan в Европе, как я готовился, сколько собесов зафейлил перед тем, как удача повернулась ко мне правильной стороной.
TL;DR. Послал сотни резюме. Прорешал около 100 задач на Leetcode. Прочел книжку по архитектуре (не той, которая про дома, а той, которая system design). Прошел 9 интервью. Получил 4 оффера. Принял 1. Жил, пока что, не очень долго, но, вполне себе, счастливо в Лондоне.
Задняя земля
Ой, нет. Я ж не гугл транслейт. Я могу нормально перевести background на русский. Пусть будет "Немного об авторе". Звучит вполне литературно, что скажете?
Изначально я написал эту статью на своем умеренно ломанном английском в своем персональном блоге. Там все-таки свой домен. Надо ж типа свой персональный бренд развивать, да? Говорят, потом на собесах помогает. Да и, вообще, лайки всем нравятся. А чтобы лайков много было, надо бы их в одном месте собирать.
Ху из я? Меня зовут Андрей. Всем привет! Мне без пары лет 30, и я из Воронежа. Немногим более 6 лет професcионального опыта. На момент начала собесов было чуть меньше 6, но я хитро писал в резюме ~6. Люблю ~, оставляет много пространства для маневра. Худо-бедно получил специалитет на факультете компьютерных наук в ВГУ (это почти как МГУ, только леший знает где, и не МГУ). Первые 4 года провел в аутсорсах. Потом 2 года удаленно работал на Hazelcast и Bricks (американские стартапы). Написал парочку небольших либ на GitHub. Иногда рассказываю что-нибудь эдакое на конференциях. Веду бложек. Получаю магистратуру онлайн в Georgia Tech. Пытаюсь, так сказать, восполнить пробелы своего беззаботного студенчества в ВГУ. Если вдруг кому-то сильно интересно, то можете почекать мое CV вот тут.
Жил я в Воронеже, не тужил. Код на машине крутится, лавеха мутится. Правда, все мне хотелось земли заморские посмотреть. Ну, и во всяких FAANG'ах поработать, по возможности. Год назад мои чаяния оформились во вполне конкретный план. Я провел небольшое исследование на тему того, куда же все-таки переезжать. Назвал его по-желтушнее и собрал плюсов на хабре. После, взял небольшой перерыв, прочистил мозги, и принялся за дело.
Вы лучше смотрите перевод той статейки на английский в моем бложике. Мне так в бложек траффик пойдет, а я люблю на количество просмотров медитировать.
Рассылка резюме
Время: Январь — Февраль 2021.
Время рассылать резюмехи. Первым порывом было податься в известные мне компании. Точнее так, в известные МНЕ компании. Чем больше я перебирал их имена в голове, тем больше мне становилось понятно, что, во-первых, моя память — не шибко надежное хранилище с потерей данных, во-вторых, даже если бы я ничего и не забыл, мои знания точно не блистают полнотой. В итоге я выписал список компаний, которые вспомнил на листик. В этот листик добавил разные интересные имена из статей найденных в гугле. Про какие-то компании услышал из видосов Gergely Orosz. Список, однако, вышел скудноватым. Гулять, так гулять! Я прошелся по всем компаниям из S&P 500 и около сотни самых больших из NASDAQ, и выписал интересные названия еще и оттуда. Теперь список вышел на славу.
На этом месте логично спросить, почему я интересуюсь только большими компаниями, которые есть или скоро будут на бирже. Причин целый ворох, помимо, "хочется":
- Я успел поработать в компаниях среднего размера и в маленьких стартапах. Попросту интересно, как оно там в больших корпорациях. Запишем как "любопытство".
- Хотелось бы верить, что FAANG в резюмехе заставляет ее сверкать так, что половина HRов слепнет, а вторая бежит к тебе с офферами всех денег мира.
- Еще хотелось бы надеяться, что все эти круги ада на собесах помогают компаниям собирать действительно скилловых людей. Люблю работать с крутыми чуваками. Мотивирует. В общем, я из тех, кто лучше будет худшим среди лучших, нежели наоборот.
- У больших компаний обычно хорошо отлажен процесс перевоза инженерных (и не только) тушек.
- Моей жене скоро получать магистратуру по архитектуре. Стоит такая штука как самолет. FAANG платит как два самолета. Математика сходится.
Непрошенный совет #1. Если вы хотите ехать в США, то собеседоваться надо около ноября. В январе вы уже опоздали. Подавляющее большинство кандидатов переезжают по визе H1B. Она выдается только в полнолуние в четверг вискосного года. Ладно, ладно. Выдается она раз в год к концу марта. Значит вам должны сделать оффер до конца фераля (а лучше раньше), чтобы успеть собрать и подать документы.
Из каждого утюга, где говорят про собесы в большие компании, говорят про рефералы. Об этом пишут в бесконечном количестве блогов и постов на Reddit. Как всем известно, если что-то написано в интернете, то это не может быть не правдой. Не долго думая, я проворошил всю свою сеть коннкетов на LinkedIn, и дополнил это спамом незнакомым инженерам из FAANG в Twitter. Как мне сказал один из них, в том же Google он указывает уровень знакомства с тем, кого рекомендует. Как и следовало догадаться, рефералы на анонимусов ценятся примерно никак. С другой стороны, безмерно крутой и уважаемый мной Gergely Orosz сказал мне, что на них все-таки смотрят в первую очередь. Я бы рекомендовал попросить рефералов у хотя бы как-то знакомых людей, и не заниматься ковровой бомбардировкой незнакомых ни в чем не повинных людей. Лично мне это пользы не принесло. Помимо рефералов я подавался на сайтах компаний.
Прошла первая неделя февраля. Я разослал, наверное, 300-400 резюме. И… ничего. Зияющая пустота в моем почтовом ящике. Какие-то компании прекратили перевозить из-за COVID, какие-то меня просто игнорили. Высшие космические силы, мое паучье чутье, и, в конце концов, глас разума подсказали мне, что мне нужно либо набраться терпения, либо менять стратегию. С терпением у меня всегда было плохо, с самого детства, так что оставалось только менять стратегию. Более того, новая стратегия никак бы не помешала насладиться плодами прошлых усилий, правильно?
Кто-то там умный предположительно сказал, что хороший вопрос содержит половину ответа. Осталось придумать хороший вопрос. Попробуем вместе? "Как бы мне наняться в классную большую компанию?" Не. Фигня какая-то. "Как сделать свое резюме более заметным?" Вроде, лучше. "Как сделать так, чтобы рекрутеры замечали мое резюме чаще?" В яблочко! Ключевое слово тут рекрутеры. Если они — те люди, которые производят первичный отсев, то им-то и надо писать. Этим я, собственно, и занялся. Открыл LinkedIn, вбил recruiter в строку поиска, и начал фильтровать по компаниям. Фильтровать и спамить с рассказом о том, какой я хороший.
Через странички с вакансиями на сайтах самих компаний я получил интервью с Booking в Нидерландах, JP Morgan в Великобритании, Amazon в Германии, Microsoft в США. Спам в личку рекрутерам принес Uber в Нидерландах и Databricks в Нидерландах. Рассылка почти сработала с Microsoft, но рекрутер оказался в Польше, а в Польшу мне не хотелось.
Facebook дался мне нелегко. Я написал Michel Weststrate в Twitter. Он сделал immer и mobx. Я когда-то что-то даже коммитил в immer, тогда-то мы и познакомились. Он оказался безумно славным парнем и не пожалел для меня реферала в Facebook. Порекомендовал меня он на позицию фронта в Лондон. Через пару дней меня режектнули без объяснения причин. Печально. Погрустил я, впал в депрессию, подсел на тяжелые наркотики, и сейчас пишу вам из клиники в деревне Усть-Урюпино. К счастью, все было не так. Отказы — это нормально. Я решил, что не теряю абсолютно ничего, если обращусь к другому рефералу — Ensar Basri Kahveci. С ним я вместе работал в Hazelcast, но в разных командах. В этот раз я скинул ему список вакансий, на которые надо было меня подать. Список более широкий и внушительный: и фронт, и фуллстек, и еще что-то, но не помню уже что. Basri тоже оказался наикрутейшим чуваком и закинул меня на них все. Прошло пару дней. Я все продолжал спамить рекрутеров в LinkedIn. Одно из моих сообщений пришлось на парня из Лондона, который нанимал в Facebook. И он ответил! Написал, что видит реферал в системе, и мы договорились о звонке.
Реферал в Lyft я получил от крутейшего Andrioid разработчика, Denis Nekludov, с которым мы вместе учились в ВГУ много лет назад.
Мой последний реферал с определенной задержкой пришел от Alex Salo, бога математики, с которым мне тоже довелось учиться в ВГУ (а ВГУ-то неплох!). У меня не было способа оперативной связи с Алексом. К тому моменту, когда он прочел мое сообщение, и как человек добрейшей души и большущего сердца дал мне реферал, я уже подался в Google сам. А у Google такая политика, что можно подаваться не более чем на 3 вакансии в месяц. В итоге, его реферал почти что месяц дожидался пока у меня этот счетчик сбросится. К счастью, дело выгорело, и в марте я вышел на связь с Google в Германии и Швейцарии.
Непрошенный совет #2. В больших корпорациях правая рука не знает, что делает левая. Подавайтесь на разные позиции. Даже если они в одном городе, есть все шансы, что в разное время на ваше резюме посмотрят разные люди, которые могут принять другое решение. Шансы на то, что подобное произойдет при подаче в разных регоинах стремятся к 1. Золотое правило — чем больше подадитесь, тем лучше.
Конечный список компаний, в которые я собеседовался выглядел так: Booking, JP Morgan, Amazon (дважды!), Microsoft, Lyft, Databricks, Uber, Google, Facebook.
Подготовка
Большинство, если не все большие компании, будут судить вас по 4 критериям:
- Специализированные (доменные) навыки. Например, React для фронта или базы данных для бека.
- Алгоритмы и структуры данных.
- Системный дизайн. В России это чаще всего принято называть архитектурой.
- Soft skills / cultural fit. Точного литературного перевода у меня в голове не нашлось. Соррян. Пусть будет "Навыки общения и взаимодействия с людьми и в команде". В общем, будут проверять, что вы не токсичная какаха с завышенным ЧСВ.
Доменные навыки
Многие компании из списка про них даже не вспомнит. Особенно, если вы подаетесь на абстрактного software engineer в вакууме. Будет встречаться чаще, если позиция более конкретная. Например, если вы подаетесь на фронта или в конкретную команду (что редкость для тех же Facebook и Google). У меня спрашивали вопросы по этой теме, когда я собеседовался на фуллстека в Uber и Booking, и на фронта в JP Morgan. К этому разделу я не готовился никак, рассчитывая, что вывезу все на опыте работы в индустрии. Так и получилось.
Алгоритмы и структуры данных
Leetcode. Много литкода.
Непрошенный совет #3. Я бы советовал брать для интервью тот язык, которым вы владеете лучше всего. Даже если у него в стандартной библиотеке нет всех нужных вам структур данных. Я лучше всего знаю TypeScript/JavaScript. Как многие могут знать, у нас нету того же хипа. Ни на одном интервью это не было проблемой. Я трижды сталкивался с необходимостью решить задачку с помощью хипа, и трижды мы с интервьюером просто представляли, что у меня есть библиотека с воображаемым API. В худшем случае, вас попросят этот хип реализовать, что очень очень маловеротяно. Просто попрактикуйтесь пару раз дома, и проблем на интервью не должно будет возникнуть даже при худшем раскладе.
Если вы уже порядком подзабыли большинство алгоритмов и структур данных, я бы рекомендовал начать с легкой подборки задач на Leetcode. Не надо решать их все. Авторы подборок услужливо отмечают рекомендуемые. Вот их и прорешайте в каждой секции. Далее можно переключаться на подборку средней сложности, действуя по тому же алгоритму. После того как вы прорешаете рекомендуемые задачки из каждой секции, у вас должно быть понимание, какие секции вызывают наибольшие сложности. Эти секции стоит пройти полностью. Сразу после стоит выходить на свое первое скрининговое интервью, его еще называют телефонным.
Непрошенный совет #4. Это норм сидеть часами над одной задачкой и думать, что вы тупой. У меня все так и было. Спустя пару недель стало лучше. Еще через пару недель еще лучше. Надо просто набрать критическую массу знаний. Для себя я установил строгое расписание. Каждый день я старался решать задачки по 2 часа. В один день я фокусировался только на одной секции. Литкод делит задания на 6 категорий. Таким образом за неделю я проходил через все категории. С новой неделей цикл начинался заново. Такой подход позволил мне более-менее равномерно прогрессировать по всем категориям.
После того как вы пройдете через первые скрининговые интервью в нескольких компаниях, у вас определится список компаний, где вы не облажались. Я бы рекомендовал с каждой из них бронировать полноценное собеседование, состоящее из нескольких интервью за 1-2 дня, через 3-4 недели после вашего скрининга. По возможности, поставьте интервью как можно ближе друг к другу, чтобы услышать офферы примерно в одно и то же время. Идеальный вариант — это взять неделю отпуска на текущей работе, и пройти через условные 5 компаний за одну неделю.
После скрининга стоит перейти к подборкам задачек с фокусом на определенные компании. Они будут платными на литкоде, но это будут не космические деньги. Во многом подборки пересекаются. Более того, вы вряд ли успеете пройти их все и для всех компаний за 3-4 недели. Я бы рекомендовал выбрать 2 наиболее интересные вам компании. В одну неделю прорешивать подборку для одной компании, в другую неделю подборку другой компании. И так далее. В неделю "А" я решал задачи для Facebook, в неделю "Б" задачи для Google.
Системный дизайн
Что ж это за зверь такой? Обычно, в рамках одного абзаца вам опишут систему, и что она должна делать. Вы же должны будете уточнить требования, масштаб, и набросать черновик ее реализации. Представьте себе это как работу с бизнесом. Условный Василий Вротымгерб дал манагеру бюджет в 10 лямов и сказал, что хочет чтобы сделали приложение для его дочки. Она котиков любит смотреть. Манагер вообще не технический, но зато с MBA, то бишь умеет деньги считать. Он 5 лямов положил в карман и пришел к крупной студии. Курпная студия положила 4 ляма в карман и пришла к вам. У вас ребенок как раз в школу собирается. Вы хотите ему частную школу оплатить и брекеты поставить. Вам нужен этот лям. Вам надо за 45 минут интервью (на самом деле около 35, вам же еще представиться надо и small talk поддержать) понять, чего от вас хотят, рассказать примерно, как делать будете, и убедить студию, что вы классный-распрекрасный субподрядчик, который точно бабло не сольет.
На некоторых интервью вас попросят сфокусироваться больше на дизайне API и схеме БД. На других буду больше интересоваться как вы обеспечите масштабируемость, отказоустойчивость и производительность.
В подготовке мне больше всего помогла книга "System Design Interview – An insider's guide" от Alex Xu. Она кратко и по делу обозревает различные популярные задачи из реального мира. В своей профессиональной деятельности мне иногда выпадает удовольствие порисовать диаграммки и подумать об архитектуре, так что это был единственный мой ресурс для подготовки к системному дизайну. Я хотел больше времени уделить алгоритмам. Если вы хотите чуть больше энергии вложить в системный дизайн, можете подсмотреть список ресурсов у Gergely Orosz в его блоге
Алярма! Вы могли заметить, что ссылка на книжку с кучей каркозябликов в конце. Она аффиллированная. Это значит, что если вы купите книжку по моей ссылке, Амазон мне отсыпет копеечку. Если вы хотите сказать мне спасибо за статью, то я попрошу вас так и сделать. Вы получите классную книжку, а я себе очередной фигни куплю бесполезной :). Если вы принципиально не любите аффиллированные ссылки, то вам "чистая" ссылка.
Soft skills / cultural fit
Это была самая простая часть для меня. Я пробежался через курс "Rock the behavioral interview" на Leetcode и выписал несколько историй из своей практики в гугл док. Обязательно делайте заметки с ответами на вопросы! Не пытайтесь изобразить себя всезнающим и непогрешимым всея программирования. Все знают, что это ложь. Я знаю, что я лажал, и лажал очень крупно. Ошибался, осознавал что-то, учился, и исправлял свои ошибки.
Внимание! Если же вы вправду думаете, что за свою карьеру никогда не ошибались, то, возможно, вам стоит всерьез спросить у своих знакомых не являетесь ли вы токсичной какахой с завышенным ЧСВ.
Немножко отсебятины
Я начал рассылать резюме в конце января. Мое последнее интервью было в середине апреля, как я и планировал. Это дало мне 10 недель на подготовку. Первые 2 недели я тратил на литкод 2 часа в день в рабочие дни, 4 часа по субботам, брал выходной в воскресенье. Примерно в это время произошло мое первое скрининговое интервью. После него я продолжил литкодить, но уже без выходных. По воскресеньям я фокусировался на категории задач, которая получалась хуже всего. Спустя 2 недели, я начал читать по одной главе "System Design Interview – An insider's guide" каждый рабочий день в дополнение к литкодингу. Как только книга закончилась, я продолжил заниматься литкодом в обычном режиме. Мне пришлось заняться жесткой расстановкой приоритетов и многим пожертвовать. У меня была полноценная работа. Я учился магистратуре. На эти 10 недель я завязал со спортом и жил у компа. Жил на сахаре и кофеине. Набрал около 4 кило. Всей душой полюбил to-do списки. Я думаю, что больше всего мне помогло то, что я начинал день с самого главного — подготовки. После нее я уже занимался задачами из to-do листа в порядке приоритета.
Интервью
Непрошенный совет #5. Если вы уже давненько не проходили интервью, то скорее всего пару первых собесов вы завалите. Постарайтесь поставить первыми интервью в компании, куда вы хотите меньше всего. Еще лучше, назначьте первыми интервью с парой компаний, куда вы вряд ли пойдете. Просто для практики. Да, это не очень красиво, но вам шашечки или ехать?
Далее я расскажу про свой опыт интервью в разных копаниях.
Lyft
Я добрался до звонка с рекрутером лишь в конце февраля. Помните "Непрошенный совет #1"? Это было слишком поздно, чтобы провести все раунды интервью, сделать оффер и подготовить документы. Конец истории.
Офферы: 0 / 9.
Microsoft
Я прошел скрининговое интервью. Там у меня немножко спросили про опыт работы и попросили решить среднюю задачку с литкода. Через неделю молчания мне пришел емейл с отказом из-за визы. Оказывается, они думали, что у меня есть разрешение на работу в США. Наверное, я забыл где-то поставить галочку, что мне нужно спонсировать визу. Не удивлен. В Micrisoft я заслал около 40-50 резюме. Легко мог где-то что-то забыть. Прости меня, Microsoft!
Офферы: 0 / 9.
Databaricks
Я облажался на первом скрининге. Меня спросили литкод средней сложности. Я его решил, но не оптимальным образом. Что ж, век живи, век учись. Именно поэтому очень важно проходить интервью в нескольких компаниях сразу.
Офферы: 0 / 9.
Booking
У меня было 2 интервью на доменные знания. Еще одно интервью было разбито на 2 части. Сначала я решил легкий литкод. Далее мы перешли к системному дизайну. В тот момент я работал над offline-first приложением с многопользовательским режимом. Как мне бы хотелось верить, именно это когнитивное искажение заставило меня заоверинженирить мой дизайн. Не важно почему, важно, что налажал. Рекрутер мне предложил попробоваться в другую команду, где системный дизайн не та важен. С другой командой у меня было только интервью с менеджером, где мне задавали поведенческие вопросы и спрашивали про опыт. В итоге, мне отказали с вердиктом "недостаток интереса к доменной области команды".
Офферы: 0 / 9.
Uber
После быстрого созвона с рекрутером меня ждало скриниговое интервью, но, на удивление, не на алгоритмы, а на доменные знания. В тот момент Uber нанимал мидлов и синьоров. Это интервью должно было определить мой потенциальный уровень. Рекрутер мне сообщил, что дальше меня будут рассматривать на мидла. Мое ЧСВ пострадало, но я, конечно же, решил не сдаваться и продолжать. Далее у меня было два литкод-интервью средней сложности, классический системный дизайн, и поведенческое интервью с менеджером. Результаты были противоречивые. Мне сказали, что я хорошо прошел поведенческое интервью и классно себя показал на систменом дизайне. Кодинг же оставлял желать лучшего. Они решили, что мне будет скучно на позиции мидла из-за моего хорошего системнго дизайна, но позицию сеньки она предложить готовы не были из-за кодинга.
Офферы: 0 / 9.
JP Morgan
Это была единственная компания, которая не проводила скрининговое техническое интервью. Меня сразу закинули на полноценный набор интервью (прозвучало корявенько, но я хз как перевести full interview loop). Со мной провели 2 доменных интервью, где мы поговорили за React и JS. Системного дизайна не было. После было интервью с менеджером за опыт и мои командные навыки. Им очень понравилось, что я и сам был своего рода инвестором и менеджил свой портфель. То что я доменеджил его до минусов я упоминать, конечно же, не стал. Как результат, мне предложили синьорскую позицию в Лондоне!
Непрошенный совет #6. Если у вас есть хобби/внерабочая деятельность по профилю компании, то обязательно расскажите об этом! Сюрприз-сюрприз, компаниям такое нравится.
Офферы: 1 / 9.
Amazon
История с Amazon в очередной раз подтверждает "Непрошенный совет #2". Корпорации масштаба FAANG не функционируют как единый организм. Скорее, как множество небольших условно независимых команд. Вам могут отказать в одном регионе, в одной команде, но с радостью принять в другую.
Мое первое интервью было с Amazon в Мюнхене. Они прислали онлайн-тест для скрининга. Там была лишь парочка простых литкодов. Немногим после, у меня был скриниговый созвон. На нем меня 70% времени пытали поведенческими вопросами, 30% времени я решал средний литкод. Как мне показалось, все прошло хорошо, но через несколько дней мне пришел отказ.
Будьте готовы, Amazon спрашивает поведенческие вопросы на каждом интервью.
Непрошенный совет #7. Рассказывать одну и ту же историю разным интервьюерам в ответ на поведенческие вопросы — это ОК. Как правило, хорошая история раскрывает вас сразу с нескольких сторон.
К счастью, это был не конец приключения. Я не переставал подаваться на вакансии Amazon. Спустя неделю мне позвонили из Amazon в Кэмбридже. Они либо не знали про мое фиаско в Мюнхене, либо им было просто наплевать. Так или иначе я получил свой онлайн тест с содержимым похожим на то, что было в Мюнхене. Парой дней позже я уже был на скрининговом звонке с одним из инженеров. Как обычно, было поведенческое интервью, а сразу за ним два средних литкода. Я нашел оптимальное решение для одного и субоптимальное для второго. Им все понравилось, и меня позвали собеседоваться дальше.
Через месяц подготовки я прошел через 4 интервью. 2 алгоритмических с поведенческими вопросами и средними литкодами, один системный дизайн, и один кодинг, который я бы назвал дизайн приложения/сервиса. Мне вбросили набор бизнес требований, я их уточнил, и написал класс, который реализовал нужный функционал. В итоге, им очень понравился мой кодинг, но не совсем устроил мой системный дизайн. Эх, если бы только парень из Uber мог им позвонить и поделиться своими впечатлениями о моем системном дизайне. Как бы то ни было, в Кэмбридж я не прошел, но и это был не конец. Команда в Кэмбридже занималась по-большей части бэкэндом. Они решили, что хоть мой системный дизайн и не достаточно хорош для них, я могу себя хорошо показать на роли фронта в… тадам, Германии! Привет, Мюнхен! Ты по мне скучал?
Меня забросили на очередной набор интервью. В этот раз, один средний литкод и один системный дизайн. Теперь им все понравилось, и мне сделали оффер. Оффер на мидла. В этот момент я начал сомневаться в своих прошлых синьорных лычках.
Непрошенный совет #8. Рвите жопу, но доказывайте рекрутеру, что вас надо собеседовать на сеньку еще до начала собесов. Можете упомянуть, что в других компаниях вы собеседуетесь на синьора. У меня сложилось впечатление, что рекрутер изначально прикидывает на какой трек вас закинуть, мидловый или синьорный. В последствии, может быть очень сложно или невозможно это изменить.
Офферы: 2 / 9.
Это был стандартный для FAANG набор. Сначала скрининг со средним литкодом. Через две недели полный набор: 3 алгоритмических интервью, 1 системный дизайн, 1 поведенческое интервью. Каждое алгоритмическое интервью состояло из легкого литкода и среднего литкода следом. Поведенческое интервью и системный дизайн были вполне каноническими. Спустя неделю ко мне вернулись с позитивным фидбеком и аппрувом комитета. Да, в Google перед тем как сделать оффер вас должен заапрувить какой-то секретный комитет. Потом вам должны найти команду. И лишь после этого последует оффер. В течение недели у меня был созвон с 2 разными командами. Обе захотели меня к себе. Мне сделали оффер на L4. Снова мидл! Сомнения в своих прошлых синьорных лычках усилились вдвойне.
Офферы: 3 / 9.
На первый взгляд, это был еще один стандартный набор интервью для FAANG, но, как говорится, есть нюанс. На тот момент Facebook не нанимал E4 (мидлов), а брал только E5 (сенек) и выше. Пан или пропал. Первый тех скрининг с двумя литкодами: легким и средним, прошел волнительно, но хорошо. Затем в течение месяцев я готовился. Настал день Х. Точнее дни X и Y. Facebook услужливо разрешил разделить интервью на два дня. В первый день, было два алгоритмических интервью. Так же как и на скрининге каждое из них состояло из легкого литкода и среднего литкода. Руки дрожали, спина обливалась потом. Первое интервью я прошел без проблем, а вот второе жестко завалил. Во втором интервью на среднем литкоде я впал в ступор и не выдал ничего. Даже плохого решения не выдал. Только промямлил что-то в конце о том, как бы я сделал. Во второй день у меня был системный дизайн и поведенческое интервью. Поведенческое интервью было стандартным, а систем дизайн был больше сфокусирован на API и схеме БД. Их я прошел без видимых проблем. Спустя несколько дней, когда я уже начал подбирать курсы немецкого для того, чтобы ехать в Мюнхен с Google, мне на мое удивление пришел не отказ, а приглашение на еще одно алгоритмическое интервью. Рекрутер сказал, что на меня был отличный фидбек по системному дизайну и поведенческому интервью, а мнения интервьюеров по алгоритмической части разделились. Это был мой шанс. Я снова погрузился в литкод и совсем не заметил как пролетело несколько дней до дополнительного интервью. Снова легкий литкод и средний. И… Я лажаю на легком литкоде. Неправильно оцениваю big O своего решения. Причем я обнаружил я это только постфактум. Написал свое решение. Интервьюер мне ничего не сказал про big O, но решил, что у меня баг. Я прошел вслух с ним несколько тест кейсов, бага не нашел. Решили двинуться дальше, чтобы успеть прорешать второе задание. Его я прошел с большим волнением, но без каких-либо проблем. Нашел оптимальное решение, правильно оценил big O, накодил его.
Мысль о баге все не давала мне покоя. Под конец интервью я спросил можно ли мне скопировать свое решение первой задачи для дебага дома, и мне не отказали. Я составил полноценный набор тестов на одной из онлайн платформ и не обнаружил бага. Зато допер, что налажал с big O. Мне, кровь из носу, надо было показать интервьюеру, что я просто волновался, что бага нет, что я умею счиать big O. Facebook не разглашает email интервьюеров, но я мог увидеть его имя и фамилию. К счастью, парень активно контрибьютил в опен сорс. Я взял его email и commit message и написал на него простыню с ссылкой на свой набор тестов и с подсчетом правильного big O. Я не знаю прочел ли он его, я так и не получил ответа. Главное, что я сделал все, что мог! Через несколько дней мне позвонил рекрутер и ошарашил меня тем, что Facebook хочет видеть меня в своих рядах и приглашает меня на синьорную позицию в Лондон!
Офферы: 4 / 9.
Заключение
После интервью с 9 большими и известными компаниями, я получил 4 оффера. Спустя неделю торгов (здесь вы можете найти хороший гайд о том, как их вести) и сомнений, я с огромным облегчением и радостью принял оффер от Facebook. Мне бы хотелось двух вещей:
- Чтобы моя история помогла кому-то осознать, что не надо быть стоумовым Нобелевским лауреатом, чтобы получить оффер в FAANG, находясь в любой точке планеты, хоть в том же Воронеже.
- Чтобы это было только начало :)
Давайте оставаться на связи! Буду рад видеть вас в Twitter и LinkedIn! Подписывайтесь на новостную рассылку или RSS моего блога. Пишите на email с любыми вопросами.
Комментарии (60)
dark_gf
06.09.2021 13:40+2А где самое главное, зп под те офферы?
aigoncharov Автор
06.09.2021 13:42+3Из моего опыта, на levels.fyi достоверная информация. Например, у Facebook в Лондоне.
novoselov
06.09.2021 14:01+1Замечание насчет прошлой статьи, у вас Сингапур отпал из-за отпуска, но это не совсем корректные данные. 7 дней это только в первый год, каждый год это цифра увеличивается на 1 день (пока вы работаете на одного работодателя), на 8 год отпуск будет уже 14 дней. Но это минимум который определен министерством труда по закону, то есть нельзя сделать меньше, но можно сделать больше. На практике общепринятая цифра это 14-21 день, но опять же это среди местных компаний. Международные компании могут давать больше, у меня например 25 дней. Помимо этого у вас есть 14 оплачиваемых выходных по болезни и 60 дней при госпитализации. Для ухода за ребенком до 7 лет можно брать 6 дней на каждого родителя (не знаю насколько это распространено).
И самое главное, это все в рабочих днях без потери зарплаты.
aigoncharov Автор
06.09.2021 15:34Спасибо за информацию! Как вы могли видеть, я и США рассматривал, хотя в прошлой статье я эту страну в финале убрал. Я смотрел вакансии в Faang в Сингапур, даже подавался в Apple, но безуспешно.
noize
07.09.2021 16:43Сейчас с Сингапуром вообще всё печально, компании часто в вакансиях прямо пишут, что готовы рассматривать только тех, кто уже находится в стране. Релоцировать не готовы. Всё из-за проклятого ковида.
AndreiMoscow
06.09.2021 15:01Орфографию поправьте! Очень много опечаток. Word хорошо показывает ошибки в тексте.
aigoncharov Автор
06.09.2021 15:02+1Да я вроде прогонял через https://languagetool.org/. Видимо, плохо прогонял. Мои извнинения.
aigoncharov Автор
06.09.2021 15:59Даже в комменте накосячил :) Печатаю быстро, но есть добротный процент брака.
AndreiMoscow
06.09.2021 22:06-1Расскажите какой у Вас уровень языка, как его изучали и где?
aigoncharov Автор
06.09.2021 22:41+2Вроде как C1. Сначала в школе, потом в универе. Съездил в универе по программе work & travel на лето в США. Далее просто смотрел и смотрю сериалы и кино в оригинале. Технический контент тоже в подавляющем большинстве на английском. Все.
iskutaru
06.09.2021 15:02Спасибо за статью! Интересно, а в штаты по H1B реально вообще уехать?) А то я вот смотрю на то какой конкурс в последние годы и складывается впечатление, что скоро вероятности получить H1B и выиграть гринку в лотерею сравняются)
aigoncharov Автор
06.09.2021 15:02Где-то видел, что шанс получить визу в лотерее около 40-50%. За достоверность инфы не ручаюсь.
ValentinAndreev
06.09.2021 22:16Для РФ вроде 1-2%, что за безумные 40-50?
aigoncharov Автор
06.09.2021 22:42Мне примерно такую цифру назвал EPAM, когда делал оффер в США. За что купил, за то и продаю.
iskutaru
06.09.2021 22:52+1Речь про лотерею H1B конечно же) В начале 10-х там действительно шансы были примерно 50/50, а еще раньше, в нулевые, так вообще не было лотереи. В последние же годы количество заявок приблизилось к 300К при квоте 65К. Вот в связи с этим и возникает вопрос в целесообразности всей этой затеи с H1B
0xd34df00d
06.09.2021 19:27+2Я подавался два или три раза, оба раза не выиграл. Приятель подавался раз пять, выиграл на последний.
Оцените вероятность и постройте доверительные интервалыПроще найти компанию с зарубежным относительно США офисом и уехать по L1.
iskutaru
06.09.2021 22:57Спасибо за инфо! Еще кое-где на иммиграционных форумах встречал схему, когда человек получал офферы от нескольких компаний и соответственно подавал сразу несколько заявок на H1B, тем самым повышая свои шансы. Со стороны USCIS это вроде как не возбраняется. Может знаете что на этот счет?
cepera_ang
06.09.2021 23:09Можно, только нужно быть очень уж востребованным специалистом и чтобы компании были согласны тоже в таком участвовать.
0xd34df00d
06.09.2021 23:19+2Я с этой схемой ни разу не сталкивался, но она в принципе возможна. Плюс, подобные финты будут по крайней мере формально противоречить NDA и подобным документам у почти всех компаний, с которыми я общался, но это, может, моя специфика.
Короче, как говорится, YMMV и вообще IANAL, но я бы так не делал.
amarao
06.09.2021 15:25+10В компанию требуется сотрудник с mad skill по прохождению собеседований.
Требования:
Пройти собеседование
Обязанности:
пройти собеседование
В соцпакет входит:
собеседование
elektroschwein
10.11.2021 17:02Если б за прохождение собеседований платили много денег, только этим бы и занимался, легко :)
allexx
06.09.2021 15:36Раз в год и палка стреляет.Не хочу показаться снобом, но какой у вас @aigoncharovродной язык?aigoncharov Автор
06.09.2021 16:02+7Вообще русский. Я заметил, что я стал намного более коряво изъясняться с тех пор, как почти перестал художественную литературу читать. То есть лет, эдак, с 20. Митинги на английском. Из постоянного общения на русском - жена и родители, которые успешно понимают мою тарабарщину. В общем, успешно деградирую.
Плюс статья изначально написана на инглише. Это тоже произвело какой-то эффект.
wkia
06.09.2021 15:53Несколько сотен резюме?! Я, честно говоря, не думал, что так можно. В разные компании? Это всё были крупные компании? Или это резюме в пяток компаний типа FAANG только рефералов было по сотни на каждую?
В любом случае, лично я бы уже забыл кому что отсылал уже на втором десятке.
aigoncharov Автор
06.09.2021 16:04Все в разные компании. У того же Амазона каждый день по 5-10 новых вакансий. У Майкрософта похожая тема. Есть ещё всякие ебеи, диснеи и прочие.
wkia
06.09.2021 19:47+1Извините, не совсем понял ваш ответ. Вы отсылали резюме на каждую новую вакансию Амазона? Если да, то какой в этом смысл? Ведь ваше резюме уже после перврго раза попадет в базу компании.
А если по одной вакансии на компанию, то неужели известных крупных ИТ-компаний уже легко набирается 300-400 штук? Я похоже совсем от жизни отстал в своей пещере :)
aigoncharov Автор
06.09.2021 20:19+1Я отсылал резюме не на каждую новую вакансию Амазона, но на все, которые звучали хоть немного инетересно. Как я понимаю, эти вакансии выкладываются каждой командой самостоятельно. Так что на каждый ваш отклик с один и тем же резюме могут посмотреть разные люди. Просто нет у них какого-то универсального процесса матчинга одного резюме на все подходящие вакансии. Царит хаос.
eexo
07.09.2021 04:54В Амазоне если вы проваливаете скрининг или интервью, вас банят на 0.5-2 года(в зависимости от обстоятельств) на все последующие вакансии. Отменить бан даже если накосячил интервьюер очень сложно.
aigoncharov Автор
07.09.2021 13:18Видимо банят в пределах региона. Я провалили первое интервью с Амазоном в Мюнхене. Это не помешало мне потом собеседоваться в Кэмбридж.
Serge1001
06.09.2021 16:02А реально попасть в FAANG на удалёнку без релокейта?
aigoncharov Автор
06.09.2021 16:03+3Насколько я знаю, из России нет. В EU тот же Facebook нанамает.
nobodyhave
06.09.2021 16:57Не очень-то в EU нанимает на удаленку без релокейта. Хотя может опять же левая нога не знает про правую. Но мне например сказали что удаленно работать на Лондон из Нидерландов я не могу. Вот если готов ехать в Лондон, то тогда они всеми руками за.
aigoncharov Автор
06.09.2021 16:59А мне казалось, что у нас даже офис открылся в Амстердаме. Возможно, нанимали до Brexit.
nobodyhave
06.09.2021 17:12+2Офис есть, но он весьма куцый. Тут нет каких-то команд, только отдельные люди достаточно высокого уровня судя по открытым позициям. И соответственно вариант устроится в этот офис, а работать удаленно с командой в Лондоне Facebook не устраивает. Они мне регулярно пишут и предлагают переехать, а я им так же регулярно предлагаю нанять менять в Нидерландах :)
eexo
07.09.2021 04:50Практика показывает что если есть конкретный человек-тимлид которому вы нужны, вас наймут почти как угодно.
А в целом они скорее склонны консолидировать комманды. У нас в команде была сборная солянка из людей в офисе в пало альто и в сиэттле. Потом они почесали репу и всех не-синьоров в сиэттле перевели на другой проект, а нам докинули не-синьоров с того проекта в пало альто. При этом что это существенно разные проекты - менеджменту пофиг. Они конечно же предложили всем желающим переехать туда куда хотят, за свой счет) Ну и с зп там все не очень однозначно выходило бы при переезде, кажется.
nobodyhave
07.09.2021 09:55+1Да, возможно при наборе в какую-то конкретную команду конкретным человеком можно было бы продавить мой вариант. Но я общался только с рекрутерами. И я не супер нинзя рок гуру, а обычный сеньор помидор достаточно обычной специализации, поэтому рекрутеры ко мне ходят чаще, чем конкретные менеджеры.
Serge1001
06.09.2021 17:57Как думаете, тренд сменится? Или компаниям важно привязать человека к определённому месту?
Rollant
07.09.2021 12:37+1Или компаниям важно привязать человека к определённому месту
Сейчас при работе через границу возникает масса сложностей в первую очередь с налогами и трудовым законодательством. Возможно, после ковида что-то начнёт улучшаться, хотя бы в пределах надгосударственных образований вроде ЕС
nobodyhave
07.09.2021 15:09Тут зависит от компании. Если у нее есть офисы в обоих странах и она может нанимать туда людей, то как люди между собой сотрудничают уже никак налогами и трудовым законодательством не регулируется, пока они не нарушаются в пределах офиса, где человек официально нанят.
300KpS
06.09.2021 17:38Выгода для работника понятна - если зп та же, а живёт в более дешёвом месте. Но не понятна выгода работодателя - зачем релоцировать, если удалёнка?
eexo
07.09.2021 04:37+1Насколько мне известно - практически нереально. FFANG в силу своих размеров вынужден работать абсолютно легально. В России это означает например хранение персональных данных работников. Так же легальная работа в России означает наличие офиса. И то и другое это инструмент давления для властей. Гугл например изза этого и ушел, хотя у него был офис в Москве. Больше желающих нет.
Например Амазон(AWS) прямо запрещает брать с собой рабочие ноуты при поездке в Россию и работать оттуда даже если ты уже устроился. Причиной HR называет особенности налогообложения и налоговой отчетности. Вся работа в Амазоне идет через впн, и HR палит откуда соединяешься. Говорят что в разгар ковида когда всех отправили по домам и народ разъехадся кто куда кому то прилетало за работу из страны, не оттуда где устроился в офис. Было офф. письмо что так делать нельзя.
Поэтому при нынешней власти не вариант.
Из больших западных компаний говорят Интел хантит как торнадо, у них большой офис в Нижнем Новгороде.
Ga1ena
10.11.2021 17:01Эйчары Интела пылесосят всех и отовсюду, правда, москвичам, вроде как настоятельно рады в офисе в "Крылатских холмах", но я точно так и не поняла их политику по поводу удалёнки, насколько им критично.
samoreklam
06.09.2021 16:11"В общем, будут проверять, что вы не токсичная какаха с завышенным ЧСВ."
А что если это ЧСВ оправдано?
Как определяют, что это не уровень интервьюеров невероятно низок, а у человека завышено ЧСВ?
Пример из жизни: В кратком резюме указал ссылку на свою статью на "Хабр". В ней разбирал критические баги ПО и драйверов сетевых устройств. Показывал, проблемы TCP и тд.
На "интервью", мне задают вопрос "Знаешь ли ТЫ в чём разница между TCP и UDP ?"
Как Вы действуете когда понимаете, что "интервьюер" мягко говоря, чуть-чуть на уровне школьника в теме?F0iL
06.09.2021 16:39+16В кратком резюме указал ссылку на свою статью на "Хабр". В ней разбирал критические баги ПО и драйверов сетевых устройств. Показывал, проблемы TCP и тд.На "интервью", мне задают вопрос "Знаешь ли ТЫ в чём разница между TCP и UDP ?"
В этом случае проблема не в интервьювере, а все-таки в ЧСВ.
А именно.
0. Ссылку на вашу статью интервьювер мог вообще не видеть, ваше резюме ему могло достаться за минуту до интервью, такое бывает да. Это проблема компании, но уж точно не вина самого интервьювера.
1. Интервьювер мог прекрасно понимать, что вы отлично знаете разницу между TCP и UDP, но ему было важно, чтобы вы объяснили ее сходу без статей и отправки в гугл. Потому что одно дело -- знать и понимать, одно дело -- писать статьи, а вот "мочь объяснить что угодно сходу доступно в двух словах" -- совсем другое дело, этот навык может быть очень важен, особенно когда вы претендуете на позицию синьора/лида/архитектора и должны будете в том числе участвовать в технических обсуждениях и помогать другим членам команды.
2. Интервьювер мог прекрасно понимать, что вы отлично знаете разницу между TCP и UDP, но задать этот вопрос намеренно, чтобы посмотреть на вашу реакцию -- если это будет "эм, ну да, знаю, щас объясню" -- это хорошо, если это будет "да идите вы на хер с такими вопросами, я статью на эту тему написал, щенки" -- это плохо. Банальная проверка на вежливость и способность коммуницировать с людьми, опять же важна для деятельности, описанной в прошлом пункте, плюс много говорит о вас как о человеке.
3. Интервьювер по своему опыту прекрасно знает, что даже технические статьи в интернете и набитый проектами гитхаб-профиль, к сожалению, вовсе не признак скилловости разработчика.
Последний пункт я целиком и полностью готов подтвердить своим опытом собеседований. Как ведущий разработчик, собеседующий людей со всего мира в наш и в другие проекты, я всегда на интевью задаю элементарные вопросы. Делаю сначала оговорку "I'm sorry, this may sound like a very simple or even a silly question, but I have to ask it", после чего спрашиваю что-то совсем элементарное, типа виртуальных деструкторов в C++ или вашей разницы между TCP/UDP. И как показывает практика, действительно сильные разработчики на подобные тупые вопросы отвечают легко и без какого-либо негатива, а вот у некоторых (даже, как я упоминал, со статьями в блогах и жирным гитхабом) даже с такими элементарными вопросами может возникнуть проблема, и она будет только верхушкой айсберга, как обычно выясняется позже.samoreklam
06.09.2021 16:57Спасибо за развёрнутый ответ.
Не буду вдаваться в подробности насчёт того интервью (резюме именно у этого человека было несколько дней и я уточнил, ознакомились ли с ним). Скажу только, что наибольший вклад в моё восприятие интервьюера внесло обращение "ТЫ", а не глупые вопросы.И насчёт ЧСВ соглашусь. Большая практика общения со "специалистами" это ощущение развило и при этом у меня развито чувство "Самозванца" - всегда есть в чём углубить свои знания.
"Потому что одно дело -- знать и понимать, одно дело -- писать статьи" - Это касается даже 0-day уязвимости? которую я обнаружил и разобрал?
storoj
06.09.2021 20:23+3Интервьювер по своему опыту прекрасно знает...
Правда нет такой профессии "интервьювер", и скорее всего собеседования проводят все кто под руку подвернулся, особенно в FAANG. А какой у них опыт программирования или проведения собеседований – одному чёрту известно. Иногда нет ни того ни другого.
aigoncharov Автор
06.09.2021 16:41+10Мне кажется, что лучшая стратегия - assume best intentions. Пусть кто-то не прочитал статью и спросил у вас такую базовую вещь. Возможно, человек ожидает услышать какие-то неочевидные вещи. Может, вы свой транспорт реализовывали, и вам есть чем поделиться. Даже если это просто стандартный вопрос, который интервьюер задает всем, и ваше резюме даже толком не прочли, то что даст грубость/токсичность/заносчивость при ответе на вопрос? Вы же уже на интервью. Кмк, лучше быть на позитиве, расслабиться, и отвечать на все вопросы со всей полной на которую способны. Вы же так ничего не потеряете уже. А потом уже, постфактум, можно для себя решить хотите вы работать с человеком, который задавал вам вопрос или нет.
HellWalk
07.09.2021 00:54+1Хороший аккаунт на GitHub, кто-нибудь на интервью его отмечал?
F0iL
07.09.2021 10:21У меня при трудоустройству в одну компанию оказалось большим плюсом, что я, оказывается, за 5 лет до этого контрибьютил в опенсорс-проект, который поддерживается этой компанией. Причем специально я об этом не упоминал, выяснилось совершенно случайно в процессе, но интервьюверы очень воодушевились.
aigoncharov Автор
07.09.2021 13:20У меня это было плюсом при устройстве в Hazelcast. В FAANG всем было плевать. Правда, у меня и аккаунт не то чтобы какой-то невероятный. Я думаю, если вы прям очень крутой контрибьютор, к вам и из FAANG придут хантить в конкретную команду.
0xd34df00d
07.09.2021 18:53+1Скипнули phone screening в гугле, скипнули техническое интервью целиком в одной компании, скипнули большую часть технического интервью в другой (и мы только поговорили с одним чуваком за распределённые системы).
Femistoklov
07.09.2021 10:14+4Фулл-тайм работа, семья, учёба, блог, выступления, поделки на гитхабе, подготовка и прохождение интервью. Вы там спите вообще?
botyaslonim
07.09.2021 21:11+1Променять Воронеж на Лондон - ну такое... Там Проспект Революции сейчас доделывают, в "Итальянском дворике" рассадку посвободнее сделали. Автобусные полосы на Чернавском мосту, опять же...
red-cat-fat
За статью спасибо, интересно было почитать. Сразу видно: "Золотая молодёжь".