Начало

Всем привет! Часто, пробегая утром глазами заголовки на Хабре, я вижу статьи о том, как кто-то уехал учиться зарубеж. И каждый раз я думаю, что пора уже перестать лениться и описать свою историю о том, как я уехал стажироваться в Facebook.

Коротко о себе на начало 2011 года, о том, что я помню сейчас. Я занимался спортивным программированием. Не очень успешно, но не сказать, что провально. Рейтинги на TopCoder и на Codeforces были вполне высокие, и я готовился к последней попытке пробиться в финал. Я поучаствовал в Facebook Hacker Cup 2011, как в одном из постоянных контестов, где просто можно порешать задачи. Там я дошел до 2 раунда и получил футболку, решив 1 задачу (самое классное, что я не знал как ее решать и думал уже выключать компьютер, но вдруг озарило). И эта задача перевернула всю мою жизнь.

Через 2 месяца, в апреле, мне на почту пришло письмо от рекрутера Facebook, что мое выступление в HackerCup было хорошим, и не рассматриваю ли я возможность поработать в их компании. Ну сказать, что я был удивлен, не сказать ничего! До этого еще двое моих друзей ездили на стажировки: один в Microsoft (впоследствии остался там), другой в Facebook (теперь работает в Google). Я был наслышан о жизни инженеров «там» и взялся за составление резюме. Резюме вышло крайне скудное, в основном соревнования, где я участвовал, а опыта работы-то и не было. Но телефонное интервью мне назначили. И позвонили почти сразу. Отмечу, что я собеседовался на работу, а не на стажировку.

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

Первый звонок был от рекрутера. Надо сказать, что английский я начал учить года в 3 и учил до института с очень хорошим преподователем. В институте вроде тоже на пары ходил и практика была, но я не понял процентов 80 из того, что говорила рекрутер. Она говорила очень быстро, спрашивала, на чем я пишу, мои интересы. Потом было назначено первое техническое интервью. Через пару дней оно состоялось. Прос��ые задачи на алгоритмы. Только последяя вызвала некоторые затруднения. После мне написали, что надо назначить второе. Назначили. Пришло время для него. Задача на алгоритмы — легко, а вот потом надо было спроектировать news feed. Я на самом деле что-то говорил, пытался рассуждать, приободряла фраза «yes, that makes sense!», но после этого попросили назначить третье. Я до сих пор думаю, что это из-за моего «дизайна» news feed'а. Третье было проще, опять задачи на алгоритмы. Довольно простые. Тогда первый раз мне дали задачу, которая потом стала уже самой классикой — найти в массиве k-ый максимум. В контестах мы всегда делали это используя stl — nth-element, и я знал, что сложность его линейна, но тут надо код писать руками, но тоже осуществимо!

Через пару дней мне пришло письмо, что меня зовут на онсайт интервью в США. При чем оплачивают проживание и перелет. Я до этого никогда не был в Америке, и это было просто ВАУ — нахаляву слетать туда! Но уже был май, а лететь надо в июне. Визы нет, в посольстве очереди из Work And Travel'ов, но все-таки я успел все сделать до рейса, который был забронирован Facebook'ом, и полетел на интервью.

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

В Калифорнии было очень круто! Мои друзья, которые переехали туда относительно давно, показали мне Сан Франциско, я посмотрел окрестности. Но само интервью было жестким. 4 интервью подряд по 45 минут — куча задач. Код пишешь на доске. Три я отстрелял отлично, а вот 4ое… Я завалил самый лекгий вопрос по javascript (сейчас для меня это кажется ерундой написать свою реализацию функции bind, а тогда я не знал, что она делает, так как на js писал только легкий front-end для своего диплома), а потом был дизайн на 40 минут.

Вернувшись домой, я вставал в 5 утра каждый день, так как разница во времени 13 часов — нехилая. И в одно утро прочитал на почте: unfortunately… Сразу как-то стало грустно! Но уже так просто я не хотел отступать! Я ответил на письмо, что если на работу не подхожу сейчас, может тогда на стажировку? Через пару дней мне дали согласие. Даты: с сентября до середины декабря. Тут стало ясно, что я пропускаю чемпионаты по спортивному программированию, которых ждал и готовился все это время. И в этот момент я осознал, что моя карьера олимпиадника завершилась в пользу другого направления. Надо сказать, что за пару месяцев до отъезда я начал усиленно читать книги, статьи (до сих пор не разобрал кучу вкладок с Хабра), но уровень был все равно очень низкий. Я не умел и не знал много чего, но тогда мне не казалось это страшным.

Стажировка

За пару недель мне сказали, что команда у меня будет Site Integrity — будем бороться со спамом и взломами. Совершенно был не знаком с этой темой. Но деваться уже некуда — полетел на стажировку.

Стажерам дают квартиры — по 4 человека в квартире, по 2 — в комнате. Аренда квартиры уже оплачена и не надо платить коммуналку. Так как я хотел, чтобы моя жена прилетела ко мне на пару месяцев — для меня это был не вариант. В группе на Facebook'e для стажеров мы списались с парнем из Канады — он тоже хотел снимать жилье сам. Мы договорились, что будем соседями. Когда я прилетел, мой будущий сосед сообщил, что он уже 2 недели не может найти квартиру. У меня было 4 дня до старта стажировки и я принялся за поиски. Нашел объявление — поехал, не понравилось. А рядом увидел еще один дом — пошел туда и там уже все было круто! Мы сняли 2-спальную квартиру + гостинная за 2020$ в месяц. Еще взяли машину в аренду. Правда я ездил на работу на шатле — это такие маршрутки от компании — на них ездят только работники — очень удобно. Сейчас, например, в наших шатлах есть еще и вай-фай, и я слушаю курсы Coursera по пути на работу и домой. Итак, жилье было найдено, стажирока началась.

Если честно, первое время было очень трудно — плохо понимал команду, задания вызывали ужас, но я работал часов по 12-13 в день и ходил на работу на выходных — по 6-7 часов. Мой менеджер мне не помогал так, как надо, я делал все сам. По началу я не понимал важность вопросов — спрашивайте! — я стеснялся, чувствовал себя некомфортно из-за своего английского, поэтому первый месяц разбирался с каждой штукой очень долго. Потом пошло быстрее. В конце, я уже свободно ориентировался в коде, понимал все и отвечал на вопросы новичков. Так у меня появился скилл чтения кода, что сейчас очень помогает. Все задания я сделал. Многое ушло в production. Приятно было услышать от друга, с которым мы начали стажировку (ему дали оффер после и он сейчас работает в facebook), что недавно он разбирался в моем коде.

Попробую резюмировать стажировку:

Офис

Недавно мы были в новом офисе Facebook — это уже не то! Он, конечно, большой, стало много кафешек, но тогда мы работали в Пало Альто. Небольшой офис (относительно), но очень крутой! Теннис, рядом баскетбольный корт, настольный футбол, куча диванов, игровые автоматы, постеры, просто hack атмосфера.

Еда

В компаниях подобного уровня обычно кормят бесплатно. Три раза в день и очень вкусно! По началу ощущение шведского стола где-нибудь в Турции и хочется попробовать все. Добивает то, что куча micro-kitchen со сникерсами, твиксами, бочками M&Ms и т.д. Еще холодильники с любым напитком, какой хочешь и все это бесплатно. Я прибавил в весе килограм ..., в общем, много. Сейчас вернулся в свой вес и не повторяю таких ошибок. Мой метод — беру утром на кухне снеки на весь день и стараюсь брать только орехи и йогурт. А на обед, завтрак и ужин не брать тортики, а только фрукты (которых тоже очень много).

Люди

Ребята очень крутые. Очень! И все дружелюбные. Любой бросит все, если ты что-то у него спросишь и будет это объясн��ть. Поработав так, я сам стал таким. У команды многому учишься. Еще многому учишься, читая код на code review. Я узнал много очень классных хаков C++ и javascript. Если поставить себе цель научиться и спрашивать — очень быстро станешь учителем сам :)

Условия

Я работал на 15 дюймовом MacBook Pro. Тогда я пересел на маки, хотя первую неделю не понимал, как им пользоваться. Любой софт — бесплатно (если по работе, конечно). 32 дюйма монитор в офисе, эргономика везде — я заказал себе клавиатуру Microsoft natural ergonomic 4000 — принесли через 20 минут. Дали iPhone 4S (тогда это было в моде) с безлимитным интернетом и звонками по всему миру (тоже не наглеть, ведь безлимит — это просто счет идет компании). В общем все для тебя, только пиши код. Сейчас я заказал себе Kinesis, ergo мышь и все это мне предоставили!

Программирование и технологии

Отдельный пункт. Расскажу как работал на стажировке.
Во первых, я научился пользоваться терминалом. find, grep — это просто клад. Я стал пользоваться VIM. Не просто так, а дошло до того, что я снес все IDE. Я обязательно поделюсь своим конфигом для VIMа, если кому-то будет интересно! Более того, сейчас я дописываю свой плагин для вима, но об этом в другой статье. Git — это то, что я не умел и чему научился. Code review — без него вообще не понятно как работать. Ведь идея отличная — проверить код до того, как его отправить. Чтобы избежать лишнего рефакторинга, лишних багов, чтобы все уже знали, что ты написал, а не узнавали это случайно, через месяц, когда потратили N часов, для напи��ания этой же фичи. Вот в принципе все. Это все, что нужно для того, чтобы работать! И сейчас я использую все то же самое! В Facebook это вообще культура — культура «hacker». За это время я стал работать на javascript, python, java. Продолжаю писать на C++. Узнал много паттернов и тонкостей, кучу новых инструментов и приемов.

Зарплата

Большая. Очень. Правда налоги тоже не маленькие, но часть вернули по возвращении.

Друзья и знакомые

Тут все ясно без слов.

А что дальше?

В моем резюме появилась еще одна строчка. Благодаря ей я получил пару десятков собеседований и теперь работаю в центральном офисе Google. Мой уровень резко растет. На почте тонны предложений о собеседованиях. Много хакатонов, свои проекты, команды, люди, которые увлекаются тем же! Тогда в 2011 году я и не думал, что через 2 года окажусь там, где я сейчас!
Я описал все скомкано и кратко! Если у Вас есть вопросы — спрашивайте в комментах, отвечу с радостью!

P.S.
У меня взяли интервью, когда я вернулся после стажировки. Кому интересно — вот ссылка.

P.P.S
Пишите мне, если вы хотите попробовать свои силы в Google! Отвечу всем! Моя страница ВК уже ощутила старт хаброэффекта, так что я думаю лучше на почту alexffeta@gmail.com — сделайте в теме [TryGoogle] — я настрою на это фильтр!