Как найти работа в гугл

Время на прочтение
4 мин

Количество просмотров 829K

Работать где-то мечтают не все. Работать в компании Google мечтают многие, кто решил связать свою жизнь с IT.

Google — компания-гигант, одна из крупнейших IT-корпораций. Сотрудники такой компании нужны постоянно (новые области, текучка кадров).

Всё, что написано ниже, основано на личном опыте, а так же опыте тех людей, которым я могу доверять.

Шаг 1 — резюме.

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

  • e-mail, телефон для связи
  • все места учёбы (ВУЗы), дополнительное образование
  • Опыт работы*
  • Личные качества (придумайте что-то оригинальнее отзывчивости, стрессоустойчивости, коммуникабельности)
  • Хобби
  • Reference — люди, которые могут дать вам рекомендации
  • Знание языков

*Опыт работы в резюме для Google (и вообще для западных компаний) — это не только должность, компания, но и те успехи и достижения, которых вы добились на позиции. Если вы продажник — покажите цифры. Если программист — то как именно ваша работа улучшила работу компании. Работу рекомендуется указывать всю, а не только по профилю (если работали в МакДоналдсе, то даже такое стоит указать).

Что не нужно писать в своём резюме:

  • Дату рождения, личные данные
  • Есть ли водительские права
  • Семейное положение
  • Прочую «шелуху», которая только отвлечёт рекрутера

Резюме необходимо готовить на английском языке. Желательно, оформить резюме, выделить его (но не стоит писать его капсом или делать чересчур ярким). Фотография не является чётким критерием нужности, но я её прикладывал.

Форматы резюме указаны на сайте (pdf, doc, html). Рекомендуемый формат — .pdf.

Шаг 2 — поиск вакансий

После того, как вы написали отличное резюме для компании, стоит заняться поиском вакансий, на которые вы будете претендовать. Для этого стоит посетить google.com/jobs.
Выбор вы можете осуществить как по месту будущей работы (будут показаны все вакансии офиса), так и по ключевым словам (например, если вы хотите работы с русскоговорящей аудиторией — ищите russian).
В каждой вакансии существуют минимальные требования к кандидатам. Обратите на них внимание — если вы не подходите хотя бы по одному пункту, то стоит задуматься. Чем больше вы соответствуете этому блоку, тем больше шансов получить приглашение на собеседование.

В компании Google существует так же срочная потребность в кандидатах. Для таких вакансий в поиск нужно вбить «For immediate consideration». Вам отобразятся все «горящие» вакансии. Высылать своё резюме необходимо будет на e-mail, который так же указан на странице. Обратите внимание, что написано в строке Important.
Если вы укажете тему письма неверно, письмо будет отклонено. К сожалению, в компании работают люди, а не роботы, поэтому случаются накладки, которые медленно, но исправляются (я так отправлял на одну вакансию 6 раз резюме, с точно указанной темой, а оно отклонялось; через 3 недели починили).

Шаг 3 — отправка резюме

Тут всё просто — заполняете форму на сайте, и ждёте. Напишите обязательно CV, его и вправду читают сотрудники, которые потом будут проводить вам первое собеседование.

Если вы отправляете резюме на электронный адрес (горящая вакансия), то отправлять его рекомендуется в html.

Здесь есть небольшой хинт, который может повлиять на решение рекрутера. Хинт называется «отправка резюме сотрудником Google». Где взять или познакомиться с таким человеком? В социальных сетях (LinkedIn, Профессионалы). Если сможете договориться и подружиться, то при успешном исходе вы получите работу, а советчик — денежное поощрение.

Шаг 4 — подготовка к первому собеседованию

Если все три предыдущих шага были выполнены хорошо, то через некоторое время (у меня это было 1-3 дня) вам придёт письмо от рекрутера, в котором вам укажут предварительное время вашего собеседования (скрининг), а так же возможные темы для обсуждения. Не поленитесь прочитать так же о компании и её продуктах.

Шаг 5 — телефонное интервью

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

Шаг 6 — техническое интервью

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

Шаг 7 -on-site интервью

Если шаг 6 пройден, и вы всё еще устраиваете компанию, вас пригласят на интервью в офис. При этом вам оплатят приезд в офис компании (либо локальный, либо в тот, где вы планируете работать). Интервью проводят 4-5 сотрудника Google, которые выясняют ваши компетенции. По вашему желанию вы можете встретиться с тем человеком, который рекомендовал вас на работу.

Шаг 8 — получение Job offer

Если все 5 кандидатов отозвались о вас, как об отличном работнике с достойным уровнем компетенции, компания предлагает вам работу. Детали Job offer, как и вопросы интервью защищены NDA. Но при переезде компания предлагает приятные компенсационные пакеты, за условия которых можно торговаться.

Общая информация, которая может быть полезна
  1. Всё общение и все новости сообщает вам рекрутер. Не бойтесь писать ему
  2. Не нарушайте условия NDA
  3. Будьте уверены в себе, старайтесь не волноваться перед собеседованиями
  4. Язык компании Google — английский, поэтому вы должны на нём не только писать с помощью переводчика, но и говорить. Это очень важно
  5. Время на принятие решений по каждому пункту — индивидуальные, но у вас уйдёт в среднем 1 месяц от отправки резюме до получения работы в случае успеха
  6. В компании Google очень высокий процент отказов (false-negative). Это не повод расстраиваться, а повод работать над собой
  7. На ту же вакансию вы можете подать резюме через полгода после первой попытки. На другую вакансию — в любое время
  8. В компании Google вся еда бесплатная

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

Успехов.

С помощью Google можно искать работу. Просто введите запрос, например вакансии поблизости или младший финансовый аналитик.

Внимание! Эта функция доступна не на всех языках и не во всех странах.

Откуда поступает информация

Информацию о вакансиях мы берем на сайтах работодателей и специализированных онлайн-ресурсах.

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

Как найти вакансии

Как уточнить географию поиска

  • Вакансии поблизости. Если вы ищете работу недалеко от дома, то можете просто ввести запрос без указания места, например вакансии официанта. Также можно уточнить запрос: вакансии официанта поблизости.
  • Вакансии в другом регионе. Укажите, где именно вы хотите найти работу, например вакансии продавца в Санкт-Петербурге.
  • Удаленная работа. Введите запрос работа из дома или укажите, какая именно должность вас интересует, например вакансии менеджера интернет-магазина на дому. Вы также можете использовать фильтр «Работа на дому».
  • Чтобы сузить результаты поиска, используйте фильтры.

Как найти вакансии по специальности

Внимание! Эта функция доступна только в США.

  1. Перейдите на сайт Google.
  2. Введите запрос.
    • Без указания местоположения: jobs for biology majors (вакансии по специальности биология).
    • С указанием местоположения: jobs for economics majors in new york city (вакансии по специальности экономика в нью-йорке).
  3. Чтобы уточнить критерии поиска, выберите ту или иную профессию над списком вакансий.

Как конкретизировать поиск

  1. Перейдите на сайт Google. Введите запрос.
  2. В синем окне выберите Вакансии.
  3. Используйте подходящие фильтры.

Совет. Если вы вводите запросы на английском языке и у вас включена история приложений и веб-поиска, то вы можете ограничить список результатов, чтобы в него попадали только новые для вас вакансии. Подробнее о том, как управлять историей приложений и веб-поиска…

Как посмотреть вакансии на определенном сайте

  1. Перейдите на сайт Google. Введите запрос.
  2. В разделе под синим окном выберите вакансию.
  3. В разделе «Отправить резюме» нажмите на название сайта.

Как найти вакансии по коду военной специальности

Те, кто служил или служит в вооруженных силах США, могут найти вакансии по гражданским профессиям, в которых пригодятся их военные навыки. Для этого нужно использовать коды военной специальности (MOS, AFSC или NEC).

В настоящее время поиск вакансий по коду MOS доступен только на английском языке и только для объявлений о работе в США. При этом вы можете находиться в других странах, например Аргентине, Бразилии, Великобритании, Индии, Испании, Канаде, Кении, Колумбии, Мексике, Нигерии, Чили и ЮАР.

  1. Перейдите на сайт Google.
  2. Введите запрос.
    • Если вы находитесь в США, уточните его: вакансии для ветеранов.
    • Если вы находитесь в другой стране, укажите в запросе регион США, например вакансии для ветеранов в Техасе.
  3. В синем окне введите код военной специальности (MOS), например 11B.

Как узнать, сколько времени займет дорога

Вы можете посмотреть, сколько времени потребуется на дорогу до работы. Для этого выполните следующие действия:

  1. Укажите домашний адрес. Если вы этого не сделаете, Google будет показывать маршрут до места работы из текущего местоположения.
    • Подробнее о том, как указать домашний адрес…
  2. Перейдите на сайт Google. Введите запрос.
  3. В синем окне выберите Вакансии.
  4. Посмотрите время в пути Время в пути под названием вакансии. Учтите, что оно указывается не всегда.

Как сохранить вакансию

  1. Перейдите на сайт Google. Введите запрос.
  2. В синем окне выберите Вакансии.
  3. Нажмите «Сохранить» Добавить в коллекцию рядом с выбранной вакансией.

Совет. Чтобы открыть список сохраненных объявлений, поищите вакансию в Google Поиске, а затем нажмите Сохранено.

Как добавить объявления о работе в результаты Google Поиска

Если в вашей организации есть открытые вакансии, узнайте, как добавить их в результаты Google Поиска.

Эта информация оказалась полезной?

Как можно улучшить эту статью?

Около трёх миллионов людей в год по всему миру подают свои резюме на работу в Google. Принимаются только 7000 — 0.2%. (Dado Ruvic/Reuters)

Филиалы Google находятся в 42 городах Европы. По мнению издания Glassdoor, эта компания — лучшее место для работы в Англии. Понятно, что получить работу в ней очень сложно. Но свои шансы можно повысить.

Кит Моран, бывший руководитель Google по набору нетехнического персонала в Европе, Средней Азии и Африки, рассказал, что в среднем между первым контактом с рекрутером и предложением о работе проходит 8 недель. Иногда процесс может длиться и 3 месяца. Каждый кандидат проходит отбор сначала рекрутерами, потом командой и потенциальным начальником. Этот пугающий многих процесс осложнён большой конкуренцией. Именно поэтому многие задаются вопросом «Как можно выделиться?».

Вот 8 советов, которые увеличат ваши шансы на получение заветной работы в Google:

  1. Подавайте заявление, даже если не отвечаете всем требованиям.

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

Гастон Тоурн, в прошлом главный маркетолог Лондоского филиала, ныне директор по маркетингу Appear Here, рассказал, что раньше считал себя поэтом. Он даже думать не мог, что окажется в отделе маркетинга такой огромной компании: «Google обычно пытается заглянуть внутрь своих кандидатов, кто они на самом деле такие и что могут предложить».

Кит Моран сказал, что претенденты должны конкретно говорить о своих достижениях и что им следует изложить в общих чертах всю информацию. На руководящие должности критерии, конечно, более строгие. Если вам нужны определённые квалификации, повторите изученное и подготовьтесь к тому, что вам устроят тест.

2. Выделите своё резюме на фоне остальных.

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

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

3. Не стоит чрезмерно подготавливаться к интервью: ожидайте неожиданного.

В процессе найма на работу в Google вы проходите 4 интервью. И это может занять много времени: возможно, придётся решать сложные проблемы, заниматься кодированием программ для инженеров или проводить презентации для маркетологов. И всё это до того как вы дойдёте хотя бы до первого из четырёх стандартных интервью. Для получения руководящей должности и вовсе придётся пройти 6 или 7 собеседований.

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

У Google полно ресурсов, которые помогут подготовится к собеседованию. Но не стоит забывать про изучение работы людей, которые будут его проводить. Также убедитесь, что вы знаете всё о потенциальной должности и понимаете ценности компании.

Нейл Дикинс, основатель и директор кадрового агентства IC Resources, утверждает, что «чем больше у вас знаний о них, тем больше шансов предугадать вопросы, которые, по вашему мнению, они вам зададут».

Морган утверждает, что в Google также стоит ожидать неожиданности, а значит, нет нужды судорожно заучивать ответы на стандартный список вопросов. «Будьте готовы адаптироваться и быстро реагировать на собеседование», — сказал он.

4. Задайте себе 4 вопроса перед интервью.

Эксперты утверждают, что эти четыре вопроса всегда встречаются во время интервью в Google:

  • Чем вы увлекаетесь? И почему?
  • Почему вы заинтересованы в этой работе?
  • Что вы можете дать компании Google?
  • Какие три самых больших достижения в вашей карьере? (Если вы столкнулись с препятствиями, будьте готовы обсудить, что вы могли бы сделать по-другому)

5. Поделитесь вашей самой яркой идеей.

Эксперты утверждают, что вам следует приходить на интервью, подготовив вашу самую грандиозную, самую яркую идею. Но перед тем как вы её озвучите, вспомните о правиле “10 раз”: представьте, что она в десять раз важнее и серьёзнее, чем сначала предполагали, а затем — в 10 масштабнее.

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

6. Покажите своё увлечение, даже если это что-то необычное.

Если вы с нуля создаёте роботов или приложения в своём гараже по выходным, не бойтесь сказать об этом своему интервьюеру. Это поможет вам выделится и остаться в памяти.

«Просто убедитесь, что вы подчёркиваете любое из этих видов увлечений, которые у вас есть как у личности», — утверждает Дикинс.

Моран говорит, что кандидаты, «у которых есть интересы в разнообразных областях, которые выходят за рамки определенной роли или конкретного продукта» были теми, кто всегда выделялся. Поэтому не стоит бояться показать свою индивидуальность. Но при этом нужно быть скромным. По словам экспертов, скромность — это одно из значимых качеств для Google.

7. Задавайте вопросы, будьте любопытными!

«Задавайте вопросы во время неловких пауз во время интервью», — советует Моран. «Я думаю, что именно в такие моменты становится понятно, что люди действительно увлечены чем-то интересным». Спросите, например, о том, что происходит за закрытыми дверями.

Тоурн, бывший глава маркетинга в Лондонском филиале Google, предлагает кандидатам подготовить три каверзных, неожиданных вопроса, которые помогут «бросить вызов» интервьюеру. Поскольку технологическая индустрия меняется быстро, единственное, что поможет вам добиться успеха, — это быть любопытным, интересоваться новинками и задавать вопросы.

8. Сделайте себя видимым как онлайн, так и офлайн.

У Google есть специальная команда людей, которая ищет кандидатов с определенными навыками. В основном они используют платформу LinkedIn. Moран утверждает, что любой, кто надеется получить работу в Google, должен регулярно обновлять свой профиль в LinkedIn и убеждаться, что в нём есть ключевые слова, которые работодатели легко найдут.

Посещайте виртуальные мероприятия, форумы и семинары, организованные Google. Либо те, на которых будет присутствовать кто-то из компании. Представьтесь им. Неизвестно, когда можно будет использовать того или иного человека в качестве внутреннего реферала при заполнении заявления. По словам Морана, любой контакт с сотрудником Google за пределами вашего заявления на работу повышает шансы быть замеченным.

Alain Jocard/Getty Images

Сергей Сема, Software Engineer в команде Google в Цюрихе, рассказал на dou.ua о своём опыте трудоустройства

Я постараюсь описать весь свой опыт и те подводные камни, которые я встретил при подготовке к собеседованию в Google и другие компании Долины (Microsoft, Amazon, Snapchat, Evernote, Cruise Automation, Uber и др.). Я ставил цель получить оффер от Google или Facebook, а еще лучше от обеих, все остальные компании были из разряда «ну если там будет очень интересно, то можно». С первого дня, когда я начал подготовку, до момента, когда я получил оффер от Google, прошло 1 год и 5 месяцев. Первый оффер я получил после 1 года и 2 месяцев подготовки. Всего было 7 онсайтов (интервью в офисе компании), из них 3 оффера (Google, Evernote, Cruise Automation). Таки приступим.

Предыстория

Я был вендором в Google в Mountain View на протяжении полутора лет. Там же было несколько гуглеров, которые тоже были вендорами до этого. Конечно, мозг постоянно подсказывал, что они «другие», что они «умнее-лучше-круче», чем я. А мой удел — быть вендором. Я даже один раз попробовал решить задачку на LeetCode. Осилить я смог 5-ю easy задачку, которая получилась на 120 строк кода и в результате так и не прошла тесты. На это ушло 5 часов прекрасного субботнего калифорнийского дня. Я окончательно понял, что вот всем вокруг «дано», а мне нет.

Но все же, проводя с друзьями-гуглерами много времени, я понял приблизительный алгоритм — что и как нужно делать. Я сделал в точности, как они сказали, и получил оффер (чему был немало удивлен). Второй нюанс — в Google я делал front-end, все мои друзья были back-end, и подготовку они описывали именно для back-end. Я подумал и решил: «А back-end тоже хорошо (я же когда-то писал на .NET, хотя и давно), буду идти в точности как они, но сделаю больше, чем они, и тогда точно получу оффер».

Мотивация

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

Что я имею в виду

Подготовка требует много времени: приблизительно 2-3 часа каждый рабочий день и каждый выходной полностью. То есть, по сути, все свободное время. Я был без жены и детей, и было проще, с одной стороны, — никто не требует постоянного внимания. С другой — никто и не поддерживает.

Я считаю, с людьми, с которыми ты тесно связан, нужно договариваться «на берегу», чтобы они знали, чего ожидать, разделяли цели, помогали в трудные периоды (они будут, у всех они были).

Кроме того, нужно четко понимать, для чего ты это делаешь и что хочешь получить. И лучше всего, чтобы эта цель была вне тебя, больше, чем ты. Если что-то делаешь только для себя — в трудные периоды можно забить, если для кого-то — мотивация намного выше, и это помогает не остановиться.

Пример 1«Я хочу в Google, потому что это круто», «Я хочу в Facebook, потому что там много денег» — это для себя. В любой момент можно найти статью о том, что Google — это тлен, что денег там дали меньше, чем в другой компании, что там скучно, много политики. И что? И все, мотивация упала, книжки с алгоритмами летят в окно.

Пример 2«Я хочу в Google, чтобы вывезти свою семью в США и дать детям хорошее образование», «Я смогу, имея деньги от Facebook, сделать это и это». В моем случае мотивация звучала так: «Я хочу быть ближе к дому». Я рассматривал переезд в Лондон либо Цюрих. Когда я начал подготовку, я себе так сказал: «Пацан, ты следующий раз полетишь домой, когда получишь оффер, и только так». Домой хотелось, и это давало энергию. Я думаю, это работает не для всех и не всегда, но для меня сработало.

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

Процесс в общем

Весь путь можно разделить на несколько этапов:

  1. Решение задач на LeetCode или InterviewBit.
  2. Изучение алгоритмов и структур данных.
  3. Повторение решенных задач на LeetCode.
  4. Подготовка к дизайн-интервью.
  5. Mock-интервью (телефонные и на вайтборде).
  6. Реальные интервью.
  7. Оффер и алкогольное забвение.

Решение задач

Это самая важная и самая длительная часть подготовки.

Сколько задач нужно решить? Я считаю — 200-250, из которых 40-50% easy, 40-50% medium, 10-20% — hard. Я решил около 300, мои друзья — 120-160.

А что если сначала пройти курс по алгоритмам, а потом решать задачки? Это была моя первая идея, спасибо друзьям, отговорили. Задачки уровня easy не требуют знания сложных алгоритмов, а простые можно дочитать в процессе решения задач.

А что если я сначала прочитаю всю книжку «Cracking Coding Interview» с решенными задачками и уже весь подготовленный пойду в бой? Не стоит:) Решение, которое я просто прочитал, я не мог вспомнить даже под конец того же дня, не говоря уже через несколько дней.

Можно прочитать начало «Cracking Coding Interview». Там хорошо описан сам процесс интервью, как общаться, базовые вещи об алгоритмах и структурах данных, как анализировать сложность алгоритмов и т. д. К примеру, как анализировать сложность рекурсивных алгоритмов я понял именно из нее.

Перед тем как начать решать задачки на определенную тему можно прочитать решение схожих задач в «Cracking Coding Interview». Причины тут две:

  • Убрать немножко граблей на своем пути и получить общее представление о том, как люди такие задачи решают.
  • Убрать тоннельное зрение — это когда ты решаешь сотни задач, но случайно упускаешь классические задачи. Потом тебе на интервью попадается хитрая задача, о существовании которой знают все, кроме тебя (это из личного опыта).

А какие вообще существуют задачи, какие темы нужно покрыть?

Понять, какие вообще тематики существуют, можно с InterviewBit. Мне не очень понравилось там решать задачи, но вот общее представление я получил. Ну и кроме того, можно полистать «Cracking Coding Interview».

В какой последовательности стоит решать задачи?

Нужно идти от простых тем к сложным (InterviewBit подскажет порядок). В каждой теме решать задачки до тех пор, пока не начнет хоть чуть-чуть получаться, и в этот момент сразу переключиться на следующую тему. Начинать, конечно, с уровня easy. Я пытался решать каждую задачу на протяжении около получаса-часа. Если не смог — шел смотреть решение. На LeetCode к каждой задаче есть форум, где люди постят свои решения, обсуждают, голосуют. Я выбирал топ решений и изучал их, так и учился. Наверное, эти форумы — самое ценное место для обучения. Далеко не все решения просто понять, даже те, под которыми стоят комментарии «This is absolutely awesome!!!».

Например, начал я решать задачи на строки. 1-я — не решил, пошел смотреть решение, 2-я… 5-я — то же самое. 6-я, 7-я — решил. Значит, пора переключиться на следующую тему. Секрет такой — переключаться между темами нужно как можно чаще, так лучше запоминается. Но если переключиться до того, как начнет получаться, то через несколько тем можно демотивировать себя полостью. Мозг услужливо подскажет: «Ну раз ты ничего не можешь решить — то иди выпей пивка и посмотри футбол, это просто не твое». Нужно быть готовым к тому, что самооценка и настроение будут как американские горки: получается — мы несемся вверх, не получается — унываем и падаем вниз. Просто нужно помнить, что и первое, и второе — это временно, нужно продолжать. Если долго нет результата — брать задачки проще.

Как происходит решение задачи?

Конечно, можно просто взять и решать задачки на LeetCode и не заморачиваться с тем, что я опишу ниже. Но результат будет куда лучше, если использовать следующий алгоритм, поскольку он полностью повторяет шаги на реальном интервью:

  1. Читаем условие задачи, ни в коем случае не пытаемся придумать решение до того, как условие прочитано до конца. Это важно!!! Мозг пытается найти похожую задачу, решение которой он знает, и выдать за требуемое.
  2. Пытаемся придумать уточняющие вопросы.
    1. Пример 1: есть задача, в которой нужно как-то трансформировать строку. Что спрашивать? — Какие символы могут быть в строке — ASCII или Unicode? Могут ли рядом стоять несколько пробелов? Могут ли быть пробелы в начале или конце строки? Есть ли спецсимволы типа -,.^/ ? Есть ли разница для анализа между большой и маленькой буквами? Насколько длинная входная строка? Помещается ли она в память машины?
    2. Пример 2: есть массив из Integer, в нем нужно что-то найти. Вопросы: есть ли повторяющиеся элементы? Есть ли отрицательные числа? Что если в результате подсчета мы получим больше, чем Integer.MAX_VALUE?
  3. Рисуем примеры, лучше парочку — один классический, второй с corner cases. После этого мы +/- должны быть уверены в том, что задачу мы поняли правильно.
  4. Придумываем решение «в лоб» и оцениваем его сложность. Сложность решения нужно уметь определить всегда.
  5. Придумываем более оптимальное решение, оцениваем его сложность.
  6. Разрабатываем API решения — какие будут методы (приватные и публичные).
  7. Пишем код в тетрадке.
  8. Дебажим код по тетрадке на новом примере. Не нужно брать один из примеров, который мы рисовали в начале. В этом случае очень высока вероятность, что мы написали решение именно для этого случая, а не для всех возможных. Лучше взять новый пример с corner-кейсом, такой, чтобы потенциально мог решение сломать.
  9. Перебиваем код в любимую IDE, при этом не смотрим в бумажку. Таким образом, мы повторяем решение два раза.
  10. Копируем код из IDE в LeetCode и запускаем. В случае идеального выполнения должно cработать правильно с первого раза. У меня такое получалось в 10% случаев.

Я понимаю, что это звучит как «чертова куча бесполезной работы». «Я же могу просто взять и написать код в LeetCode». Но все эти шаги после некоторой практики будут занимать минуты или даже секунды, что критично на интервью. Очень многие ребята засыпались на том, что им не хватило времени, чтобы дописать-отдебажить решение. И я один из них.

А что же делать, если задачка не решается?

Когда я не смог придумать решение за полчаса-час (сначала бывало, что я по полдня страдал над одной задачей), то шел смотреть лучшие решения на форуме. Разбор решения — почти всегда непростая задача и требует времени: нужно пересмотреть и понять несколько решений, понять сложность, дочитать ссылки на алгоритмы, которые указывают авторы решений. Большинство алгоритмов я нашел и изучил после того, как встретил их в реальных решениях. А что же дальше с этим делать? А дальше нужно повторить с этой задачкой все шаги, которые я привел выше. И куда лучше сделать это на следующий день или как минимум под конец этого дня.

Все свои решения я заливал на GitHub. Хорошо видна статистика, и всегда есть доступ к коду. Это я начал делать после того, как LeetCode затер все мои решения. Так что LeetCode — не лучшее место для хранения своих решений.

Важно вести статистику (вот моя), в которой будет следующее:

  • что когда решил;
  • Group A — список задач, которые не решил самостоятельно;
  • Group B — список задач, которые решил самостоятельно, но при этом очень страдал.

Это я считаю критически важным, так как задачи нужно будет повторить, и в первую очередь нужно повторять A, за ними — B.

Ноу-хау «дверь»

После того, как я решил порядка 230 задач (это был мой изначальный план), я переключился на изучение алгоритмов (об этом позже). Когда я прокачался в алгоритмах, что заняло около двух месяцев, пришло время задачи повторять. И вот здесь получилась интересная штука: повторить задачу — по времени не многим меньше, чем решить ее (так как шаги нужно использовать те же, только код из тетрадки не переписывать в IDE). И тут пришла долгожданная демотивация — не чувствует организм, что делает что-то полезное, и все тут. Я стал думать, как проблему решать, понял, что я визуал и мне нужно визуальное подтверждение своей деятельности. И оно нашлось. Каждую задачу, которую повторил, я записывал на стикере: номер задачи, сложность (easy, med, hard), тема и краткое решение. Краткое решение — это не код. Как оказалось, код запомнить почти невозможно, а вот простые шаги типа «1. Создаем мапу с каунтерами, 2. Находим в ней Х …»- вполне. Задачи из одной темы попадают в один ряд, сложность можно отмечать цветами (это я понял позже).

Цель была следующая — все решенные задачи должны быть повторены и появиться на двери как стикеры. Когда я наклеил первые 10 стикеров и это отняло несколько дней, честно скажу, хотелось плакать. Мозг подсказывал: «До 230 осталась бесконечность».

В результате на моей двери появилось 218 наклеек. Некоторые задачи я так и не успел повторить.

Алгоритмы

Я изучал алгоритмы по курсам дедушки Седжвика на Coursera (часть 1, часть 2). Видео этих курсов можно найти на торрентах.

После первой домашки из этих курсов я решил, что делать их не буду. Причина — в домашних работах больше использование готовых библиотек с алгоритмами, нежели реализация этих алгоритмов. Но и просто прослушивание курса результата не даст вовсе. Я слушал и полностью конспектировал, в результате у меня получилось две тетрадки с полным конспектом, которые я перечитал 4-5 раз. Очень помогало в последние несколько дней перед собеседованием, когда нужно повторять много и быстро.

Второй важный нюанс — в процессе решения задач стало понятно, что есть некоторые алгоритмы и трюки, которые в курсы Седжвика не входят, но знать их нужно. К примеру, как построить лабиринт? А как по лабиринту пройтись и найти выход? И, конечно, по каждой такой проблеме есть миллион документов. Но перед собеседованием нет времени читать миллион документов — нужно кратко и по сути. Вот я и собрал в один док такие вещи.

Дизайн-интервью

Дизайн-интервью состоит из так называемых открытых вопросов по дизайну, типа «как задизайнить YouTube». По началу я совсем не мог понять, что требуется и как это должно выглядеть. Потом я нашел курс «Grokking the System Design Interview», который мне открыл глаза. Он стоит свои 80 баксов.

Вот еще одно видео от Джексона (Facebook guy), которое даст понимание процесса. Хорошее обсуждение на Quora.

Еще очень полезно почитать примеры реальных проблем, например, на High Scalability. Если у компании, в которую идем на собеседование, есть инженерный блог, его точно стоит почитать.

Behavioral-интервью

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

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

Mock-интервью

Mock-интервью — это то же самое, что и обычное интервью с той разницей, что его проводят друзья, коллеги или специальные компании. А потом дают свой отзыв — что хорошо, что нужно поправить. Это тоже критически важный шаг, упускать его не стоит. Конечно, будучи в Долине, сделать это в разы проще. Вокруг меня было много друзей гуглеров, действительно клевых ребят, которые мне провели порядка 20-ти mock-интервью. Я был как Том Сойер, который взялся красить забор, а в результате красили забор все. Интервью мы проводили, конечно, на английском на вайтборде со строгим ограничением по времени.

Телефонные mock-интервью (а потом и реальные) я проходил на interviewing.io. Я просто полюбил этот ресурс, ребята реально молодцы. Но они сейчас заточены под США и предоставляют этот сервис по США. Бывали дни, когда у меня в неделю было около 7-8 собеседований на interviewing.io.

Сначала было страшно и некомфортно. Но к 10-му разу я привык, и стало нравиться. Первые интервью я валил, потом стало получаться. Средняя конверсия была 50%, то есть половину прошел, половину — нет. Всего телефонных собеседований (реальных и mock) было около 30-35.

Как подаваться

Самый простой и самый малоэффективный метод — заполнить форму на сайте компании. Но иногда и он дает результаты. К примеру, я заполнил форму на сайте Snapchat, и на следующий день со мной связался рекрутер, мы договорились о телефонном интервью. С Google, я думаю, это абсолютно бесполезно, так как эту формочку заполняют тысячи раз в день.

Второй способ — сайты работ типа Hired.com. Ты заполняешь все данные о себе, а потом компании, которым ты подходишь, сами с тобой связываются. Сервис ориентирован на рынок США. Без H1 или грин-карты там делать нечего.

Способ третий — interviewing.io, о котором я упоминал выше, и схожие сервисы. Они работают так: сначала ты проходишь на их платформе телефонные mock-интервью. Как только ты успешно проходишь два, они дают тебе возможность проходить анонимные телефонные интервью с реальными компаниями на их платформе. К примеру, сотрудник Uber и ты заходите в одно и то же время, и он тебя собеседует. Если прошел — дальше онсайт. Mock-телефонное и реальное телефонное интервью не отличаются вовсе. Минусов в interviewing.io несколько. Первый — они больше сотрудничают со стартапами, больших компаний мало. Второй — ориентированы на Штаты (нужна H1 или грин-карта).

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

Резюме

Резюме инженера в Долине и Украине очень отличается. Оно должно быть кратким (лучше не выходить за рамки двух страниц), показывать, что ты реально сделал (твой импакт для компании).

Лариса, инженер в Google, много пишет на тему интервью, Google, Долины в своем блоге. У нее есть интересный раздел «Резюме на проверку». Здесь люди открывают доступ к Google doc со своим резюме, Лариса и другие читатели его комментируют и пытаются улучшить.

Телефонное интервью

Стандартное телефонное интервью включает в себя общение голосом (по телефону, скайпу, hangouts и т. д.) и написание кода в shared Google doc или shared online IDE. Занимает по времени 1 час либо 45 минут, это нужно уточнить заранее.

Первые пару минут уходят на знакомство — интервьюер расскажет немного о себе, соискатель в ответ тоже должен рассказать, кто он и что он. У меня сначала с этим было туго, потом я написал и отточил self-presentation на 2 минуты, отрепетировал ее с помощью диктофона. Это, по сути, первое впечатление о тебе, и лучше его не испортить.

Дальше интервьюер копирует в shared doc условие задачи и несколько примеров. Сразу стоит уточнить, сколько дается времени на решение задачи, поскольку задач может быть одна, две или даже три. Часто это две задачи — одна простая для старта и вторая уже более серьезная. Иногда это одна задача, но после того, как готова первая часть, интервьюер усложняет исходную задачу дополнительными условиями. После всех уточнений нужно идти по плану, который я приводил для решения задачи.

Очень важный момент — ни в коем случае не начинать писать код до того момента, пока ты полностью не понял решение задачи. Иначе очень большая вероятность напутать в процессе и превратить код в спагетти с последующим провалом. Еще раз — ни в коем случае не писать код, пока не нашел решение. Я совершил эту ошибку до десятка раз, и каждый раз жалел об этом.

Самый эпический пример этой ошибки у меня случился на онсайт-интервью в Evernote. Задача была следующая — распарсить CSV-файл с расписанием поездов и написать программку, которая будет подбирать оптимальный поезд по определенным условиям. Можно гуглить. Я до этого код для работы с файлами на джаве не писал и растерялся. Решил так, я сейчас быстренько с файлами разберусь, а там уже как-то алгоритм построю. Времени на все — 1 час 15 мин. Я полчаса строил красивые врапперы вокруг чтения из файла, пучок сущностей, описывающих поезда, маршруты и прочий мусор. При этом мало представлял, как алгоритм выбора будет работать. Дальше я понял, что я не успеваю, не понимаю, как строить алгоритм, подступила паника. За 12 минут до конца собеседования я понял, как оно должно быть. За 15 минут (с опозданием в 3 минуты) я написал код (с парой ошибок, правда). Так быстро я не писал код никогда в своей жизни.

Онсайт-интервью

Если телефонное интервью прошло успешно, следующий шаг — онсайт. Компания покупает тебе билеты на самолет, оплачивает отель, и ты летишь к ним в гости. Я так летал в Лос-Анджелес на интервью в Snapchat.

Все интервью проходят в один день, одно за одним с перерывом на обед. Рекрутер высылает заранее имейл с расписанием, в котором указано время, тип интервью, имя интервьюера. К примеру в Snapchat у меня было два технических до ланча и три после. Между интервью нет перерыва, если затянул одно интервью — украл у себя время на следующем. Поэтому лучше сразу узнать, где у них вода и уборная, и, если нужно, бежать туда, как человек-молния.

Какие бывают типы интервью на онсайте и как к ним подготовиться

Классическое техническое интервью с задачами

Тут все относительно понятно — то же самое, что и на телефонном. Нужно держать в голове следующий факт — уложиться нужно в ⅔ времени и ⅓ оставить на непредвиденные обстоятельства, поверьте они будут. В Google одно интервью 45 минут, это означает, что после знакомства у вас есть 25 минут на все. Из них 2-5 минут на то, чтобы понять задачу и нарисовать примеры, 2-5 — чтобы придумать решение и 15-20 на написание кода и дебаггинг. Во время дебаггинга, конечно, всплывут ошибки, и их нужно быстро и красиво пофиксить. Именно на это и нужна та заветная ⅓.

Нюанс — всегда нужно идти на интервью со своим лэптопом. Первым делом нужно спросить, можно ли кодить на нем. В Facebook меня спросили: есть лептоп? хочешь на нем кодить? Ответ — конечно, да! Это быстрее, и вероятность ошибки в разы ниже. К тому же, переписывать код на вайтборде и в IDE — это две большие разницы. У меня неоднократно была ситуация, когда я исправлял ошибки на вайтборде, в результате чего код становился абсолютно нечитаемым (и, скорее всего, с новыми ошибками). Интервьюеры смотрели на это с грустью и слезами.

На лэптопе должны быть любимая IDE и проектик с типовыми шаблонами:

  • работа с файлами;
  • парсинг CSV-файлов;
  • считывание по http;
  • HTML- документ с подключенными стилями.

Еще помните мой печальный опыт с Evernote? Так вот, на следующем онсайте меня тоже попросили распарсить CSV, это заняло 3 минуты. Интервьюеры не против, если ты используешь такие шаблоны — это экономит время, и они понимают, что ты способен нагуглить, как распарсить файл.

Важный момент — нужно всегда контролировать время. На одном из интервью в Google мой интервьюер, парень лет 25-ти, задал мне хитрую задачку на динамическое программирование. Я нашел способ, как ее решить за квадратичное время, на что он спросил: «А лучше можно»? И я начал искать, как это сделать, подступала паника, но решение «лучше» найти я не мог. Наш диалог дальше:

Я: Не могу придумать решение лучше. Может, напишем мое решение и после этого подумаем?
Он: Давай еще 10 мин подумаем. Если не найдешь, напишем твое.
Я: Мне кажется, что времени может быть мало. Давай все же напишем мое сначала.
Он: Ну ок.

Я успел дописать свое решение с опозданием в 5 минут. Если бы послушал его, то не написал бы ничего и провалил интервью на 100%. А после такого в космонавты не берут. Штука в том, что он прикидывал, сколько времени нужно ему для написания задачки на доске, зная решение досконально.

Рассказ о предыдущем проекте

К этому вопросу нужно хорошо подготовиться заранее, продумать, что рассказывать. Можно даже подготовить небольшую презентацию в Google Slides и рассказывать по ней, параллельно рисуя диаграммы на вайтборде. Здесь нужно показать важность решения (для чего все это) и сложность решения.

После первого провала на таком интервью я сделал презентацию на 14 слайдов с множеством смешных гифок (это идет, друзья!) и отточил ее дома перед зеркалом. Потом в начале такого интервью я всегда спрашивал, сколько у меня есть времени на презентацию, и дальше показывал либо все слайды, либо только ключевые. Конечно, нужно быть уверенным в том, что вся информация на слайдах является публичной и не выдает корпоративных секретов.

Дизайн-интервью

Это отдельный зверь, не очень страшный, но специфический. Здесь тебе дают очень общие начальные условия типа «Нужно построить Dropbox» и смотрят, как ты продираешься через терновые кусты неопределенности. Какие вопросы ты задаешь, как анализируешь проблему.

Мои выводы по этому типу интервью:

  • Первым делом нужно собрать требования. Очень четкие и конкретные требования, которым должна отвечать система. Типовые вопросы, которые можно задать: how many users, active users, time zones (one or few). Acceptance criteria — network bandwidth (in-going/ out-going traffic), RAM, storage, latency, battery life (for mobile) etc.
  • Представь, что интервьюер — это твой заказчик (или пользователь), для которого строится система. Что ему нужно? А что можно предложить сверх этого (сбор статистики, админпанель)?
  • Какие будут пользователи у этой системы? Часто их несколько — general users и administrators. И требования для них могут быть кардинально разные. Понимая это, нужно собрать все use cases. Один use case будет отвечать одному методу в API.
  • Определяем три ключевых элемента — UI (если таковой имеется), API, DB schema. Часто, рисуя UI, можно найти новые use cases и обговорить их.
  • Оценить все, что только можно, — number of users, requests (queries) per second (QPS), latency, API latency, disk space you need (for 5 years for instance), cache space, in-going/out-going traffic.
  • Отдельно оценить read-write ratio. Наша система read heavy или write heavy? В зависимости от этого, как мы будем писать и читать данные?
  • Как будет организовано хранилище данных, кеширование? Возможно, нужна очередь для обработки дорогостоящих операций? Как будут организованы replicas и shards (нужно хорошо понимать различие между этими понятиями)?
  • Для упрощения понимания сначала можно построить систему для 100 пользователей. После того как интервьюер согласится с таким дизайном, можно подумать, как будем его масштабировать до тысяч и миллионов пользователей.
  • Найти trade-offs и обсудить их. К примеру, это может быть trade-off между consistency и speed. Что важнее в данном контексте? Как этого добиться?
  • Когда мы рисуем диаграммы, ни один блок не должен быть в единичном экземпляре, это всегда сет из многих. При падении одного узла его тут же должен заменить его клон. Нужно продумать, какие могут быть аварийные ситуации и как мы будем с ним бороться.
  • И самое главное — внимательно слушать интервьюера и никогда-никогда с ним не спорить. Это кажется очевидным, но многие (и я среди них) об этом забывают.

Вопросы интервьюеру

В конце каждого собеседования интервьюер оставляет 5 минут для того, чтобы ты мог задать вопросы.

Пример плохих вопросов: на каком языке программирования вы пишете? На каком клауде у вас стоит инфраструктура? Какая у вас СУБД? В чем тут проблема — компания нанимает универсального солдата, который за месяц-два должен разобраться в технических деталях. То есть это, по сути, не важно, это как-бы слишком узко.

О чем лучше спрашивать? Самое простое: что интервьюеру нравится и не нравится в компании, почему он выбрал эту компанию. Можно спрашивать о бизнесе: как он устроен, какие проблемы и потребности существуют. Можно спрашивать об условиях работы: когда люди приходят и уходят с работы, работают ли удаленно, как много митингов, каких именно.

За 10 дней до важного онсайта

У меня было два самых важных онсайта — Google и Facebook. Google был первым, и я достаточно сильно переживал. За 10 дней до онсайта я составил расписание на каждый день, что нужно сделать. Оно содержало следующее: повторение алгоритмов, типовых задач, задач, которые встречались на собеседованиях в Google, вопросы по дизайну. 5 дней до интервью я не ходил на работу и ушел в подготовку с головой.

Мне стало интересно, как спортсмены готовятся перед важными соревнованиями. Что они делают для того, чтобы не запаниковать в критический момент? Один из важных моментов — это прокручивание в голове будущего выступления и тренировка в условиях, приближенных к реальным.

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

Финал

Через несколько дней после онсайта мне позвонил рекрутер. Поздравил, сказал, что я молодец, все прошло хорошо. Мне нашли команду в Швейцарии в Цюрихе. Официальная позиция — Software Engineer. Я выдохнул. Голова была абсолютно пустой, я добежал. Забег в 1 год и 5 месяцев объявляется закрытым.

https://gbcdn.mrgcdn.ru/uploads/post/1720/og_cover_image/f1ada9d2b7c1044754b6f534295303a0

Какой язык лучше изучить, какие знания и навыки потребуются? Как подготовиться к собеседованию и вести себя на нем? На эти вопросы порталу GeekBrains ответил сотрудник Google Сергей Березин.

Сергей живет в США с 1995 года, в Google работает с января 2014-го в отделении Google Chrome. Занимается IT-поддержкой разработчиков Chrome.

— Добрый день, Сергей! Расскажи, как ты оказался в США?

— Это был август 1995 года. Я закончил Новосибирский государственный университет и поехал в Штаты — продолжать обучение в университете Карнеги-Меллон. В американские вузы можно поступать удаленно (в России сейчас действует такая же система). Сдаешь стандартизованные тесты, пишешь заявление и рассылаешь сразу в десяток университетов — в какой возьмут. Эта программа для поступающих работает и сегодня. Нужно еще внести сравнительно небольшую сумму за подачу документов (в 1995 году было около 50 долларов). И остается только ждать результатов. Если тебя приняли — собираешься и едешь учиться. В некоторых вузах придется платить за обучение — значит нужно будет еще и работать. Другие сами предлагают стипендию. В Карнеги-Меллон, например, она была.

— Сложно ли устроиться на работу в IT-компанию в Штатах? Какие могут быть преграды для соискателя из России?

— После учебы я успел поработать в нескольких компаниях, прежде чем попал в Google. Корпорации постоянно нуждаются в кадрах. Особенно сейчас востребованы программисты и другие специалисты высокой квалификации. И прием новых сотрудников в компаниях — особенно крупных — не прекращается.

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

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

Во-вторых, потратить немалые деньги на оформление кучи документов — в том числе рабочей визы. Когда люди едут на работу в США, они могут ожидать, что компания спонсирует им вид на жительство, так называемую грин-карту. Это обходится работодателям в несколько тысяч долларов, и с оформлением много волокиты. Но компании выгодно, чтобы человек остался, а не ушел к конкурентам или, еще хуже, увез наработки коллектива в другую страну.

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

Так что выгоднее, чтобы грин-карту оформила компания-работодатель. Она сама будет доказывать чиновникам, что именно этого иностранца невозможно заменить американцем. Наниматели прибегают к хитрости — пишут список требований к кандидатуре, что необходим специалист, говорящий на таком-то языке, знающий такие-то технологии… Разве что не указывают рост и цвет волос. В результате взять невозможно никого, кроме именно этого специалиста. Значит он необходим, и ему нужно дать грин-карту.

Существуют еще иммиграционные квоты — это уже государственная система, довольно сложная и жесткая. За год в страну может въехать по рабочим визам ограниченное количество людей. Если квота исчерпана, вы не сможете приехать на работу в США — даже если компания готова нанять вас и оплатить все расходы на визу и прочее.

— Что еще работодатель может оплатить, помимо оформления документов и билета на самолет? На что можно рассчитывать?

— Если компания приглашает соискателя на интервью — оплачивает по крайней мере часть расходов в поездке. Могут оплатить гостиницу, аренду автомобиля. С иностранцами расходы получаются в целом существенно выше, так что не стоит рассчитывать, что компания возьмет на себя вообще все траты.

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

— Общежитий для сотрудников не предусмотрено?

— У компании Google таких общежитий нет.

— В Google работает много иностранцев?

— Довольно много. Сложно сказать навскидку, но более 10 % и точно меньше половины. У меня много знакомых, кто получал визы и работал над грин-картами.

— Специалисты каких направлений наиболее востребованы сейчас в IT-компаниях?

— Я не изучал нынешнее состояние рынка, но исходя из того, что вижу, сегодня наибольшим спросом пользуются спецы низкого уровня. Молодые люди, которые неплохо разбираются в компьютерах и программировании, смышленые, но без большого опыта работы. Для таких много мест.

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

Когда на работу берут человека, у которого за плечами большой опыт — есть риск, что его труднее обучить новому. Он будет пытаться работать, как привык. А то и вовсе скажет: «Вы тут все делаете неправильно, давайте я вам переделаю, как надо… И зарплату мне дайте в два раза больше». Так что компаниям, вероятно, выгоднее нанимать людей с минимальным опытом.

Если говорить о специализации, по большей части IT-компании нуждаются в программистах, причем востребованы спецы всех направлений: и front end, и back end, и поддержка стабильности систем. Обычно все это описывается термином software engineer — «инженер программного обеспечения». Когда такой человек попадает в компанию, ему находят место. Иногда его будут перекидывать с одного проекта на другой, давать разнообразные задачи в зависимости от текущих потребностей компании. Так что чем быстрее учишься новому — тем лучше.

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

— А специалисты по компьютерному «железу» (hardware) востребованы?

— Для них могут найтись места в отдельных компаниях типа Intel, Nvidia, Broadcomm, у других известных производителей. Я в свое время много с ними работал. Но они обычно не такие большие, как софтверные гиганты. В Intel больше 100 000 человек, но остальные менее крупные. Так что и новых сотрудников там требуется не так много. Насколько я знаю, система там примерно такая же, как в Google — если человек с головой и умеет работать, у него есть шанс туда попасть.

IT-компаний, занимающихся софтом, куда больше. Это и понятно — на одном «железе» можно создать сколько угодно программ. Так что и программистов в этой области нужно больше.

— Какие еще направления деятельности доступны IT-специалистам?

— Сейчас есть «горячие области», куда людей берут охотно и на большие деньги. Это в основном обработка данных. Популярный термин для таких специальностей — Data scientists. Часто под этим подразумевают специалистов по искусственному интеллекту и смежными технологиям. Это люди, которые умеют работать с big data, пишут сложные конвейеры обработки данных — занимаются Business intelligence. Это работа с большими данными в бизнесе. Тут и оптимизация бизнеса, и обработка данных по клиентам, и сбор информации о том, какие продукты пользуются популярностью. Для этих задач требуется анализ огромных объемов данных — их изучают и вылавливают из этого моря информации шаблоны.

Специалистов такого класса пока мало, и они всюду нужны. Если у человека есть подобные навыки — его возьмут на работу, в какой бы точке мира он ни находился — хоть в России, хоть в Бангладеш.

Никто не поручится, что эта профессия будет востребована и дальше. Но если говорить про «здесь и сейчас» — это хороший способ устроиться на работу в США.

А.Б: В США средняя заработная плата для Data scientist — от 90 000 долларов в год. Специалисты топового уровня могут зарабатывать до 1 000 000 долларов.

— Поговорим о работе программистов. Какой язык будет максимально востребован при устройстве на работу в IT-компанию в США?

— У каждой компании есть свои предпочтения. Это зависит и от сферы деятельности, и от программного обеспечения, которое она разрабатывает и применяет.

Наиболее широко используются Java, C++, Python, Ruby, JavaScript — в частности, node.js. В меньшей степени — PHP. Мне кажется, он уже потихоньку уходит. Это только самые популярные.

— Что насчет Swift?

—Насколько мне известно, Swift используется только у Apple, больше на нем практически никто и не пишет. Если разработчик собирается делать программы для iPhone или Macintosh, ему этот язык будет полезен. Пригодится ли он в других компаниях — сложно сказать. Скорее всего, там это знание будет не очень востребовано.

Вообще говоря, раньше в Apple использовали Objective-C, а потом разработали более современный Swift, который, вроде бы, быстрее и проще в программировании.

Google при разработке Chrome для iOS изначально использовал Objective-C. Так исторически сложилось — когда начинали проект, Swift еще не существовал. А потом переделывать не стали. На Objective-C написана только оболочка, интерфейсная часть, чтобы программа выглядела по-эппловски. А большинство «начинки» выполнено на C++, который тоже превосходно работает на iPhone.

— Вероятно, этим списком языков дело не ограничивается?

— Можно вспомнить множество языков, которые могут быть полезны. Тот же Google Go. Его иногда называют Golang — по этому ключевому слову его проще отыскать в сети. Go переживает пик популярности. В Google на нем пишут очень много, но он используется и в других IT-компаниях: Docker написан на Go. Это система, которая используется для управления контейнерами. Контейнеры — своеобразные виртуальные машины, только очень легкие. Они стартуют за пару секунд, их можно запустить одновременно на множестве компьютеров, и они гарантируют одну и ту же среду на них всех. Docker ими «дирижирует»: запускает, управляет и контролирует. Все это написано на Go.

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

Так что важнее не выучить конкретный язык, с которым «точно возьмут » — это не так работает. Надо понимать базовые принципы, основы. И уметь адаптироваться к новому.

— Как проходит трудоустройство в крупных IT-компаниях?

— На этот вопрос я могу ответить довольно подробно. По крайней мере, в той части, которая касается Google. Я много интервьюирую людей, так что видел эту систему с обеих сторон.

Сначала надо переступить порог компании. Это один из самых сложных шагов. Как и в другие крупные IT-компании, в Google ежегодно поступает несколько миллионов заявлений от соискателей.

Их анализируют преимущественно автоматически. Кстати, это пример задач, которые решают Data scientists. Вручную такую работу выполнить невозможно. Заявления, которые проходят через этот фильтр, поступают к эйчарам.

Лучший способ, чтобы тебя заметили — получить рекомендацию внутри компании. Это когда сотрудник может сказать о вас: «Есть у меня один знакомый. Не знаю, насколько он хорош как программист, но говорит умные вещи и вообще производит впечатление дельного парня. Вы бы к нему пригляделись!»

Дело здесь не в том, чтобы получить «блат» и устроиться «по знакомству». Если человек работает в Google или подобной компании давно и успешно — скорее всего, он умный. И тусуется с себе подобными. Это древнее, как мир, наблюдение — и им здесь активно пользуются. Если «свой» сотрудник упоминает, что у него есть знакомый, который может быть полезен компании — такая рекомендация многократно повышает шансы соискателя. Это не гарантирует трудоустройство — ему просто легче будет попасть на интервью.

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

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

Если и эти интервью прошли хорошо — предстоит серьезное собеседование в офисе. Кандидата пригласят в компанию и в течение дня будут с ним плотно работать.

Все это, прошу заметить, только первый шаг. И на нем «заваливается» большинство.

— На что смотрят в первую очередь — уровень и качество знаний или личные качества?

— Смотрят на все. Сначала будет техническая часть. Если человек устраивается работать софт-инженером, ему предлагают выполнить задачу, написать программу для ее решения. Или более сложное задание — разработать архитектуру системы, которая могла бы решить задачу.

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

Был период, когда задачи были «олимпиадного» уровня: от соискателя требовалось додуматься до чего-то нетривиального, найти хитроумное и изящное решение, без которого невозможен результат. Но подобные задания мало что говорят о специалисте и плохо прогнозируют. Ведь не придется же сотруднику, в самом деле, ежедневно сталкиваться с такими головоломками? Гораздо важнее выяснить, как он справляется с рутинными делами. Поэтому сейчас используется другая система: 4–5 человек дают соискателю более простые задачи — зато разнообразные. Для решения достаточно здравого смысла и определенного уровня знаний.

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

Когда я начинаю интервью, не имею представления о человеке. Предполагаю, что он умный, но хочу сразу определить его уровень. Первым делом даю очень простую, прямо-таки позорную задачу — и рассчитываю на то, что он решит ее за минуту. Кто-то начинает возмущаться: «Что это за ерунда? Зачем ты мне это даешь? Я что, первоклассник?» Все, такого можно сразу вычеркивать. Его больше беспокоит не работа, а собственный престиж, он будет «качать права» и требовать к себе особого отношения, а хорошо работать не будет. Это наблюдение из опыта. С подобными ребятами я работал в других компаниях. До Google они, как правило, не добираются, но на интервью их временами можно встретить.

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

Потом сложность «накручивается». Задача может показаться простой, и человек радуется — сейчас я ее в момент решу! Решил, отлично. А теперь то же самое, но для другого случая. Или сделай, чтобы работало быстро — а оптимизировать скорость выполнения иногда бывает непросто.

Таким вещам можно научиться только через практику, опыт. По-быстрому «натаскать» человека перед интервью невозможно. Тут нужна голова на плечах и знания — теорий компиляторов, сложности, алгоритмов, основы структур данных. Это стандартные вещи, которым обучают в колледже — и эти понятия должны отлетать от зубов, на каком бы языке вы ни программировали.

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

Мой знакомый математик хотел сделать программу для расчетов. Он не программист, но что-то все же написал. Запустил. Программа «висит» и ничего, вроде бы, не делает. Попросил меня посмотреть, в чем дело.

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

— Если претендент выполняет все задачи, он поступит на работу?

— Это не единственный решающий фактор. Смотрят, какие интервью человек прошел и насколько успешно, сравнивают разных претендентов. Анализируют, насколько уверенно он справлялся с задачами, сколько времени затратил, как себя вел.

На работу принимают далеко не всех, кого пригласили на интервью. Счет идет на единицы процентов — точную цифру не назову. Но в Google принято так: если есть хоть небольшое сомнение в человеке — лучше сразу отказать. И это на пользу не только компании, но и соискателю. Он пойдет в другое место, а там отлично знают, как хорошо в Google фильтруют претендентов. Сам факт, что кандидат побывал на интервью в Google — большой плюс при трудоустройстве. К нему присмотрятся.

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

— Чем ты занимаешься в Google?

— Я работаю в отделении Google Chrome, если конкретнее — Chrome operations. Это IT-поддержка разработчиков Chrome.

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

Сейчас у нас большой отдел, за сотню человек. Но Chrome вообще масштабный проект. Если посмотреть статистику, сколько людей вносили в его код правки в недавнем прошлом, можно насчитать более 1000 — и это только разработчики!

— Разработка таких крупных проектов ведется удаленно? Есть ли возможность работать, не выезжая из России?

— Chrome — довольно распределенная команда, они работают во многих частях мира: кто-то есть в Европе, кто-то даже в Индии. Но наш отдел, Chrome operations — в основном в Маунтин-Вью. (Mountain View — город, в котором находится главный офис Google — А.Б.)

К сожалению, в России инженеров Google не осталось, разработки там больше не ведутся. Есть офис, занимающийся продажами, но софт-инженеров больше нет.

— Какие еще подразделения есть в Google? Если человек устраивается работать, нужно ли ему знать их специализацию?

— У клиентов есть проблемы и задачи, и все IT-компании предоставляют им решения. Внутри Google работа организована с разбивкой по классам этих решений, по проектам.

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

Но тому, кто хочет устроиться в Google, об этом думать рано. Главное — попасть «внутрь», а дальше специалисты разберутся, к какому делу его приставить.

У меня вообще не было предпочтений по поводу конкретной работы. Мне просто позвонили и спросили: «А не желаешь ли поработать в Google?» Я подумал: «Почему бы нет».

Рекрутеры даже не сообщили, в каком отделе они предлагают мне работу. Так что устраивался я фактически просто в Google. А уже потом команды, работающие над разными проектами, смотрят портфолио и решают, кому ты нужнее. Дерутся за тебя. Нет, не буквально — в переносном смысле.

— То есть это не ты устраивался в Google — это Google предложил тебе работу? Так тоже бывает?

— Бывает и так. Меня кто-то «продал» внутри Google. Это обычная практика у крупных компаний: как только ты туда попадаешь, к тебе подходит HR-менеджер и мягко вытягивает контакты знакомых хороших айтишников.

Правда, если ты перешел из конкурирующей компании, примерно в течение года не имеешь права порекомендовать кого-то оттуда. Это просто дурной тон — переманивать людей. А через год уже можно.

Получилось так, что из компании, где я раньше работал, несколько человек ушли в Google. И как раз через год с небольшим мне оттуда позвонили с предложением. Подозреваю, кто меня «сдал», но не обижаюсь.

— Предположим, соискатель получил работу. Следующий логичный шаг — гражданство. Работодатель может помочь с этим?

— Попробую вкратце объяснить систему. Сначала нужно получить рабочую визу. Максимальный срок ее действия — 6 лет. Если человек отработал этот срок и не получил других оснований оставаться — придется выехать из страны, и новую визу он сможет оформить только через год.

Это неудобно компаниям — терять работника на год. Поэтому они частенько сами начинают оформление грин-карты, когда принимают на работу иностранца. Процесс недешевый, так что такой сотрудник обходится компании дороже, чем американец. Но если грин-карта есть, уже не нужна виза, чтобы жить и работать в США. На ее оформление в среднем уходит около 3 лет.

Через 5 лет после получения вида на жительство можно подавать на гражданство. В этом компания вряд ли будет оказывать помощь. Можно этого и не делать, потому что жить с грин-картой в стране можно фактически неограниченное время.

— Зависит ли шанс на получение гражданства от профессии, места работы?

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

Если уже есть вид на жительство — гражданство могут дать практически «автоматом». Но можно и тут все испортить — например, если человек совершенно не говорит по-английски. Например, он китаец и все время проработал в китайской компании. Но подобное совсем маловероятно в IT-сфере.

Необходимо сдать тест на гражданство — это сотня вопросов в основном по истории Штатов. Их нужно просто знать. Это не так уж сложно.

Самое важное — отсутствие криминала в личном деле. Речь о серьезных правонарушениях. Если просрочил библиотечную книжку или однажды неправильно запарковался — не повлияет. А из-за ареста за неаккуратное вождение могут быть проблемы. Не говоря об уголовном преследовании или розыске ФБР.

В целом, если ты честный труженик и ведешь себя по-человечески — все будет хорошо.

— Сергей, спасибо за обстоятельный рассказ! Какое напутствие ты можешь дать молодым специалистам, обучающимся в России и желающим работать в США?

— Учитесь тому, что любите делать, и радуйтесь неудачам — ошибки, как правило, лучшие учителя!

Есть английская поговорка: good judgement comes from experience, and experience comes from bad judgement. :)

Удачи!

Освоить востребованную профессию в Аналитике больших данных можно всего за полтора года на курсах GeekBrains.

Понравилась статья? Поделить с друзьями:
  • Как найти силу упругости рисунок
  • Как найти беннета геншин
  • Как найти свой емайл в гугл
  • Рдр 2 как найти пуму
  • Как найти предельную точку множества