Игорь Савчук - Отъявленный программист: лайфхакинг из первых рук
Профессиональные интересы в плане программирования — дизайн систем, высокопроизводительное (низкоуровневое) программирование, функциональное программирование. Испытываю определенную нелюбовь к программированию 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?