Стажировка в Google (окончание)

:

В последней части своего отчета я расскажу про жизнь интерна в главном офисе Google, про офис и, собственно, про саму стажировку.

Моя команда

Когда я подавала заявление на стажировку, я указала, что меня интересует программирование распределенных систем, С++ и backend. Рекрутеры учли мои пожелания и, несмотря на то, что мое резюме пестрело всякими веб-девелопментами, мою кандидатуру послали в команд Ads backend. Для тех, кто в танке — это такие люди, которые занимаются разработкой серверной части для обслуживания Google Ads — например, поиском и ранжированием подходящей рекламы.

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

По факту, в моей команде оказалось 7 человек. Из них 2 из Индии, один американец, один канадец, один бразилец, один мексиканец и один немец. Такое разнообразие национальностей — дело вполне обычное. Со всеми из них я нашла общий язык без проблем совершенно — все оказались веселые и открытые. Ну, некоторые, может, не такие прямо и веселые, но все равно очень здоровские.

Мой менеджер был из Индии. Он оказался очень интересным профессионалом во многих смыслах. Во-первых, он не думал о карьере программиста до тех пор, пока ему не исполнился 21 год. То есть он не провел детство за компьютером, не программировал на ассемблере или бейсике — до 21 он вообще видел компьютер только по телевизору. И вот когда говорят, что «терпение и труд все перетрут» — это 100% про него. За немногим более 10 лет он успел не только стать отличным программистом, который успел поработать с несколькими гугловскими звездами и получить несколько гугловских наград «за выдающиеся достижения перед отечеством», но и обучиться свойству сходу решать любые проблемы. По крайней мере все мои вопросы он решал очень быстро.

Тут, правда, справедливости ради стоит отметить две вещи. Во-первых я люблю решать свои проблемы сама. И если я прихожу с проблемой к менеджеру — это значит, что проблема как минимум для меня нетривиальная. И во-вторых, с моим менеджером у нас был несколько различный подход к решению проблем. Я успеваю думать, говорить и делать одновременно и программирую agile методом — думаю в процессе работы и расширяю код по частям. Мой же менеджер умеет подходить к проблеме основательно — он вначале решит ее в уме, продумает все возможные проблемы, тоже решит их в уме, и потом за 3 часа напишет несколько тысяч строк кода, который сразу заработает как надо. Фактически он может 3 дня ходить по офису, думать и не написать ничего вообще, а потом за пару часов написать решение. К счастью я быстро поняла этот момент и постаралась свести к минимуму обширные дискуссии — обычно у меня либо были максимально конкретные небольшие вопросы, либо я уже показывала готовый кусок работы. Подход себя оправдал и по результатам стажировки мой менеджер был мной доволен.

Мой проект

Disclaimer: К сожалению, без деталей, так как NDA не разрешает.

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

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

Это было сложно. Во-первых система, для которой я создавала движок — она была очень большая и непонятная. Во-вторых, я не умела программировать в С++. В-третьих, от меня явно ожидали чего-то ТАКОГО. И в-четвертых, надо мной давлел дедлайн в 3 месяца. Стоит ли говорить, что когда я 3 первых дня пялилась на код, который мне надо было изменять и расширять, и ничего в нем не понимала — мне хотелось плакать и я начинала жалеть, что вообще ввязалась во все это счастье. На четвертый день, правда, дело сдвинулось с мертвой точки и я начала что-то кодить. Вначале кривоватый, потом покрасивше, а через месяц у меня уже был готов первый прототип.

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

К окончанию стажировки я успела «догнать и перегнать» — то есть сделать даже больше, чем от меня ожидалось. Правда, результаты стоили мне довольно серьезных усилий. Во-первых я работала по 60 часов в неделю (впрочем, столько работали почти все интерны, многие еще больше). Во-вторых пару раз мне приходилось сидеть в офисе 15-16 часов, потому, что надо было успеть сделать все до завтра (а завтра — презентация для высокопоставленного менеджера, поэтому иначе никак). В-третьих, пару раз мне приходилось все переделывать, потому, что в какой-то момент команда дружным голосованием решала, что мы пойдем другим путем :). В-четвертых, мне пришлось пересмотреть свои планы по сдаче ГОСов в начале сентября и признать, что еще готовиться к экзаменам я не в состоянии (правда, все равно пришлось — но это уже совсем другая история). В общем, я еще никогда в жизни так не уставала и это, при всех своих позитивах, было очень утомительное лето. Впрочем, дело тут совсем не в Гугле, а в том, что я, видимо ввиду приобретенной ответственности, плохо переношу стресс — когда ставки высоки, время ограничено и нельзя лажать.

Рабочее место

В этом году офис меня мягко скажем не порадовал. Место, где сидели мы — это был переполненный бункер без солнечного света. Причем именно для нашей команды, похоже, Гуглу удалось найти самое хреновое место во всем офисе. Во всех офисах всего мира. Маленьние душные кубиклы в 5 человек, к которым постоянно кто-то ходит что-то обсудить и без звукоизолирующих наушников там жить, по-моему, нельзя. Причем направо и налево офис выглядел ничего так, глобально не повезло только где-то 30 людям, среди которых была и я. Я за свою жизнь работала в 6 офисах и с полной уверенностью могу сказать, что тот, который мне достался этим летом, был самым хреновым из этих шести. Причем выигрывает он с большим отрывом :).

Но не стоит думать, что у Гугла все плохо. Офис Гугла прекрасен на 99%. Но все-таки тут остается этот злосчастный 1%, в который попала я. Тем грустнее мне было ходить по офису и смотреть на то, как остальные гуглеры сидят в светлых и просторных помещениях :). Впрочем, большинство моего времени все равно было занято проектом, поэтому грустить мне было некогда.

Офис

Офис в США намного больше, чем где-либо еще. И если в прошлом году в Цюрихе все интересности (игровая комната, чаевня-кофейня, тераса с видом на Альпы) было всего в паре шагов, так как офис совсем небольшой, то в этот раз, чтобы дойти до мороженого, приходилось топать минут 5. До бильярда — тоже. И он постоянно оказывался занят :). Все интересное было рассредоточено по довольно большой площади, и чтобы куда-то дойти, требовалось 5-10 минут.

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

Ну и пара картинок для привлечения внимания:

Везде по офису стоят всякие прикольные штуки. Вот, например, стилизованный телефон.

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

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

Проходя по коридору, легко можно наткнуться на коробку со сладостями. Сладости, разумеется, для всех.

В коридоре понатыкано всяких кресел. Некоторые из них даже умеют делать массаж.

А это одно из гуглокафе. Кормят там конечно же бесплатно и неограниченно.

Таких кафе в Гугле несколько десятков (некоторые, правда, намного больше) и Гугл даже заботливо рассказывает, в какое кафе стоит податься любитлям здоровой (или нездоровой) пищи.

Ну и просто гуляя по офису, постоянно можно натолкнуться на интересные штуки. Вот вроде такой.

Развлечения

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

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

Зато с организационными моментами явно кто-то что-то не додумал. У меня был ряд стандартных вопросов — что-то про визу, про выплату зарплаты, про то, что делать в ситуации XYZ. И ни на один из них координаторы не были способны ответить и предлагали поискать мне кого-нибудь самостоятельно. С учетом того, что я была интерн, а они не первый месяц работали в компании с интернами, было бы логично ожидать, что они как минимум составят себе списочек (вроде «Вопросы по визам — отослать интерна к Паше, вопросы по деньгам — отослать интерна к Маше»), но по факту мне писали о том, как они счастливы, что я им пишу, но увы с моим вопросом они мне ничем не могут помочь.

Окончание стажировки

Время стажировки ограничено 14 неделями. Теоретически можно стажировку продлить на пару недель — для этого надо, чтобы менеджер написал кому-то там письмо и объяснил причины. Но даже с учетом продления, больше 16-17 недель ряд ли получится. В последний день у нас забрали бэджи, попросили вернуть всякую технику и выданные нам велосипеды (да, мы все лето рассекали на гугловских велосипедах). Еще нас попросили высказаться о том, что нам понравилось, и что не понравилось, и на этом стажировка закончилась.

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

Для тех, кто университет не заканчивает, можно изъявить желание приехать на стажировку еще раз. Если команда осталась своим интерном довольна и они ходят воссоединиться через год, то это, обычно, делается без проблем и без дополнительных интервью. Хотя все, конечно, индивидуально.

Заключение

Если у вас есть вопросы — как, что, когда и всякое такое — то не стесняйтесь задать их в комментариях. А я постараюсь из этих вопросов сделать FAQ и прикрепить к посту.

Ссылки

Моя стажировка в США — часть 1, часть 2

Моя стажировка в Цюрихе — часть 1, часть 2

Мои соображения по поводу интервью

FAQ или Я хочу на стажировку

  1. Обязательно ехать на стажировку летом? Или можно в любое другое время?
    Стажировки проводятся круглый год и вполне можно поехать тогда, когда удобно. Хотя больше всего людей, конечно, едет летом. Ну и, соответственно, летом больше всяких развлечений, лекция и всего такого прочего.
  2. Нужно ли быть С++ или Java гуру?
    Совсем необязательно. Например, на интервью также можно писать решения на Python или C#. Хоть какой-то язык (да хоть Haskell) неплохо знать нужно, но необязательно, чтобы это были С++ или Java. Но тут такой момент — большинство проектов делаются именно в этих двух языках, так что уже в Гугле выучить их придется все равно.
  3. На каком языке проходят интервью? Насколько хорошо надо знать английский язык?
    Интервью проходят на английском. Язык надо знать достаточно хорошо на разговорном уровне. Акцент роли особой не играет (но важно, чтобы интервьюер понял, что вы ему говорите), но разговаривать и понимать надо довольно свободно.
  4. Что спрашивают на интервью?
    Спрашивают всякое и разное. Я бы посоветовала посмотреть на сайт careercup.com, где люди выкладывают конкретные вопросы, которые им задавали на интервью (в том числе и в Гугле). Еще, если поискать, в интернете полным полно google interview experience и там тоже можно почерпнуть для себя информации и советов.
  5. Как готовиться к интервью? Надо знать детали реализации TCP/IP? Надо ли быть Unix гуру?
    Обычно во время интервью детального знания чего-либо не проверяют (если только вы не подаетесь на позицию Unix-guru и не пишете этого у себя в резюме). Большинство вопросов — это придумать алгоритм, который делает то-то и се-то и написать код его реализации на бумаге (или в google docs). Стандартные алгоритмы и код к ним (поиск циклов в графе, next/prev в бинарном дереве, переворачивание связного списка, поиск дупликатов в строке итп.) нужно быть способным написать без единой ошибки даже если вас разбудят посреди ночи.
    Мой опыт подготовки описан тут и тут.
  6. Я послал резьме через сайт. Как долго ждать ответа?
    Обычно 2-3 недели. Но, конечно, бывает и больше, и меньше.