Программист-кочевник в Google. Часть 2
Это окончание первой части нашего интервью-сиквела с украинским программистом Сергеем Кищенко (Sergey Kishchenko) о его работе и бытии в Google (всю серию интервью с Сергеем ищите вот здесь).
И сегодня мы поговорим о любимых языках программирования внутри Google, разберёмся почему С++ будет рулить ещё долго, обсудим общую стагнацию философии программирования, а также пройдемся по личным увлечениям и любимым книгам нашего героя-путешественника. Через весь наш разговор сквозит центральный вопрос: как переносится замена свободолюбивой фрилансерской жизни-путешествия на комфортабельный офис и хорошо зафиксированную жизнь на коротком поводке контракта?
— Бытует мнение, что у Google есть любимые языки программирования (ЯП), то есть объективно востребованные скиллы внутри самой компании. Как пример, твой любимый Python часто называют очень популярным в рамках внутренних проектов Google. Можно ли очертить круг наиболее интересного для этого поискового гиганта на программистском рынке?
— Любимые языки в Google — это те, которые позволяют выпускать продукты и запускать сервисы. В основном, это мейнстримовые языки, вроде Java, C++, Python, JavaScript. Они не просто так мейнстримовые — это действительно лучшее, что есть сейчас среди ЯП. Но, вообще говоря, используемый язык — это побочный скилл. На интервью по языкам вас могут спросить разве что о том, как вы относитесь к той или иной особенности ЯП, что бы вы хотели исправить. То есть, это скорее вопрос по системному дизайну, чем по языку.
Иначе говоря, язык программирования — это как разговорный язык. Чтобы работать в Google, нужно более-менее изъясняться на английском, потому что на этом языке говорит вся компания. Поэтому нужно уметь свободно писать код на каком-то из мейнстримовых языков программирования. Впрочем, этому учат в любом инженерном вузе, а попасть в штат Google без высшего образования довольно трудно.
Спектр же применяемых технологий настолько широк, что очертить определенный круг никак не получится. Ведь компания не только пишет поисковик, но и занимается исследованиями в области искусственного интеллекта и машинного обучения, производит автомобили и воздушные шары, разрабатывает Android OS и Chrome OS. Поэтому Google пытается нанимать инженеров широкого профиля (generalists).
— Сужаю и персонализирую первоначальный вопрос: какие технологии сегодня поражают тебя, и какие языки программирования будут рулить на массовом рынке в ближайшие 5 лет? Если можно, сделай прогноз, что сейчас наиболее перспективно и востребовано на кухне топ-разработчиков.
— Я люблю функциональные языки программирования, и мне радостно видеть, что они постепенно приобретают всё больший вес в области обработки данных. Но это не означает, что мейнстримовые языки куда-то исчезнут, и на их место придут другие.
Знаете, почему и через 10 лет мы будем писать на С++, а не на каком-нибудь другом языке? Потому что современные компиляторы С++ оптимизируют так, что просто диву даёшься. Например, посмотрите: я попытался обмануть компилятор так, чтобы он не оптимизировал пробрасывание временного значения в функцию bar. Что из этого вышло — сами видите.
Возможно, Go и Dart удастся немного потеснить Python и JavaScript, но не более того.
Предвидеть же, какие технические направления будут горячими через 5 лет, я не берусь. Впрочем, всем карьеристам еще не поздно вскочить на поезд Artificial Intelligence и Machine Learning, они вряд ли скоро пропадут с горизонта.
Сергей Кищенко, Google SWE на Googleween — техногенной версии Хэллоуин. Ну, и ещё немного видео оттуда же
— Действительно, ничего революционного в твоем списке языков и технологий нет. Тем не менее, знакомые девелоперы часто брюзжат слюной, что технологии создания программных продуктов не прогрессируют с 60-х. В чем суть этого скепсиса?
— Давайте лучше поговорим о философии программирования, которая тоже не меняется с середины прошлого века — это будет более общим случаем предложенной темы.
Итак, программированием правит утилитаризм. «Premature optimization is a root of all evil» — говорит нам старина Кнут, и мы вспоминаем о производительности только тогда, когда уже поздно. 50-кратное падение производительности? Да пофиг, будем писать на Python в 3 строки! 4 гига «оперативы» ушло в никуда? Ещё раз пофиг, зато мой pure functional язык позволяет мне выражать мысли монадами!
Недавно коллеги обсуждали невероятные тормоза LibreOffice при прокрутке документа с SVG. И это на современных персональных компьютерах текущего года. Мне особенно больно это слышать, потому что я почти 4 года проработал над офисным продуктом, который изначально затачивался под мобильные устройства. Это Excel, который работает на мобильном 20 мегагерцовом процессоре. Word, который в памяти занимает меньше, чем документ, который вы открываете. Но пришло время айфонов и айпэдов, и я лично наблюдал, как деградировал наш продукт, когда снимались определенные ограничения. На первом iPad можно было легко откушать до 64 метров памяти без риска быть убитым, это было роскошью, и приложение летало. К появлению iPad Retina приложение уже хотело под 300 «метров» в определенных случаях, а на первом iPad тормозило. Аналогичная деградация наблюдалась в Android-версии. Изначальный лимит в 16 мб для поддержки слабых андроидофонов был вскоре забыт, основная разработка велась под Android-планшеты, которые могли поспорить в производительности со слабенькими персоналками. К чему это привело, вы все сможете посмотреть в Android 4.4 KitKat, в ванильной поставке которого должен быть тот самый офис.
Мой вывод — виновата философия программирования, которая сделала создание программных продуктов чисто утилитарным действием. Программирование сегодня — это как написание картин для того, чтобы дырку в стене прикрыть. Модернизация «алгебры» этого процесса приведёт лишь к тому, что качество картины будет выше с точки зрения ее возможностей лучше висеть на стене и прикрывать дырку. А вот что делать, чтобы программирование стало искусством, а не ремеслом? Возможно, такая возможность уже безнадёжно утеряна.
— Давай, глядя с вершины всех этих зияющих проблем отрасли, попытаемся дать дельные советы начинающим программистам.
Ты — состоявшийся программист. Оглядываясь назад, анализируя свои поступки и мотивы, можешь ли ты сам себе объяснить, в чем секрет или формула успеха на этой стезе? Очень многие молодые люди стремятся стать айтишниками, но далеко не у всех в итоге получается что-то путное. Глядя изнутри индустрии, что можно выделить главное в характере, профессии и в обстоятельствах, которые способствует успеху именно в ИТ? Какие общие советы ты бы дал начинающим программистам?
— Еще в прошлом интервью я советовал начинающим программистам больше времени наслаждаться детством и юностью, и поменьше думать о карьере, пока есть такая возможность. Если же пришла пора о ней задуматься, то важнейшими качествами являются уверенность в себе, смелость и упорство. Это истинно не только для ИТ.
У каждого человека свой путь к вершинам. Смелость и уверенность в себе позволяют сделать первый шаг. А сделав первый шаг, становятся очевидными трудности, которые доведётся преодолевать. И здесь поможет только упорство.
Примерно так в Google на Хэллоуин тусят крутые и состоявшиеся программеры
— Дополнительно, чтобы бы ты пожелал молодым коллегам-программистам, которые в душе симпатизируют евгенике и горят желанием трудоустроиться в таких местах силы, как Google? Так уж ли страшен этот заморский «поисковый чёрт», как его малюют?
— Молодым коллегам-программистам в этом плане совет: убежден, что Google — идеальный выбор именно в качестве вашего первого места работы. Не нужно бояться, что у вас не хватит опыта, в интернатуру берут вообще без какого-либо опыта. Важны ваши знания, образование и желание работать. Также Google отлично подходит тем, кто уже имеет инженерный опыт, но желает научиться большему. Там также найдётся место и для «зубров от программирования», но последние вряд ли нуждаются в моих советах.
Тем, кто желает подготовиться к интервью, очень советую курс алгоритмов от Роберта Седжвика из Принстона. Это лучшее из того, что я знаю.
— Не мешает ли такая напряженная офисная работа твоим активным путешествиям? Мне кажется, что суперкомфортный Google — это прямая антитеза твоим дауншифтерским трипам по захолустьям цивилизации. Как ты совмещаешь эти две разные концепции?
— Да, такая работа мешает путешествиям в далёкие края. Но Калифорния знаменита тем, что многие интересные места находятся совсем недалеко. Я стараюсь выходные проводить вне города, и за уикенд можно забраться в горы (огромная горная система Кордильер), побродить меж озёр в Йосемити, добраться до Долины смерти, доехать/долететь до Большого каньона. Зимой доступны прекрасные лыжные курорты, круглый год можно заниматься сёрфингом, виндсёрфингом, кайтсёрфингом, ходить на парусных яхтах.
А горновелосипедные маршруты такие классные, что я уже чуть себе всё не переломал (смеется).
«Мне начинает казаться, что все велопокатушки, что у меня были до переезда в Калифорнию, можно просто не учитывать. Уровень здесь совершенно другой, несравнимый с нашими лесами и полями. В это воскресенье катался на трейлах El Corte de Madera, Skeggs. Вот конкретно на этом велосипеде я катался последние две недели, пока ждал свой. Интересно, что мой хардтейл здесь редкость, в основном все катаются на шоссейниках. И обгоняют меня только так. Требую лесных тропок для залечивания гордости!»
— Знаю, теперь ты путешествуешь по разным офисам Google. Как оно?
— К сожалению, я был только в некоторых из них. Впечатляет, конечно, головной офис в Маунтин-Вью, который уже давно превратился в маленький городок, а также офис на Манхэттене, в котором легко заблудиться, а чтобы быстрее передвигаться по этажам очень активно используют самокаты.
«Вот, казалось бы, раз основной офис Google в Маунтин-Вью, так и все основные ништячки должны быть сконцентрированы там же. Так нет же! Офис в Нью-Йорке — обалденный. Виды из его окон прекрасны. Внутри тоже очень клёво и он просто огромный, занимая два смежных здания на Манхэттене. Лондонский офис тоже был внушителен. Даже боюсь ехать смотреть другие. В этом, кстати, секрет успеха: сделать лучшим каждый отдельный офис, каждую деталь. И это я уже не про Google говорю, а про секрет успеха любой компании, любого государства и общества».
В целом же путешествий, конечно, не хватает. Но, как известно, «на другом берегу трава всегда зеленее». Когда путешествуешь, начинаешь мечтать о спокойных посиделках с друзьями, часами зависаешь в видеозвонках. Но стоит провести вне путешествий какое-то время, как снова тянет в горы, в новые страны. И так один этап неизбежно сменяет другой, это естественно. Сейчас у меня фаза жизни с меньшим количеством путешествий и большим вниманием к работе и инженерии.
— Кстати, насколько в Google гибкий распорядок дня? На собеседовании мне рассказывали истории, что якобы некоторые гуглеры не только работают на эту компанию нон-стоп (это произносится с оттенком гордости и выпавшей им великой чести), но и буквально спят в офисе, настолько он похож на самодостаточную экосистему, идеальную для застревания в ней любого холостого программера-гика.
— График работы очень гибкий. Но в Google ведь бесплатные завтраки, обеды и ужины, и вот они ограничены по времени. Хочешь попасть на завтрак — приходи до 09:30. Опоздал — можешь позавтракать овсянкой или хлопьями на микрокухнях. Такой распорядок очень мягко загоняет всех «сов» в офис пораньше. Плюс, не стоит забывать о «митингах». Ты можешь участвовать в них откуда угодно, но удобней всего это делать из офиса, поэтому если у тебя раннее совещание с командой из Европы (из-за разницы во времени), то ты вынужденно приходишь пораньше.
Да, переночевать в офисе можно, ведь на территории легко отыскать душ и даже есть «тихие комнаты». Есть и прачечные, где можно постирать одежду, да и все офисы открыты круглосуточно. Но эта возможность нужна скорее на всякий случай. Из моих личных знакомых никто ей не пользовался, а у меня в офисе Google ночевал только велосипед.
«Вот так выглядит наша скалолазная стенка в MTV. Маршрутов промаркировано много, как проходить большинство из них, я не знаю.»
— Тем не менее, в чем секрет твоей производительности? Где находить силы, чтобы столько читать, работать в полную силу, да и путешествовать, фотографируя всё кругом? Может, это результат какого-то хитрого мировоззрения или страсти к переменам?
— О, есть очень простая техника. Нужно записаться на курсы китайской каллиграфии, бальные танцы, уроки испанского и гитары, пообещать всем на работе закончить важный проект раньше срока, договориться с друзьями пойти в поход на все выходные.
В общем, забить всю неделю так, чтобы ничего не успевать. Продержаться 7 дней, а потом убрать бальные танцы и испанский. Это освобождает кучу свободного времени, и ты легко успеваешь и на уроки гитары, и в поход. Это работает и в обычной жизни, так и в путешествиях и спорте.
— Продолжая тему, расскажу, что ты заядлый любитель чтения. Бытует мнение, что книга — уходящее явление, ведь многое в мире ныне можно увидеть своими собственными глазами — путешествия и опыт дальних стран доступны многим лично, а на все известные книги сняты фильмы и так далее. Почему ты выбираешь именно книги? Зачем тратишь на них столько времени?
— Книги — это, возможно, самые главные учителя в моей жизни. Если бы не приключенческие рассказы Верна, Лондона да Сабатини, я и не путешествовал бы столько. Книги же подарили мня основные принципы, которым я стараюсь следовать.
Также я не считаю, что книги, фильмы и путешествия взаимовытесняющи. Они существуют в разных плоскостях. Крайне-крайне редко книга и фильм по книге достаточно хороши, чтобы достойно бороться за умы и сердца (например, в первом приближении я только «Бойцовский клуб» и «Властелина колец» могу вспомнить из подобных). Путешествия же вообще дают совершенно особенный опыт, который ни с чем не совместим.
— На твой айтишный вкус, лучше всё-таки бумажные или электронные книги?
— Электронные. С чистым сердцем могу рекомендовать Kindle — он маленький, легкий, дешёвый и при этом довольно надёжный. Предыдущая версия прошла со мной огонь и воду, но в конечном счёте не пережила перелёт непальскими локальными авиалиниями. Сейчас у меня версия с подсветкой.
Бумажные книги я тоже люблю, но они не практичны. Легко впитывают воду, много весят, а еще быстро заканчиваются.
— Продолжая тему чтения, можешь ли назвать пару любимых книг, впечатливших тебя за все время наиболее сильно. Для безнадежно фраппированных айтишников типа меня, лучше назови свои любимые RSS-подписки.
— Я очень мало читаю по компьютерным наукам, предпочитаю художественную и научно-популярную литературу. Поэтому будет больше книг художественных. Плюс, я ограничу временной интервал последними 3–5-ю годами, потому что иначе топ книг будет заполнен детской приключенческой литературой. Итак:
Дуглас Хофштадтер «Гёдель. Эшер. Бах. Эта бесконечная гирлянда.» (научпоп) — отличная философская база для нерелигиозного детерминистского восприятия мира. Henry David Thoreau «Walden; or, Life in the Woods» (автобиография) — библия дауншифтеров. Интересным дополнением здесь будет книга Jon Krakauer «Into the Wild». Роберт Хайнлайн «Чужак в чужой стране» (роман) — библия хиппи. Также у него же весьма впечатлила «Луна — суровая хозяйка», настольная книга революционера. Джордж Оруэлл «Вспоминая войну в Испании» и «Памяти Каталонии» (автобиография) — история формирования мировозрения автора »1984», возможно, лучшего романа XX-го века. У Оруэлла еще, кстати, есть прекрасные «Дни в Бирме», пронизанные духом обречённого социализма. А адептам путешествий «без средств» будет интересно почитать «Фунты лиха в Париже и Лондоне». Эрнест Хэмингуэй «По ком звонит колокол» (роман) — очень впечатливший меня роман Хэмингуэя, который я упустил в юности. Фредерик Брукс «Мифический человеко-месяц» (компьютерные науки) — лучшая книга по управлению проектами и одна из лучших инженерных книг вообще. Eliezer Yudkowsky «Harry Potter and the Methods of Rationality» (роман) — прекрасное введение в теорию рационального мышления. В списке только одна книга по компьютерным наукам, и это не случайно. Большую часть инженерной информации я получаю из RSS-подписок и Twitter:
Отдельно хотелось бы упомянуть ленты комиксов:
— Окей, если с творчеством всё более-менее понятно, то какую роль в твоей жизни играет спорт? Это нечто большее, чем просто попытка быть в форме и сохранить здоровье?
— Есть околоспортивные вещи: сноуборд, байкинг, сёрфинг, скалолазание. Это просто развлечения, мне это нравится. Мне нравится нестись на борде вниз по склону или пытаться удержать руль велосипеда на горном трейле, я получаю удовольствие, забравшись на стенку по маршруту, который до этого пройти не мог.
Есть и чисто спортивные занятия: бег, тренажёрка. Позволяют держать себя в форме и дают возможность заниматься тем, что я люблю. Например, ходить в горы. А еще спорт вызывает почти наркотическую зависимость и занятия спорта делают вас немного счастливее.
«Открыл сезон набегом на Тахо. Моя фотография кошмарная, но можно заценить снаряжение:
— Сноуборд Lib Tech Skate Banana BTX. — Крепы Union Force (чёрные). — Боты K2 Ryker. — Шлем Giro Edit Snow Helmet.
Ну и плюс всякие мелочи. Я ужасно доволен, хочу еще и много».
— И напоследок: каковы для тебя главные плюсы и минусы от работы в Google, если выразить их одной строкой?
— Нравится чёткий, отлаженный процесс разработки, который создавался инженерами для инженеров. Не нравится масштабность корпорации — в такой большой компании очень трудно заметить собственный вклад.
© dev.by, 2014