e-domen dot com Blog


Записки русского программера из Гугля

Posted in Разное by maxim on the Октябрь 17th, 2006
Ну даже не знаю… хотел бы я тратить 11-12 часов на работе, 1-2 часа на дорогу при этом сначала пройти около 8 собеседований и после не иметь личной жизни… не знаю, не знаю… Вобщем выводы делать каждому самому, а вот что пишет русский программер, который работает в Гугле.Технология, продукция и культура Google глазами сотрудников компании.

Software Engineers: главный секрет и движущая сила Google

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

Вообще-то, трудно говорить об обезличенном, стандартном рабочем дне, поэтому я просто записал все, чем занимался в течение одного дня:

9:15 - приехал на работу. Поскольку еще рано (программисты появляются на работе достаточно поздно), есть свободные места для парковки. Вот тем, кто приезжает на работу после 11-ти, найти место уже трудно. Кстати, очень многие ездят на работу на велосипеде - им легче с парковкой.

bike-1.jpg


Некоторые живут достаточно далеко, в Сан-Франциско или Окленде, и предпочитают добираться на специально арендованном
Google автобусе, на борту которого есть быстрый интернет.

   


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

google-cafe.jpg

9:30-10:15 - Иду к себе. Я работаю над Поиском книг Google, в группе OCR (Optical Character Recognition). Наша задача - распознать текст книг и проанализировать их структурные элементы: номера страниц, оглавления, рисунки, страницы с копирайтом и так далее. Очень интересный проект. Когда я прихожу, еще никого нет… Хотя нет, Рэй, мой коллега, уже здесь. Он вообще – жаворонок, всегда раньше всех.

ray1.jpg

Пью чай и проверяю почту. Отвечаю на несколько вопросов по моему прошлому проекту, связанному с подсистемой Google, которая поддерживает AdWords и AdSense. Заканчиваю черновик плана работы над моим проектом на следующие 3 месяца: что и когда должно быть сделано, кто за что отвечает и т.д. Посылаю план коллегам для обсуждения.

10:15-11:00 - пишу код для новой подсистемы, над которой работаю. Основные языки, принятые в Google, - это С++, Java и Python. У нашей группы достаточно критическая по быстродействию система, и мы используем C++. Заканчиваю кусок кода и запускаю системные тесты, чтобы проверить, как изменения влияют на эффективность всей системы OCR.

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

scooter.jpg

11:00 - 11:45 - собеседование с кандидатом на позицию инженера-разработчика. На мою долю выпадает, в среднем, по два собеседования в неделю.

Чтобы попасть в Google, типичный кандидат проходит два собеседования по телефону и потом штук шесть уже непосредственно в компании. Мой сегодняшний кандидат, а точнее кандидатка, назовем ее условно Алиса, явно волнуется: я первый, с кем она сегодня встречается, так что она не знает, чего ожидать. Обычно кандидаты успокаиваются, когда говорят о чем-то привычном. Перевожу разговор на ее последний проект, и Алиса с интересом о нем рассказывает, забывая о волнении. Начинаю задавать вопросы по ходу разговора, от простых к сложным, она спокойно и уверенно отвечает на них. Замечательно! Кстати, по сравнению со многими соседними хай-тек компаниями, в Google работает много девушек-программистов, что, безусловно, радует.

11:45-12:45 - иду на обед с моим новым практикантом, Бобом.

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

Первые несколько дней новые инженеры и практиканты проходят “школу молодого бойца”: учатся пользоваться главными подсистемами Google, изучают стиль и советы по программированию, а также знакомятся с тем, как организована наша компания. Боб уже прошел через несколько дней обучения, и теперь мы встречаемся, чтобы более подробно обсудить, над чем он будет работать во время практики.

Боб - аспирант, пишет диссертацию в Беркли, занимается биоинформатикой. То, чем он будет заниматься в Google, достаточно далеко от биоинформатики, но математическая основа очень похожа. Ввожу Боба в курс дела, пока мы едим какие-то диковинные индийские блюда. Потом провожаю его на следующую презентацию, а сам иду на лекцию, которая здесь называется “tech talk”.

12:45-13:45 - Tech talks - это лекции на всевозможные темы, как внутренние, так и внешние. В течение дня бывает несколько таких лекций.

В Google работают над сотнями проектов. Многие из них “не видны” снаружи: это подводная часть айсберга.

Google-41.jpg

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

Но, спрашивается, как же сами инженеры успевают следить за всем, что происходит в компании? Тут на выручку как раз приходят подобные лекции. Периодически инженеры делают презентации своих проектов. Бывают и другие лекции, на которых выступают приглашенные специалисты. Темы самые разнообразные: от оптимизации компиляторов до теории суперструн и многомерной вселенной. Сегодняшняя лекция - о будущем языка Python. Читает ее cам Гвидо Ван Россум, создатель этого языка, а с недавнего времени - разработчик в Google.

Guido.jpg

13:45-14:30 - иду обратно к себе, проверяю результаты моего теста.

Читаю почту, нахожу запрос на рецензию кода от Рэя. Рецензия кода - это стандартная практика в Google. Весь код, который заносится в систему контроля версий, должен пройти проверку и получить подтверждение “изменение разрешено”. В качестве рецензентов выступают люди, которые работали над этим кодом раньше или просто хорошо его знают. На этот раз изменения очень простые, у меня нет никаких замечаний к коду Рэя, за исключением одного неудачного имени переменной. Прошу переименовать ее, а также спрашиваю, проходят ли все наши тесты после этого изменения. Рэй быстро редактирует код и подтверждает, что тесты в порядке. Даю добро на изменения, и они заносятся в систему контроля версий. По ходу замечаю несколько новых модулей по обработке изображений, некоторое время изучаю их и читаю документацию.

14:30-15:15 - иду на совещание по поводу качества русского поиска. “Русская инициатива” - это мой 20%-ый проект. Каждый инженер Google может работать 80% времени над основным проектом и 20% - над чем угодно, что может принести пользу компании. Что может принести пользу, решает сам инженер, поэтому 20%-ые проекты бывают самые разные: это могут быть совершенно новые идеи или просто другой проект Google, который вас заинтересовал. Возможностей много. Я уделяю свои 20% времени проектам Google, связанным со странами Восточной Европы, в основном, с Россией и Украиной. Сюда входит и подготовка к открытию новых офисов, и отбор новых инженеров, и улучшения продуктов Google, направленных на русскоязычную аудиторию. На повестке дня - поддержка русской морфологии в продуктах Google и открытие инженерных офисов в России. Московский офис, кстати, уже оборудован в стиле Google.

DSC00537.jpg

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

На выходе из корпуса встречаю Ша-Мейн, мою коллегу по прошлому проекту и хорошего друга. Она рассказывает, что едет на полгода в китайский офис. У нас часто практикуется такой обмен. На сегодняшний день открыто 15 инженерных офисов Google по всему миру. Все они, в общем, принципиально не отличаются от головного офиса. Разве что размером, ведь большинство сотрудников компании все-таки находится в Маунтин Вью. Поскольку мы пытаемся перенести атмосферу главного кампуса во все региональные офисы, такие поездки-стажировки на 3-6 месяцев очень приветствуются. Ша-Мейн рассказывает мне про китайский офис, и мы делимся соображениями по улучшению китайского и русского поиска. Потом договариваемся завтра в обед встретиться и поиграть в игру Го в нашем уголке настольных игр.

16:15-17:00 - проверяю, какие баги мне нужно ликвидировать. Пару простых и один сложный. Быстро исправляю простые и посылаю изменения на рецензию. Со сложным придется повозиться. Похоже, дело в библиотеке, которую разрабатывал наш партнер. Посылаю e-mail в их службу поддержки.

17:00-18:00 - совещание нашей группы. Обсуждаем дизайн новой системы, которую нам предстоит строить “с нуля”. Это всегда интересно. У всех много идей по архитектуре и реализации системы. Моя задача - разработать новый формат файлов для хранения данных в этой системе. Через неделю встретимся снова и продолжим обсуждение.

tomraydsl1.jpg


18:
00-19:15 - иду в спортзал. Немного разминки на тренажерах, потом играем в настольный теннис с коллегами из Google Earth. Для любителей спорта выбор здесь широкий. Например, можно поплавать в бассейне или поиграть в футбол. А еще довольно популярен волейбол, причем вместо обычного мяча иногда используются красочные мячи Google.

volleyball-1.jpg

19:15-19:35 - бегу в кафе, к восьми нужно быть дома. Быстрый ужин - салат и рыба-меч на гриле. Уже в дверях сталкиваюсь с Джерри, он работает над программами для мобильных телефонов. У нас есть несколько проектов, которые нацелены на мобильную связь. Многие из них поддерживаются в России: например, почта Gmail для мобильных устройств и персональная главная страница Google. Джерри только что выпустил новую версию Карт Google для мобильных телефонов и пытается продемонстрировать мне, как здорово все работает. “Извини, некогда… До завтра!” - отвечаю я на ходу и через минуту уже выезжаю из ворот подземного гаража. Всё, увидимся завтра, Google!

Outside_Pan_building-3.jpg

One Response to 'Записки русского программера из Гугля'

Subscribe to comments with RSS or TrackBack to 'Записки русского программера из Гугля'.

  1. Ruslan said,

    on Ноябрь 11th, 2006 at 19:15

    Интересно. Что запомнилось так это: бесплатное кушанье, самокат с моторчиком, солидный офис. Ну а мониторы у вас там огромные, да еще и два!