Один день. Что конкретно делают на работе программисты в Google

f62c3216ec52178d4f6d89ebd798fbeb

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Игорь Кривоконь, Software Engineer



Читайте также: