ГЛАВА 6. Сергей Кищенко — программист-кочевник
ГЛАВА 6. Сергей Кищенко — программист-кочевник
Сергей Кищенко — украинский программист. Бывший Software Architect в Quickoffice (Харьков), ныне работает в центральном американском офисе Google в MTV (в должности Google SWE). Активно путешествует, фотографирует и познает мир — относит свой образ жизни к движению digital nomad. Не женат.
Первая часть интервью взята в 2013 году, вторая — в 2014 году.
Многие айтишники уже привыкли к дорогим и хорошо оборудованным офисам, где они вросли корнями в свои рабочие места с несколькими мониторами, с халявной кухней и всегда стабильным Интернетом... Но даже среди программистов, любящих и ценящих эти простые радости любого гедониста, есть отдельные отщепенцы, которые живут кочевой жизнью бэкпэкера, не привязывая себя не только к офисному креслу, но и к стране своего местопребывания.
Я предлагаю вашему вниманию интервью с молодым украинским программистом Сергеем Кищенко, который ведет сверхмобильный образ жизни и постоянно путешествует по миру. Программирование — основная его работа, она полностью превратилась в удаленный тип заработка. Он кодит в самолетах, рейсовых автобусах или в горах — вообще везде, где есть Интернет и возможность хотя бы немного сосредоточиться, чтобы работой отвлечься от своего бесконечного трипа длиною в жизнь.
* * *
В каких странах ты был, что запомнилось наиболее ярко?
Только за последние три года я посетил (в алфавитном порядке): Азербайджан, Великобританию (3 раза), Грузию (2 раза), Данию, Казахстан, Камбоджу, Кению, Непал (3 раза), ОАЭ, Пакистан, Россию (неведомое количество раз), США, Таиланд, Танзанию, Турцию, Финляндию, Хорватию, Черногорию и Швецию. Как итог — в паспорте остался свободным лишь последний разворот.
Самая интересная и восхитительная страна из моего списка — Непал. Прекрасные горы, дружелюбные непальцы, Beatles и Pink Floyd в местном исполнении в барах Катманду, грандиозные храмы и тихие монастыри.
Что ты вынес из своих путешествий? Поделись своим практическим опытом.
Вынес несколько основных вещей. Во-первых, стоит полагаться на себя. Человек способен на большее, чем может представить. Вовторых, подавляющее число людей в мире — добрые и неконфликтные. Не стоит верить новостям и не стоит бояться нехоженых троп. В-третьих, на путешествие ты потратишь столько времени и денег, сколько у тебя есть.
Давай немного отвлечемся — почему ты стал именно программистом? Это случайность, расчет, желание родителей? Что для тебя программирование сейчас — средство заработка, самовыражения или...?
В детстве увлекался математикой, точными науками, технологиями. Соответственно, и компьютерами. Первые программы писал еще для ZX Spectrum, спасибо старшему брату, который его собрал. На PC писал простенькие текстовые игры на Pascal и Basic. Помню первое приложение с GUI, это была игра Duck Hunt, написанная на Visual Basic, который можно было раскопать в поставке Microsoft Office.
Сейчас программирование для меня — это хорошо оплачиваемое хобби.
И почему же в итоге Сергей-программист стал таким ярым путешественником? Откуда взялась страсть к путешествиям на фоне довольно обыденной офисной профессии?
Уверен, что дело в книгах, которые читал в детстве. Жюль Верн и Дюма, Сабатини и Стивенсон, Льюис и Конан Дойл — все они писали о приключениях и путешествиях, чем и определили мою непоседливость.
Все-таки программирование требует сосредоточенности и внимания, разве нет? Как ты реально работаешь в дороге, может, есть какие-то находки, приемы или хитрости? Стоит ли за таким специфическим образом жизни некая философия?
О находках: чтобы успешно работать и путешествовать, нужно держать темп. Например, приехав в какой-то приятный город, можно две недели ходить по горам, сплавляться по рекам, исследовать достопримечательности, даже и не подходя к ноутбуку. А следующие две недели посвятить работе, по вечерам отдыхая и общаясь с местными жителями. Так, в режиме две недели через две недели, я обычно нарабатываю больше 80 часов в месяц, и этого вполне достаточно для оплаты счетов.
Еще один совет: не пользоваться 3G-интернетом. Лучше выбрать хорошую кафешку с Wi-Fi и работать там. Приход в эту кафешку будет означать начало рабочего дня, это помогает сконцентрироваться. При должной сноровке можно даже следовать примеру Фейнмана и работать в барах под громкую музыку и разговоры. Это вполне реально, если задача действительно интересная.
Философия же проста: пока молод, стоит набираться опыта и знаний, это как прочный фундамент всего остального. Широта взглядов и более глубокое понимание людей окупится в дальнейшем. Ну и carpe diem — не стоит терять возможности повеселиться.
Несмотря на всю лаконичность твоего ответа, если позволишь, давай еще немного подебажим эту центральную тему интервью. Как я понимаю, есть две противоположные стратегии применительно к работе. Первая — это уход от мира, путь затворника или монаха, интроспекция бытия. Создание неких идеальных условий для стяжательства духа святого, отгородившись от всех соблазнов и грехов мира толстой офисной стеной. Применительно к ИТ это прежде всего Google-стиль — полностью самодостаточный навороченный офис со встроенной кухней (и желательно бассейном, массажной и тренажерной). Люди, работающие в таких условиях, обычно проводят свое рабочее время в наушниках («чтобы не отвлекали»), обставленные тремя или четырьмя мониторами по периметру («так удобней»). Ну прямо Царство Функциональности и Комфорта, дарованное работодателем для исполнения его Задач, тщательно отгороженное от всего бренного и социально ориентированного за пределами сего сияющего офиса. Противоположный стиль — это прыжок в гущу событий, абстрагирование от внешнего, какой-то спартанско-мобильный стиль работы на любой встречной кочке, где вроде бы и нет никаких условий для работы вообще, и все тебя во всем отвлекает... Но зато если ты адаптируешься к этому, открываются новые перспективы. В силу судьбы мне пришлось поработать именно в таких условиях в свое время, когда кругом стоял шум и гам, играла вовсю музыка, и мне приходилось решать довольно-таки сложные задачи, скрипя от натуги тогда еще молодыми мозгами. Я достиг уровня, когда степень погружения в задачу была такова, что люди, стоявшие рядом, не могли окликнуть меня, потому как я попросту не слышал голосов из внешнего мира. Коллеги, потерявшие надежду на традиционный коннект со мной, прибегали к болезненному тычку острым предметом в мое каталепсическое тело, чтобы я актуализировался в нашем временном континууме. Тогда я подумал, что такое программирование — это в прямом смысле медитация на коде, причем противоречивые внешние условия только углубляли уровень погружения (по принципу «что не убивает нас, делает нас еще сильней»). Что из этих двух полярностей предпочитаешь ты?
Мне ближе второй вариант. Умение входить в поток посреди бушующего моря, запираться в башне из слоновой кости, быть одновременно и программой, и компьютером, исполняющим эту программу, — это одно из умений, которым программист должен владеть в совершенстве. Оно сродни первым этапам медитации, вот только конечной целью является не отрешение от мира, а как раз погружение и концентрация на одной-единственной вещи.
И все-таки я хотел продолжить тему — если за окном прекрасное море, если за дверью новая и неизведанная страна, что ты говоришь себе, чтобы сесть за ноутбук и начать писать код? Наверное, недостаточно сказать себе что-то вроде «специально приперся за тысячу километров именно сюда, чтобы сейчас сесть и снова немного покодить»... Я хочу понять — в чем твой секрет такой настройки и самоконтроля?
Не стоит переезжать на новое место прямо перед двухнедельным спринтом. Если же новое место было вдоль и поперек исследовано за две недели до спринта, то не так уж и сложно заставить себя сесть за компьютер и писать код. Это ведь такое же хобби, как и путешествия, оно приносит порой ничуть не меньшее удовольствие.
Эй, я уже слышу, что многие скептики бубнят себе под нос недовольно — на подобные путешествия в стиле нон-стоп у них нет ни времени, ни тем более денег. Что ты сказал бы в этом случае? Насколько подобный стиль жизни доступен рядовому программисту?
Повторю, что на путешествия будет потрачено столько денег, сколько у вас есть, — это ключевая идея. Есть 200 долларов? Ну что же, это вполне может быть бюджетом на месячную поездку в Грузию, Армению и Азербайджан, включая авиаперелеты. Есть 800 долларов? Добро пожаловать на два месяца в Индию или Непал, включая авиаперелеты.
Нет денег вообще? Вам повезло, страны СНГ займут вас на полгода, и первый встречный будет готов вас подвезти, накормить и вписать у себя дома. Кроме того, вот вам мое эмпирическое наблюдение: путешествовать дешевле, чем жить оседло. Например, на месячную жизнь в Сан-Франциско в нормальных условиях (включая съем квартиры) у меня уходит в среднем 4000–5000 долларов. На том же Бали за 1000 долларов можно снимать собственную виллу с бассейном плюс питаться исключительно натуральными и свежими овощами и фруктами. Конечно, Бали — это ощутимо дороже, чем Таиланд, поэтому даже за 400–500 долларов дохода можно найти места, где вы будете чувствовать себя королем.
Мои друзья в Сан-Франциско часто спрашивают меня: «Как ты можешь себе позволить так много путешествовать?» Мой ответ звучит для них диковато — я не могу позволить себе не путешествовать. Попытки осесть в Сан-Франциско или в Москве постепенно делали меня банкротом.
Касательно времени — давно прошли те времена, когда человеку приходилось работать в поле от рассвета до заката, чтобы только прокормить себя. В современном мире полная занятость — это всего лишь способ спасти общество от реалий «Заводного апельсина», ведь свободное время далеко не всем идет на пользу. И здесь у меня для вас парадоксальный эмпирический вывод: путешествия делают меня продуктивнее. Я больше отдыхаю и меньше, но лучше работаю.
Отсюда совет — не нужно работать так много. Не берите кредитов, не покупайте модный автомобиль, не подписывайтесь на ипотеку, особенно пока вы молоды. Забудьте о покупке нового телефона каждый год. И вы поймете, что вы зарабатываете слишком много денег, значит, можно работать и меньше, освобождая в своей жизни место для открытий.
Конечно, чисто лишь для порядка тут нужно чуток побухтеть о будущем: как ты себя видишь лет в пятьдесят? Квартира, машина, счет в пенсионном фонде, все дела... Или одинокий седовласый программист, кодящий очередную свою программу где-то на дымчатых вершинах Непала? Говоря иначе, многие выбирают стратегию «пока молодой, предусмотрительно работаю на свою старость», но не реализацию биржевой стратегии «хватай и беги», спуская все свои деньги в том числе на свое беспорядочное перемещение в пространстве.
Современные украинские реалии таковы, что пенсионный возраст у мужчин выше, чем средняя продолжительность жизни. Понимание этого факта мешает «работать на старость», так как существует большая вероятность просто не дожить. Ну и как говорил Марк Твен: «Через двадцать лет вы будете более сожалеть о том, чего не сделали, чем о том, что вы сделали». Я предпочитаю делать то, что мне позволяют молодость и определенный уровень свободы.
Это не отменяет карьерных устремлений. Как оказалось, это не так трудно совмещать.
Давай вернемся к кодингу — какова сфера твоих профессиональных интересов в плане программирования, какие платформы и языки ты юзаешь?
Основные используемые языки — C++ и Python. Основные платформы на текущий момент — *nix-like, iOS. Больше всего опыта — в Mobile Development и Web Services Development. В первом нравится ограниченность доступных средств, это заставляет искать качественные решения. Во втором ресурсов больше, но и требования выше, так что качество программ и алгоритмов должно быть никак не ниже.
Профессиональные интересы в плане программирования — дизайн систем, высокопроизводительное (низкоуровневое) программирование, функциональное программирование. Испытываю определенную нелюбовь к программированию GUI, но имею интерес к нестандартным средствам HCI, например Computer Vision.
Какие у тебя личные впечатления от платформы Windows Mobile? Знаю, в свое время ты вложил в нее много сил и энергии.
К Windows Mobile отношусь ностальгически. Уже довольно длительное время ничего не писал под эту платформу, хотя она была очень неплоха в свое время. Радовала свобода, которую предоставляла платформа по написанию самого разнообразного софта. Так, было 2–3 способа перехватывать звонки и 2–3 способа перехватывать отправку сообщений. Все эти способы мы использовали для перенаправления звонков и сообщений на более дешевые каналы.
Но здесь же крылся и один из недостатков платформы — приходилось использовать все способы, потому что не было одного, который бы работал на всех телефонах всех вендоров. Порой удавалось найти что-то, что работало везде и всегда, но оно оказывалось недокументированным и опасным.
Расскажи про свое мобильное рабочее место. Какое железо, какой софт, как все используешь — наши читатели жаждут технических подробностей.
Macbook Pro 8.2 c dual boot: Mac OS X плюс Gentoo Linux. На последнем Gnome плюс XMonad, Firefox плюс Vimperator в качестве браузера, Sublime Text 3 плюс SublimeClang в качестве редактора и IDE для С++/Python.
Sublime Text 3 используется в качестве редактора и на Mac OS X. Для всего остального — командная строка, urxvt под Linux и iTerm2 под Mac OS X в качестве терминалов. Для связи с внешним миром — Skype и Gajim. Для обработки многочисленных фотографий — darktable.
Ты везде утверждаешь, что путешествие для тебя — хобби, программирование — тоже... А что же тогда работой-то является? Хобби — это все-таки подчеркивание любительского характера занятий, что подразумевает, что есть что-то более главное, на что тратится основное время и силы — работа. Что для тебя является такой работой?
Видимо, у меня какое-то свое собственное определение хобби. Так, я писал программы и до того, как мне стали их заказывать и я начал продавать свой труд. Если бы я выбрал, например, профессию врача, то все равно бы продолжал писать программы, только бесплатно. А так мне за них еще и деньги платят.
По твоим дорожным впечатлениям, каковы основные отличия в ментальности наших постсоветских людей, западных, а также азиатских? Или в общих чертах таких отличий нет, за исключением каких-то национально-религиозных импринтов?
Отличия есть, но они далеко не такие серьезные, как может показаться. Не более чем отличия между людьми как таковыми, не стоит недооценивать девиации менталитета жителей даже одного региона.
Все же существует определенная разница традиций. Так, западная культура — культура индивидуалистов, людей, которые уезжают из родительского дома в юношеском возрасте, чтобы получить образование, и никогда не возвращаются, а стараются жить собственной жизнью. Восточная культура — общественная и семейно-традиционная. Молодой азиат не мыслит себя без своей семьи, он строит собственную как придаток существующей, это элемент коллективизма. Постсоветские люди в этом плане — смесь традиционных и индивидуалистичных настроений.
Соответственно, на Западе залогом твоего успеха являются твой же труд и твои же заслуги. Ты гордишься собой, но и винишь во всем исключительно себя. Тебя учат быть самодостаточным и опорой себе самому, быть взрослым. На Востоке твои успехи — лишь часть успеха семьи, но и неудачи тоже делятся на всех.
Когда оказываешься в таких далеких краях, как Кения или Непал, не сильна ли ломка организма из-за отсутствия Интернета? Или я ошибаюсь и связь там есть, так же, как и у нас, — практически везде?
В том же Непале куда большая проблема с электричеством, чем с Интернетом. Регулярные отключения приучили аборигенов пользоваться автономными источниками питания, и первое, что подключают к такому источнику, — Wi-Fi-роутер. Кения также является одной из самых развитых стран африканского континента. Столица Найроби — вообще финансовый центр и с виду превосходит размерами и развитием любой украинский город.
На вопрос про ломку — бывает не интернет-голод, а скорее информационный голод. Например, когда ты долго ходишь по горам без книг и привычных RSS-подписок, мозг расслабляется и начинает требовать обычной дозы текста, чтобы хоть немного поработать. Помню, после десяти дней в Гималаях, спустившись к цивилизации, первым делом в местной лавке мной был куплен «Парфюмер» Зюскинда и прочитан тут же, несмотря на усталость и четыре утра.
Как относятся твои работодатели и родители к такому сверхмобильному образу жизни?
Работодатель, с которым я провел большую часть путешествий, относился с пониманием. Это было взаимовыгодное сотрудничество, ведь найти хорошего программиста и подождать, пока он выйдет на нужную скорость, намного сложнее, чем просто не терять существующих программистов. Сейчас я нахожусь в процессе смены работодателя, подозреваю, что доверие следующего еще предстоит завоевать, слегка ограничив перемещения и доказав собственную состоятельность.
Родные скучают, но видеоконференции сильно помогают разогнать грусть.
Кстати, что значит твой сетевой ник tilarids?
Никакого особенного значения в нем нет. Когда-то давно мне надоело, что все простые и понятные ники, образованные от имени-фамилии, оказываются заняты для регистрации, поэтому я выбрал слово, которое было сложно найти в Google-поиске. Само слово — переложение рунической надписи, которую наносили на наконечники стрелы или копья в качестве заговора.
В заключение интервью что можешь посоветовать молодым и «красноглазым» программистам-джуниорам, которые просиживают за компом по 24 часа в сутки?
Мой совет может показаться кому-то странным. Но не стоит вообще ударяться в профессиональное программирование, пока вы школьник или студент. Вы успеете еще наработать свой программистский опыт, а вот опыт студенческих вечеринок будет получить сложнее. Поэтому если вы материально можете себе позволить не работать — не работайте. Пусть программирование побудет еще какое-то время неоплачиваемым хобби.
* * *
Год назад я брал интервью у украинского программиста Сергея Кищенко, который постоянно дрейфует между континентами и культурами, создавая код в непрерывном движении во времени и пространстве. За спиной у Сергея осталось 60 стран, когда на его пути возник оффер от Google USA с предложением заякориться в самом сердце Силиконовой долины — Mountain View, California (MTV). Такая вот ирония судьбы — этого свободолюбивого кочевника «поработил» Гугл.
Узнав, что он принял это предложение (признаться, я был удивлен его согласием, зная его свободолюбивый украинский характер), я решил встретиться с Сергеем еще раз, чтобы узнать о впечатлениях прожженного бэкпэкера и космополита от США и Гугла. Во время интервью я применял продвинутые гипнотические техники, чтобы обойти NDA, и вот что из этого получилось.
Сергей, я уже задавал тебе этот вопрос в нашем прошлом интервью, но многие продолжают монотонно щемить меня в комментах: как можно писать по-настоящему сложные программы, при этом каждодневно дрейфуя в новые места и культуры, находясь в перманентном движении? Люди беспокоятся и жаждут дискурса: уж не говнокодит ли ваш Сергей? Очевидно, что офисному большинству для программирования нужны уединение, полная концентрация, социальный пакет и гробовое спокойствие, тогда как непрерывная дорога за окном, мелькающие пейзажи и страны лишают почти всего этого. Разреши еще раз пристать с этим вопросом к тебе: как можно научиться программировать, находясь в потоке суеты и отвлекающих моментов?
На качество моего кода можно посмотреть на https://github.com/ tilarids, хоть там и не лучшие образчики.
Теперь про программирование в движении. Написание кода происходит не тогда, когда вы стучите по клавиатуре и код появляется на экране. Процесс созидания идет у вас в голове, причем хороший инженер одновременно удерживает в голове и созидаемый код, и машину, на которой этот код будет работать, да еще и постоянно прогоняет код через машину. Поэтому для того, чтобы писать хороший код, вам действительно нужно спокойствие, но спокойствие в вашей собственной голове. Нужно сконцентрироваться, отбросить лишние раздражители, оставить себе только то, что важно в этот момент.
Каждый человек достигает концентрации внимания разными способами, например можно запереться в комнате без внешних раздражителей, можно научиться медитации у йогов, некоторым помогает кофе, никотин и витаминки-ноотропы. Мне же достаточно музыки в наушниках. Как научиться этому? Пробовать разные варианты и развивать концентрацию внимания постоянными тренировками. Не сдаваться, упорствовать. Все.
Бэкпэкинг в твоей жизни отчасти позади, ты угодил в хорошо расставленные сети опытных гедонистов из Google. Как это произошло? Можешь рассказать предысторию и общие впечатления от своих собеседований?
Путь в Google у меня занял очень много времени, собеседования приходилось переносить из-за путешествий, я хотел работать в Mountain View и, соответственно, получал рабочую американскую визу, а потом ждал до осени, чтобы ею воспользоваться. В итоге впервые мне написал рекрутер из Google в мае 2012-го, а первый рабочий день был в октябре 2013-го. Впрочем, моя ситуация — это скорее исключение, и я был совсем не против потратить побольше времени на путешествия. Тем более что весь процесс никак не мешает ни работе, ни жизни. Все собеседования интересные, хорошо подготовленные, и мне доставляло удовольствие простое участие в процессе.
О том, как проходят интервью в Google, написано уже очень много, но если кратко, то пришлось пройти несколько созвонов с рекрутером (организационные вопросы), несколько телевидеофонных интервью (алгоритмы, общие вопросы) и один onsite-визит — пять интервью подряд по алгоритмам, общим вопросам и дизайну систем. Логических задачек, вопросов про круглые люки, а также тестов по особенностям языков программирования на интервью не было.
Очерти техническую область, в которой ты варишься сейчас, согласившись на наем со стороны Google.
Техническая область сильно отличается от того, чем я занимался до этого. Data Analysis, Data Mining, Machine Learning, Big Data. Это очень близко по духу к академическим исследованиям, приходится читать научные статьи, а сопроводительная документация к системам сама может потянуть на статью в журнал. При этом в Google давно перебороли все акцидентные сложности, и писать код, перемалывающий гигантские массивы данных, очень легко и просто.
Если интересны технические подробности, то можно почитать недавний анонс на Google I/O 2014.
Покончив с бэкграундом, давай теперь я заставлю тебя вернуться назад во времени. Какие были первые и самые сильные впечатления от первой недели работы в этом поисковом ИТ-гиганте? Что запомнилось больше всего или удивило после того, как ты спустился из очередного горного трэка в сверкающий кампус Google в MTV? По моему сигналу ты закрываешь глаза, засыпаешь и рассказываешь, как это было на самом деле...
Разглашать конфиденциальное здесь все равно нельзя, даже находясь под гипнозом, но какие-то отдельные личные впечатления могут быть интересны и для других.
В Google просто до фига всего происходит. «Базилион» технологий, «хренилиард» серверов, чертова уйма людей. Не знаю, как этот масштаб разработки лучше вербализировать.
Атмосфера же, ощущение свободы, технические детали процесса разработки — все это не очень удивляло после четырех лет моей работы в Quickoffice, где все было организовано примерно так же. Внутреннее устройство успешных компаний вообще очень сходно. Correlation does not imply causation, но это все же повод задуматься руководителям.
Как и в любой нормальной компании, в Гугл развит dogfooding — эксперименты с новым софтом на своих же сотрудниках. И что я вам хочу сказать, глядя на все изнутри, если вы когда-либо матерились на продукты Гугла или жаждали какую-то новую фичу, то почти наверняка все уже «напедалено» и тестируется прямо сейчас.
Похоже, я не самый глупый из толпы новичков, которые начали работать по H1-B визе. Это удивительно, но тешит мое ЧСВ. Окружающие — не сплошь математические гении, победители различных олимпиад, а просто хорошие умные инженеры. Ты можешь у них чему-то научиться, но и они могут учиться у тебя. Иначе говоря, приятно сознавать, что тот опыт, что ты получал до этого, ценен и здесь.
Отдельно приятно удивили Project Managers. Они поднимаются по отдельной карьерной лестнице, а их работа — помогать разработчикам с коммуникациями и ведением проектов. И они это умеют! Например, умение вести митинг так, чтобы за отведенное время успеть обсудить все, — это вроде и мелочь, но подавляющее большинство менеджеров в Украине на это не способны. В Google же митинги идут столько, сколько заявлено (или меньше).
Продолжаем медленно вспоминать — какие были первые впечатления от Силиконовой долины?..
Долина тоже довольно сильное впечатление произвела. Меня сейчас окружают тысячи и тысячи умнейших людей. Они все приезжают сюда, чтобы учиться в Стэнфорде и Беркли, работать в Фейсбуке или Гугле. Большинство из них тратит деньги на благотворительность и ведет здоровый образ жизни. Велосипедистов кругом немерено. В тренажерных залах постоянно толпы. В 6:30 утра ты точно не будешь единственным человеком, который вышел на пробежку. Концентрация миллионеров зашкаливает, и только от тебя зависит, будешь ли ты сам миллионером завтра.
Знаешь, какое слово приходит мне в голову, когда я вижу все это? Евгеника. Множество целеустремленных мальчиков и девочек приезжают сюда со всего мира, и они передадут свою целеустремленность и хватку своим детям. Порой думается, что кто не успел вскочить в этот плавильный котел, навсегда останется позади (позади останутся в том числе и их наследники).
Насколько программисты вокруг тебя аполитичны или, наоборот, — вовлечены в общественно-политические проблемы США (или своейродной страны), находясь в самом центре благополучной, богатой и сверхстабильной Америки? У широких народных масс принято считать, что кодеры проводят большую часть своей никчемной жизни в неких виртуальных мирах по ту сторону монитора, поэтому им нет никакого дела до происходящего вокруг. Так ли это?
Судя по моему опыту, в Украине/Беларуси/России программисты — как раз наиболее общественно-политически активная часть населения. И даже переехав в США/Европу, они продолжают волноваться о судьбе родных стран, пытаются отстаивать свою позицию удаленно. Так, эмигранты-россияне готовы покупать по несколько подписок «Дождя», лишь бы поддерживать в живых хоть какой-нибудь оппозиционный телеканал.
И когда некоторые СМИ заявляли, что украинский Майдан спонсируется Америкой, они были в чем-то правы, потому что хорошо видно, что поток пожертвований до сих пор не иссякает.
К общественно-политической жизни США программисты скорее индифферентны, причем как приезжие, так и коренные американцы. Возможно, сказывается то, что даже и американцы здесь работают часто из других штатов, очень много новоприбывших, и у них еще не сложилось восприятие окружающей действительности как своей территории.
У Гугл очень разнородный по национальному признаку коллектив разработчиков. Есть ли какие-то сбои в коллективе из-за разности менталитетов и культурных кодов, упакованных в одной точке пространства и времени, но работающих над общей задачей?
Люди на самом деле все одинаковые, флуктуации в поведении из-за особенностей менталитета минимальны и в рабочей обстановке незаметны. Так что никаких проблем. И плавильный котел работает скорее не на сплавление менталитетов, а на сплавление опыта, знаний, умений.
Разве что приходится понимать самые разные акценты, но это не так и трудно.
Какова политика управления Гугла, как все это скопление гениальных людей «процессится»? Особенно, когда интересы одной творческой личности переезжают интересы другой катком личных амбиций? Как лучше всего купить лояльность у высококвалифицированных сотрудников с точки зрения Google?
O’кей, давай поговорим о политическом устройстве Google. В компании работает ну просто до фига сотрудников, больше, чем граждан в некоторых странах. Поэтому можно рассматривать компанию с политологической точки зрения. Так это вполне себе конституционная монархия, никаких выборов монарха, хотя монаршая власть здесь ограниченна. Интересно, что при этом лояльность сотрудников довольно высока. То, что компания платит денежку, это всего лишь половина ответа на вопрос «почему?» (каждый сотрудник Google приносит компании профита больше, чем ему платят).
Важно то, что в компании развит механизм эскалации. Так, раз в неделю можно нагло задавать неудобные вопросы Пейджу и Брину напрямую (я говорю про мой офис в MTV, в других офисах это сложнее). Да и до своего Director of Engineering/VP не так далеко идти, если вдруг чего. Очень развита культура «бунтарства». Пока внешний мир скандалит: «Google снова сделал что-то не то, ай-яй-яй», настоящий кипиш поднимается внутри компании. И что самое главное — «монархи» прислушиваются к проявлению недовольства сотрудников. Частенько признают ошибки. Рассказывают, как будут исправлять. Такая вот вторая половина ответа на вопрос лояльности.
И главный вывод: демократия не является той серебряной пулей, которая решает все проблемы социумов. Демократия — всего лишь один из вариантов эскалации проблем и влияния на решения (посредством предвыборных программ и голосования). Но есть и другие варианты. И да здравствует бунтарский дух!
Кстати, про бунтарский дух и твою «рiдну Украину». Есть такое мнение, что программисты изначально созданы для эмиграции, потому что их умения и работа напрямую интегрированы именно в западную часть экономики. Таким образом, говоря предельно общо, карьера в области программирования часто понимается как переход из-под цепочек многочисленных посредников, через которые работает тот же местный аутсорс, прямо к западному работодателю. В конечном счете трудоустройство в череде таких оптимизаций чаще всего влечет переезд и эмиграцию в офисы крупных западных компаний, чтобы работать и получать на равных с западными коллегами. Многие трудящиеся воспринимают такую позицию непатриотичной. Ты уехал еще до всей этой украинской революционной заварухи, каквообще относишься к такого рода утверждениям о «вечном неоплатном долгу перед Родиной»? Как относишься к «безродности» космополитов, которых среди программистов, наверное, большинство (в рамках которых Родина отходит на второй или третий план, а личная возможность развиваться и зарабатывать выпячивается на первый)? Иначе говоря, программеру не только хорошо платят, но высокая ликвидность и мобильность профессии дает ему возможность жить где угодно «самому по себе» (языком покера — это Double Joker), тогда как другие обыватели невольно пристегнуты к государству с его многочисленными проблемами и личными имперскими тараканами правителей. Насколько моральна или эгоистична позиция бегущего с тонущего судна космополита? Что для тебя эмиграция, почему ты решил работать именно за рубежом, а не остался в родном Харькове («и как один умрем в борьбе за это»)?
Лев Толстой еще в начале прошлого века писал о том, что патриотизм устарел, что он должен быть уничтожаем всеми силами и способами. Если бы ко Льву Николаевичу прислушивались, то, возможно, и не было бы мировых войн, не было бы миллионов погибших, не было бы и разрушенных судеб сегодня, ведь войны не прекращаются ни на минуту. Так что я антипатриот, и любые патриотические чувства считаю вредными. И если уж говорить о каком-либо долге, то я готов принять долг перед планетой, перед человечеством в целом. Для меня космополит — это не эгоист без роду и племени, космополит родом с планеты Земля (я готов расширить определение, как только станет ясно, что мы не одни во Вселенной).
Соответственно, эмиграция — это просто переезд из комнаты в комнату в пределах одного здания. В одной из комнат летом прохладней, и летом вы предпочтете спать там. А зимой можете вернуться назад, на свой старый продавленный диван. Также и США меня заинтересовали Силиконовой долиной, возможностью учиться у лучших инженеров этой планеты в одной из лучших компаний этой планеты. Если бы головной офис Google был в Харькове, я бы и не уезжал никуда.
Ситуация в Украине в этом контексте воспринимается сложно. Очень тянет поехать, помочь. Но не совсем понятна причина происходящего: эта заваруха из-за того, что одна из сторон воюет, считай, против всего человечества, против истины и свободы; или все же из-за того, что в спинном мозгу остался зудящий патриотизм, который так просто не вытравить. К тому же не хочется калечить людей. В результате масштабных внутренних битв помогаю удаленно, чем могу. Думаю, это самый эффективный возможный мой вклад.
Страшусь этой темы, но все-таки спрошу у программиста-космополита со стажем, посетившего более 60 стран мира, — каково твое отношение к политике?
У меня есть хороший совет, как экономить время на политических дискуссиях: перестаньте спорить с позицией собеседника. Вам совершенно не нужно много думать, как, например, евроинтеграция повлияет на учителей, сельское хозяйство, компанию «Рошен» и сталелитейные заводы. Прикиньте, насколько это повлияет лично на вас и ваших близких. Позвольте это сделать остальным. Вас рассудят закон больших чисел и принципы демократии, и драгоценное время не будет потрачено на пустые доказательства.
Можешь подвести некий итог, просуммировать свои впечатления: что тебе больше всего нравится в Америке и, наоборот, — что не нравится?
Я не могу сказать про все штаты, но я могу сказать про Калифорнию, про San Francisco Bay Area. Очень нравится, что люди массово увлекаются спортом, заботятся о своем здоровье. Такая обыденная любовь к жизни, к себе, к окружающим. Проявляется везде и во всем. У нас это очень непривычно.
В качестве негатива: в Штатах нефиговая проблема с квартирными кражами. Причина проста — полиция плохо финансируется и на расследование таких мелочей просто не хватает людей. Тем более что страховая покроет утраченное за вычетом deductible (обычно 500 долларов).
Арендовать апартаменты в Штатах дорого и мучительно больно. Своя жилплощадь здесь редкость, куда чаще люди всю свою жизнь снимают. Или берут ипотеку, что может быть даже больнее. Поэтому квартиры обычно сдаются на длительный срок: от 6–12 месяцев. Выехать раньше можно, но для этого нужно выкупить контракт. Стоимость buy out у меня — полуторамесячная рента. Сам лизинговый контракт полон прекрасного: указаны разрешенные цвета жалюзи, прописан статус «медицинской марихуаны», в качестве форс-мажоров указано в том числе и божественное вмешательство, отдельная статья посвящена млекопитающим (mammals) в квартире.
Что удивительно, агенты по недвижимости не вызывают ненависти. Заходишь на craigslist, смотришь объявления, звонишь и попадаешь на владельца или его представителя, а не на частного маклера, готового за 200 баксов найти похожую квартиру. В специально оговоренное время заинтересованные приходят на смотрины, тут же можно подать application. Стоимость application — 30–45 долларов. В случае подтверждения платишь депозит (1–2 месяца ренты, правило хорошего тона — по возврату депозита приплачивать проценты, которые бы набежали на этот депозит в банке), оплачиваешь первый месяц — и въезжаешь. Обычно квартиры без мебели, но с оборудованными кухнями.
Еще приятная особенность — апартаменты часто объединены в коммьюнити, я как раз в таком и живу. В стоимость аренды включен доступ к общественному тренажерному залу, небольшому открытому бассейну, площадке для барбекю. Довольно полезным ништяком является то, что «на ресепшене» могут принять посылку в рабочее время, это удобней, чем доставлять в офис. Еще про впечатления от США: лично мне не нравится рельсовость, накатанность жизни в целом. Материальная обеспеченность отнимает желание стремиться к большему. В Bay Area стремлений и амбиций побольше, конечно, но тем не менее.
Также из неприятных для меня вещей в США — это компании, чья бизнес-модель построена на эксплуатировании законов. Так, о патентных троллях знают все. А вот вы слышали о юридических фирмах, которые ищут жертв неудачно прописанных медикаментов?
Так и идет реклама по местному телевизору: «Если вам прописали X, а у вас были такие-такие побочные симптомы, звоните нам, вам полагается денежная награда». И реклама по соответствующим запросам в том же Google стоит безумно дорого, то есть у этих сволочей хватает прибыли, чтобы еще и рекламу давать. Этот мир явно требует серьезной оптимизации.
Может, в последнем и выражается звериная сущность американских юристов — этаких санитаров леса в обществе и государстве, ревниво стоящих на страже этой самой нерушимой законности, стабильности и порядка, что и порождает в качестве того же побочного эффекта рельсовость и накатанность жизни?
Юристов действительно много.
В этом плане пару раз замечал интересное — при переезде в США/ Европу бывшие жители СНГ прекращают качать фильмы с торрентов. Но не потому, что никто так не делает и это воровство, а просто боятся, что их попалят. И с интересом расспрашивают друг друга, не было ли с торрентами проблем?
Так что все это пиратство и презрение к копирайтам от безнаказанности. Когда в следующий раз будете качать фильм/музыку с торрентов, хотя бы себя не обманывайте, что это потому, что «все качают».
Ну и, конечно, влияет то, что легально купить фильм проще, чем скачать с торрентов.
Давай теперь поговорим более плотно про ИТ. Бытует мнение, что у Google есть любимые языки программирования (ЯП), то есть объективно востребованные скиллы внутри самой компании. Как пример, твой любимый Python часто называют очень популярным в рамках внутренних проектов Google. Можно ли очертить круг наиболее интересного для этого поискового гиганта на программистском рынке?
Любимые языки в Google — это те, которые позволяют выпускать продукты и запускать сервисы. В основном это мейнстримовые языки вроде Java, C++, Python, JavaScript. Они не просто так мейнстримовые — это действительно лучшее, что есть сейчас среди ЯП. Но, вообще говоря, используемый язык — это побочный скилл. На интервью по языкам вас могут спросить разве что о том, как вы относитесь к той или иной особенности ЯП, что бы вы хотели исправить. То есть это скорее вопрос по системному дизайну, чем по языку.
Иначе говоря, язык программирования — это как разговорный язык. Чтобы работать в Google, нужно более-менее изъясняться на английском, потому что на этом языке говорит вся компания. Поэтому нужно уметь свободно писать код на каком-то из мейнстримовых языков программирования. Впрочем, этому учат в любом инженерном вузе, а попасть в штат Google без высшего образования довольно трудно.
Спектр же применяемых технологий настолько широк, что очертить определенный круг никак не получится. Ведь компания не только пишет поисковик, но и занимается исследованиями в области искусственного интеллекта и машинного обучения, производит автомобили и воздушные шары, разрабатывает Android OS и Chrome OS. Поэтому Google пытается нанимать инженеров широкого профиля (generalists).
Сужаю и персонализирую первоначальный вопрос: какие технологии сегодня поражают тебя и какие языки программирования будут рулить на массовом рынке в ближайшие пять лет? Если можно, сделай прогноз, что сейчас наиболее перспективно и востребовано на кухне топ-разработчиков.
Я люблю функциональные языки программирования, и мне радостно видеть, что они постепенно приобретают все больший вес в области обработки данных. Но это не означает, что мейнстримовые языки куда-то исчезнут и на их место придут другие.
Знаете, почему и через десять лет мы будем писать на С++, а не на каком-нибудь другом языке? Потому что современные компиляторы С++ оптимизируют так, что просто диву даешься. Например, посмотрите: я попытался обмануть компилятор так, чтобы он не оптимизировал пробрасывание временного значения в функцию bar. [http://bit.ly/1fsb7sU] Что из этого вышло — сами видите.
Возможно, Go и Dart удастся немного потеснить Python и JavaScript, но не более того.
Предвидеть же, какие технические направления будут горячими через пять лет, я не берусь. Впрочем, всем карьеристам еще не поздно вскочить на поезд Artificial Intelligence и Machine Learning, они вряд ли скоро пропадут с горизонта.
Действительно, ничего революционного в твоем списке языков и технологий нет. Тем не менее знакомые девелоперы часто брюзжат слюной, что технологии создания программных продуктов не прогрессируют с 60-х. В чем суть этого скепсиса?
Давайте лучше поговорим о философии программирования, которая тоже не меняется с середины прошлого века, — это будет более общим случаем предложенной темы.
Итак, программированием правит утилитаризм. «Premature optimization is a root of all evil» — говорит нам старина Кнут, и мы вспоминаем о производительности только тогда, когда уже поздно. Пятидесятикратное падение производительности? Да пофиг, будем писать на Python в 3 строки! Четыре гига «оперативы» ушло в никуда? Еще раз пофиг, зато мой pure functional язык позволяет мне выражать мысли монадами!
Недавно коллеги обсуждали невероятные тормоза LibreOffice при прокрутке документа с SVG. И это на современных персональных компьютерах текущего года. Мне особенно больно это слышать, потому что я почти 4 года проработал над офисным продуктом, который изначально затачивался под мобильные устройства. Это Excel, который работает на мобильном 20-мегагерцовом процессоре. Word, занимающий памяти меньше, чем документ, который вы открываете. Но пришло время айфонов и айпадов, и я лично наблюдал, как деградировал наш продукт, когда снимались определенные ограничения. На первом iPad можно было легко откушать до 64 метров памяти без риска быть убитым, это было роскошью, и приложение летало. К появлению iPad Retina приложение уже хотело под 300 метров в определенных случаях, а на первом iPad тормозило. Аналогичная деградация наблюдалась в Android-версии. Изначальный лимит в 16 Мбайт для поддержки слабых андроидофонов был вскоре забыт, основная разработка велась под Android-планшеты, которые могли поспорить в производительности со слабенькими персоналками. К чему это привело, вы все сможете посмотреть в Android 4.4 KitKat, в ванильной поставке которого должен быть тот самый офис.
Мой вывод — виновата философия программирования, которая сделала создание программных продуктов чисто утилитарным действием. Программирование сегодня — это как написание картин для того, чтобы дырку в стене прикрыть. Модернизация «алгебры» этого процесса приведет лишь к тому, что качество картины будет выше с точки зрения ее возможностей лучше висеть на стене и прикрывать дырку. А вот что делать, чтобы программирование стало искусством, а не ремеслом? Возможно, такая возможность уже безнадежно утеряна.
Давай, глядя с вершины всех этих зияющих проблем отрасли, попытаемся дать дельные советы начинающим программистам. Ты — состоявшийся программист. Оглядываясь назад, анализируя свои поступки и мотивы, можешь ли ты сам себе объяснить, в чемсекрет или формула успеха на этой стезе? Очень многие молодые люди стремятся стать айтишниками, но далеко не у всех в итоге получается что-то путное. Глядя изнутри индустрии, что можно выделить главное в характере, профессии и обстоятельствах, которые способствует успеху именно в ИТ? Какие общие советы ты бы дал начинающим программистам?
Еще в прошлом интервью я советовал начинающим программистам больше времени наслаждаться детством и юностью и поменьше думать о карьере, пока есть такая возможность. Если же пришла пора о ней задуматься, то важнейшими качествами являются уверенность в себе, смелость и упорство. Это истинно не только для ИТ. У каждого человека свой путь к вершинам.
Смелость и уверенность в себе позволяют сделать первый шаг. А после первого шага становятся очевидными трудности, которые доведется преодолевать. И здесь поможет только упорство.
Дополнительно, что бы ты пожелал молодым коллегам-программистам, которые в душе симпатизируют евгенике и горят желанием трудоустроиться в таких местах силы, как Google? Так уж ли страшен этот заморский «поисковый черт», как его малюют?
Молодым коллегам-программистам в этом плане совет: убежден, что Google — идеальный выбор именно в качестве вашего первого места работы. Не нужно бояться, что у вас не хватит опыта, в интернатуру берут вообще без какого-либо опыта. Важны ваши знания, образование и желание работать. Также Google отлично подходит тем, кто уже имеет инженерный опыт, но желает научиться большему. Там также найдется место и для зубров от программирования, но последние вряд ли нуждаются в моих советах.
Тем, кто желает подготовиться к интервью, очень советую курс алгоритмов от Роберта Седжвика из Принстона. [1 http://www.coursera.org/course/algs4partI] Это лучшее из того, что я знаю.
Не мешает ли такая напряженная офисная работа твоим активным путешествиям? Мне кажется, что суперкомфортный Google — это прямая антитеза твоим дауншифтерским трипам по захолустьям цивилизации. Как ты совмещаешь эти две разные концепции?
Данный текст является ознакомительным фрагментом.