Клавиатура

В Яндексе у моих коллег была традиция дарить всем новым членам команды клавиатуру Microsoft Natural Ergonomic Keyboard 4000 на первый день рождения с момента начала работы. Примерно четыре с половиной года назад и я получил такую, и с тех пор работал только на ней. Когда переезжал в Штаты, непонятно зачем взял её с собой, ведь она громоздкая и не дорогая. Ну взял и взял, печатал на ней и здесь. Несколько раз вводил людей в ступор наличием кириллицы на клавишах.

Так вот, на днях на этой клавиатуре перестала работать моя любимая клавиша X. Я сразу заказал себе такую же новую клавиатуру, вот обе:

На новой клавиши более мягкие.

Эта новая клавиатура присоединилась на столе к двум вертикальным мышкам Evoluent — левой и правой (пользуюсь по очереди). К слову, они мне очень нравятся, хотя их кнопки могли быть и получше. Когда рука лежит на такой мышке, она принимает более естественное положение.

 

 

Среды разработки

Работая в предыдущей команде (GCM), я писал на Java. Я пользовался Intellij IDEA (не люблю Eclipse) с плагинами для Protobuf и чего-то ещё. Всё было хорошо, и я был доволен.

В новой команде (Spanner/Test Infrastructure) я пишу на C++, Python, Go, Java — у нас тут несколько компонентов, написанных на разных языках и обильно склеенных Protobuf-ом. Я начал с Vim, мне не понравилось, попробовал нашу собственную IDE, тоже не особо. Потом подумал, что если мне нравилась Intellij, то может понравиться и CLion, среда разработки на C++ от тех же Jetbrains. Так оно и получилось, в общем. Конечно, с CLion у меня всё не идеально, и я продолжаю разбираться и подстраивать его под себя, но ничего удобнее мне пока не известно.

Как и Intellij, CLion имеет плагины для Python, Go и Protobuf. Однако у CLion нет плагина для Java, ровно как и у Intellij нет плагина для C/C++. Поэтому я, к большому своему сожалению, не могу вести всю свою разработку ни в одном из них. И я не могу понять, почему нельзя было сделать общую IDE платформу с плагинами под разные языки (чтобы некоторые плагины, например C++ и Java, были платными). Меня лично это бы очень устроило. Кажется, что сделать такую среду было бы вполне возможно, и она даже могла быть удобной и приятной в использовании (как умеют сделать в Intellij). Я не проверял, но есть подозрение, что Eclipse как раз таким комбайном и является, что, впрочем, не делает его более привлекательным для меня.

Ключ гаечный

Хвалюсь. Три недели назад я покинул Google Cloud Messaging и пошёл во внутреннюю инфраструктуру. Присоединился к команде Spanner (разрабатывают собственную очень продвинутую базу данных, активно используемую внутри компании).

Весьма интересно и непросто, много чего познаю с нуля — стек языков и технологий абсолютно другой (C++, Python и много чего внутреннего).

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

Google, перф, повышения

Русские слова всё тяжелее идут на ум, но надо стараться.

Расскажу как в Google трэкают перфоманс.

Расскажу как в Google оценивают работу сотрудников и как происходят повышения.

Ежегодно каждый должен отчитаться о том, над какими проектами он работал и каковы результаты. Этот процесс называется performance review, сокращённо перф. Отчёты по работникам рассматривают специальные комитеты, состоящие из сотрудников более высокого уровня; они выставляют каждому отчёту некоторый рейтинг и принимают решение о повышении. Через перф можно пройти и два раза за год, если есть желание (например, если кажется, что уже достаточно работы проделано для повышения).

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

Ну и в общем это большой геморрой, от которого мало кто в восторге. Лично для меня самая большая проблема это описать свои проекты кратко и доступно (ведь это будут читать люди, которые не имеют никакого отношения к моей команде) и вспомнить самые сложные решённые проблемы, которые показывают меня со всех хороших сторон. На написание хорошего отчёта могут уйти дни, при этом, естественно, надо продолжать работать.

Когда пару месяцев назад кандидат спросил меня на собеседовании, что мне больше всего тут не нравится, я назвал перф.

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

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

Но это я такой добрый только потому что меня только что повысили. И, казалось бы, всё, яхта-шампанское-океан — ан нет, внезапно оказывается, что перф проходит, а работы меньше не становится.

Так и живём.

Набор

А нет ли среди читателей способных студентов из стран пост-советского пространства, которые заканчивают учёбу (Specialist/Msc/Phd) в 2015 и готовы к переезду в SF Bay Area работать программистами?

Пишите, это довольно срочно. Резюме не обязательно.

Всем остальным, кто хочет в Google: тоже пишите, но резюме обязательно.

Cloud Services на Google I/O 2014

С быстротой Слоупока уютный бложик рассказывает о последних новостях в мире IT.

На прошлой неделе прошла ежегодная конференция Google I/O 2014 для разработчиков. На следующем видео мой босс расскажет о том, чем в последнее время занималась наша команда Google Cloud Messaging.

Следующие функции либо новые, либо стали доступны для всех:

  • Cloud Connection Server (CCS) — XMPP-интерфейс для обмена сообщениями с Google Cloud Messaging.
  • Upstream messaging — позволяет посылать сообщения с телефона на ваши сервера через наши. Это сэкономит батарейку и трафик, так как телефон в любом случае поддерживает соединение с нашим облаком.
  • User notifications — позволяет удобно отправлять сообщения сразу на все устройства пользователя, если их у него несколько.
  • Delivery receipts — позволяет получать уведомления об отправке сообщения на телефон получателя.

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

Ну а на этом видео босс моего босса рассказывает про новое в проекте вообще, то есть не только про Messaging.

По-моему, Google Cloud Save и Network Manager довольно любопытны.

Ссылки по теме:

Upd. Написали кратко о нововведениях в официальный блог.

О работе в Google

Nooglers

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

Проект. Я попал в проект облака сообщений для Android Google Cloud Messaging for Android. Эта система, которая, кроме прочего, доставляет на ваш андроидофон уведомления о новой почте, новых сообщениях в соц. сетях и подобном, даже если соответствующая программа не запущена. Если говорить конкретнее, то я занялся вот этим сервисом.

Люди. В проекте человек 15-20, из них только один американец. Я больше всего общаюсь с ребятами, которые начали одновременно со мной: это новозеландец и три китайца. Стоит ли говорить, сколько всего нового можно узнать от иностранцев, особенно от китайцев, которые очень любят рассказывать о своей родине. А когда у нас всех ещё уровень английского подрастёт, будет вообще фантастика. Кстати, чувак из Новой Зеландии говорит на британском английском, и в Америке его не все хорошо понимают. Continue reading “О работе в Google”

Про собеседования по программированию. Часть 2.

Часть 1

Телефонное собеседование

Я намеренно опустил момент знакомства с менеджером по найму: они всегда сами находили меня через LinkedIn и предлагали поговорить. Чтобы обратить на себя внимание, кроме писем рекрутёрам могу предложить решение задач, опубликованных на сайте компании. Например, Facebook Programming Challenge или Spotify’s Tech Puzzles.

Также мы не будем говорить о диалоге с hiring manager по телефону и почте, потому что говорить особо не о чем. Разве что будьте готовы к вопросам о своей личности и по пунктам из резюме. Continue reading “Про собеседования по программированию. Часть 2.”

Про собеседования по программированию. Часть 1.

Я собирался написать большой пост про процесс собеседования в большие иностранные IT конторы, но оказалось, что это довольно хорошо описано в книгах. Например, в первых главах книги «Cracking the Coding Interview: 150 Programming Questions and Solutions, 5th ed», которую мне на днях показали. Поэтому я написал большой пост про то, как это происходило конкретно у меня, и какие полезные выводы я сделал.

Будем считать, что соискатель знает, чего хочет: получить оффер от какой-нибудь определённой фирмы, устроиться куда угодно, лишь бы подальше, или чего-то подобного. Эти вопросы выходят за рамки поста.

Я делаю упор на подготовку к решению паззлов и задач, где требуется подобрать/придумать алгоритм решения или подходящую структуру данных. Это не всё, о чём спрашивают на собеседованиях, но эти проблемы определённо вызывают затруднения у многих кандидатов.

Continue reading “Про собеседования по программированию. Часть 1.”

Анонс

20 сентября будет моим последним днём в Яндексе.

С 23 сентября по 2 октября мы с Надей в Нижнем Новгороде. Кто хочет встретиться — обязательно пишите.

3 октября мы уезжаем в США. С 7-го числа я приступлю к работе в Google.