Первая часть В этом посте я хочу рассказать о нескольких интересных фактах, которые я узнал о гугле, его инженерах и процессах за день собеседования. Наверняка, где-то я сделал неправильные обобщения или не так понял рассказы, поэтому прошу знающих людей провалидировать мои заметки.
1. За обедом у нас зашла речь об энвайронменте разработки. Поддерживая разговор о средах разработки, моя компаньонка сказала, что вообще не использует IDE. К этому я был готов и с надеждой спросил: "Неужели Emacs?". После недавного опыта с емаксом у меня есть желание разобраться, но я не знаю с чего начать, поэтому особенно ценной была бы возможность пообщаться с живым адептом этого таинственного тула.
Здесь меня постигло разочарование и удивление одновременно - моя собеседница сказала, что использует всего лишь какую-то несложную тулу для редактирования текста (нет, не vi), а больше ей ничего и не надо. Поиск и навигация по коду в ее воркфлове отделены от редактирования и осуществляются в некоем веб-туле аля Google Code Search. Здесь у меня три вопроса:
* Насколько близки возможности этого тула к публичному code search? Вот, я
открыл случайный C#-проект в code search. Панелька навигации отображает структуру проекта и даже выделяет семантические элементы внутри файла. Это хорошо, но где гиперлинки в стиле "go to definition"?
* Можно ли поставить этот или аналогичный тул локально и индексировать свои личные проекты?
* Народ, ну как вы обходитесь без интегрированных в редактор кода рефакторингов?!
2. Я не смог удержаться и спросил одного из интервьюеров, а также и девушку за обедом про то, как народ использует 20% времени, которые политикой гугла отводятся на личные проекты. По рассказам (которые также коррелируют и с тем, что мне рассказала Дженни) получается, что можно замутить что-нибудь интересное, представить это что-то широкое публике и при успехе презентации ожидать приток свежих сил на мини-проектик. При особой пользе личного проекта для Мирового Разума, может предоставиться возможность заниматься им фулл-тайм (здесь мне рассказали историю некоего Кости, который сгенерил тул, умеющий в полуавтоматическом режиме искать data races; сейчас, при написании поста я нагуглил
немного больше деталей). Звучит отлично, поэтому очень интересно было бы узнать детали.
3. Стала неожиданностью позиция народа относительно альтернативных языков программирования. Как я понял, в гугле есть четыре языка, на которых пишут большинство кода в продакшен - Java, C++, Python и Go. Мои вчерашние собеседники пишут исключительно на Java/C++ и иногда мелкие скрипты на питоне. Go считается мистической экзотикой, которую никто из них не пробовал, но, по слухам, это что-то классное. На провокационные вопросы типа: "а никогда не хотелось заюзать какой-нибудь другой ЯП?" или "согласись, приятно покодить в функциональном стиле?" никто не поддался. А самый первый мой интервьюер даже не слышал, что такое Scala. Отражает ли эта выборка мнений общую картину?
На пока что все.
В следующем посте я попробую описать тематику вопросов (вчера было пять собеседований, по 1-3 задачки в каждом) и выскажу соображения по поводу подготовки на основе полученного опыта. К сожалению, тексты задачек я привести не смогу (NDA я не подписывал, но явно высказанной просьбе отказывать не хочу), но, надеюсь, будет интересно.