Продолжая использовать наш сайт, вы даете согласие на обработку файлов cookie, которые обеспечивают правильную работу сайта. Благодаря им мы улучшаем сайт!
Принять и закрыть

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.

Читать: Отъявленный программист: лайфхакинг из первых рук - Игорь Савчук на бесплатной онлайн библиотеке Э-Лит


Помоги проекту - поделись книгой:

Прежде чем мы поговорим о вашей богатой истории, можете сейчас вспомнить, с чего все начиналось? Как вы пришли в программирование? Какие были мотивы? Я начинал программировать на компьютере Atari 800XL, который достался мне от моего старшего брата. Сколько я себя помню, мне всегда было очень интересно программировать. Для меня программирование — это источник хорошего настроения, в более общем смысле — возможность развиваться и работать над собой, возможность проявить себя и свои вкусы. Бизнес-составляющая для меня была всегда в стороне от этого чувства; возможность заработать своим любимым занятием — просто дополнительный приятный бонус. Джастин, очень логичный вопрос: что чувствует человек, когда его выгоняют из собственного бизнеса? Не то чтобы это уникальная история, но все же какие чувства вы тогда испытывали, когда вас поставили перед фактом: с сегодняшнего дня WinAmp не имеет к вам никакого отношения? Ну, во-первых, мне очень хорошо финансово компенсировали эту потерю, во-вторых, это не было какое-то мое сознательное решение, так как первоначально мы договаривались, что, несмотря на продажу, я буду продолжать работу над проектом. Поэтому я не чувствую никакой вины, что я «предал» свой проект, — так сложились обстоятельства. Тем более я успел вложить в WinAmp практически все, что собирался там сделать, поэтому уходя не чувствовал себя слишком подавленным. В связи с этим вы писали в своем блоге: «Для меня программирование — это форма чистого самовыражения. Компания же (имеется в виду AOL) подавляет наиболее эффективные средства самовыражения из тех, что у меня есть. Это неприемлемо для меня как для личности, поэтому я должен уйти». Итак, программирование — это для вас искусство или все-таки обычная работа? Я думаю, что это смесь всего сразу. Представляю себе технологию любой разработки из трех разноуровневых плоскостей: на высшей — мы рождаем концепцию программы, формируем ее индивидуальность,

это чистой воды креативность и искусство. На следующем уровне — разработка программы, ее написание, проработка алгоритмов и деталей ее работы, здесь уже задействована смесь из рабочих навыков и креативности. Низший уровень — отладка и шлифовка программы, и для меня это рутина, монотонная техническая работа, лишенная творческой искры. Поэтому, как и в обычной жизни, при разработке мы последовательно проходим все эти уровни, но секрет успеха всего цикла, по моему мнению, сокрыт именно в первом уровне — концепции. Суммируя, можно сказать, что без креативности ты посредственный программист? В каком-то смысле да. Ты обречен постоянно работать лишь на низшей плоскости в этой модели. И это всегда наемная позиция, обратите внимание. Поэтому в нашем сложном мире программист программисту рознь. Джастин, извините, я и в самом деле не понимаю, вас очень многие знают в индустрии, и вы сами говорили о больших возможностях и предложениях, то есть вы могли устроиться во многие крупные корпорации и работать там наемным программистом и ни о чем не париться — так к чему все эти нервы и риски с собственными проектами? Потому что это дает совсем другие ощущения. Я работал однажды в America Online (смеется), и вы сами знаете, чем это закончилось. Я понял для себя, что мне очень важно оставаться самим собой и делать в этой жизни то, что я считаю правильным. Работая на корпорацию весь день напролет, ты осуществляешь чьи-то чужие планы, не живешь своей мечтой, неизбежно подавляешь свою креативную составляющую. Очень сожалею, что мне не дано выразить словами, насколько это большая разница. (Пауза.) Ну, примерно как если бы вы работали в садике няней и ухаживали за чужими детьми. Или, например, если бы вы выступали в качестве родителя и у вас был бы свой собственный и долгожданный ребенок. В принципе, в обоих случаях будет очень много общего чисто внешне, но все же… черт побери, но это же совершенные разные вещи, не так ли? Давайте коснемся и другой актуальной проблемы, через которую вы прошли лично: могут ли одиночки вроде вас противостоять корпорациям с большим коллективом разработчиков? Иначе говоря, возможно ли в наше время одиночкам-программистам написать что-то по-настоящему известное вроде вашего WinAmp? Я понимаю, что вы имеете в виду, но я думаю, что не так все просто. Я работал в очень большом коллективе разработчиков в свое время и думаю, что часто «больше» — не значит «лучше». Конечно, я могу сейчас рассуждать об этом лишь теоретически, но думаю, что у одиночек шансы все еще есть. Если вы посмотрите на Facebook, Microsoft, Google, Apple и т. д., вы увидите, что, несмотря на их гигантский штат, за ними стоят по-прежнему одиночки, которых вы знаете поименно. Кстати, я уже говорил раньше о своей трехуровневой модели разработки — по-прежнему, я повторюсь, но все решает удачная концепция. А для этого хватит и одного по-настоящему талантливого человека. Вот поэтому я уже давно не работаю в корпорациях! (Смеется.) Интересно, с учетом вашего перфекционизма в отношении программирования как вы лично считаете, нужно ли специализированное высшее математическое образование (или по компьютерным наукам), для того чтобы создавать высококлассные современные программы? Скажу вам прямо, я не считаю, что сегодня обязательно нужно иметь высшее образование по математике или в CS для разработки успешной программы. Я считаю, что любой может добиться очень многого, самостоятельно учась и пробуя. Тем более сейчас, когда есть такие большие возможности для получения любой информации, а также возможности для удаленной работы в команде с профессионалами очень высокого уровня (например, в многочисленных сетевых проектах Open Source). Поэтому для какого-то профессионального базиса достаточно упорства и аккуратности, я считаю. И наоборот, вижу, что у многих дипло

мированных выпускников часто не хватает элементарного упорства, чтобы добиться чего-то более-менее заметного. Поэтому не это главное сегодня. Вы уверены? К примеру, я могу нанять очень хороших и дорогих программистов в качестве послушных исполнителей прямо завтра, которые закончили самые престижные вузы и полностью готовы к осуществлению сложных проектов. И что, факт этого сам по себе хотя бы что-то гарантирует? Эти времена уже прошли. Сегодня важно… (после паузы шепотом) давайте закругляться с этим вопросом, потому что я снова начну повторяться про первый уровень своей модели. Ладно, о’кей, как вполне состоявшийся в сфере программирования человек поделитесь секретом своего успеха. Это некая индивидуальная удача или результат стахановского труда и личных, очень ярких и нестандартных способностей? Ответ зависит только от того, что вы подразумеваете под понятием «успех». Например, для меня, и я хорошо знаю это, важным условием для будущего успеха программы является возможность самому ежедневно очень плотно пользоваться этой программой. Если ты пишешь софт для других пользователей, а сам им не пользуешься, то, естественно, не знаешь его со всевозможных сторон в реальной жизни — тогда успех будет сложной задачей, в этом случае сложно добиться понастоящему глубокого уровня резонанса с потребностями твоего потенциального покупателя. Поэтому это очень важно, в конечном счете все стоящие программы мы пишем прежде всего для самих себя. Разве нет? Интересно, сегодня вы как-то принимаете участие в разработке WinAmp? Общаетесь ли вы с текущим лидером проекта WinAmp Беном «Benski» Эллисоном? Нет, вообще не в курсе, чем они там занимаются. С Беном как-то пару раз пересекались, кроме обмена обычным «привет», никак не общались. Уже пару лет как я полностью с головой ушел в свой новый проект REAPER. О’кей, перевернули страницу истории, WinAmp остался позади. Что можете сказать о вашей сегодняшней ведущей разработке REAPER? Чем она особенна среди подобных? И вообще, почему люди пишут новые программы, когда изначально существуют уже подобные аналоги? Проект REAPER начинался с того, что мне нужно было что-то, что позволяло бы достаточно эффективно и удобно записывать живое аудио, а затем иметь возможность сразу же подредактировать его хотя бы на каком-то базовом уровне возможностей. На тот момент у меня не было никакого подобного и по-настоящему удобного лично мне инструмента под рукой, и, как это часто случается (произносит по слогам): мне было проще написать это самому. Знакомая для любого программиста фраза, не правда ли? Именно так все и начинается. Но конечно, с тех пор программа очень сильно выросла и разрослась, возможно, это во многом субъективно, но я вижу ее основные отличия от многочисленных конкурентов в следующем: ? очень продвинутый уровень пользовательской кастомизации программы (возможность создания своих тем, меню, шаблонов, значений по умолчанию и т. д.); ? отсутствие защиты от копирования и взлома, полностью функциональная демоверсия, что для меня очень важно; ? очень гибкая и продуманная открытая архитектура для сторонних плагинов — любой желающий может расширить любую подсистему программы, добавив в нее новую функциональность, новый формат или сферу приложения; ? я также стараюсь очень часто обновлять программу, непрерывно работая над ней. По всему тому обилию программ, которые мне приходилось видеть и писать за свою жизнь, я берусь судить, что REAPER — понастоящему качественно спроектированная и реализованная программа.

Насколько она коммерчески успешна? Конечно, у нее пока нет той миллионной армии пользователей, которая была у других моих разработок, но даже тех нескольких тысяч клиентов, что у меня есть сейчас, вполне хватает, чтобы этот проект был окупаем. Вместе со мной над программой работает еще пару человек, и мы пока вполне хорошо держимся на плаву. * * * Джастин Франкель вспоминает, как, будучи 16-летним подростком, как-то участвовал в летней олимпиаде по программированию в родном университете Северной Аризоны. Было так скучно, что просто для веселья Джастин решил прямо там, не теряя времени, написать программу типа Fork bomb, которая, будучи запущенной, сразу создавала свой клон, который также мгновенно запускался, повторяя все это снова в цикле: конечно, уже через минуту ее работы компьютер намертво зависал, никак не реагируя на клавиатуру. Тогда он пересаживался вверх по аудитории, запуская эту программу на новых компьютерах, пока группа администраторов пыталась понять, постепенно следуя за ним, что же происходит с компьютерами в лаборатории… На следующий год, когда Джастин участвовал в точно такой же компьютерной университетской олимпиаде, главный администратор университета сразу подошел к Джастину и, сурово глядя прямо в глаза, зло процедил: «Джастин, можешь заниматься сегодня за компьютером чем угодно, только не заваливай систему». Джастин вспоминает с улыбкой, что эту просьбу, словно далекое эхо, он слышит до сих пор сквозь все эти годы…

Заваливание системы

Журнал Rolling Stones назвал вас самым опасным гиком в мире, журнал Times выдал интервью с вами под заголовком «Человек, который обворовал весь мир», и т. д. Итак, переходим ко второй известной вашей разработке — первой в мире децентрализованной пиринговой сети Gnutella. Судя по заголовкам мировых изданий того времени, музыкальный бизнес был единогласно уверен, что вы в очередной раз «завалили систему».Что вы сами думаете об этом? Рассказать о пиринге и Gnutella? Только факты? Ну, во-первых, Nu tella — это моя любимая ореховая паста, во-вторых, я люблю открытое ПО, как это делает фонд GNU, в-третьих, я люблю и достаточно серьезно занимаюсь музыкой, в-четвертых, я программирую в среднем по восемь часов в день. И вас удивляет, что в результате пересечения всего этого в рамках одного человека случаются вещи типа Gnutella? Но несмотря на всю мою страсть к ореховой пасте, система на этот раз устояла. (Смеется.) А если серьезно, то все эти заголовки, мягко говоря, преувеличение, и с позиции прошедшего времени это видно особенно ясно. Я просто программист, который решал очень интересную для него техническую задачу, и не нужно даже пытаться вкладывать в это нечто большее, пожалуйста. Еще вопрос про Gnutella. Очень часто спрашивают, почему вы сами вышли из этой большой игры, в связи с чем вас сравнивают с Шоном Паркером, который недавно стал широко известен благодаря фильму «Социальная сеть» режиссера Дэвида Финчера. В самом деле Шон создал Napster, заработав на этом большие деньги. После закрытия его популярной пиринговой сети по решению суда вы тут же создали подобную, но, что принципиально важно, уже децентрализованную сеть Gnutella. По данным 2007 года, Gnutella являлась самой по пулярной пиринговой сетью в мире, она использовалась тогда на 40,5 % компьютеров, подключенных к p2p-сетям. И в момент самого пика успеха вы добровольно выходите из игры, полностью отказавшись от дальнейшей разработки и координации проекта. Почему? Ну, знаете ли, Шон на Napster не заработал ничего, кроме головной боли, миллионы к нему реально пришли, лишь когда он стал президентом Facebook. Да, проект Napster сделал его известным человеком, но не богатым. Что касается меня и Gnutella… Технология уже была на том уровне развития, когда она прекрасно развивалась и без моего участия. Меня интересовала лишь сама концепция децентрализованного пиринга и ничего более. Можете сравнить меня с основателем Биткоин, если хотите (смеется). Поймите меня правильно: меня интересовала техническая сторона проекта — и она вне всяких сомнений состоялась, и я ничего нико

му не собирался доказывать ни в юридической, ни в политической плоскости этого вопроса, как я уже говорил в ответе на предыдущий вопрос. Я не задумывал p2p императивно как средство нарушения копирайта, для меня это был просто технический концепт, и, получив свою дозу веселья и впечатлений от программирования этой необычной задачи, я ушел, просто чтобы заняться чем-то следующим в своей жизни, не менее интересным и важным для меня. Раз уж вы заговорили о копирайте… Я видел старые плакаты с рекламой еще, по-моему, WinAmp версии 2.0, где вы битой, на которой выгравировано слово WinAmp, крушите буквально в щепки груды компакт-дисков вокруг вас. Я думаю, в нашем интервью настал хороший момент, чтобы немного поговорить о копирайте: что это такое, как вы его видите в современном цифровом мире? Созда ют ли новые технологии и взгляды, например, в вашем случае mp3 и WinAmp проблемы для существования старых технологий и правовых норм? Проблема не в бите в руках молодых людей. Конечно, первоначальная проблема в том, что все старое всегда отчаянно сопротивляется приходу нового, просто потому, что это вопрос его выживания, но не потому, что оно лучше. Это касается не только программирования и технологий, посмотрите телевизор — это противостояние поколений буквально повсюду. Я думаю, что копирайт в США сейчас — это больше некая вербальная концепция, которая хорошо приспособлена и отработана касательно патентов и торговых марок. Новое направление DMCA, пытающееся регулировать что-то там в цифровом мире, очень далеко от идеала. Реально же усиление копирайта перед наступающим пиратством в области цифровых продуктов очень проблематично. Скорее всего, это будет приводить к каким-то компромиссам, что в итоге будет размывать этот самый копирайт еще больше. Самая главная ошибка, которую я сейчас вижу в этой области, — попытка контролировать защищенный контент настолько жестко, что это уже создает ощутимые трудности законным владельцам и покупателям цифровой продукции, тогда как, с другой стороны, ни капли не сдерживает пиратов (например, технология DRM, от которой нет почти никакого толка в этом плане, а лишь проблемы для легальных пользователей).* * * Не каждый разработчик программ может позволить себе купить дом на 800 квадратных метров, построенный в 1900 году и выполненный в викторианском стиле, в котором четыре отдельные спальни, бассейн внутри, два гаража, мастерская, общей стоимостью около 3 миллионов долларов. Не у каждого американского миллионера задний двор заставлен старыми, собственноручно восстановленными машинами, а в домашней мастерской полным-полно самых чудаковатых электронных (и не только) музыкальных инструментов. Сегодня наш разговор с одним из подобных редких, очень редких гиков.

Альфа-гик

Джастин, у всех есть свои увлечения и какие-то слабости. Я же смотрю, что вы серьезно увлекаетесь ремонтом и восстановлением автомобилей, также восстанавливаете старые музыкальные инструменты и даже создаете свои. Кроме того, вы серьезно занимаетесь музыкой и программированием, но из всех ваших многочисленных увлечений лично меня удивляет ваша давняя страсть к изготовлению глиняных горшков. Зачем они нужны вам? Не у каждого миллионера столь странные увлечения… Я не согласен с вами, что ручная керамика и изготовление посуды из глины — это странное хобби. Я начал заниматься этим еще тинейджером, когда учился в старших классах школы, с тех пор я многому научился в этой профессии. С одной стороны, на выходе я получаю экологически чистую посуду для собственных нужд, с другой — это, поверьте, очень хороший способ расслабления и активного отдыха, который требует сфокусированности на процессе и самоконтроля, при этом, будучи почти спортивным по своей увлекательности, он не изматывает физически так, как это делают более традиционные виды спорта. И да, мне очень нравится также разбираться в сломанных машинах, я люблю самостоятельно постигать устройство механизмов, у меня

за спиной несколько восстановленных почти с нуля машин. Обычно я на этом не останавливаюсь, я стараюсь что-то усовершенствовать в процессе восстановления механизма, найти возможность сделать его еще лучше, чем было изначально. Если я и трачу время на очередной ремонт, то это должно быть актом творчества. К тому же этот вид обратной разработки механики куда более нагляден, чем в программировании, он доставляет мне множество положительных впечатлений и успокаивает. В связи с этим: ваша любовь к игре на волынке долгими вечерами, в перерывах между изготовлением горшков и восстановлением старых машин, тоже, небось, неплохо успокаивает? Без сомнения, так и есть. Как догадались? (Смеется.) Извините, вопрос немного не по теме. Имел возможность немного пожить в Америке, в штате Иллинойс, общее наблюдение — с одной стороны, люди в основной массе много работают и ужасно устают, с другой стороны — тотальная страсть расслабляться... И ваши способы еще не самые деструктивные из всех. Нельзя говорить сразу обо всех, но я думаю, что в приближении картина близка к правдивой для всей Америки. Мой рецепт от перегрузок и стрессов очень прост и естественен — это творчество. Проблема не в том, что мы работаем много, проблема в том, что наша работа подчас кажется нам бессмысленной и ненужной, именно это убивает быстрее всего. Я просто хочу сказать, что у вас очень насыщенная жизнь, Джастин, вам это не грозит. Ладно, а что за деревянные коробки с мониторами вы собираете в своем гараже? Это Jesusonic — инструмент для создания эффект-процессинга в режиме реального времени, например очень интересно звучащий для гитары. Я постоянно экспериментирую со звуком, это отличная платформа для таких экспериментов. У обычных людей есть четкая грань между хобби и работой. У вас я не чувствую этой границы. Не так ли? Я уже говорил ранее, что я работал на босса единственный раз в жизни, когда меня пригласили в AOL, и вы прекрасно знаете, с каким треском в итоге меня оттуда выгнали. Поэтому да, все мои хобби являются моей работой — я счастливый человек. Кстати, об AOL и вашей работе там. Ваша разработка сети Gnutella была также творческим экспериментом, как вы рассказывали раньше. Одно мне непонятно: когда вы выкладывали на серверах AOL фактически собственный личный продукт потенциально пиратского назначения, я думаю, вы прекрасно понимали возможную реакцию вашего руководства. Какие мотивы вами двигали тогда? Вы специально хотели конфликта? Поверьте, в те годы я не думал ни о каких потенциальных проблемах. В этом нет ни смелости, ни наглости, ни какого-то геройства, кроме молодости. Я просто хотел реализовать тогда что-то технологически новое, опробовать на деле принципиально новые алгоритмы по распространению файлов, и был полностью увлечен лишь одним этим желанием. Большой бизнес живет совсем другими категориями, я думаю, вы понимаете, о чем я. Да мы вообще много чего там1 успели сделать, пока нас не выставили вон. (Смеется.) НЕОБХОДИМОЕ ПОЯСНЕНИЕ ОТ АВТОРА ИНТЕРВЬЮ Несмотря на утверждение русской страницы Википедии о том, что «Создание сети Gnutella инициировала компания America Online, использовав для этой цели программистов из подразделения Nullsoft» (цитата по состоянию на 2012 год), это неправда. На самом деле Джастин Франкель и Том Пеппер самовольно развивали и выкладывали код Gnutella, а также тестировали его на серверах компании AOL и без ведома самой корпорации. Последующее объединение AOL с Time Warner привело к тому, что с Gnutella стали уже активно бороться новые хозяева, выжигая ее каленым железом с серверов AOL и запрещая работу над ней в рамках новой компании (официально AOL назвала проект Gnutella «unauthorized freelance project» и открестилась от него), после чего оттуда и уволились разработчики Gnutella во главе с Джастином Франкелем.

Вы говорите, что вы более музыкант, нежели программист. Как вы видите будущее музыки? Выживут ли традиционные инструменты в будущем? Какие тренды в развитии музыки отмечаете лично вы? 1 В AOL.

Традиционные музыкальные инструменты прекрасны, и я думаю, что они никуда не исчезнут в будущем. Я уверен в этом! Удивительно это слышать от прожженного электронщика, мастерская которого буквально завалена электронными инструментами… Не совсем так. Позвольте привести пример из своей жизни. Как-то я купил на электронной распродаже на Craigslist пианино очень известной марки, которое было изготовлено в 1947 году. После его полной реконструкции своими силами, когда я буквально перебрал в нем практически все заново, восстановив все почти с нуля, я пригласил своего друга, профессионального пианиста, чтобы он опробовал инструмент в деле. В тот вечер я услышал божественный звук, бог мой, по моим щекам катились слезы восхищения, потому что это настоящая музыка, которая будет трогать душу и восхищать вечно. Поймите меня правильно, я не против поиска нового в нашей жизни, равно как и в искусстве тоже, но есть вещи, заменить которые ничем другим просто невозможно. Потому что они уникальны. Напоследок хочу задать вопрос на тему общечеловеческих ценностей. У каждого человека, наверное, есть что-то главное в жизни — некая доминирующая идея, ради чего он живет и преодолевает все эти многочисленные неприятности и сложности в своей жизни, ради чего находит в себе силы двигаться вперед каждый божий день. А что вы можете сказать о своей ведущей цели в жизни? Мне очень нравится Курт Воннегут, позвольте я просто процитирую его: «Быть по-настоящему человечным, это значит вести себя в любом случае достойно, при этом не ожидая за это никаких благодарностей и не боясь наказаний на том свете». Я не совсем уверен, что в точности во всем человечен как гуманист, по крайней мере, для меня эти взгляды в моей жизни значат много. И знаю, это так банально звучит, но я считаю, что самый большой вызов в нашем мире — оставаться самим собой в любой ситуации, следуя своим идеалам и принципам до конца.Горькое послесловие Интересно проследить, как сложилась судьба культового аудиоплеера WinAmp после того, как он перешел из рук влюбленного в него создателя в руки эффективных менеджеров крупной частной корпорации AOL. Если рассказывать эту историю кратко, все закончилось печально. После 15 лет существования проекта компания AOL закрыла его и распустила всю команду, которая занималась разработкой проигрывателя WinAmp. Участь самого Франкеля постигла и всех его последователей. Впрочем, в последний момент AOL смогла спасти хоть что-то — в итоге культовый медиаплеер WinAmp был продан небольшой компании Radionomy Group, владеющей международным агрегатором интернет-радиостанций. Radionomy — это свободная платформа, которая может быть использована для создания и прослушивания радиостанций через Интернет. Так завершилась славная история программы WinAmp, в итоге ставшей клиентом небольшого бельгийского интернет-проекта, который использует былую популярность программы как дешевый способ продвижения и популяризации своего встроенного сервиса. В собственность Radionomy помимо Winamp перешел не менее популярный каталог радиостанций SHOUTcast.

ГЛАВА 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). Сужаю и персонализирую первоначальный вопрос: какие технологии сегодня поражают тебя и какие языки программирования будут рулить на массовом рынке в ближайшие пять лет? Если можно, сделай прогноз, что сейчас наиболее перспективно и востребовано на кухне топ-разработчиков. Я люблю функциональные языки программирования, и мне радостно видеть, что они постепенно приобретают все больший вес в области обработки данных. Но это не означает, что мейнстримовые языки куда-то исчезнут и на их место придут другие. Знаете, почему и через десять лет мы будем писать на С++, а не на каком-нибудь другом языке? Потому что современные компиляторы С++ оптимизируют так, что просто диву даешься. Например, посмотрите1: я попытался обмануть компилятор так, чтобы он не оптимизировал пробрасывание временного значения в функцию bar. Что из этого вышло — сами видите. Возможно, Go и Dart удастся немного потеснить Python и JavaScript, но не более того. Предвидеть же, какие технические направления будут горячими через пять лет, я не берусь. Впрочем, всем карьеристам еще не поздно вскочить на поезд Artificial Intelligence и Machine Learning, они вряд ли скоро пропадут с горизонта. Действительно, ничего революционного в твоем списке языков и технологий нет. Тем не менее знакомые девелоперы часто брюзжат слюной, что технологии создания программных продуктов не прогрессируют с 60-х. В чем суть этого скепсиса? Давайте лучше поговорим о философии программирования, которая тоже не меняется с середины прошлого века, — это будет более общим случаем предложенной темы. Итак, программированием правит утилитаризм. «Premature optimization is a root of all evil» — говорит нам старина Кнут, и мы вспоминаем

1 http://bit.ly/1fsb7sU

о производительности только тогда, когда уже поздно. Пятидесятикратное падение производительности? Да пофиг, будем писать на 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. Это лучшее из того, что я знаю. Не мешает ли такая напряженная офисная работа твоим активным путешествиям? Мне кажется, что суперкомфортный Google — это прямая антитеза твоим дауншифтерским трипам по захолустьям цивилизации. Как ты совмещаешь эти две разные концепции?

1 http://www.coursera.org/course/algs4partI

Да, такая работа мешает путешествиям в далекие края. Но Калифорния знаменита тем, что многие интересные места находятся совсем недалеко. Я стараюсь выходные проводить вне города, и за уикенд можно забраться в горы (огромная горная система Кордильер), побродить меж озер в Йосемити, добраться до Долины смерти, доехать/ долететь до Большого каньона. Зимой доступны прекрасные лыжные курорты, круглый год можно заниматься серфингом, виндсерфингом, кайтсерфингом, ходить на парусных яхтах. А горновелосипедные маршруты такие классные, что я уже чуть себе все не переломал. (Смеется.) Знаю, теперь ты путешествуешь в «корпоративном подпространстве» по разным офисам Google. Каково оно? К сожалению, я был только в некоторых из них. Впечатляет, конечно, головной офис в Маунтин-Вью, который уже давно превратился в маленький городок, а также офис на Манхэттене, в котором легко заблудиться, а чтобы быстрее передвигаться по этажам, активно используют самокаты. В целом же путешествий, конечно, не хватает. Но, как известно, на другом берегу трава всегда зеленее. Когда путешествуешь, начинаешь мечтать о спокойных посиделках с друзьями, часами зависаешь в видеозвонках. Но стоит провести вне путешествий какое-то время, как снова тянет в горы, в новые страны. И так один этап неизбежно сменяет другой, это естественно. Сейчас у меня фаза жизни с меньшим количеством путешествий и большим вниманием к работе и инженерии. Кстати, насколько в Google гибкий распорядок дня? На собеседовании мне рассказывали истории, что якобы некоторые гуглеры не только работают на эту компанию нон-стоп (это произносится с оттенком гордости от выпавшей им великой чести), но и буквально спят в офисе, настолько он похож на самодостаточную экосистему, идеальную для застревания в ней любого холостого программера-гика, неравнодушного к своей профессии. График работы очень гибкий. Но в Google ведь бесплатные завтраки, обеды и ужины, и вот они ограничены по времени. Хочешь попасть на завтрак — приходи до 9:30. Опоздал — можешь позавтракать овсянкой или хлопьями на микрокухнях. Такой распорядок очень мягко загоняет всех сов в офис пораньше. Плюс не стоит забывать о «митингах». Ты можешь участвовать в них откуда угодно, но удобней всего это делать из офиса, поэтому если у тебя раннее совещание с командой из Европы (из-за разницы во времени), то ты вынужденно приходишь пораньше. Да, переночевать в офисе можно, ведь на территории легко отыскать душ и даже есть «тихие комнаты». Есть и прачечные, где можно постирать одежду, да и все офисы открыты круглосуточно. Но эта возможность нужна скорее на всякий случай. Из моих личных знакомых никто ею не пользовался, а у меня в офисе Google ночевал только велосипед. Тем не менее в чем секрет твоей производительности? Где находить силы, чтобы столько читать, работать в полную силу, да и путешествовать, фотографируя все кругом? Может, это результат какогото хитрого мировоззрения или страсти к переменам? О, есть очень простая техника. Нужно записаться на курсы китайской каллиграфии, бальные танцы, уроки испанского и гитары, пообещать всем на работе закончить важный проект раньше срока, договориться с друзьями пойти в поход на все выходные. В общем забить всю неделю так, чтобы ничего не успевать. Продержаться семь дней, а потом убрать бальные танцы и испанский. Это освобождает кучу свободного времени, и ты легко успеваешь и на уроки гитары, и в поход. Это работает как в обычной жизни, так и в путешествиях и спорте. А дальше уже тянет сформированная сила привычки. Продолжая тему, расскажу, что ты заядлый любитель чтения. Бытует мнение, что книга — уходящее явление, ведь многое в мире ныне можно увидеть своими собственными глазами — путешествия и опыт дальних стран доступны многим лично, а на все известные книги сняты фильмы и т. д. Почему ты выбираешь именно книги? Зачем тратишь на них столько времени? Книги — это, возможно, самые главные учителя в моей жизни. Если бы не приключенческие рассказы Верна, Лондона да Сабатини, я и не путешествовал бы столько. Книги же подарили мне основные принципы, которым я стараюсь следовать.

Также я не считаю, что книги, фильмы и путешествия взаимовытесняющие. Они существуют в разных плоскостях. Крайне редко книга и фильм по книге достаточно хороши, чтобы достойно бороться за умы и сердца (например, в первом приближении я только «Бойцовский клуб» и «Властелина колец» могу вспомнить из подобных). Путешествия же вообще дают совершенно особенный опыт, который ни с чем не совместим. На твой айтишный вкус лучше все-таки бумажные или электронные книги? Электронные. С чистым сердцем могу рекомендовать 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: ? Paul Graham’s Essays (paulgraham.com/articles.html). ? HackerNews (news.ycombinator.com). ? ЖЖ Анатолия Воробья (avva.lj.ru — здесь темы как технические, так и общие, очень хороший блог). Отдельно хотелось бы упомянуть ленты комиксов: ? xkcd.com. ? abstrusegoose.com. ? www.smbc-comics.com. О’кей, если с творчеством все более-менее понятно, то какую роль в твоей жизни играет спорт? Это нечто большее, чем просто попытка быть в форме и сохранить здоровье? Есть околоспортивные вещи: сноуборд, байкинг, серфинг, скалолазание. Это просто развлечения, мне это нравится. Мне нравится нестись на борде вниз по склону или пытаться удержать руль велосипеда на горном трейле, я получаю удовольствие, забравшись на стенку по маршруту, который до этого пройти не мог.

Есть и чисто спортивные занятия: бег, тренажерка. Позволяют держать себя в форме и дают возможность заниматься тем, что я люблю. Например, ходить в горы. А еще спорт вызывает почти наркотическую зависимость, и занятия делают вас немного счастливее. И напоследок — каковы для тебя главные плюсы и минусы от работы в Google, если выразить их одной строкой? Нравится четкий, отлаженный процесс разработки, который создавался инженерами для инженеров. Не нравится масштабность корпорации — в такой большой компании очень трудно заметить собственный вклад, что в итоге может привести к потере искренней мотивации.

Timelapse-видео в качестве бонуса Сергей Кищенко, прямая речь: Перед тем как уехать в очередную кругосветку, я настроил хук в Mercurial, который делал автоматический снимок веб-камерой на каждый мой коммит в репозиторий. После полугода путешествий вы можете наблюдать результат в виде видео1. Как видите, ответ на вопрос «откуда я беру деньги и время на путешествия?» довольно прост — я работаю прямо в дороге, в любом состоянии и в любое время.

1 https://www.youtube.com/watch?v=5F0ZWzD7HWk

ГЛАВА 7. Терри Дэвис — Господь сказал: иди и программируй

Терри Дэвис — американский программист, сторонник методики рекреационного программирования. Автор ОС The Temple Operating System (by Trivial Solutions). Верит в Бога, но не верит в человечество. Интервью взято в 2014 году.

Сегодня у нас интервью с Терри Дэвисом, противоречивой звездой западного технического Интернета, человеком, который больше десяти лет в одиночку пишет свою собственную ОС, в свободное от этой работы время общаясь с Богом. Давайте будем честны: не каждому из нас повезло с менеджером проекта, но Терри уверяет, что ему точно повезло. Бог, в отличие от манагеров, — он всегда вежливый, терпеливый, и к тому же знает все о правильной архитектуре ОС, поэтому задача Терри была довольно легкой — просто следовать представленным сверху спецификациям. Далее о TempleOS, о жизни и рекреационном программировании, а также о противостоящем прогрессу ЦРУ и коварных «ниггерах».

Власть абстрактного Программист работает с абстракциями. Ему приходится держать в голове гораздо больше абстракций, чем любому другому «нормальному» человеку. Абстрагирование сопутствует программисту на всех уровнях разработки — от описания целей до создания исполняемого машинного кода. А таких уровней могут быть десятки, а то и сотни. Это чудовищные по сложности замки из кирпичиков инкапсулированной логики, построенные на зыбком песке собственного сознания.

Вместе с тем известно, что у значительной части больных шизофренией нарушения мышления слабо выражены или клинически никак не определяются. Именно таким «нетоксичным» больным свойственен чрезвычайно высокий уровень абстрактного мышления, где проявляются его истинные величие и мощь. Данные особенности позволяют больным порой добиваться выдающихся результатов в различных областях профессиональной деятельности, где абстрагирование играет ключевую роль. Весомая доля непреходящих общечеловеческих ценностей создана больными шизофренией. Среди них можно назвать Ньютона, Ницше, Гоголя, Ван Гога... Подобные абстрагисты склонны к масштабным проектам и громким стартапам, слышанию голосов, к невероятной производительности и целеустремленности. Согласно клинике протекания шизофрении, возможен некий компромисс больного с обществом — это уход в самозаточение посредством реализации некоего magnum opus. Такому варианту проявлений свойственны мирская аскеза, патологическая безработность (синонимы с поправкой на местные особенности — тунеядство, социальный паразитизм) и фонтанирование чистыми абстрактными концепциями, где идея Бога, как правило, занимает центральное место.

Куда приводит программирование Терри Дэвис — бывший профессиональный разработчик ОС. В частности, он работал над VAX operating system, а также частично над C64 (документировал работу этой ОС с памятью). Терри приобрел весьма специфическую известность в западной технической части Интернета — его личные аккаунты забанены на всех ведущих айтишных ресурсах типа OsNews, Reddit, Hackernews и т. п., где он пытался активно проповедовать свои идеи. Многие утверждают, что Терри болен шизофренией (он сам подтверждает это). Как минимум, лежал в соответствующих заведениях на лечении. По словам самого программиста, однажды он стал слышать Бога и, как результат, начал писать собственную ОС по спецификациям, предоставленным Всевышним. К удивлению многих, за более чем десять лет работы он единолично создал полностью  работоспособную версию ОС, которую назвал TempleOS. Ее ключевая утилита — Оракул — позволяет вести чат с Богом любому человеку. В целом это очень необычная система для любых PCсовместимых компьютеров с открытым исходным кодом, образ с которой можно свободно скачать с TempleOS.org (альтернатива — github.com/muflax/templeos).

Кросс-компиляция пограничных смыслов В процессе написания интервью мне пришлось невольно написать что-то вроде виртуальной машины, которая бы динамически реинтепретировала символы и смыслы специфического внутреннего мира Терри в стандартные символьные коды обычного человека с «общесовместимым» для большинства мировоззрением (как правило, герметично «прошитым» ему обществом еще в раннем детстве). Поэтому далее — минимальное пояснение авторской терминологии для лучшего понимания дальнейшего интервью. ? «Ниггер» (nigger) — стандартное обращение Терри к оппонентам. Поэтому если Дэвис назвал вас так, то, скорее всего, он имеет в виду не цвет вашей кожи, а недоволен вашей критикой его ОС (или просто считает вас «плохим человеком»). Исходя из его сленга, все «ниггеры» работают (программируют) за деньги, поэтому их «экспертное мнение» о достоинствах или недостатках его ОС не может быть объективным и беспристрастным в принципе. Следовательно, отвергается автоматически. ? ЦРУ (CIA) — по уже устоявшейся теории Терри будущему успеху TempleOS сегодня угрожает механизм безопасной загрузки UEFI. По его мнению, за этим стоит Сатана, персонифицированный на земле в лице ЦРУ. Поэтому ЦРУ в его оборотах речи чаще всего — это метафизическая сущность, которая яростно противостоит единственной верной методологии программирования — рекреационному программированию. Складывая все воедино, повестка дня такова: «ниггеры» из ЦРУ, используя влияние больших денег и подкуп, хотят уничтожить уникальную кодовую базу TempleOS. Потому-то Терри и призывает всех

немедленно скачать TempleOS на локальный диск и далее свободно распространять ее по миру, как поступал с учением сам Иисус. Это сделает невозможным замалчивание правды, а рекреационное программирование в итоге станет доминирующим в мире. Впрочем, несмотря на все сопротивление, спасительная TemplesOS уже готова. С ее помощью как непрограммисты, так и самые опустившиеся «ниггеры» могут общаться с Богом напрямик, что положит конец нынешней гегемонии ЦРУ.

Пророк рекреационного программирования

Кто вы и в чем смысл TempleOS? Меня зовут Терри Дэвис. Я избран Богом для создания его храма — новой операционной системы. Поэтому я оставил работу и посвятил себя разработке новой ОС, которая практически готова. На данный момент я имею 64-битовое ядро и компилятор. Кроме того, есть множество встроенных инструментов, которые должны со временем сформировать законченную пользовательскую часть системы (userland). Что бы все это ни значило, вы написали чертовски много кода с нуля. Также можно уверенно констатировать, что ваша ОС — рабочая. Как давно вы занимаетесь этим проектом? Около десяти лет в режиме нон-стоп. Вся команда разработки — это я один и мой божественный компаньон. Насколько реально в одиночку написать ОС? Это очень тяжелая работа. Я работал над TempleOS каждый день без выходных в среднем по десять часов в сутки. Нужно просто верить и молиться, и помощь придет. Что у вас с разрешением, почему нет поддержки HD? Система поддерживает единственное разрешение 640?480 в цветности до 16 цветов. Бог сказал, что это оптимальное разрешение для работы, а я стремлюсь избегать ненужных излишеств. Вы можете убедиться, что все утилиты и задачи вполне нормально работают и в таком разрешении. Я понимаю скепсис «ниггеров», но вся эта гонка за разрешением — просто вредная привычка, от которой проще избавиться, чем потакать. Давайте посмотрим на ваши утилиты. Вот, к примеру, «тулза» для генерирования гимнов Богу. С одной стороны, это интересный бредогенератор, то есть генератор с развитой лексикой текста по заданным ключевым словам, с другой — что-то вроде караоке, который позволяет разработчикам славить Господа днем и ночью. Под свое настроение вы выбираете ключевые слова, после чего можно петь автоматически генерируемый текст. Система сама распознает коннотации текста, вставляя смайлики для обозначения соответствующих эмоций. Не думал, что доживу до того времени, когда в современных ОС появятся такие фичи. А еще у вас есть утилита AfterEgypt Oracle с весьма интригующим описанием... Это возможность прямого общения с Богом, ее работа базируется на продвинутом генераторе случайных чисел. В основе лежит концепция того, что случайностей не существует, все во власти Провидения. Таким образом, через утилиту можно получить ответ на любой вопрос или определение любого явления и термина. Кратко о воззрениях Бога можно прочитать на моей странице1, где я привожу некоторые свои диалоги с Ним. Почитав немного кода, я понял, что продвинутый генератор случайных чисел — один из ключевых компонентов вашей ОС. Для чего все это делается, куда вы держите путь? Проект — это демонстрация рекреационного программирования в действии. Я надеюсь, что он не только приблизит людей к Богу, но и даст им определенную базу знаний в области основ программирования ОС.

1 http://www.templeos.org/Wb/Adam/God/HSNotes.html

Почему просто не взять Linux и не «перехачить» его под себя? Современная ОС Linux поддерживает очень много архитектур и является чрезвычайно сложной. TempleOS сделана предельно просто. Тем не менее в ней очень много интересных идей и практических демонстраций концепций программирования. Еще раз: это система без особых претензий, она больше подходит для хобби и изучения рекреационного программирования. На всякий случай — что такое рекреационное программирование? Вдруг кто-то из наших читателей до сих пор не знает, что это такое. Таким образом я хочу подчеркнуть, что этот проект не имеет никакой практической или коммерческой направленности, а создается исключительно для демонстрации личных идеалов. Кто-то может разделять их, я не против. Для всех остальных, вероятней всего, это не будет иметь никакого практического смысла и значения. Например, есть люди, которые серьезно занимаются сельским хозяйством. Они выращивают продукты для продажи, для них это всего лишь бизнес. Но если за этим не будет коммерческой модели, генерирующей cashflow, их сад опустеет и будет заброшен. Они могут называть себя прирожденными садовниками и профессионалами своего дела, тогда мое утверждение будет тем более грустной для них правдой. В моем случае это работа на себя ради возвышенных целей и идеалов, за которой нет меркантильных интересов и расчета личной выгоды. Это и есть рекреационное программирование — программирование для развития. Можно назвать это просто хобби для души. И этот сад никогда не опустеет. Как можно жить при такой модели в реальном мире? Я живу на пожертвования и спонсорство. Деньги для меня — не главное. Многие программисты, которых я знаю, ленивы и тяжелы на подъем. Если у них еще и зарплаты отнять... В чем секрет вашей продуктивности и целеустремленности?У «ниггеров» нет идеала, ради которого стоит мечтать и преодолевать, чтобы идти вперед. Жизнь «ниггера» скучна и бессмысленна, в этом социальном контракте нет места вдохновению. Поэтому отрешитесь от суеты, вложите свою веру в нечто высокое и масштабное, подобное Богу, и это сделает вас непобедимым в стремлении к мечте и свету. Что бы вы могли посоветовать любому простому «ниггеру» типа меня? Как стать хотя бы чуточку лучше? Первый шаг — начать использовать конструкцию elseif вместо switch case. В заключение, возможно, неприятный вопрос. Читая историю разработки TempleOS, я поражаюсь, как много людей ненавидят вас и вашу ОС. Что бы вы сказали им? Возможно, что-то (или кто-то) угрожает вашему уникальному проекту? Всем «ниггерам», которые читают меня сейчас, я хочу сказать одно: дело мое правое, и меня не остановить. Что касается угроз, самая большая опасность для TempleOS — это новая технология загрузки UEFI. ЦРУ, безусловно, хочет смерти проекта, но мы будем бороться до конца. Вообще искусственно создаваемые проблемы с совместимостью, которые нарастают в последние годы, меня расстраивают. Это удар ниже пояса, противоречащий морали. Делается все, чтобы старый добрый код 90-х перестал работать в ближайшем будущем, и это будет началом конца человечества.

Для «ниггеров» или нет Один китайский трактат с труднопроизносимым для меня названием занудно объясняет, что всякому желающему преуспеть никогда не следует заниматься бизнесом на том, что любишь. Никогда! К примеру, любишь антиквариат — не торгуй антиквариатом. Обожаешь автомобили — не торгуй автомобилями. В состоянии аффекта сначала купишь не то и не по той цене, потом товар будет трудно скинуть. А если отчасти деньги и отобьешь, так совесть замучает — такую цацку, и за копейки... Эх! Еще пример из трактата — не любишь лю

дей, иди спокойно заниматься политикой, хотя бы денег заработаешь, и никаких душевных мук взамен. Короче, трактат призывает, что зарабатывать на жизнь надо только тем, к чему полностью равнодушен. Именно этот бизнес станет самым доходным в твоей жизни. Вопрос в том, что же делать с тем, что любишь? Например, талантливому молодому программисту, который получает реальный кайф от своей работы и готов фигачить код в измененном от восторга состоянии ночи напролет? И тут теория рекреационного программирования Терри Дэвиса оказывается очень к месту. Китайская теория в этом случае дает такой ответ — зарабатывать с таким отношением к делу нельзя, таких увлеченных можно только спонсировать. Иначе неизбежное противоречие между местечковой выгодой и невыносимым желанием постигать все новые земли в конечном счете погубит специалиста. Прокрастинация и подспудное желание пораньше свалить с работы — первые симптомы запущенного офисным грибком равнодушия процесса саморазрушения специалиста. Хуже, когда такой человек-зомби ждет выходных или отпуска, начиная откровенно филонить, или если нависающий над ним манагер отвернулся на минуту покурить. В результате такой неприметной для отдела кадров внутренней мутации шаг за шагом работа превратится в бизнес, а выбор работы станет предметом выгоды и торга. Вся боль от этого ломающего вдохновение процесса анестезируется обществом гибкими социализирующими фреймворками, продаваемыми под соусами «взросления», «успешности» и «надо же себе цену знать». Пример спонсорства: Абрамович любит футбол, поэтому его футболисты хорошо зарабатывают. Эти грациозные небритые мужчины живут исключительно за счет своего спонсора и получают кайф от абстрактного пинания мячика. Это пример истинной любви к своему делу. Намного больше рабочих на предприятиях Абрамовича — им можно предложить зарплату и приставить бдительного манагера, который сформулирует вполне конкретную задачу для их, в сущности, пустой и никчемной жизни. Задача первых — делиться вдохновением, чтобы побуждать. Задача вторых — работать, чтобы исполнять прихоти других. Так абстрактные планы меньшинства никак не пересекаются с прагматичной конкретикой большинства, утверждают китайцы. В заключение этого заковыристого китайского трактата постулируется неожиданный вывод — никогда не имей дела с теми, кто тебя не ценит и не любит (без исключений и компромиссов). Иначе сам не заметишь, как станешь безликой шестеренкой чужого бизнеса.

Приложение: несколько технических фактов о TempleOS На данный момент исходники этой ОС составляют более 150 000 строчек кода (включая собственный компилятор). Система использует собственный компилятор Holy-C («ниггеры» произносят этот язык, намеренно коверкая как «холи щит») — это диалект языков семейства C/C++. Это изначально 64-битная система и по своей архитектуре во многом воспроизводящая Commodore 64. Вся TempleOS полностью размещается в кольце ring-0 и использует Single-Address-Mapping. Для взаимодействия (интерпроцессинга) с другими программами и процессами требуется прямая перезапись содержимого участков памяти этих самых программ. Дешево и сердито — кредо всей ОС. Никаких драйверов нет и не нужно — все обращение к железу можно осуществлять напрямую (если вы сможете, конечно). Все это напоминает Commodore 64, где все зиждется на честном слове и вашем глубоком понимании происходящего. Поддержки сети нет и не будет, равно как и USB, — по довольно витиеватым религиозным причинам (нет времени объяснять, но ЦРУ и уже знакомые нам «ниггеры» фигурируют в этой длинной истории). Есть множество встроенных игр разной степени тупости. У системы нет аналогов пейджинга страниц и файла подкачки, характерных для современных ОС, она загружает и держит в памяти все открытые и запущенные программы. Поэтому в readme.txt Бог

довольно цинично советует прикупить «как можно больше оперативки». В качестве файловой системы используется открытая FAT32 с дополнительной самописной поддержкой метафайлов в качестве расширения. Встроенный архиватор — все файлы физически хранятся на диске уже заархивированными и запароленными (нет времени объяснять почему). У системы есть своя самописная графическая оболочка (что-то типа X-ов в *nix), а также параллельный режим командой строки, где в качестве оболочки выступает прикрученный туда компилятор языка «холи щит» (как бы круто это ни звучало, но это всего лишь вольная вариация на тему шелла Ch). У ОС за все время ее существования чуть больше 50 000 скачиваний (Терри переживает, что ЦРУ в том числе невозбранно скачивает его ОС для изучения, но пока ничего не может поделать с этим коварством). Система поставляется с полным открытым исходным кодом в виде public domain и написана на собственном диалекте С. Вы можете использовать ее и модифицировать как угодно на свой страх и риск (если, конечно, выучите «холи щит», то есть преодолеете барьер, воздвигнутый создателем ОС как раз против праздного любопытства разного рода «ниггеров» из ЦРУ). «Холи щит» в TempleOS сочетается с ассемблерными вставками и низкоуровневым программированием контролеров устройств. Видимо, именно это та причина, по которой Терри так ненавидит UEFI. Всем своим хэйтерам Терри советует смириться, по его данным, «существование этой системы было предсказано в Библии много веков тому назад».

Часть II  Страна советов:  о программистской  карьере

ГЛАВА 8. Вся правда  о собеседованиях в Google: за пределами NDA

В пятницу 9 июля 2007 года на многих калифорнийских автобанах появились рекламные щиты с довольно странным содержанием. На их большом полотне не было никаких опознавательных знаков или каких-то фирменных логотипов, все, что было размещено, — лишь загадочный текст: {Первое 10-значное простое число, найденное в последовательности разрядов e}.com. Непосвященные обыватели в недоумении проезжали мимо, ведь данное сообщение предназначалось лишь тем, кто способен его понять, — тем программистам, у которых развитое чувство любопытства удачно сочеталось с сообразительностью. Конечно, для решения этого ребуса проще всего составить программу, которая могла бы перебирать значения константы е и проверять все ее 10-значные значения на факт их соответствия простому числу. Найденное число, очевидно, было частью URL-адреса, полный адрес которого можно получить, просто добавив к нему суффикс доменной зоны .com. Попав на заветный сайт, умники натыкались на вторую зубодробительную задачу, где требовалось выявить скрытую закономерность в наборе якобы случайных цифр. И только если искомое число было найдено и требуемое действие совершено, счастливчик попадал на скрытую страницу со следующим сообщением на своем экране: Одна из вещей, которые мы усвоили, создавая Google: то, что ищешь, всегда легче найти, если оно само ищет тебя. Мы ищем лучших в мире инженеров. И вот ты здесь. Нетрудно догадаться, что к нам каждый день поступает множество резюме, и мы придумали этот нехитрый процесс нашего знакомства, чтобы улучшить отношение сигнал/шум. Подобные сюрреалистические послания от этого именитого работодателя посылаются в мир с завидным постоянством как на неприметных растяжках перед крупными мировыми учебными заведениями, в скрытой рекламе на телевидении, так до сих пор избирательно предлагаются по какому-то неведомому для обычных смертных алгоритму при входе в свой обычный почтовый ящик GMail.

* * * Как заявляет популярная ныне уже и на своей бывшей родине в России американская писательница Айн Рэнд: «Двумя абсолютными величинами и основой системы ценностей у любого обычного человека являются вовсе не смерть, государство или налоги, а именно его жизнь и работа». Раскрывая эту мысль — настоящая работа не только гармонично развивает личность, принося ей глубокое удовлетворение и общественную пользу, но и обеспечивает то качество жизни, которое позволяет поднимать планку своих устремлений на новый уровень. Неудивительно, что в связи с этими, в общем-то, очевидными установками многие отечественные специалисты хотели бы попробовать свои силы в крупнейших мировых ИT-компаниях, которые с лихвой как удовлетворяют самые смелые профессиональные амбиции, так и обеспечивают безусловно высокий материальный уровень жизни. В последние годы одна из крупнейших мировых компьютерных компаний Google демонстрирует рекордные в своей истории темпы найма. В среднем компания получает в год около миллиона анкет от соискателей, но несмотря на это, на момент написания этих строк в ней оставались открытыми около 900 свободных позиций, для которых шел активный поиск и подбор кандидатов по всему миру. Google привлекает практически всех: сисадминов, дизайнеров, тестеров и архитекторов ПО и баз данных и особенно — программистов (носители родных для компании языков C/C++/C# и Python здесь особенно в почете). Традиционно в этом потоке свежей крови весьма ощутимую долю новобранцев составляют выходцы из Восточной Европы и России, которые славятся своей советской математической школой и высоким качеством компьютерного образования, подтверждаемого неоднократными победами на международных профильных турнирах. Если вы когда-нибудь подумывали попробовать свои силы в Google, именно сейчас настал наиболее благоприятный для этого момент. Увеличивающийся наем, с одной стороны, и ухудшающаяся местная экономическо-политическая конъюнктура, с другой, — все это подталкивает попытать удачу в далекой и легендарной поисковой компании. На фоне практически полного отсутствия русскоязычных материалов на подобную тему я хочу в меру своих сил помочь сделать этот первый и психологически сложный шаг для карьеры в международной компании, для чего предлагаю подробное интервью о деталях прохождения подобного собеседования. Сразу подчеркиваю: я не имею никакого отношения к Google, и предоставляемая мною информация носит неофициальный и, возможно, отчасти субъективный характер. Я лишь делаю попытку последовательно описать весь цикл прохождения трудоустройства от начала до конца, учитывая корпоративную специфику именно Google. Кроме того, я постараюсь обобщить в художественной форме опыт прохождения аналогичных интервью сразу у нескольких сотен других кандидатов, чтобы представить максимально усредненную и достоверную картину этой процедуры. У меня нет связанных рук благодаря стандартным условиям неразглашения вопросов и задач (NDA), также я буду стремиться излишне не детализировать процедуру найма, но постараюсь выделить типичные закономерности и последовательности подобных собеседований, которые в плане обобщающей информации помогут вам правильно расставить акценты и приоритеты, скорректировать свои ожидания в сторону большей реальности. Настало время представить моего собеседника и главного консультанта в рамках этого большого разговора. Это Джон Эсмальд, который возглавляет небольшую тренинговую фирму на западе Калифорнии, специализирующуюся на предварительной подготовке ИT-специалистов для успешного прохождения интервью в известных мировых фирмах из Кремниевой долины. Я специально встретился с Джоном рядом со сверкающим на весеннем солнце кампусом Google, чтобы узнать побольше о специфике трудоустройства именно в Google. Он, бывший работник этой компании, прошедший самые разные уровни в ее управленческих структурах, непосредственно участвовал в найме рядовых сотрудников в двух разных офисах. На данный момент кроме своего основного места работы в собственном стартапе Джон является создателем продвинутого образовательного тренинга, который облегчает адаптацию программиста к специфическим требованиям найма этой известной поисковой компании, существенно повышая шансы на оффер у такого предварительно «оптимизированного» претендента. Кроме множества полезных советов и инсайдов главный лейтмотив нашего интервью сводится к тому, что работа в Google доступна практически любому программисту средней руки, более-менее хорошо владеющему разговорным английским. «Не так страшен черт, как его малюют» — вот главный вывод из нашего разговора. Если при этом вы молоды и уверены в себе, ваши шансы резко возрастают. Как достаточно прямолинейно резюмирует секрет успеха член совета директоров Google Эрик Шмидт: «Похоже, не столько знания отличают действительно успешных гуглеров от посредственных, сколько их настойчивость». * * * С чего начинается вся процедура найма в Google? Джон, давайте опишем исходную точку входа в компанию. Желая устроиться в Google, в подавляющем большинстве случаев вы будете первоначально иметь дело с ее рекрутерами — специальным сословием коммуникабельных людей, обученных находить и отбирать нужных для компании людей по всему миру и, как правило, попутно достаточно неплохо ориентирующихся в предметной технической области, для которой они привлекают народ. Они и проводят первичные интервью-собеседования, чтобы принять предварительное решение на ваш счет и произвести заочный отсев откровенно слабых кандидатов. Для инициации запуска этого процесса типичной является ситуация, когда вы на официальном сайте компании подбираете себе позицию (см. www.google.com/jobs), после чего отправляете на указанный там контактный адрес резюме со своим предложением и данными. В случае если вы достаточно убедительны и интересны, с вами связывается ответственный за эту должность рекрутер. В более редких случаях возможно обращение к вам такого рекрутера и по своей инициативе (как это было когда-то в моем случае), например, в ответ на заинтересовавшую его техническую статью в вашем блоге. Сразу настройтесь на то, что устройство на работу в крупную компанию США (это касается не только Google), как правило, растягивается на 3–8 месяцев — это абсолютно нормальная ситуация. Чтобы поставить точку в этом вводном пункте, стоит сразу подчеркнуть, что, конечно же, собеседования на всех фазах проходят только на английском языке, это тот формальный минимум, который потребуется вам для подобной процедуры. Возможно, у московского офиса Google и есть гипотетические исключения в пользу русского языка, но мне про это ничего не известно. Дальше — телефонная фаза? Совершенно верно. В случае положительного ответа рекрутера на ваше резюме вы договариваетесь с ним заранее о точной дате и времени первого телефонного интервью (Phone screening). Тщательно согласуйте общее время с учетом разницы во временных зонах. Здесь нужно четко понимать, что эти два-три (редко доходит до пяти) телефонных собеседования — только предварительная фаза, лишь начало длинного пути. Не нужно стесняться, если вам требуется время на подготовку, скажите об этом прямо и попросите пару недель на это, после того как тематика собеседования будет обозначена. Несмотря на то что вам пришлют письмо с заголовком типа Interview Preparation, где перечислят примерный разброс тем с перечнем полезных источниковресурсов, будет лучше, если при личном контакте вы попытаетесь уточнить, о чем конкретно пойдет речь в вашем случае. Как правило, с той стороны идут навстречу и детализируют предстоящую область обсуждения (содержимое шаблонного письма будет иметь очень широкий разброс по темам и пожеланиям, изучение которых чаще всего непосильная задача для большинства).Первое телефонное интервью в серии — первичное. На нем обычно интересуются самыми общими вещами — чего и сколько хотите, когда доступны для собеседований, уточняют послужной список и с чем работали, какие есть успехи и пристрастия в области технологий. Для примера приведу стандартную структуру телефонного интервью (следует после первичного): 1. Знакомство (5 минут). 2. Разогрев — заведомо простые теоретические вопросы, например, зачем нужны шаблоны в C++ (5 минут). 3. Написание кода — решение относительно простых задач (15 минут). 4. Написание кода — решение более сложной задачи, если простая задача была решена. В противном случае разбор и анализ задачи из пункта 3 (20 минут). 5. Ответы на встречные вопросы кандидата, согласования насчет следующего интервью (5 минут). В итоге мы получаем 35–50 минут — это стандартное по продолжительности для Google интервью. Возможно, если у рекрутера будут сомнения в собственных силах, он может привлечь к телефонному собеседованию отдельного технического специалиста, о чем заранее предупредит вас. Очень часто просят выполнить какую-нибудь типовую задачу и выслать на указанный e-mail либо решить ее в режиме реального времени, набирая текст вашей программы-решения прямо в Google Docs (рекрутер заранее готовит документ с набором задачек, сбрасывая вам ссылку в начале интервью и «расшаривая» доступ). Использовать поиск и вспомогательные IDE при этом, конечно, строго запрещено, ведущий интервью будет удаленно видеть, как вы набираете ваш код, и обсуждать его с вами в режиме реального времени. Несмотря на то что Skype запрещен в офисе Google и для голосовых звонков рекомендуется использовать gTalk, в реальности с вами могут связаться как через первое, так и через второе либо даже обычным звонком на контактный телефон (указанный в резюме).Можно сразу привести несколько примеров типичных вопросов для этой фазы интервью? Все вопросы на этом этапе, как правило, носят общий и стандартный характер, лично я никогда не вел каких-то долгих дискуссий или подробных обсуждений по каждому из задаваемых вопросов. Вот лишь некоторые примеры реальных телефонных вопросов на должность SWE: ? Чем процесс отличается от потока? ? Какие отличия у мутекса и семафоров? ? Чем hash table отличается от hash map? (вариант: чем hash table отличается от hashset?) ? Объясните на каком-нибудь примере из повседневной жизни, что такое полиморфизм. ? Как максимально эффективно реализовать рандомизацию массива? ? Приведите пример какой-то по-настоящему сложной задачи, которую вы решили, и прокомментируйте вслух все ваши рассуждения в ходе поиска ее решения. Как видно, здесь нет никаких закавык и тонкостей, лишь максимально широкий обзор самых общих моментов. Итак, сначала отсылаем резюме, в случае положительного отбора — серия телефонных интервью. И наконец, третий, и самый важный этап — очное собеседование. Да. Если вы прошли два предыдущих этапа, вас пригласят уже на настоящую серию из собеседований со специалистами Google (on-site interview), при этом предложат выбрать территориально удобный для вас офис. На выбор будут предложены места, для которых выполняется система условий: это наиболее близко для вас географически и там есть похожие по вашей специальности команды. В идеале — то представительство, где вы планируете работать. В моем случае трудоустройства я хотел проходить собеседование в Чикаго, потому что в тот момент работал там. Но они не захотели (там не было подходящих позиций), тогда мы сошлись на бостонском офисе Google, после чего мой рекрутер выполнил трансфер моего дела к своему коллеге из Бостона, который в свою очередь подключил к моему сопровождению местного координатора путешествий (travel coordinator). Google, как правило, оплачивает ваш перелет в место собеседования, проживание там, решает возможные визовые вопросы, а также предоставляет обратный билет — все эти вопросы детально обговариваются с координатором компании заранее. Он свяжется с вами самостоятельно после того, как вас пригласили на очное собеседование. Хочу сразу обратить внимание — у него очень большой поток людей (отсюда такое устойчивое реноме «забывчивых» гугловских координаторов), поэтому перепроверяйте перед вылетом все, о чем с ним договаривались, так как проколы случаются (shit happens). Хорошо, что делать, если вас отбрили еще на стадии заочных собеседований, есть ли шансы на реабилитацию? Даже если вы и получили отказ уже на этой телефонной стадии переговоров, не стоит расстраиваться и опускать руки — это абсолютно нормально, тем более если посмотреть на общую лавинообразную статистику присылаемых резюме. Ровно через год можно снова попытать удачу, попробовав себя на какой-то отличной от прошлой позиции. Но имейте в виду, что ваша история прохождения интервью сохраняется в недрах Google, даже если вы будете подаваться в другом месте. Обычно если человек в первый раз завалил какую-то конкретную тему и на втором собеседовании он снова создал awkward moment ровно на том же самом месте (теме), то такого претендента перед следующей попыткой могут попросить подучиться дольше. Обычно раньше чем через 18–24 месяца с вами никто общаться не захочет. Про третью и четвертую неудачные попытки с однотипной ошибкой давайте рассуждать не будем, потому что это пахнет уже перманентным баном. Прежде чем мы двинемся дальше, разрешите задать вопрос по срокам — сколько ждать ответа как в случае с подачей резюме, так и в случае прохождения всей серии собеседований по телефону?На этот вопрос невозможно дать конкретный ответ, потому что здесь нет никаких нормативов или внутренних стандартов со стороны Google. Лет пять назад все сводилось к 2–3 неделям ожидания, сегодня — доходит до 7 недель и даже больше. Я знаю отдельные случаи, когда респондент так и не получал официального ответа после завершения серии телефонных собеседований, но его рекрутер через несколько недель перезванивал ему на мобильный телефон и, в сущности, в приватном разговоре отказывал (как обычно, причина отказа и допущенные ошибки не обсуждаются). Но если позволите, выходя за рамки вопроса, я бы предложил более общее решение этой проблемы. Как уже отмечалось, есть два пути попасть на собеседование — через самостоятельную подачу резюме и через обращение к вам с предложением непосредственно по инициативе Google. Второе — достаточно распространенная ситуация для более-менее публичных персон. К примеру, если у вас есть интересный технический блог или вы участвовали в крутой конференции, где вас заметили и оценили, либо ваши проекты на слуху — к вам могут запросто обратиться с подобным предложением. Это ситуация также встречается среди заметных разработчиков Open Source. Еще одна категория активно завлекаемых людей — те, кто имеет опыт работы в Top Players (ведущих компаниях индустрии). Я знаю не понаслышке, как внимательно относятся в Google к тем, кто работал в Microsoft и других крупных IT-компаниях, — высококвалифицированной рабочей силы остро не хватает, и самый «тупой» метод при ее поиске — это «выцепить» нужных сотрудников у конкурентов. Отсюда агрессивная расклейка объявлений о найме на остановках возле кампусов конкурентов и персональный обзвон с интересными предложениями о работе. Есть даже такая специализация у гугловских рекрутеров — работа с пассивными кандидатами, то есть людьми, у которых уже есть хорошая работа и которых так просто оттуда не выкуришь. Таких рекрутеров отдельно учат, как лучше «продать свой товар», чтобы заманить пассивного претендента на собеседование. Но для простых смертных есть и третий способ подачи документов, и он самый эффективный. На нем я бы и хотел акцентировать внимание. Это попадание на собеседование через знакомого-реферала (через корпоративную систему рекомендаций). Что это значит? Любой человек, уже работающий в Google, может порекомендовать вас для собеседования. Для этого есть специальная внутренняя процедура, ведь компания совершенно искреннее заинтересована в том, чтобы найти и привлечь к себе высококвалифицированных специалистов. Жизнь доказывает, что, как правило, они роятся «кластерами», подобно пчелам, и, если один из них уже работает в Google, почему бы не перетянуть туда его друзей по старым проектам, компетенцию которых первый гарантирует? Компания рассматривает эту ситуацию как шанс, которым не прочь воспользоваться. И даже если у вас нет знакомых в Google, найти «своего человека» в компании далеко не сложно. Как правило, многие соотечественники не прочь помочь земляку, к примеру, те же китайцы тягают на интервью целые табуны своих собратьев, которые даже не знают толком английского, изматывая гугловый персонал своей настойчивостью. Короче говоря, вам просто нужно найти желающего «прореферить» вас, а во времена Интернета это не так уж сложно сделать. Почему он согласится поручиться за незнакомого человека? Дело в том, что ему это ничего не стоит, разве что полчаса потраченного времени. Он ничем не рискует — в своей заявке на рекрутера он может честно указать о вашем виртуально-шапочном знакомстве, но даже этого будет достаточно, чтобы механизм был запущен. Более того, даже если реферал и знаком с вами давно и лично и написал вам шикарный «репорт», по своему опыту найма в Google я вижу, что такой фидбек может быть воспринят Комитетом по найму как предвзятый, что оставляет давнюю полемику об идеальном реферале открытой. Впрочем, говоря прямо и откровенно, вашему рефералу может быть совсем не все равно насчет вашей судьбы — не секрет, что большие компании платят (referral bonus) своим сотрудникам за кандидатов, которые были ими порекомендованы и впоследствии успешно наняты. Пару лишних тысяч долларов пассивного дохода за полчаса потерянного времени — не такая плохая прибавка даже для гуглера. В любом случае, даже если кто-то вам и откажет, просто ищите другого. Это удобно и просто делать, проводя «ковровую бомбардировку» сотрудников Google через Linkedin.О’кей, самое время объяснить, как этот третий способ проникновения в компанию может помочь нам. Можно конкретней? Плюсов много, я приведу для примера два. Во-первых, исчезает неопределенность после прохождения вами собеседований. Ваш реферал имеет непосредственный контакт с рекрутером, к которому направил свою заявку, и он всегда может уточнить результаты и сроки рассмотрения, а также детали прохождения вами интервью. Даже при отказе в трудоустройстве большинство претендентов слышат уже знаменитую гугловскую фразу вежливого отказа: «You are not one of us». Но в случае реферала вы сможете узнать все интимные детали с «черного хода», чтобы провести свою личную работу над ошибками (я уже говорил, что второй отказ очень нежелателен?). Во-вторых, без реферала вам придется как-то обратить на себя внимание еще на стадии отбора резюме, а сделать это не так-то просто, ведь за месяц количество получаемых анкет весьма велико (у каждого конкретного рекрутера оно варьируется от сотни до тысяч). Здесь вы минуете эту самую узкую стадию — если подходящая должность имеется, с вероятностью 80 % вас пригласят на телефонное собеседование. Есть множество других плюсов, если, к примеру, у вас нет профильного высшего образования… Кстати, как насчет высшего образования? Говорят, в Google не смотрят на наличие у кандидата образования, так ли это? Если попытаться выйти за пределы штампов и стереотипов, то сложно дать конкретный и односложный ответ — и да, и нет одновременно. С одной стороны, действительно, в последние годы его значимость для рекрутеров постепенно снижается. Тем не менее это заметно понижает ваши шансы на стадии фильтрации людей в завалах, поверьте, абсолютно однотипных анкет, где любое позитивное/негативное отличие может стать решающим. Впрочем, при входе в систему через реферала фактор наличия диплома не будет играть никакой роли. С другой стороны, если вам придется делать рабочую визу в США, то одно из условий ее получения — наличие законченного высшего образования по специальности (H1B без высшего образования получить, конечно, можно, но сделать это очень сложно). Впрочем, о визах предлагаю поговорить чуть позже, чтобы не отвлекаться в этой части интервью. Рекрутер также знает о визовых сложностях, и я не думаю, что он костьми ляжет, защищая перед руководством необходимость нанять именно вас, создавая головную боль себе и огромному количеству других сотрудников, которым придется как-то разгребать ваши потенциальные визовые проблемы. Прошу прощения, если кого-то расстраиваю, но это не удел рядового сотрудника без имени и громкого статуса, это точно. Поэтому, суммируя все, можно сказать, что высшее образование всетаки желательно. Хорошо, предлагаю больше не задерживаться на телефонной фазе (которую мы описали лишь в целях ориентации читателя в общей последовательности процесса). Далее хотелось бы сделать серьезный акцент на главном — на очных интервью, где, собственно, и происходит не только самое важное с точки зрения дальнейшей судьбы кандидата в компании, но и по-настоящему сложное и интересное. Итак, предположим, вы получили приглашение на очные интервью. Предлагаю дальше следовать в очередности ваших курсов, где первое, что вы рассматриваете, — это эмоциональный фон и самоконтроль. Мне приходилось часто слышать от других, что первое очное интервью — решающее во всей серии. Я считаю, что это субъективное мнение. Психологическое накручивание себя, неуверенное владение разговорным английским языком и сложные нестандартные задачи негативно накладываются на «ощущение судьбоносности момента» (как точно выразился один из участников курсов). Все это действительно порой приводит к тому, что некоторые даже очень сильно подготовленные участники сходят с дистанции уже после первого провального собеседования. Лично у меня никогда не было такого разрушительного эмоционального эффекта, возможно, потому что я изначально не планировал работать в Google, и когда рекрутер сам вышел на меня, я просто решил принять участие в этом неожиданном приключении и посмотреть, что будет дальше. Поэтому в этом пункте я хотел бы обязательно предостеречь: не нужно терять дух и психологическое равновесие даже в необычном для любого новичка окружении. Оказавшись в недрах поискового гиганта, не нужно представлять себе сотрудников Google как неких богов во плоти — по моей, возможно, субъективной оценке, их уровень подготовки на деле весьма и весьма разный. Проиллюстрирую эту мысль на примере. Мне трижды (разные интервьюеры в серии) задавали вопрос о реализации hash map — похоже, это вообще рекорд по степени важности этой темы в глазах Google. При этом любопытно, что у первых двух мое объяснение прошло на ура, тогда как третий ведущий остался недовольным. На мою просьбу объяснить, в чем же моя ошибка, он ответил отказом, лишь посоветовав «почитать про hash map позже и хорошо отдохнувшим». Заинтригованный, я перечитал все, что сумел найти, но ничего нового для себя не открыл. Даже если предположить, что это чисто личностная оценка, не нужно этого бояться: интервью построены так, что конечное решение должно как можно меньше определяться мнением лишь одного отдельного человека (хотя нужно признать, что резко негативная аргументированная оценка даже одного ведущего может поставить на вас крест). Позже другой рекрутер прокомментировал этот эпизод в том смысле, что ему вообще удивительно, что моему ответу дали оценку вслух, потому что интервьюирующим запрещено озвучивать какую-либо частную оценку вообще. От себя замечу, что, как правило, это условие выполняется, добавляя интригу в довольно нервный марафон из нескольких собеседований. Давайте опишем ход такого очного собеседования более конкретно. Сколько их в серии и как они проводятся? Количество очных интервью обычно колеблется от трех до восьми. В зависимости от конкретного офиса и принятых там правил, эта серия либо растягивается на 2–3 дня (редко), либо упаковывается в один день (чаще всего). Надо отметить, что само по себе такое интервью очень интересно неравнодушному к своей профессии специалисту вне зависимости от конечного результата. Сразу хочу заметить, что времени от окончания интервью до принятия решения может уйти очень много, не нужно принимать это на свой счет. Итак, во всех случаях, что я знаю, первое интервью начинались в первой половине дня, в моем случае — в десять утра. Это очень плотный марафон из собеседований, когда один «свежий» специалист сменяет другого, когда тот закончил. В середине дня делается обязательный перерыв на обед в фирменной столовой. В хороших случаях применяется хоть какое-то разделение ролей. Например, первый гуглер спрашивает вас о предыдущих проектах, самых интересных задачах, с которыми приходилось столкнуться, второй — только про алгоритмистику, третий задает чисто технические вопросы по Java и фреймворкам, четвертый — «а нарисуйте мне классы для такого-то типового проекта» и т. д. На каждого уходит минут 30–50, соответственно, общее собеседование может сильно растянуться. Мое интервью перед устройством в Google состояло из серии 5 интервью по 45 минут. С перерывом на часовой обед на это ушло 6 часов. Перед началом каждого 45-минутного «сеанса допроса» вам предлагают сходить за водой-чаем-кофе или в туалет на 10 минут, советую воспользоваться этими предложениями, чтобы немного развеяться и взбодриться. Иногда интервьюеры ведут журнал вопросов, чтобы избежать повторений. Но это опять же в лучших случаях, чаще всего информацией между собой они не обмениваются и роли никак не распределяют, поэтому часты повторы. Для чего это делается и как вести себя, если тебя третий раз спрашивают одно и то же, как в случае вашего примера с hash map? Это не редкость. Теоретически повторы допускаются для того, чтобы исключить субъективность в оценке кандидата конкретным человеком. Правильная модель поведения — подчеркнуто вежливо уточнить: ваш коллега задавал этот вопрос ранее, следует ли повторить мой ответ еще раз? Наверное, подобные интервью — сильный эмоциональный опыт со всех точек зрения? Первый раз, конечно, навсегда остается в памяти: раньше вы видели эту великую компанию в обезличенном виде, через призму ее сервисов, сейчас же за чашечкой кофе обсуждаете технологии непосредственно с ее ведущими разработчиками (сами сотрудники называют это чувство «Google experience»). Заблудиться в самой компании будет сложно — с самого утра прибыв в офис (лучше не приходить сильно рано или с опозданием, идеально за 5 минут до назначенного времени), вы сообщаете цель своего визита и регистрируетесь на стойке ресепшен. После чего вам выдают персональный бэдж и вызывают вашего рекрутера, который встречает вас с распростертыми объятиями и сияющим лицом, будто вы знакомы как минимум последних лет сто. В первый такой визит достаточно типична небольшая экскурсия по огромному кампусу Google, угощение бесплатными напитками и печеньем, равно как и разговоры не о чем, достаточно типичные для двух совершенно незнакомых людей. Все это быстро заканчивается демонстративным поглядыванием рекрутера на свои часы и холодящей дух фразой: «Ну что, будем начинать?» Из ваших лекций я знаю, что один из типичных акцентов подобных интервью — «низкоуровневые дискуссии обо всем на свете». Можно привести пару примеров из жизни? Самая большая часть интервью — это техническое обсуждение выбранной вами предметной области. Очень часто вопросы могут лежать за пределами сферы компетенции рассматриваемой должности, к этому нужно быть готовым. Например, мой хороший знакомый претендовал на должность SRE1, при этом его спрашивали о специфике некоторых системных вызовов в API Linux и специфике fork() в разновидностях Unix, что требует не только теоретических знаний сисадмина, но и хорошего практического опыта в области системного программирования. Также привожу для примера похожий вариант, который имел место на моем втором собеседовании на должность программного разработчика (SWE). Как правило, на таких интервью присутствует несколько человек, последовательно выполняя роль ведущего. В моем случае интервью вел лишь один инженер, который после короткого вводного приветствия и стандартных расспросов (что мне нужно от жизни и от Google в частности?) быстро изложил суть первого задания:

1 Эквивалентно нашему «системный администратор».Предположим, обычный пользователь набирает в адресной строке своего любимого браузера http://disney.com и тут же получает в ответ страницу. Теперь давайте обсудим как можно более подробно, что происходит в промежутке между нажатием клавиши Enter и полным отображением страницы в браузере.

Ведущий демонстративно посмотрел на наручные часы и предупредил: «Сейчас без четверти два пополудни, у меня есть время до пяти часов вечера, думаю, если поспешим, мы должны уложиться». Отмечу лишь, что в моем случае я окончательно запутался, когда мы дошли до разбора деталей процедуры TCP handshaking, затем также споткнулся на этапе рендеринга страниц движком браузера. «А жалко, — сообщил улыбающийся интервьюер, — я надеялся, что мы успеем еще повторно прогнать все это для случая https». Поэтому будьте готовы к максимальной детализации (и неизбежному при этом выходу за рамки вашей специализации). В описанном случае, обсуждая работу браузера и web с прицелом на позицию веб-разработчика, в итоге мы «провалились» до уровня работы ethernet-фреймов и пограничного протокола маршрутизации BGP. Другое подобное задание, после которого мы постепенно докатились до обсуждения архитектуры процессора, звучало так:

Дается кусок программы на Си, работающей со строками (отдельная функция). Требуется объяснить и нарисовать на доске, что на каждом шаге ее выполнения происходит в памяти компьютера.

Обычный паттерн здесь таков: сначала задается какой-то относительно простой вопрос, например «чем свитч отличается от хаба», после чего начинаются рекурсивные циклы уточнения деталей и постепенное погружение во все более и более низкоуровневые детали, пока вы не упретесь в свой потолок — какой-то вопрос, на который уже не знаете ответа. Этот уровень фиксируется, и после пары косвенных подсказок вас оставляют в покое, давая возможность немного отдышаться на каком-нибудь завуалированном личностном тесте, чтобы начать новый цикл «отладки темы» с какого-то очередного очень общего стартового вопроса. Для подобных глубоководных погружений «в суть вещей», как минимум, нужно знать как «отче наш» семь уровней взаимодействия модели OSI/ISO и четыре уровня сетевой модели ТСР/IР, а также базовые принципы работы процессора. Я знаю, у вас на тренинге разбирается очень много похожих примеров, но насколько они полезны и близки к реальным интервью? Да, у нас очень много похожих примеров, и мы стараемся держать их максимально актуальными. Мы тратим на анонимный сбор подобных вопросов очень много времени и сил. Кратко поясним, почему это так важно. Перед началом очных собеседований у вас возьмут формальную расписку о неразглашении задач и деталей интервью — это соглашение (NDA) сохраняет юридическую силу, как в случае, если впоследствии вы были приняты на работу, так и в противном случае. Почему Google так жестко защищает содержание собеседований? Краткий ответ — потому что структура вопросов и их общий шаблон очень часто повторяются (мы уже кратко касались этого). Если актуальные задачи или вопросы где-то всплывают «в паблик», они отбраковываются, в противном случае воспроизводятся снова и снова. Такое положение дел — фирменная специфика Google. В этом плане вы имеете очень сильное преимущество, если у вас есть инсайдерская информация. Почему они крутят одни и те же вопросы в большинстве разных интервью, что за этим стоит? Главная причина в том, что продолжительные исследования доказали, что самый лучший способ бороться с непреднамеренной (или умышленной) предвзятостью интервьюеров к кандидатам (а это отдельная большая проблема для многонациональной и очень разнородной компании типа Google) — максимально структурировать и типизировать спектр задаваемых вопросов и задач. Об этом очень много говорят на корпоративных подготовительных курсах в тот момент, когда гусеница-инженер превращается в бабочку-рекрутера. К примеру, сейчас примерно 80 % работников Google — это парни, из них 65 % — белые. Но проблема уходит далеко за рамки гендерных или расовых предрассудков.Вот типичная ситуация для лучшего раскрытия темы. Вы предлагаете на собеседовании для решения задач свой любимый язык, в котором вы — дока, пусть это будет Haskell для примера. Гуглер соглашается, хотя может не знать этот язык так же хорошо, как и вы (чаще всего он верит в лучшее). И впоследствии, анализируя решение своей задачи, может не понимать до конца ваших подходов, если вы действительно большой гуру функционального программирования или предложенной проблематики. Это поле для огромного количества недоразумений и личных обид, попранных самооценок и желания реванша. Все ведущие — молодые ребята, и, поверьте, не всем из них приятно осознавать свои ошибки, непонимание или показательную слабость, порой такой поворот интервью становится исключительно вашей проблемой. В Google знают о периодических межличностных аберрациях и подобной «дедовщине», и в компании искренне пытаются бороться с такими ситуациями. Они сделали отличные образовательные курсы «Course On Unconscious Bias» для своих рекрутеров, но этого мало. Курсы начинаются с подробного разбора личной истории Эйнштейна, которого, как известно, его школьные учителя считали полным идиотом и даже пытались исключить из колледжа в юности. Другая попытка решения подобных проблем — запуск отдельной экспериментальной программы найма для девушек/женщин, которые желали бы работать в Google, также есть ежегодные «женские» стипендии Фонда имени Аниты Борг и подобные им инициативы (кстати говоря, за последние полтора года количество женщин в Google увеличилось с 8 % до 20 %). Одно из практических последствий подобных усилий — четкое структурирование интервью и фиксированный список вопросов и задач, которые могут вам предложить. Поэтому в наше время у ведущего подобного собеседования не такой уж большой простор для маневра, и времена, когда он мог запросто попросить вас подсчитать в уме количество люков в Сан-Франциско, остались далеко позади. С другой стороны, именно поэтому так необходима юридическая защита типа упомянутого ранее соглашения о неразглашении (NDA), чтобы сохранять эту зафиксированную схему эффективной и работоспособной. Только обет молчания позволяет им повторяться, но мы пытаемся эксплуатировать эту уязвимость на наших курсах. (Пауза.)«Реверс инжиниринг» этого достаточно костного механизма для поиска «креативных и неординарных людей» сам по себе забавен. (Смеется.) Спасибо за интересное разъяснение по скрытой механике интервью, переходим к следующему важному акценту, о котором вы много говорите. В вашей программе он носит название «работать на компанию, а не решать свои проблемы». Это важная фаза — зондирование ваших личностных предпочтений и общей мотивации. Она особенно часто применяется к нерядовым позициям, тогда как для начинающих «джуниоров» может практически отсутствовать. Здесь оставим за пределами контекста степень ваших профессиональных познаний и возможностей, эта часть собеседования стремится ответить на простой, но важный вопрос: насколько вы действительно готовы вкалывать во благо компании? На самом деле у вас никогда не спросят об этом напрямую. Во всяком случае это подтверждают все коллеги, с кем мне довелось побеседовать на эту тему. Но, с другой стороны, проверят этот пунктик с вероятностью 80 %. Для этого будут использованы косвенные опросы для выявления так называемых личностных аттракторов (скрытых мотиваций) собеседника. Чтобы привнести конкретики в эту зыбкую тему, вот типичный вопрос-ситуация, который встречается достаточно часто, давая нам возможность расслабиться в перерывах между изматывающими техническими обсуждениями. Представьте, что вы разработали какую-то популярную программу (вариант: изобрели важную технологию и т. д.) и получили сразу несколько предложений о трудоустройстве от известных компаний, после чего вам надо сделать сложный выбор места будущей работы. Теперь давайте помечтаем вслух, какие 3–4 фактора будут определять ваш выбор (вариант: просят записать их на листок в столбик). Важная часть задания — расположить эти критерии четко в порядке возрастания по их важности для вас. Вся дальнейшая работа — это уточнение этих желаний интервьюером, а также их очистка — профессиональная попытка психолога помочь испытуемому сформулировать их как можно более четко, лаконично и непротиворечиво. Часто это превращают в некое подобие игры для респондента, когда он со вкусом, старательно взвешивая свои предпочтения, перечисляет тот минимум, на который он, так уж и быть, согласится. Проблема в манипулятивных симуляторах подобного рода всегда лишь в том, что никто не собирается учитывать эти требованя или предпочтения. Задача совсем другая: опытный интервьюер уже через 20 минут получает на руки путевую карту личностных стимулов, целей и реакций человека. Хочу сразу предупредить, что я не сторонник «оптимизировать» свои ответы под ожидания работодателя (и хочу призвать читателя даже не пытаться делать этого). Отставим моральные принципы в стороне, дело совсем не в этом: не стоит это делать хотя бы потому, что более опытный в этой процедуре ведущий почти всегда заметит любую неискренность. Кроме приведенного стартового задания в процессе рутинного для него разматывания вашего глубоко личного клубка из аттракторов используется множество перекрестных и уточняющих вопросов, ответить на которые на лету и без предварительного продумывания «их логических последствий» просто невозможно. Поэтому, повторюсь, я рекомендую просто расслабиться и быть самим собой, если вы чувствуете, что попали «под отладчик» профессионального психолога. Попытка поместить ценности испытуемого в четкую систему координат, которую можно надежно интерпретировать и оценить с точки зрения интересов компании, — важнейшая часть этой фазы интервью. В качестве очередной иллюстрации к порции теории хотелось бы привести концовку подобного интервью в моем случае, хорошо резюмирующую главную идею сказанного. В самом конце этой долгой процедуры на мою, возможно, не совсем удачную шутку с долей иронии, что, дескать, «хороший психоаналитик — лучший друг программиста», ведущий абсолютно серьезно возразил, что за свое уже достаточно большое время работы в этой роли он видел огромное количество латентных личностных конфликтов. Каждый второй программист, по его словам, «не понимает, что ему нужно в этой жизни, он лишь слепо следует канве общественных стереотипов». После чего мой визави, аккуратно уложив свои записи в папку и сухо попрощавшись, уже уходя, напоследок бросил фразувопрос: «Я думаю, вы со мной согласитесь, что в любом случае это не проблема нашей компании?» Переводя на повседневный язык: вы зациклены на своем саморазвитии и прокачке профессиональных скиллов, считаете престижным просидеть часть своей жизни в роскошных кампусах одной из крупнейших мировых компаний?.. Кхм, простите, а вы уверены, что компании типа Google хоть как-то озабочены вашими личными целями? Несмотря на нагнетание подчеркнутого человеколюбия к своим сотрудником, нам как рекрутерам часто повторяли важнейшую формулу для отбора — нужен кандидат, у которого «future with Google», а не «future in Google». Google постепенно отходит от формулы потакания раздутым эго своих сотрудников (одна из причин, почему так называемое «правило 20%» больше не действует), все больше превращаясь в стандартную, ориентированную на прибыль компанию. В любом случае, я вас предупредил: секрет прохождения этой фазы интервью — в правильных приоритетах. Как этот важный личностный критерий отбора можно сформулировать предельно кратко? Мы ищем таланты, а не навыки — это дословная формула от Брайана Пауэра, начальника отдела кадров в Google. Член совета директоров Google Лазло Бок, возглавляющий департамент по найму сотрудников, формулирует еще более точно: «Демонстрируйте навыки, а не опыт». Что касается человеческих качеств, от вас ожидают жертвенности в пользу компании, а также трудоголизма на грани фанатичности, поэтому постарайтесь никого не разочаровать своим «разносторонним жизненным бэкграундом» и «обилием самых разных увлечений» во время интервью. Давайте проиллюстрируем эти два важных критерия отбора на примере. Это значит, что ваши текущие навыки и степень погружения в вопрос имеют второстепенное значение. Точка.К примеру, даже если вы крупный специалист в C++, есть большая вероятность, что вам придется полностью переучиваться на фирменный язык компании Go, на котором сейчас много пишется в Google. У Go много специфики, о которой вы, возможно, никогда и не слышали, например многомерные методы goroutines всегда выполняются одновременно и независимо друг от друга (для гипотетического стандартного специалиста по C++ поясню, что мы живем в эпоху многопроцессорных систем и параллельных вычислений). Иначе говоря, однозначно придется учиться чему-то новому, и никто даже не знает, что будет на повестке завтра. Темп устаревания текущих знаний сильно связан с общими темпами развития отрасли и особенно велик в инновационных компаниях такого калибра, как Google. Итак, исторически первой обратила внимание на эту ИT-специфику «агрессивной инновационности» компания Microsoft. Она стала применять различные головоломки и задачи на общую сообразительность для выявления подобного адаптивного потенциала еще в далеком 1990 году. Чтобы отсечь мнимые преимущества так называемого интеллектуального багажа знаний, в такое тестирование часто вводят фактор ограничения по времени или еще чаще — некий элемент абсурдности в условии самой задачи, чтобы максимально затруднить проекцию ваших повседневных знаний/навыков. Конечная цель — тестирование и выявление вашего креативного потенциала, поэтому подобные «странные интервью» — лишь способ определить склонность человека к нестандартному мышлению, а вовсе не показатель некоей эксцентричности руководства компании, как думают некоторые. Это специфика инновационной отрасли в рамках жесткой конкурентной среды, секрет выживания в которой — в перманентном поиске нового, лучшего и еще более эффективного. Чтобы резюмировать, позволю себе процитировать уже упомянутого Лазло Бока: Если речь идет о технической позиции, а таких вакансий у нас примерно 50 %, то прежде всего мы оцениваем ваше умение писать код. Но при рассмотрении кандидата на любую позицию нас в первую очередь интересуют его общие когнитивные способности, а не IQ. Точнее, для нас важна обучаемость, то есть умение схватывать новое на лету. Объединять разрозненные фрагменты информации, находить эффективные решения для ранее неизвестных задач. Для оценки таких способностей мы применяем структурированные поведенческие интервью, которые затем тщательно оцениваются и поэтому позволяют давать качественные прогнозы насчет претендента. Еще один важный и родственный креативности аспект, который компания учитывает при найме, она сама обозначает термином «гугловость» — это понятие, которое можно интерпретировать как развитый эмоциональный интеллект (EI). Вики дает следующее определение этой сфере нашей личности: Эмоциональный интеллект — это способность человека осознавать эмоции, достигать и генерировать их так, чтобы конструктивно содействовать мышлению, пониманию эмоций и того, что они означают и, соответственно, управлять ими таким образом, чтобы способствовать своему эмоциональному и интеллектуальному росту и развитию. Эмоциональный интеллект также проявляется в способности уживаться, адаптироваться в окружающей среде и находить общий язык в команде. Развитый EI дает преданность своей компании, приносит драйв и кайф от своей работы (которые компания интерпретирует как позитивную фанатичность). Это причины болезни под названием трудоголизм. Как итог такой фиксации на «великих делах» — искреннее желание преуспеть в карьере в рамках «большой мировой компании». (Иронично закатывает глаза, изображая нерда-ботаника.) Короче, мои бывшие коллеги сказали бы, что это превалирующая идентификация себя и своей самооценки через призму своей компании. И наоборот, гении-одиночки и яркие лидеры-стартаперы плохо перевариваются в рамках корпоративных требований на «гугловость» и общей коллективной упряжки. О’кей, думаю, есть смысл привести серию типичных вопросов и задач-головоломок из разряда креативных. Я постарался подобрать наиболее часто задаваемые вопросы. Не знаю почему, но вопрос Google с блендером стал уже знаменитым из-за его распространенности.Представьте, вас уменьшили до размера монеты и поместили в блендер. Ваша первоначальная плотность сохранена. Лезвия придут в движение через 60 секунд. Объясните, как вы будете спасаться. Отсчет времени до запуска блендера пошел.

Это достаточно простой вопрос, хотя бы потому, что у него есть правильный ответ и в нашей стране урок физики еще пока обязателен. Но есть класс вопросов, однозначного ответа у которых изначально нет, вот примеры из этой серии: ? Вот вам бумага и ручка, разработайте подробный план эвакуации Сан-Франциско. ? Сколько примерно воды в океанах? ? Предложите принципиальную конструкцию часов для слепых. ? Сколько мячиков для гольфа может поместиться в стандартном детском автобусе? ? Оцените примерное количество настройщиков пианино во всем мире. А теперь самые ходовые вопросы, построенные на смеси темы-специализации и некоего дополнительного неожиданного условия (вот распространенные примеры на тему программирования и не только): ? Очень сложно удержать в голове что-то, о чем вы читали много лет назад. Как вы боретесь с этим? Какая у вас система систематизации знаний? ? Какое самое красивое решение из всех, что вы видели? (Вариант: самый красивый фрагмент кода и т. д.). Давайте обсудим то, что вас поразило в нем больше всего. ? Представьте себе страну, где очень почетно иметь мальчика в семье. Поэтому родители рожают детей ровно до тех пор, пока не родится первый мальчик. Каково гендерное соотношение детей в такой стране? ? Объясните вашу методику тестирования для элеватора (распространенные варианты: для карандаша, полосы прокрутки (scroll bar) и т. д.). ? Используя пару из трехминутных и семиминутных песочных часов, нужно отмерить интервал точно в 9 минут, расскажите как это сделать. (В моем случае был похожий вопрос, который мне запомнился: есть готовая функция, генерирующая случайные числа в диапазоне от 1 до 5, требуется написать, используя лишь ее, новый генератор для диапазона 1–7). На самом деле, зная ответы на эти вопросы, нельзя не признать их простоту, нужно просто иметь немного фантазии, чтобы посмотреть на эту задачу с нестандартной точки зрения. От себя добавлю, что в моем случае количество подобных загадок в реальном собеседовании в Google не превышало 10 % от общего количества заданных вопросов, основная масса которых в последнее время носит более технический характер, непосредственно связанный с рассматриваемой вакансией. В чем вывод этого важного пункта? Просто я призываю не огорчаться из-за того, что ваши нереально глубокие познания в какой-то однойдвух предметных областях не всегда будут иметь решающее значение для Google, а просто заранее знать и использовать эту стратегию отбора — учитесь учиться вообще, а также гибко и быстро приспосабливаться к любой новой проблематике, которую может подкинуть жизнь. Воспринимайте такие интервью как хорошую возможность для тренинга вашего адаптивного потенциала.

Я хочу продолжить обсуждение темы поведенческой психологии, которую вы тщательно прорабатываете со своими программистамикурсантами. Для примера возьмем урок «О пользе последовательной аргументации». Очень многие заметили специфику интервью в Google: почти на каждое сильное утверждение с вашей стороны ведущий наверняка потребует объяснений (можно также назвать это словом «обоснование»). Это особенно касается сферы собственных вкусов при выборе инструментов и технологий. Если, скажем, вы заявляете, что программируете только на PHP (или только на любом другом языке) и вообще любите этот язык до глубины души, сразу приготовьтесь к тому, что с вас потребуют аргументации.Как говорит главный рекрутер Google Брайан Пауэр: «Мотивация должна быть раскрыта в полной мере, это одна из главных задач собеседующего». Конечно, рефлексивные и уклончивые ответы на подобные вопросы, столь типичные для форумов и повседневного общения («он мне просто нравится и все», «большинство пишет на нем» или «да просто так исторически сложилось»), не станут бриллиантом вашей аргументации. При подобном легкомысленном объяснении выбора своего главного инструмента разработки вы рискуете получить «red flag» — отрицательную оценку интервьюера. Для наглядности приведу более конкретный пример подобного диалога из опыта собственного собеседования. Когда я рассказывал в Google про свои навыки и упомянул принципы SOLID, которые хорошо знаю и активно применяю, тут же получил встречный вопрос: «Почему именно SOLID, а не почти аналогичный GRASP? Каковы аргументы выбора в пользу SOLID?» Это, конечно, интересный вопрос, потому что все, что касается наших спонтанных предпочтений, не всегда поддается ясному и четкому объяснению и вербализации, тем более опасно, когда подобные провокационные вопросы подкидывают вам неожиданно и в исключительно ответственный момент. Второй личный момент, за который меня основательно зацепили: «В вашем резюме написано, что вы большой любитель FreeBSD, давайте обсудим этот вопрос, почему именно FreeBSD, а, скажем, не Ubuntu?» Подобно тому, как в боксе часто используется клинч в качестве уловки, чтобы выиграть время, если участник состязания не держит удар, в подобных «аварийных ситуациях» также возникает соблазн отмахнуться голословным, поверхностным, односложным или просто банальным ответом с улыбкой, жаждущей снисхождения (применительно к предыдущему вопросу — репликой на уровне «FreeBSD мне нравится просто потому, что в ней есть система портов»). Иначе говоря, заранее внимательно проинвентаризируйте все свои предпочтения, все косвенные утверждения, из них следующие, а также ваши навыки, перечисленные в резюме, — везде должны быть выявлены слабые и сильные стороны, хорошо аргументированы и вербализированы причины (хотя бы для себя самого) их выбора и использования. И если говорить более прямо, заранее приготовьтесь к неизбежным жестким встречным вопросам для любой «самой лучшей» технологии программирования. Давайте для наглядности приведем более конкретный пример. Предположим, я знаю, что вы как приверженец PHP указали этот язык в своем резюме в качестве основного. Что конкретно спрашивали вас по этому языку на собеседовании? Сначала были достаточно глобальные и обзорные вопросы с легким оттенком провокационности, например1: ? Почему вы выбрали язык, реализация которого не поддерживает многопоточность? ? Почему в мире PHP нет событийно-ориентированных фреймворков? ? До какой степени PHP 5 действительно поддерживает ООП? После чего постепенно следует переход в более узкоспецифичную плоскость, и я бы даже сказал, что порой вопросы носят провокационный или откровенно шутливый характер, вот примеры: ? Что значит «Variable variables» в мире PHP? ? Знаете ли вы иврит? Что значат периодические сообщения PHP об ошибке T_PAAMAYIM_NEKUDOTAYIM? ? Расскажите нам побольше про PHP, например про переменные и функции, которые здесь могут существовать в двух отдельных пространствах имен. Если я правильно понимаю, вы можете использовать как функцию fix(), так и переменную $fix. Пожалуйста, поясните, в чем преимущества такого подхода PHP? ? Является ли PHP действительно безопасным в отношении типов? (После утвердительного ответа возникло ощущение попадания в заготовленную ловушку и последовала ритмичная серия добивающих вопросов.) Проверяли ли вы это лично на практике? Расскажите нам про это поподробней, пожалуйста.

1 Эти вопросы по PHP задавались в 2013 году, некоторые из них неактуальны по состоянию языка на текущий год. ? Поддерживает ли PHP стандартный тип integers, больший, чем 32 бита? Есть ли в PHP тип unsigned integers? ? Как в PHP можно получить «тело» http-запроса, отличного от типа POST? Например, сделайте это нативными для PHP средствами для запросов, выполненных методом PUT. ? Поддерживает ли PHP методику duck typing? (Кстати говоря, наверное, в связи с популярностью Python в Google я заметил повышенное внимание к вопросам, связанным с латентной типизацией, я получил несколько вопросов от разных людей именно на эту тему.) ? Пожалуйста, как специалист по PHP попробуйте переписать следующий типичный фрагмент PHP-кода, взятый нами для примера из популярного блогерского движка WordPress, чтобы PHP, SQL и HTML не были перемешаны все вместе.    <?php      $result = mysql_query("select * from test_table");      echo "<p><ol>";      while ( $row=mysql_fetch_assoc($test_result) )      echo "<li>{$row[test_row]}</li>";      echo "</ol></p>";    ?> Таких вопросов может быть много — от менее болезненных до более провокационных, в зависимости от компетенции и темперамента конкретного ведущего интервью. В чем главная суть подобных эскалаций в интервью? Никто на вас не давит и не язвит над вашими персональными вкусами, отношение всегда уважительное и терпеливое (я не заметил, чтобы хоть раз кто-то перебил или остановил мои объяснения, даже когда я явно отклонялся от темы). Здесь важно просто уметь отстаивать свою точку зрения и самому не делать взаимоисключающих утверждений. Иначе говоря, никто не против того, чтобы программировать именно на PHP, важно просто суметь объяснить, что это ваша сознательная позиция, что так делать действительно лучше и эффективнее. Ваш сознательный выбор и аргументированные предпочтения даже в мелочах, таким образом, подчеркивают ваш профессионализм и выдают опыт. Обратите внимание: ответы на приведенные провокационные вопросы потенциально могут тянуть за собой бороду интересных работодателю следствий насчет вас как специалиста и человека вообще, ваших личных взглядов на жизнь, индивидуальных человеческих особенностей и предпочтений, выходящих далеко за пределы лишь одной профессиональной сферы. Получается, что, находясь на таком собеседовании, вы словно подопытная мышь, которую буквально под микроскопом внимательно изучают Люди в Белых Халатах. Инициатива не принадлежит вам, вы лишь безвольный игрок в чужой программе? Я бы не был столь категоричным, отчасти это ваш собственный личностный выбор, который выходит далеко за рамки лишь интервью и трудоустройства в Google. Если вы посмотрите вокруг себя, то в равной степени увидите в жизни как обреченных и покорных людей на коротком поводке контракта, так и успешных и независимых создателей собственного дела и новых рисковых стартапов, и все это в рамках одной и той же среды. Что касается моих курсов, я часто отрабатываю со своими студентами домашние заготовки в стиле «удиви меня» для органичного переключения контекста разговора и перехвата роли ведущего. Этот прием позволяет проявить вам свои самые сильные стороны, ведь, как хорошо известно, самая лучшая импровизация — заранее заготовленная импровизация. И эта одна из моих любимых игр на площадке собеседований Google. Снова приведу типичный набор ситуаций из личного собеседования, чтобы проиллюстрировать, что я имею в виду. Двигаясь по темам в резюме, которыми я занимался, мы довольно монотонно и поверхностно прошли по ООП и различным паттернам программирования, пока не дошли до моего любимого аспектноориентированного программирования (АОП). Здесь сразу стало очевидно, что настрой ведущего и его коллег поменялся, он попросил рассказывать все максимально подробно, потому что «это интересная тема». Отвечая на многочисленные встречные вопросы насчет причин моего интереса к функциональному программированию, АОП и событийно-ориентированному программированию (СОП), нас постепенно вынесло на другую логичную тему — недостатки методологии объектно-ориентированного программирования как таковой, которая в наше время стала своего рода безальтернативным мейнстримом в индустрии программной разработки. Я прошелся по калейдоскопу из мнений ряда крупных фигур в мире программирования, в частности перечислил аргументы хорошо известных ярых противников ООП: Дейкстры, Ричарда Столлмана и Никлауса Вирта, по памяти процитировал причины разочарования в объектах Степанова (создателя STL) и общей проблематике рефакторинга как неизбежного диалектического следствия любой разработки, центрированной на ООП-стиле. Также рассказал про интересную критику ООП от Джоэля Спольского, о его похождениях в Microsoft и тамошних «архитектурных астронавтах», замучивших навязыванием этой методологии другим. Просто в качестве любопытного наблюдения: тема «порочных практик» Microsoft вызвала дополнительное оживление у гуглеров, и мы остановились на этом отдельно. В ходе обсуждения я поделился мнением своего хорошего знакомого о том, как своеобразно соблюдаются «coding guidelines» в Microsoft, где некоторые методы могут содержать тело из кода в сотню экранов, а сам файл с их исходником — весить больше мегабайта. Я так подробно остановился на этом моменте лишь для того, чтобы показать простую, но важную стратегию: гораздо выгоднее, когда вы рассказываете что-то интересное сами, и то, что заведомо хорошо знаете, чем, затаившись, ждете очередного вопроса с подковыркой из длинной очереди заданий, которые выдает команда из нескольких интервьюеров по очереди. Суметь удачно переключить контекст собеседования на этот благоприятный для себя проактивный режим — ключевой момент, как мне видится, для наиболее комфортного из всех способов прохождения подобных интервью. Фактически в моем случае это было больше похоже не на стандартное стресс-тестирование собеседника, где я выступал в качестве ведомого и испытуемого, а на приятную дискуссию знакомых, у которых вспыхнула интересная для обоих полемика. Считаю, что из всей серии собеседований это был один из моих самых удачных дней, и чтобы передать общий позитивный фон, на котором мы расстались в тот день, приведу последние слова ведущего: Господи, услышь нас, — комично вскинул он руки вверх с немой мольбой, застывшей во взгляде, устремленном в небо, — о, если бы наш менеджер проекта думал так же, как думаете вы, и чтобы у нас всегда был выбор в плане удобной нам методологии. Под общий смех мы завершили это эмоционально-насыщенное интервью. Как я уже отмечал и как признался один известный актер: «Самая лучшая импровизация — это заранее подготовленная импровизация». Отнеситесь к этому банальному утверждению серьезно, и вы сможете удивить в хорошем смысле не только своего потенциального работодателя, но и самого себя, относительно легко создав нужную и контролируемую атмосферу на важном для вас собеседовании. Используйте для этого свое резюме в качестве своего рода программы из тщательно проработанных заготовок и глубоко закинутых якорей, так вы оставляете себе большие шансы перехватывать инициативу в интервью каждый раз, когда предсказуемый вопрос интервьюера заставляет сработать очередной триггер заготовленной вами ранее интересной темы. Позвольте же рекрутерам найти «эти пасхальные яйца» в вашем резюме, умоляю, просто дайте им шанс — это доставит удовольствием не только им, но и вам самим, когда собеседование будет принудительно перезагружено по вашему сценарию. Я знаю, вы ведете статистику всех ваших подопечных, кто проходит собеседования в Google после обучения у вас. Можете поделиться хотя бы несколькими интересными фактами, полученными на ее основе? Как правило, в качестве интервьюеров от Google выступают молодые люди. Если 3 года назад это были сотрудники в возрасте около 30–37 лет, то сейчас планка опустилась ниже — сейчас интервью часто ведут парни в возрасте 26–30 лет. Google, безусловно, стремительно молодеет. Огромное количество деталей и низкоуровневой информации. Многие курсанты сетуют, что если раньше классическое образование учило не зубрить бездумно, а прежде всего хорошо понимать алгоритмы или внутреннюю суть технологий, то теперь наблюдается обратный тренд — повышенное внимание к деталям, то есть очень сильный крен в сторону приобретения справочно-энциклопедических познаний. В последнее время значительно повысился процент приглашаемых на собеседование людей по инициативе самих рекрутеров. По нашей оценке, попасть на рядовые должности — вполне реалистичная задача для подготовленного специалиста среднего уровня квалификации, но на все управляющие позиции отбор гораздо более тщательный и долгий. Говоря иначе, если у вас более пяти лет стажа работы в отрасли и вы действительно учились программировать все это время, то у вас есть хорошие шансы пройти собеседование в Google. Почти всегда встречаются минимальные 1–3 вопроса на смекалку и креативность — иногда не имеющие отношения к профессиональной специализации, но чаще всего завуалированные под них. Легенды о большом количестве подобных вопросов, мягко говоря, преувеличены. Google стремится уходить от стандартной модели опросов, где есть очевидный и стандартный ответ, тяготея к модели, где требуется самостоятельно найти решение нестандартной задачи в режиме реального времени. Часто при этом просят проговаривать вслух динамику поиска вами решения (общий ход мысли), и поскольку большинство программистов — все-таки выраженные интроверты, это может серьезно помешать сосредоточиться на действительном решении самой задачи. Я бы хотел отдельно остановиться на очень важном обобщении, которое видел в ваших методических материалах. Надеюсь, это не только психологическая мотивация и позитивная настройка — вы утверждаете, что в Google действительно может попасть практически любой средний по своему уровню подготовки программист. Откуда такая уверенность? Мы дважды тестируем каждого своего студента — по приходе, а также после завершения нашей двухмесячной подготовки. При этом мы уверены, что точно представляем возможности программистов, которые проходят через нас. Если начальные тесты выявляют все слабые места в образовании, наши стандартные курсы с элементами индивидуальной адаптации обучения стремятся их полностью ликвидировать. Если человек не проходит собеседования в Google с первого раза, у нас есть ощутимая скидка для повторной индивидуально-усиленной подготовки. Так вот, исходя из моих давних наблюдений на базе более 500 прошедших через нас людей, я категорично заявляю, что в подавляющем большинстве случаев Google выбирает специалистов из категории крепких середнячков. Иначе говоря, идет отрицательный отбор как самых слабых, так и самых сильных специалистов. Это очень сильное утверждение, можно ли его пояснить дополнительно? Вот для примера: у нас были три сильных программиста, которые набрали максимальное количество баллов по нашей системе тестирования, и я даже пошутил: «Что вам от нас надо, парни?» Двое из них обратились за моей помощью именно потому, что не прошли собеседования в Google во время своего первого захода и хотели сделать повторную попытку, уже используя мои наработки. И даже после дополнительной подготовки, несмотря на все старания с их стороны, поисковая компания отказала им в трудоустройстве. Не могу гарантировать, что у них какой-то внутренний стандарт на сей счет, но для меня очевидно, что они выбраковывают уж слишком выделяющихся личностей. Большинство из тех, кто устроился через нас, — просто хорошие, крепкие специалисты без какой-либо претензии на гениальность. Можно предположить, что таким проще подстроиться под довольно жесткий корпоративный стандарт и общий ритм. Все-таки туда приходят работать не на себя, а на компанию, поэтому безусловная исполнительность и определенная антипассионарность немаловажны для работодателя. Видимо, по этой причине там не очень-то любят бывших стартаперов и просто очень-умныхпарней, у которых своя точка зрения на все на свете и которым всегда есть что сказать менеджеру их проекта, если им что-то не нравится (при этом громко хлопнув дверью напоследок). Кроме широко раскрученных бесплатных кафе, массажей и спортивных залов у таких известных компаний есть и обратная сторона, которая часто остается в тени масс-медиа, — не всегда просто управлять столь интернациональным и разнородным коллективом, где собирается подобная зашкаливающая на квадратный метр офиса плотность из «выдающихся специалистов» и «ярких личностей». Все эти популярные сейчас в Интернете прощальные письма уходящих из Google отдельных VIP-сотрудников — просто отражение той простой мысли, что это идеальная компания для тяжелой командной работы, а вовсе не долгожданная возможность для вашего звездного соло. Кроме того, большая часть работы гуглеров скучна и банальна, и это одна из причин, по которой я лично покинул компанию в свое время. Слушая вашу версию, я вспоминаю, что другой известный специалист по программированию Стив Егги (Steve Yegge), ныне работающий в Google (а до этого успевший поработать в Amazon, Microsoft и Facebook), также рассказывал в своем блоге, что по его опыту у Google самый большой коэффициент отсева из категории наиболее высококвалифицированных специалистов (false negative rate). Кроме того, он вспоминал, что в случае с Google у него было самое сложное трудоустройство из всех, которые он проходил в своей жизни (у него была длинная и чрезвычайно нервная серия из 12 интервью, ожидание результатов которой растянулось на 6 месяцев). Это нормальная ситуация. Если у них есть сомнения или колебания, они будут продолжать зондировать вас до тех пор, пока не будут уверены в своем решении, либо скорее откажут вам сразу. Это известное правило для Google — при малейших сомнениях лучше ошибиться и не взять настоящего профессионала, чем ошибиться и нанять «неправильного человека». Обратная найму процедура увольнения — сложный и долгий процесс, поэтому здесь реализован избыточный подход отбора с некоторым элементом перестраховки. В отношении приведенного вами примера со Стивом Егги — если речь идет о некоей ключевой позиции и дорогом VIP-кандидате под нее, о котором складывается противоречивое мнение, процедура найма может быть действительно очень жесткой и долговременной. Ранее мы уже касались работы с собственным резюме, создания специальных якорей-историй для естественного перехвата инициативы в разговоре, также хотелось бы коснуться вопросов, связанных с поведенческими паттернами, на отработку которых вы тратите приличный кусок времени своих клиентов. Да, я отдельно обращаю на это внимание, потому что технические специалисты склонны зацикливаться лишь непосредственно на своей профессиональной сфере, часто оставляя подобные мотивы без достаточного внимания и проработки, тогда как именно эти моменты будут рассмотрены с высокой степенью вероятности, формируя драгоценное первое впечатление. К примеру, по резюме видно, что вы в течение короткого периода времени сменили несколько работ или, как в моем случае, проработали год в одной крупной известной компании и уволились, — тогда гарантированы расспросы в связи с этим фактом. Нужно быть заранее готовым к подобным предсказуемым ситуациям — вас невольно колупают под углом «что с вами не так». Давайте перечислим типичные вопросы, которые обычно задаются по каждому крупному проекту, в котором вы участвовали (отметили в своем резюме): ? Чему вы научились, работая над ним? (Центральный вопрос, очень популярен.) ? Что было наиболее интересным для вас? (Другой вариант: работа над чем доставляла вам наибольшее удовольствие?) ? Что было наиболее сложным? Чему вы научились на этом примере? Какие уроки усвоили? ? Какая ошибка (баг) вам больше всего запомнилась в этом проекте? (Варианты: решение, ситуация, история и т. д.) ? В чем заключалась ваша стратегия поведения при возникновении личностных конфликтов в коллективе? Все ваши ответы на подобные вопросы должны иметь четкий и ясный смысл. Специфика Google такова, что никто не будет уточнять и переспрашивать, желая конкретизировать, первоначально получив дежурную отговорку. Например, вот типичные неудачные ответы на предложение назвать свои самые слабые места: «Я перфекционист», «Я трудоголик» и т. д. Все это дежурные и уклончивые ответы, не несущие вообще никакой смысловой нагрузки (cop out answers), такие ответы — яркая демонстрация неспособности говорить по существу. На подобные косвенные вопросы, по которым и оценивается ваша личность, всегда важно отвечать максимально честно и прямо, например: «я часто отвлекаюсь на работе», «у меня не хватает самоконтроля, чтобы выполнять все в срок» и т. д. Поймите главное — буквально у всех есть какие-то личные недостатки, и здесь интервьюеру интересен вовсе не ваш «персональный список грехов», но важна ваша демонстрация честности, самокритичности, конструктивная способность признавать свои проблемы, с чем у многих нынешних амбициозных молодых специалистов очень серьезные трудности. Для иллюстрации последнего не удержусь и процитирую одного из менеджеров Амазона, который ясно формулирует эту идею другими словами:

Сейчас, отбирая кандидатов для работы в Амазон, при прочих равных условиях я выберу человека, который хотя бы раз серьезно вляпался в неприятности и самостоятельно выкарабкался, нежели самонадеянного везунчика. Если кандидат утверждает, что никогда не совершал ошибок в прошлом, то для меня это показатель недостаточной зрелости. Те, кто наломал дров, но потом выпутался из сложной ситуации и сделал выводы, вряд ли будут стесняться говорить о прошлых ошибках и уроках. Гордость от того, кем ты стал и чему научился, будет намного перевешивать неловкость от признания самих ошибок.

Как ничего не упустить, не потерять контроль во всех подобных ответах-ситуациях, что важно знать на эту тему поведенческой психологии? Как минимум нужно знать, что существуют базовые паттерны построения красивых и логичных ответов (точно так же, как аналогичные существуют в программировании для структурирования логики кода для разных типовых случаев). Вместо того чтобы каждый раз перегружать себя предварительными размышлениями и ненужными спонтанными реакциями, нужно довести до автоматизма навык правильной и развернутой композиции ответов. Лично я считаю, что для подобного типа поведенческих вопросов идеально подходит шаблон SAR (Situation, Action, Response). Например, когда у вас спрашивают: «Что было самым сложным в вашем последнем проекте?», вы, следуя SAR, сначала описываете возникшую проблемную ситуацию, затем раскрываете суть вашего решения и в заключение описываете конечный результат всех предпринятых вами действий. Иногда в особенно сложных случаях уместно расширить вариант ответа до шаблонов STAR (Situation, Task, Action, Response) или SOARA (Situation, Objective, Action, Results, Aftermath). Это требует предварительных навыков и тренировок, но как результат вы научитесь говорить последовательно, ясно и убедительно. Извините, Джон, но для меня до сих пор кажется непонятным этот сильный акцент Google при найме на нестандартные и заковыристые задачи. Что это, для чего? Мне кажется, если лучше понять их мотивы, будет легче ощутить дух и требования этой великой поисковой компании. Среди ИT-рекрутеров хорошо известен парадокс, часто называемый парадоксом питона (The Python Paradox). Давайте попробуем спроецировать его на ситуацию с программистами, чтобы нагляднее ответить на этот вопрос. Для этого условно выделим в реальной жизни две полярно мотивированные группы программистов. Первая категория — это те, кто учится, чтобы получить в итоге хорошо оплачиваемую и престижную работу, и для этого они автоматически выбирают мейнстрим в своей отрасли, ибо это значительно повышает их шансы на выгодное трудоустройство. Вторая группа — те, кто рассматривает свою работу не с позиции материальной выгоды, но с точки зрения самовыражения или чистого творчества, при этом не боится учиться новому или проводить смелые эксперименты в поисках своего идеала, будучи полностью сосредоточенными на своей текущей задаче. В последнем случае парни полностью отвязаны от жесткой рыночной конъюнктуры, тогда как в первом зациклены на потенциальном вознаграждении. Поэтому в итоге вторые выбирают свои рабочие инструменты/методики по критерию «самое лучшее», что зачастую далеко не «самое выгодное или популярное», как это делают их коллеги-карьеристы из первой категории (универсалыприспособленцы). Итак, парадокс питона гласит, что, учитывая описанную логику и делая ставку на вторую категорию специалистов «не от мира сего», компания получает в свое распоряжение гораздо более качественный и перспективный кадровый состав, более того, уже есть многочисленные практические доказательства и самые неожиданные экспериментальные подтверждения этого. Безусловно, Google лелеет этот принцип при найме специалистов — ранее я уже упоминал, как резко заинтересовались мною интервьюеры, когда я стал рассказывать о своих наработках в функциональном (Haskell и Yesod) и аспектно-ориентированном программировании, а также когда провел разбор проблематики и мифологии объектно-ориентированного программирования. Специально заостряю на этом внимание — я пытаюсь подчеркнуть холодную рациональность, стоящую за подобным эксцентричным и странным, с точки зрения внешнего обывателя, поведением компании. С другой стороны, хотелось бы развеять некоторые откровенные мифы, когда эту специфику чрезмерно гипертрофируют, часто рисуя интервью в Google как сплошной набор невероятных шарад и головоломок. Смею утверждать, что популярная пресса вносит определенную лепту в культивирование этого ложного образа. В качестве наглядного примера: если изучить один из недавних западных бестселлеров на эту тему — книгу Вильяма Паундстоуна (William Poundstone) Are You Smart Enough to Work at Google? Trick Questions, Zen-like Riddles, Insanely Difficult Puzzles, and Other Devious Interviewing Techniques, — может сложиться впечатление, что интервью в Google полностью состоят из шокирующих головоломок, крайне нестандартных и запутанных заданий. Чтобы сразу пояснить, о чем идет речь, приведу типичный образчик оттуда, который, по мнению автора упомянутой книги, один из самых популярных вопросов на собеседовании Google: Оцените количество пользователей Facebook, которые находились в этой социальной сети вчера с 11 до 12 часов (иногда, как вариант, уточняется город, из которого они были).По своему опыту, а также опираясь на нашу огромную эмпирическую базу клиентов, могу категорично утверждать, что процент подобных вопросов не превышает 1–5 % от всех заданий. Кроме того, опираясь на собственный опыт работы в Google, могу выдать инсайдерскую информацию из первых рук — эта практика была явным образом запрещена на уровне Google Hiring Committee примерно с 2005–2006 годов, когда стали активно бороться с подобными модными в то время «фейерверками креативности» со стороны рекрутеров на местах. Чтобы быть до конца понятым, о каком комитете идет речь? А также попутно для пользы дела поясните общий алгоритм принятия решений в исследуемой нами компании. Давайте подробнее остановимся на методике оценки кандидатов и внутренней структуре комиссий по найму в Google. Итак, давайте начнем разбираться с самого начала — кто берет интервью? У технического подразделения Google engineering даже сейчас нет вообще ни одного рядового менеджера по найму! Но эта большая работа вполне успешно выполняется. Как же так? Ответствен за это так называемый технический рекрутер (должность может звучать, например, так: Sr. Technical Recruiter). В подавляющем большинстве случаев он же работает в компании на штатной технической должности, например SRE. По последней причине таких рекрутеров часто именуют инженерами — верны оба определения, не следует здесь путаться. Подобное совмещение повально используется в Google, позволяя проводить по-настоящему глубокие и качественные технические собеседования. Такой инженер, согласившийся на подобную дополнительную работу, проходит специальные внутренние курсы, после чего начинает получать назначения на интервью (тесно связанные с его специализацией и направлением, которое он ведет по основной должности). Это обычно 1–2 собеседования в неделю, чтобы не слишком мешать его основной работе. Вы сказали, что они проходят какие-то курсы. Да, это внутренний профильный тренинг, после чего такому обычному «технарю» дадут право собеседовать. Вот самые общие логические фазы такого обучения. ? Юридическая часть — запрещенные вопросы и темы (то, за что потом на Google могут подать в суд и выиграть). ? Shadowing — пассивное присутствие на реальных интервью, проводимых опытными ведущими. После этого проводятся обсуждение и разбор всех приемов, примененных в прошедшем интервью. ? Методы ведения интервью и инструкции — общая теория. Обсуждение стандартов, приемов и структуры стандартного интервью. Правильные и неправильные подходы, советы. ? Корпоративный стандарт — кого ищет компания? Попытка описать образ «правильного» гуглера-новобранца. И самое главное — по каким косвенным чертам его легко заметить и выделить в общей массе? Тестирование на «гугловость». Хочу отдельно подчеркнуть, что в рамках общих корпоративных стандартов и утвержденной структуры интервью, примерных вопросов и задачек интервьюеру дается достаточно много свободы, чтобы сделать каждое интервью особенным и неповторимым в зависимости от его темперамента и усердия. Отсюда постоянно повторяющиеся вопросы, отдельные «подлянки» и элементы бардака, которые иногда имеют место на интервью в Google, несмотря на все усилия навести порядок со стороны этой огромной компании. Продолжаем погружаться в обозначенную тему — что происходит после того, как они прошли тренинги? Каждый такой рекрутер/инженер по результатам своего личного собеседования с кандидатом пишет персональный отзыв по заданному образцу, это примерно 1–2 страницы формата А4. Здесь больше перечисляются конкретные факты («не смог оценить алгоритм такой-то на сложность, даже после серии подсказок решение не было найдено»), любые личные оценки не приветствуются, хотя и встречаются («отличный общительный парень, с которым я был бы не прочь работать в одной команде»). И как кульминация такого «репорта» — выставляет потенциальному кандидату свою комплексную оценку в диапазоне от 1 до 4 баллов. При этом рейтинг складывается из следующих составляющих (для примера я взял близкую мне должность SWE — разработчик ПО): ? аналитические способности (analytical abilities); ? навыки программирования (coding & design skills); ? опыт работы (professional experience); ? общение (communications skills). По каждому из этих пунктов выставляется максимум 1 балл (могут ставиться дробные оценки меньше единицы, например 0,5), после чего оценка суммируется (очевидно, теоретический максимум — 4 балла). Эта оценка как конечный результат прохождения собеседования должна сохраняться в тайне как от других интервьюеров, так и от самого участника интервью. После чего она представляется на специальном бланке в комиссию по найму (Google Hiring Committee). У этой комиссии есть множество подкомиссий, каждая из которых специализируется на отдельной специальности (например, для администраторов это Site Reliability hiring committee). В нее централизованно стекаются все данные со всех собеседований множества отдельных рекрутеров низшего звена, затем они распределяются по соответствующим подкомиссиям. Я видел у вас подобный бланк, где кроме оценки и всех ее составляющих включается краткий отчет о прошедшем собеседовании. В этой карточке репорт начинался с фразы: «Кандидат очень нервничал, поэтому первые 20 минут я успокаивал его, всячески подбадривал и пытался ввести его в рабочий режим, говоря на нейтральные темы, а также обсуждая его биографию». Жалко, что вы не показали все остальные бланки из тех, что у вас остались на память. (Улыбаясь.) Там примерно одно и то же, поверьте мне на слово. В последнее время такие отчеты чаще всего предоставляются по электронной почте, а затем хранятся для последующего контроля и повторных интервью. Продолжая тему — не нужно сильно бояться какой-то личной неприязни со стороны отдельных интервьюеров или единичных провальных интервью в серии — вам всегда дадут шанс показать себя с разными людьми и в разных темах, после чего все данные постепенно стекутся в комиссию по найму. Каждому рекрутеру дается на составление подробного отчета 2–4 дня, при этом инструкция требует воздерживаться от личных оценок, взамен предоставляя максимальное количество фактов. Эта комиссия — своего рода локальный рекрутинговый штаб, который определяет текущие потребности данного подразделения компании в определенных людях, динамично формулирует критерии под свою рабочую специфику, подбирает наиболее подходящий под должность и особенности каждого кандидата состав интервьюеров, планирует весь процесс найма. А после всех собеседований совместно анализирует и принимает судьбоносные решения по каждой отдельной кандидатуре, чаще всего делается это коллективно в режиме обсуждения. Это второй (после самих собеседований) уровень анализа результатов собеседований (так называемая стадия Executive Review). Как работает этой второй после собеседований уровень отбора? Такие же обычные инженеры-рекрутеры, не участвующие в очных собеседованиях, раз в неделю получают запрос на рассмотрение 5–8 новых кандидатов. В свободное от основной работы время им нужно изучить для каждой полученной кандидатуры: ? резюме; ? все отзывы с его собеседований (которые были составлены и отправлены на предыдущем уровне; обычно от 3 до 8 отзывов в зависимости от количества собеседующих); ? отзыв реферала (если таковой есть). Последний пункт, как понятно, редко встречается. Еще реже он носит действительно содержательный характер. В связи с этим я могу лишь повторно посоветовать: если у вас есть хороший знакомый в Google (на любой ступени карьерной лестницы), с которым вы действительно когда-то работали вместе, и он может написать содержательный фидбек с разбором ваших возможностей и компетенций — воспользуйтесь этим прекрасным случаем. Итак, для каждой изученной кандидатуры пишется «мини-репорт» — попытка сделать выжимку из всего прочитанного со своим личным вердиктом в конце. На самом деле рекрутер редко когда-либо глубокого вчитывается в ворох чужих оценок, чаще всего используются конкретные паттерны-вопросы для сканирования фидбека коллеги-рекрутера, по которым судят об успешности или провальности каждого отдельного интервью. Вот их наиболее типичные примеры: ? Умеет ли кандидат писать быстрый и точный код? ? Насколько быстро и легко кандидат решает задачи из области своей заявленной компетенции? (Подтверждение опыта.) ? Способность быстро находить ошибки, в том числе в своем коде. Адекватность реакции на подсказки и помощь. ? Способность нахождения решения задач за областью комфорта и компетенции кандидата. Степень адаптации в незнакомых областях, уровень креативности. ? Отдельные случаи во время интервью (как правило, все нестандартные и интересные ситуации документируются отдельно). ? Коммуникативные способности и легкость в общении. Соответствие принципам компании и «гугловость». Это типичный каскад ключевых запросов для обязательного выяснения, который может варьироваться в деталях у каждого конкретного рекрутера. Через день или два после рассылки каждой новой «пачки» кандидатов эта группа собирается вместе и, глядя на свои мини-доклады, написанные заранее, последовательно обсуждает каждую кандидатуру, пытаясь выработать единое мнение-консенсус по каждому конкретному испытуемому. Получается, что все устроено так, что люди, которые будут принимать решение, чаще всего не имеют личного контакта с теми, чью судьбу они будут вершить. Также каждый член такого комитета принимает свое личное решение заранее до сбора всех участников группы, фиксируя его в мини-репорте. Повторюсь, что, так же как и армия рядовых рекрутеров-инженеров, рекрутеры из комиссии — это динамическая и открытая структура, которая работает по совместительству. Например, упомянутый мною SRE hiring committee собирается на совещания два раза в неделю, курируя процедуру найма (фактически для своих собственных нужд) параллельно со своей основной работой в компании.Хорошо, абстрагируясь от устройства всей этой системы, давайте подведем промежуточные итоги и выделим коридор результатов, необходимый для получения положительного решения для кандидата. Мне хочется более конкретно понять, как работает эта машина по оценке кандидатов изнутри, каковы критерии отбора? Приведу набор эмпирических фактов. ? Средний балл должен быть обязательно выше 3, иначе, скорее всего, у испытуемого маленькие шансы. Диапазон оценки между 2,9 и 3,2 — это так называемые пограничные кандидаты, вероятно, их судьба будет решаться на дополнительных собеседованиях. ? Каким бы парадоксальным это ни казалось, но слишком высокая оценка, вплотную близкая к максимальной (>3,7), — это также причина для отказа (не буду повторяться, я уже говорил о выбраковке самых лучших). ? Наличие сильной неравномерности в серии оценок, а также сразу несколько диаметрально полярных оценок собеседований (волатильность результатов) — хорошие поводы отклонить кандидатуру. ? Низкие показатели составляющей «communications skills» особенно опасны, независимо от всех остальных оценок они могут привести к отказу. В силу многонационального коллектива и большого количества эмигрантов именно этой оставляющей уделяют отдельное внимание. Дополнительно я бы хотел упомянуть здесь о двух интересных деталях. Если статистический анализ выявляет, что кто-то из рекрутеров постоянно «заваливает кандидатов», это также будет учтено внутри комиссии, автоматически понижая вес его мнения. Вторая крайне важная деталь — молодым в Google дают множество поблажек. Можно воспринимать это как дискриминацию по возрасту, но факт остается фактом: ошибки, которые запросто прощают «интернам» сразу после университета, никогда не простят опытному разработчику со стажем. И наоборот — чем выше ваш возраст, чем выше у вас заявленный опыт — тем более жесткие требования будут предъявляться к вам. Получая молодого специалиста (до 26 лет), компания еще имеет время сформировать его как специалиста, говоря о людях после 35 лет — Google намерена нанимать только состоявшегося и матерого специалиста, и никак иначе. Именно поэтому уровень задач, отношение и сложность вопросов к этим двум возрастным группам заметно различаются. Итак, рассмотрев устройство фильтрующего механизма, мы готовы попытаться учесть его особенности. Поэтому сразу вопрос на засыпку: по вашему мнению, какая из четырех названных компонент суммарной оценки наиболее провальная, согласно сухим отчетам вашей статистики? Не знаю, совпадет ли ответ с вашими ожиданиями, но согласно моим данным, бесспорно лидирует составляющая «Навыки программирования» (coding skills). Это то, что заваливают 7 из 10 проходящих интервью человек. Вторая опасная отметка для иностранного специалиста — «communications skills». Вот на двух этих больных местах я и предлагаю остановиться отдельно. В чем корень столь частых проблем именно в этих сферах? Писали ли вы когда-нибудь программы на клочке бумаги? Есть ли у вас навык быстрого составления алгоритма в стрессовой ситуации, когда за тем, как вы пишете программу, внимательно наблюдают несколько человек? Писали ли вы, комментируя вслух на чужом для себя языке, каждый ход своей мысли? Как насчет опыта олимпиадного программирования и скоростного поиска решений для весьма нестандартных задач? Программировали ли вы после 10-часового перелета (однозначно стоит попробовать), а также знаете ли вы, что такое джетлаг, накрывающий вас на следующий день после перелета? В Google все это неизбежно: во время интервью вам почти наверняка придется писать фрагменты программ, функций или классов на настенной доске (white board), а на стадии телефонного интервью будьте готовы к тому, что вас могут попросить черкануть пару строк кода на Google Docs, иллюстрирующих какую-нибудь концепцию на удобном для вас языке программирования. Вам придется программировать после долгого перелета и смены часовых поясов. Поэтому прямо сейчас возьмите листок бумаги и попробуйте написать небольшую программу без помощи уже привычных подсказок/автодополнений со стороны IDE (например, без столь любимой многими IntelliSense в Visual Studio) — исключительно по памяти. Есть N коробок. Все они открыты. Некий человек последовательно проходит и закрывает каждую вторую коробку. Затем снова проходит по уже каждой третьей коробке и, если она открыта, — опять закрывает, если же закрыта — открывает. Потом повторяет цикл по каждой четвертой, и так до N. Итоговый вопрос: сколько коробок останутся открытыми после окончания прохода? Большинство программистов считают, что это относительно простое задание, поэтому охотно берутся за решение и получают быстрый ответ, но мало кто решает его правильно. После математического подсчета интервьюеры часто просят также смоделировать эту задачу в программном виде (конечно, результаты комбинаторного прогона по конкретным значениям должны совпасть с математической формулой первого ответа). Должен откровенно признаться, что лично я испытывал серьезные затруднения в связи с внезапным обнаружением непредвиденных трудностей по написанию программ на небольших цветных бумажках уже в процессе прохождения интервью. На своей работе мы предоставляем работодателю уже готовый отлаженный и заранее продуманный код, но задумывались ли вы, сколько исправлений и модификаций кода отделяет его первоначальные схематичные наброски от финальной версии? На интервью такого уровня просто не будет времени и возможности набросать черновой вариант и постепенно его доработать под отладчиком — здесь вы пишете код на лету и сразу поясняете алгоритм. Это и станет вашей окончательной версией решения, которую будут оценивать без всякого снисхождения на полевые условия. Подобный режим — это когнитивный диссонанс по отношению к стандартному и неспешному офисному программированию, где мы обычно тщательно продумываем и оптимизируем каждый элемент своего решения в тиши кабинета, пребывая в спокойном сосредоточении тет-а-тет с кодом, так любезно подсвеченным в любимой IDE. Также обращаю внимание: как утверждает статистика, при подобном «спортивном программировании» наиболее распространенный тип ошибки — off-by-one error (OBOE).1 В написании кода важно, чтобы кандидат заметил и исправил свои ошибки самостоятельно. Ошибки, вероятно, будут, но сразу после написания кода его нужно протестировать (в уме) и исправить, этот навык значительно понижает тяжесть вашей вины в глазах ведущего. Это должно стать привычкой и рутинно завершать решение каждой задачи. В связи с упомянутым джетлагом мой вам совет: если место собеседования территориально далеко от вас, лучше прилететь на пару дней раньше, чтобы успеть с дороги выспаться и акклиматизироваться (хотя в этом случае вам, скорее всего, придется оплачивать это дополнительное пребывание из собственного кармана). Впереди предстоит несколько дней интеллектуального марафона и естественная усталость от долгой дороги — не лучший фон для демонстрации ваших пиковых результатов. Второй аспект частых ошибок — лингвистический. Убедитесь в своем произношении. Поверьте, факт того, что вы понимаете, что говорит ваш собеседник, вовсе не означает автоматически, что вас так же хорошо понимают, что ваш акцент не является препятствием для общения. Специфика подобных международных интервью имеет то свойство, что многие участники не являются носителями английского языка, и часто фокусируя все время и силы на технической и содержательной частях интервью, порой игнорируют языковую составляющую. В связи с этим плохое понимание вашей речи может стать вероятной причиной отказа, не забывайте про четвертую компоненту оценки. Попробуйте заранее проверить правильность произношения основной технической терминологии на английском языке. Например, как правильно произносится слово «procedure»? Обратите внимание на правильность ударения. Очень часто обсуждается

1 Распространенный тип логической ошибки в программировании, который чаще всего сводится к недостаточному тестированию граничных условий (значений) программы или функции.тема сложности алгоритма, его асимптотическая оценка и нотация «большое-О», в связи с этим как бы вы произнесли вслух формулу O(log(n))? Следующий важный момент из частых завалов — активное использование адаптивных методик рекрутерами. В самом простом случае это значит, что чем лучше вы будете отвечать, тем более сложные вопросы будете получать в продолжение интервью. Отчасти поэтому непримечательным середнячкам так часто везет в этом увлекательном забеге. Стремление казаться самым крутым не всегда оправданно, если в реальности вы не соответствуете этому уровню. В любом случае очень важны равномерность и последовательность знаний — это не лотерея, здесь не может быть «любимых вопросов», благодаря которым вы рассчитываете блеснуть. Если вы ответили на какой-то вопрос очень сильно, планка сразу поднимается, и дальше вы должны защищать уровень уже более высокого балла. Не стоит писать в своем резюме амбициозных фактов, доказать которые впоследствии вы будете не в состоянии. Повторяю еще раз: гораздо выгоднее произвести впечатление крепкого середнячка, чем неведомого никому гения, который не способен отвечать за свои слова. Покончив с наиболее типичными ошибками, хочется уточнить еще один паттерн. Я слышал, как вы обсуждали со своими курсантами составной допрос — что это значит? Это еще один распространенный паттерн собеседования. Я называю его «составной допрос» (это когда некий теоретический вводный вопрос красиво компонуется с продолжением — практической задачей на его основе). Например, начав обсуждать теорию «Big O notation», после плавно съезжают к обсуждению алгоритма TLS Handshake, который имеет, мягко говоря, много предварительных вычислений. Для интервьюера этот прием — хорошая возможность оценить, насколько у вас большой зазор в понимании между сухой академической теорией и конкретными реализациями на ее основе. Большая проблема и одновременно узкое место нашего современного образования — то, что эти две важные составляющие подчас никак не связаны между собой.Чтобы как-то суммировать этот большой объем информации, давайте перечислим наиболее частые и общие темы на подобных собеседованиях, которыми нужно владеть в обязательном порядке. Нужно хорошо знать хеши, устройство деревьев и графов, главные алгоритмы поиска и сортировок, стандартные структуры данных, основы математики (особенно системы счислений, теорию чисел, основы теории вероятностей и комбинаторику). Кроме того, спецификации основных сетевых протоколов и RFC, работу процессора и памяти, детали TCP/IP и все уровни модели OSI. Для программистов дополнительно — принципы ООП и основные паттерны, теорию работы компиляторов, а также базовые вещи. Пример последнего — очень частый вопрос о расчете времени и эффективности выполнения (Big O notation). Для администраторов — основные API-вызовы операционных систем, то есть вызовы типа fork(), иметь хорошее практическое знание Perl. Кроме того, нужно иметь хотя бы один любимый язык, которым вы владеете очень сильно, вместо десяти языков, на которых решили пару стандартных задач в свободное от работы время (и на основании этого самодовольно поставили птичку в своем резюме напротив их наименований). Как бы ни страшно звучало все перечисленное, требуется знать лишь основы, но знать их нужно уверенно1. Также я хочу коснуться важного момента: требуется понимать то, что было прочитано в различных книгах и интернет-источниках, а не просто механически повторять ранее выученное. К примеру, вот проверочный вопрос из реальной практики собеседований на тему паттернов программирования, который поставил в тупик моего подопечного. Давайте поговорим подробнее об одиночке (singleton). Является ли одиночка паттерном или антипаттерном? Классическая реализация одиночки приводит к невозможности использования модульного тестирования, почему вы тогда относите его к паттернам? Подловить новичка на бездумном повторении книжных истин — это сам по себе «паттерн собеседований» в Google, который без должного

1 Проецируя это на действительность бывшего СССР, необходимые знания математики примерно соответствуют уровню 1–2 курса физмата.уровня осмысления, произносимого порой, ставит кандидата в весьма сложные и неожиданные ситуации. Приведу еще три вопроса-примера в этом же стиле для самоконтроля. Каков физический размер этой Си-структуры в памяти на 32-битовой системе? На 64-битовой? От чего зависит ее размер?    struct foo {      char a;      char* b;    };

Следующий пример — объясните, почему работает такой код:    #include <cstdlib>    #include <iostream>    using namespace std;    int main (int argc, char** argv){      cout<<argv[argc-1]<<endl       <<argc[argv-1]<<endl;      return EXIT_SUCCESS;    }

Третий типичный вопрос на общую сообразительность а-ля Google: Может ли функция возвращать итоговое значение чаще, чем была вызвана?

Хорошо, предположим, мы прошли все испытания и собеседования, отмеренные нам судьбой, и вот мы в ожидании окончательного вердикта. Я знаю, иногда вместо «апрува» присылают некий «Request for evidence». Что это такое и как это влияет на вероятность одобрения? Не нужно паниковать, это стандартная процедура. Какие-то данные из вашего резюме хотят проверить, это лишний повод изначально писать там правду и только правду. Например, если у вас запросили выслать копию диплома — сделайте это. Как правило, это заключительная стадия вашего «апрува», а это значит, что процедура близка к завершению.Впрочем, мне известен по крайней мере один случай, когда в Google отказали человеку, вроде бы успешно прошедшему собеседование, после того как увидели выписку из диплома с его оценками, которую попросили выслать в рамках этой процедуры. Но повторю еще раз: в наше время такие ситуации скорее исключения из правил, качество собеседования, как правило, перевешивает все остальные факторы. Смысл этой истории: не нужно своими громкими утверждениями в резюме привлекать к себе внимание и провоцировать подозрительность. Всегда лучше сосредоточиться на качестве своего кодинга и реальных возможностях/достижениях, нежели на неуемно гипертрофированных фактах своей биографии. Кстати, что насчет выбора языков для кодирования в рамках собеседования как на стадии телефонного интервью, так и на очном собеседовании? Как правило, ведущие рекомендуют самим участникам заранее выбрать наиболее комфортный для себя язык программирования для прохождения всех заданий интервью. Но, конечно, экзотика при этом не всегда приемлема, ведь проводящий интервью также должен владеть этим языком. Здесь нужно иметь в виду, что в самой компании Google основными (стандартными для большинства проектов) являются языки C++/С#, Java и Python — в своем выборе лучше отталкиваться именно от них. И еще: интервью не место для импровизаций, постарайтесь выбрать действительно наиболее знакомый для себя язык программирования. Поверьте мне на слово, это очень важно, даже если он не входит в эту тройку. Я считаю, что выбрать для прокачки в качестве основного языка для интервью лучше Python — основами алгоритмизации легче овладевать на высокоуровневом языке, не отвлекаясь лишний раз на низкоуровневые детали. Опять же, здесь меньше шансов ошибиться в режиме быстрого написания кода… Этот выбор субъективен для каждого. Я бы, наоборот, сделал ставку на С++. Да, он сложнее чем Python, но дает большее понимание того, что именно делает компьютер, когда исполняет твой код. К примеру, за время собеседований я видел много молодых программистов, которые не понимали, как работают указатели, ну а указатель на указатель для таких ребят был просто какой-то трещиной в их вселенной. Потому я считаю, что подобные вещи, характерные именно для С++, стоит разобрать как можно раньше в своей карьере. Как минимум советую сделать это до интервью в Google. (Смеется.) Поймите меня правильно, мне очень нравится Python, но современный программист просто обязан знать несколько мейнстримовых языков. Поэтому считаю, что в вашем случае переход в изучении основного для себя языка в последовательности Python > C\C++\ Java\C# станет для новичка настоящим адом, в то время как естественный апгрейд уровня абстракции C\C++ > Java\C#\Python\Perl будет вызывать приятное чувство типа «о, как тут все просто и понятно». Иными словами, десертом полезней заедать, предварительно отведав первое и второе, а не наоборот (хотя дети будут против такой последовательности и с ними придется долго спорить!). Какой вы можете дать практичный и доступный всем нашим читателям совет, чтобы повысить шансы получить оффер? Есть много способов, например, я уже говорил об институте рефералов. Хороший и неравнодушный к вам реферал — очень важное подспорье. Но не будем повторяться, поэтому предлагаю умышленно расширять базу своей компетенции. Что это значит? Очень часто, когда человек показал средние результаты интервью и в чем-то недотягивает на свою первоначальную позицию, но его потенциал всем очевиден, ему могут предложить альтернативные позиции, перенаправив его заявку к другому рекрутеру (с согласия кандидата). На самом деле всю мою бытность работы рекрутером я всегда ценил стоящих людей, пытаясь дать им второй шанс (и так поступают очень многие в Google), даже если по каким-то причинам кто-то и «закрыт» для текущей позиции. В качестве примера могу привести собственную историю: я сам программист, но меня интересуют Unix-системы в качестве серьезного хобби, что привело к неожиданному встречному предложению (уже в процессе собеседований на должность SWE) — попробовать себя в качестве SRE. Итак, умышленно расширяйте свою область компетенции на уровне резюме, но заклинаю еще раз — избегайте откровенного вранья и приукрашивания фактов своей биографии. Выделите главные навыки в основной блок резюме и отдельно подчеркните, что есть менее освоенные вами темы и специализации, которые, однако, вам очень интересны. Хм, это может привести к тому, что человек попадет на нелюбимую для себя позицию. Стоит ли Google таких жертв? Каждому решать самому, как по мне — стоит. Нужно иметь в виду, что в Google можно поменять проект по своему желанию, причем сделать это крайне радикально, к примеру вместо С++ начать вдруг писать на HTML/JS/CSS. Далее, можно из программиста переделаться в HR или продуктового менеджера (что многие и делают после достижения болезненного для немалого числа программистов возрастного порога в 35–40 лет). Можно переехать в другой офис и страну, подав заявку на подходящие вакансии у соседей, — нет проблем. Вариантов очень много, если речь идет о таком международном гиганте, как Google. Кстати, там существует собственная внутренняя сеть Moma, в которой находятся сведения по всем проектам, их требованиям и вакансиям. Также в ней хранятся цели и задачи каждого сотрудника компании по отдельности, подкрепляющиеся их отчетами и прочей справочной информацией как о людях, так и о проектах. Выбирать новые позиции легко и приятно. Главное — попасть внутрь, после чего все возможности для маневра открыты. Ради этого многие используют гораздо более сложные схемы, чем описанная мною двухходовка. Например, какие? Например, устраиваются в фирмы типа Infosys — это большая фирма«бодишопер», завозящая на американский рынок вагоны дешевых сотрудников по H1B, которые затем работают на рабских условиях (например, по контрактам на внутренний аутсорс, которые заключает Infosys). Из уже изначально невысокой зарплаты Infosys будет забирать еще и свою долю. Хитрость такого «заезда» в том, что потом можно сделать трансфер H1B-визы в другую компанию (это достаточно простая процедура). Очень многие из подобных беглецов изначально метят именно в Google, для которой претендент в качестве президента США имеет гораздо больше проходных шансов на трудоустройство, чем бедолага, живущий за тридевять земель. В таком подходе есть множество других плюсов, которые я не буду перечислять здесь. Кстати, мы обещали вернуться к визам. Настало время сдержать обещание. Говоря кратко, это большая проблема. Для многих виза становится даже большей проблемой, чем само трудоустройство в Google, если речь идет о США. Но давайте попробуем последовательно разобраться, что там к чему. На данный момент1 ситуация такова, что даже наличие оффера и острое желание могущественной компании типа Google взять вас к себе на борт не гарантирует получение рабочей визы. H1B — это сложный вариант, как ни крути. Сейчас на этот тип визы существует квота в 65 000 человек в год, а количество желающих ее получить растет с непропорционально большой скоростью. По сути, вам придется участвовать в лотерее за место в квоте. Например, в 2013 году было подано 120 000 заявок, а в текущем году — уже 170 000. Соответственно, шанс «выиграть визу» в 2013-м был равен 50 %, а в 2014-м — 33 %. Если в этой динамике ничего не изменится, то в 2015 году этот шанс будет составлять 20 %. Весь топ компаний, получающих H1B-визы, создающих это столпотворение и давку, занимают индийские «бодишоперы». Общий вал заявок формируется преимущественно ими. Крупные работодатели, такие как Google, Facebook и Microsoft, очень недовольны данной ситуацией и пытаются лоббировать закон, который поднимет размер квоты для рабочих виз. Правительство США согласно с ними, Обама уже два года обещает провести так называемую иммиграционную реформу, но пока безуспешно. Есть мнение, что до следующих выборов ничего не изменится. На данный момент новые правила H1B — пока открытый вопрос. Впрочем, большие компании, в том числе Google, решают этот больной вопрос с помощью следующего маневра — те, кто не получил визу (большинство), отправляются в их офисы в Канаде или Европе. Там они работают год, а потом приезжают в Штаты по визе L1. Вид

1 Речь идет о первой половине 2014 года.на жительство можно делать и с L1, так что тут все нормально. Единственное «но» — с H1B работу поменять можно, а с L1 — нельзя. Но есть и обратная сторона — супруг(а) держателя визы L1 может работать наравне с ним, а супруг(а) держателя H1B — нет. Следующий этап после попадания в Google для «нуглера»1 — закрепиться в стране. Нужно сразу подаваться на гринкард (GC), что Google делает достаточно эффективно2. По моим оценкам, шанс получить GC при желании и настойчивости (требуются периодический контроль и напоминания юристам, обычно заваленным работой, в которой вы можете просто потеряться) стремится к 90 %. Если фирма не спешит, если весь процесс пустить на самотек, то реально получить ВНЖ примерно за 3 года. Если активно контролировать этот процесс, можно успеть сделать все за 2 года. Подводя итог, можно сказать, что Европа — это черный ход для американской части Google. Не самый плохой вариант какое-то время поработать в европейских отделениях этой компании. Что бы вы сказали об этих филиалах в сравнении с их американскими аналогами? Да, европейские позиции — отличная точка входа в компанию, хотя бы учитывая американские визовые сложности. Что касается сравнения, то я работал в цюрихском отделении Google, равно как и в американских отделениях. Если просуммировать свои субъективные впечатления, то в Калифорнии режим работы намного насыщеннее, чем в том же Цюрихе. Трудоголический менталитет американцев, центральные большие проекты, большое количество местных звезд программирования, на которых можно равняться, а также высокая концентрация выпускников лучших ИT-университетов мира — все это создает определенный климат в американской части Google. По моим ощущениям, Америка дает намного больше (знаний, денег и навыков), но и больше отбирает (времени и сил).

1 От слов new + googler, то есть работник-новичок в Google. 2 Каждого своего работника Google классифицирует как сотрудника с «особыми способностями», что дает ему право на получение вида на жительства в США (green card).В Кремниевой долине царит дух непрерывной работы, в частности офисы Google открыты круглосуточно. Как говорил мой тамошний босс, если вы приходите на работу в 8:00, а уходите в 17:00 — вы не работник HighTech-компании. Можно сказать, что американская часть Google подходит более молодым и амбициозным. В Европе нет такого рвения и напряженности, проекты более простые и монотонные, а жизнь в целом более зарегулированная в пользу обывателя (благодаря тамошним жестким национальным законодательствам). Также я слышал, что европейские отделения Google ценят многие выходцы из Восточной Европы и России, которым оттуда до родных краев лету всего 2–4 часа. Наверное, в качестве компенсации повышенной нагрузке в американской части Google предлагают более высокие зарплаты? Больше, но ненамного. Например, в некоторых других ИT-компаниях возможно резкое увеличение зарплаты сразу на 50 %, быстрый карьерный рост, если вы показываете неординарные результаты. В Google такого бешеного темпа роста зарплат и стремительного продвижения по карьерной лестнице ожидать не стоит. Единомоментное увеличение зарплаты на 10 % здесь считается приличным. Плюсы — у Google есть развитая система бонусов для успешных работников, отличный соцпакет. Несмотря на то что в компании нет жесткого графика работы, есть нормы часов, установленные бессрочным трудовым контрактом. Сверхурочные часы компания не оплачивает. Для Google важно не то, сколько времени вы провели на работе, а каких конечных результатов добились. Последнее — отчасти следствие того, что Google — компания с американскими корнями. А в США принято договариваться о годовой зарплате, а не почасовой ставке (бывают и исключения, к примеру, работа сотрудников службы технической поддержки, которым нужно дежурить в офисе круглосуточно, оплачивается иначе). Желающим в первую очередь хорошо зарабатывать я бы хотел повторить давно очевидную вещь: общая зависимость зарплаты рядового сотрудника от стажа работы в компании весьма слаба. Максимальный доход в долгосрочной перспективе получают вовсе не лояльные сотрудники, но совсем наоборот — те, кто часто меняет работу. Частая смена мест работы в постоянном поиске прибавок и более выигрышных позиций (так называемый сайдшифтинг) — самая выигрышная стратегия, если деньги для вас главное. ИT-компаний в США море, таким образом, методом настойчивого перебора можно найти тех, кто даст столько, сколько надо (нужно учитывать, что многим компаниям нужны специфические скиллы, за которые они готовы платить «top dollar»). O’кей, можно ли, подводя итог, дать максимально общий обзор всей схемы трудоустройства в Google? Сделать финальный обзор всего самого важного с высоты птичьего полета, чтобы этот общий алгоритм предстал перед глазами читателя без ненужной детализации? Итак, сначала идут фильтрация и отбор анкет кандидатов (Recruiter Screen), затем в случае успеха назначается серия телефонных интервью (Phone Screen), возможно, с участием технического специалиста. Если вы проходите и этот предварительный этап, вас приглашают на очное интервью в офис компании (On site interview), полностью оплачивая и организуя ваш визит-путешествие. Как правило, само интервью — это затяжной марафон продолжительностью в день, когда вас интервьюирует последовательно от трех до восьми человек (как правило, технические специалисты), причем каждый задает свой список вопросов и задач. Затем каждый гуглер пишет свой персональный отчет по стандартной форме, в конце которого присваивает вам определенный рейтинг (Interview Feedback). Все эти отчеты постепенно стекаются в комитет по найму (Hiring Committee), где после завершения сбора отзывов на кандидата еще раз суммируются и коллективно обсуждаются рекрутерами комитета (Executive Review). Если вердикт в вашу пользу, готовится заключение от Compensation Committee, где озвучиваются конкретные цифры зарплаты, которые могут быть вам предложены, исходя из ваших результатов и бэкграунда. После этого цикла согласований каждый утвержденный снизу оффер попадает на стол высокопоставленному HR-сотруднику Google, который выносит окончательный вердикт на ваш счет (Final Executive Review), еще раз внимательно просматривая всю историю отзывов о вас и взвешивая значимость аргументов «за». Обычно около 70–80 % предложенных кандидатур утверждаются.На данные три уровня принятия решения уходит довольно много времени, поэтому нужно запастись терпением. В заключение ваш первоначальный рекрутер связывается с вами и сообщает, что вы «не можете быть частью этой команды», либо делает предложение о работе (Job Offer), перечисляя все детали и условия работы в компании, чтобы вы могли принять окончательное решение. Напоминаю, что двумя ключевыми условиями успешного прохождения интервью являются ваша профессиональная подготовка (достаточно среднего алгоритмического уровня и хорошего умения кодировать) и опыт правильного поведения на интервью (дается оценка комфортности общения с кандидатом и его соответствие стандартам инновационной компании — «гугловость»). Впрочем, если быть реалистами, в последние годы довольно легкомысленно тратить дорогое время на поиск сотрудников за рубежом, когда большую часть из них все равно не получится нанять из-за визовых ограничений. Из моего довольно большого круга общения в последние два года лишь единицы приехали в США сразу по «рабочке», поэтому попадание в американский сегмент Google чаще всего превращается как минимум в двухходовку. Самый простой вывод из этого — лучше ориентироваться на европейские офисы компании в качестве точки входа. И все-таки меня, как и любого практика, интересуют шансы — стоит ли инвестировать драгоценное время и силы в подобное трудоустройство? Как говорят американцы: «Сначала покажите деньги». Греет душу, что вы оцениваете шансы середнячка как очень хорошие, но неужели все так просто? Реалистично оценивая шансы и правильно расставляя балансы, следует, конечно, отталкиваться от статистики. Уже упомянутый мною ранее HR-босс Google Бок недавно привел интересные свежие цифры. По его словам, в последний год они получили чуть больше 3 миллионов резюме. Из них были реально наняты 7000 сотрудников (тот же год). То есть величина найма составляет примерно 0,2 %, что означает конкурс приблизительно 428,5 человека на место. Для сравнения: это намного больше, чем в Гарварде или Стэнфорде. С другой стороны, глядя на все с обывательской точки зрения и ежемесячно готовя людей для подобных собеседований, я вижу, что работает принцип «кому очень надо, тот рано или поздно устроится». Мне эта статистика не кажется удручающей, потому что я вижу, что мои знакомые туда как-то устроились (а некоторые успели даже уволиться, найдя место получше или разочаровавшись), я также сам прошел этот путь и не вижу в нем ничего сверхъестественного. К тому же, если глянуть на темпы найма, то хорошо виден разгон — с каждым годом Google нанимает все больше людей, разгоняясь при этом довольно динамично. Дефицит специалистов на рынке очевиден каждому, значительная часть из этих присланных 3 миллионов анкет — это пустышки или анкеты откровенных новичков, склонных к авантюризму. Пытаясь вывести некое руководство к действию, я бы резюмировал положение дел так: если вы уверены в себе как в специалисте, то есть имеете за плечами реальный опыт, а не только самомнение, и переживаете исключительно за факторы везения и удачи (а они, конечно, играют немаловажную роль), имеет смысл попробовать. Если к тому же вы молоды, то попробовать стоит обязательно! В плане денег это не будет стоить ничего, но взамен вы получите бесценный опыт. И если для айтишников-американцев трудоустройство в Google — это просто приятный бонус, то для жителей экономически депрессивных регионов, в частности некоторых стран Восточной Европы и Азии, это может радикально изменить их жизнь. Имея б?ольшие мотивы, они, как правило, прикладывают гораздо большие усилия, что очень хорошо видно по итоговой статистике трудоустройств. (После паузы.) Честно говоря, считаю все, что я посоветовал в этом ответе, отчасти бессмысленным (загадочно улыбается). На самом деле люди, с которыми я работаю, делятся на две противоположные категории. Самооценка одних останавливает и всячески тормозит их, в конечном счете они не сделают даже, как им кажется, одной жалкой попытки (вне зависимости от их объективного уровня подготовки). Другие, что бы я ни бухтел здесь о шансах в 0,2 %, рассуждают про себя примерно так: «О’кей, настало время поразмять мозги, покажу-ка я этим засранцам из Google, как это делается» (опять же, вне зависимости от их реальных способностей). Чаще всего именно эта последняя категория (на пару с госпожой удачей) все и решает. Все остальные просто трезво оценивают свои шансы. Тем не менее есть объективные шансы, чисто математическая вероятность показывает, что… (Перебивает.) Хотите совет не только по Google? В жизни нужно оценивать не абстрактные математические шансы, ведь, несмотря на все ваши «трезвые оценки», туда ежегодно устраиваются толпы, поверьте, вполне заурядных программистов. Черт, с моим подходом что-то не так? Кто все эти люди? (Джон вскакивает, шутя изображая меня, пародируя крайнее недоумение.) (Присаживается и продолжает серьезно.) На самом деле в любом проекте имеет смысл оценивать лишь проходные минимумы. У вас есть английский, у вас есть какой-то опыт, вы уверенно пишете код? — тогда нужно действовать, по возможности не спотыкаясь о свои же дурные мысли. Мяч круглый, игра длится 45 минут — это факты, все остальное — только ваши домыслы и ожидания. Трудитесь, развивайтесь, верьте в себя. Область видимости локальных переменных в вашей жизни ограниченна, вы не можете принять правильное решение в принципе. Поэтому расслабьтесь, у инкапсуляции есть свои плюсы. Лучше сделайте свою часть работы на максимуме, а дальше, как советует инсталлятор Windows, «откиньтесь на спинку кресла и дождитесь результата». Спасибо за хороший критерий принятия решений. В заключительной части интервью не подкинете ли свежих вопросов, которые, я знаю, вы систематически собираете на условиях анонимности из реальных интервью в Google? Вот лишь несколько случайно отобранных вопросов. ? Что лучше использовать при реализации хэш-таблиц: дихотомии или сортировки? ? Почему для сортировки маленьких объемов данных используют алгоритм сортировки вставкой? ? Почему алгоритм сортировки слиянием быстрее других видов сортировки для больших объемов данных? ? Когда и где выгодно использовать связанный список, а когда — обычный динамический массив? ? Пожалуйста, проведите оценочный подсчет примерного количества переключений контекста процессов (context-switch) в течение одной секунды в современной ОС, работающей на процессоре с частотой 2 ГГц. ? В чем принципиальное отличие реализации Сuckoo hashing от стандартных хэш-таблиц? ? Что такое «Cache Hit Rate»? ? У вас есть миллион телефонных номеров. Каждую секунду у вас просят подсказать номер по фамилии абонента. Как бы вы реализовали программную систему для решения этой задачи? Обоснуйте, почему это самое эффективное решение из всех. Очень много заданий построить максимально удобную и продуманную структуру данных (либо структуру классов) к какой-то конкретной задаче/ситуации. Много качественных вопросов (заданий) можно найти в секции «Алгоритмы» известного программистского сайта TopCoder. Все участники этого сайта, имеющие рейтинг «красного цвета», буквально завалены в своих инбоксах предложениями о работе от ведущих ИTкомпаний мира. В завершение этого большого интервью мой финальный вопрос: что советуете отвечать своим клиентам на частый вводный вопрос первичного интервью: «Почему вы хотите работать именно в Google?» Это коварный вопрос, потому что он с двойным дном, и все, что я могу посоветовать вам, это расслабиться и быть самим собой, не соображая при этом лихорадочно, какой же ответ они хотят услышать. Выясните это для себя заранее, для чего соотнесите этот вопрос со списком ваших идеалов и целью в жизни, а потом просто действуйте.

ГЛАВА 9. Чемоданные построения: Blue Card для айтишников

Сегодня у нас интервью, посвященное, по-моему, вечно актуальной теме иммиграции для определенной подгруппы отечественных ИTспециалистов. В отличие от уже истоптанных целыми поколениями путей-дорожек в традиционные страны типа Америки, сегодня мы рассмотрим в качестве целевой страны Германию. Это интервью — попытка получить более подробную информацию из первых рук по заявленной теме. Благо кое-что грандиозное произошло в 2013 году, что сделало именно эту страну чрезвычайно привлекательной для иммиграции или временной работы на ее территории. Речь пойдет, конечно, о весеннем вступлении в силу на территории Германии так называемой Blue Card Directive (вернее, еще большем упрощении этой процедуры). Я хочу сразу отметить, что несмотря на то, что многое из того, что мы здесь обсуждаем, имеет справедливое отношение и к другим европейским странам (Blue Card — общеевропейское детище), я все же старался акцентировать внимание именно на Германии. Сегодня Германия — это безусловный европейский лидер по показателю спроса на людские ресурсы, равно как и европейский рекордсмен по уровню зарплат среди айтишников всех мастей. В силу хронической скудости материалов на русском на тему Blue Card (да и малоизвестности оной в наших краях) я решил внести свою лепту на этой невспаханной пока никем ниве, дабы помочь сделать свой первый и самый сложный шаг тем, для кого это действительно актуально и интересно.* * * Итак, на наши вопросы любезно согласилась ответить Виктория Фераджи, бывший специалист одного из подразделений французской миграционной службы, которая имела отношение к разработке проекта Blue Card Directive, а ныне журналистка и просто очень общительный и доброжелательный человек. Вторая часть материала — многочисленные практические советы и алгоритмы, которые помогут довести задуманное до конца. Это советы реальных айтишников, которые живут и работают в Германии. Я постарался систематизировать их в кратком и максимально информативном виде в конце этого интервью. * * * Что такое Blue Card? Каково ее назначение и история создания? Процедура введения EU Blue Card была запущена Европарламентом в 2007 году. Сначала это был достаточно длительный и осторожный эксперимент на базе Чехии и ряда других стран ЕС, где были предварительно обкатаны все детали этой процедуры. Постепенно список подключаемых к программе стран Евросоюза расширялся, и на данный момент в зону действия «голубой карты» входят следующие страны в алфавитном порядке: Австрия, Бельгия, Болгария, Венгрия, Германия, Греция, Испания, Италия, Кипр, Латвия, Литва, Люксембург, Мальта, Нидерланды, Польша, Португалия, Румыния, Словакия, Словения, Финляндия, Франция, Чехия, Швеция и Эстония. Апофеозом стало недавнее вступление в зону Blue Card Directive Германии как самого востребованного и крупного людского рынка Евросоюза. И хотя в деталях процедура получения карты для каждой конкретной страны может отличаться, в общем все они построены на одних и тех же универсальных для всей Европы принципах. Хочется сразу подчеркнуть: несмотря на то, что идеологическим вдохновителем для этой карты послужила американская Green Card, европейская Blue Card — это не ВНЖ, как в американском варианте, а легальное право жить и работать на территории Европы, но действительна такая карта лишь на время действия вашего контракта плюс 3 месяца (при этом максимальный срок выдачи карты — 4 года). Через какое-то время «жесткой привязки» к стране-работодателю (как правило, это первый год получения BC), обладатель Blue Card получает право свободно перемещаться и трудоустраиваться в рамках всего ЕС. На данный момент выдача этой карты — уже хорошо стандартизированная и относительно простая процедура. И самое важное — право получения карты касается в основном так называемой категории высококвалифицированной рабочей силы (highly qualified specialist, HQS), поэтому для всех других категорий граждан третьих стран эта интересная возможность в большинстве случаев закрыта. Что же касается перспектив на ПМЖ, то эта карта дает право претендовать на него, но не ранее чем через 5 лет после ее получения и постоянного и непрерывного проживания на территории страны — участницы ЕС (добавление от интервьюера: еще одна новая уступка — теперь документы на ПМЖ можно подать после трех лет проживания, а не пяти). Вот минимальные рамочные требования для претендента на эту карту: ? Специальность относится к категории HQS. ? Возраст от 20 лет. ? Доказуемый опыт работы по заявленной специальности не менее 5 лет (иногда формально может не требоваться, но скорее всего понадобится). ? Образование по специальности (высшее образование).

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

 ? Отсутствие судимостей. ? Наличие загранпаспорта. ? Отсутствие предшествующих нарушений иммиграционного законодательства в стране работодателя. Что вы можете сказать конкретно о должностях программистов и системных администраторов в рамках этой новой европейской инициативы? Во-первых, претендующий на Blue Card человек должен, безусловно, относиться к HQS, на привлечение которой и ориентирована в основном данная упрощенная процедура трудоустройства в рамках Blue Card. Во-вторых, HQS делится на две большие группы, в отношении которых действуют немного различающиеся правила. Программисты, системные администраторы и другие ИT-специалисты относятся как раз ко второй группе HQS, главное условие которой для устройства — минимальная зарплата в 35 тысяч евро в год, что для Германии скорее символическое значение, так как местные зарплаты айтишников сейчас там колеблются, как правило, в диапазонах от 40 000 до 100 000 евро в год. Кстати, недавнее апрельское голосование в Бундестаге еще больше упростило эту процедуру, что дает зеленый свет для еще большего увеличения притока ИT-специалистов. Короче говоря, в отношении опытных программистов могу уверенно сказать: теперь все просто — находите работу, подписываете контракт, получаете Blue Card — и добро пожаловать в Европу. Можно все-таки более подробно остановиться на общем алгоритме трудоустройства в рамках Blue Card? Все очень просто. Вы можете сами найти легальную работу любым удобным для вас способом (через Интернет, во время личного визита, через рекрутера, по объявлению и т. д.) либо получить встречное предложение от какой-то фирмы или организации — резидента Евросоюза, как вам будет угодно. После этого вы просите эту фирму отправить на вас заявку по процедуре получения Blue Card в Foreign Workforce Service (SMOE) или Centre for the Registration and Revision of Administrative Forms (CERFA) в зависимости от ситуации. Пакет документов, необходимый в этом случае, стандартизирован, уверена, он уже хорошо знаком кадровым службам очень многих организаций Евросоюза. Кроме того, для кадровых служб и агентств существуют горячие линии и интернет-консультации, где они могут получить всю необходимую информацию по этой процедуре. Таким образом, в идеале лично вам вообще ничего не нужно делать, для вас процедура упрощена до предела — после предложения о работе (и заключенного на его основе контракта) будут запущены автоматические механизмы получения Blue Card. Получив ответ от SMOE, работодатель пригласит вас на работу, вручив при этом вашу Blue Card — вся эта процедура сейчас занимает примерно 2–3 месяца. Еще раз подчеркну, что она ничего не стоит ни вам (поправка от автора интервью: еврочиновник не мелочится насчет таких сумм, как 140 евро единоразово за получение и 100 евро за продление, что действительно сущие копейки по европейским меркам), ни вашему работодателю; все, что нужно для ее инициирования, — это наличие контракта на ваше трудоустройство со стороны юридического лица, являющегося резидентом Евросоюза. Конечно, все сказанное касается лишь списка HQS, куда входит и профессия программиста, во всех остальных случаях эта процедура может быть гораздо более сложной. Если у вас есть серьезные причины делать все самому (например, ваш реальный работодатель ни сном ни духом не ведает об этой процедуре), можно поступить иначе: вы можете самостоятельно направить ходатайство о выдаче «голубой карты» напрямик в департамент по труду и миграции (в разных странах Европы это различные органы, для Германии — Federal Employment Agency), для этого нужно иметь на руках уже заключенный с вами контракт на работу в Европе. И если позволите, я, пользуясь случаем, хотела бы призвать всех потенциальных работников не пользоваться услугами многочисленных сомнительных посредников, которые сейчас вышли на рынок получения Blue Card, — они никак не могут ни ускорить, ни упростить получение этой карты, более того, оплачивая их услуги или предоставляя им полный пакет своих документов, вы во многом рискуете стать объектом мошенничества. Я рекомендую не гнаться за каким-то мнимыми преимуществами, которыми они якобы обладают, и иметь дело непосредственно с вашим работодателем или государственным миграционным органом из страны вашей будущей работы, чтобы избежать проблем в процессе этой процедуры. Кстати говоря, важный вопрос: чем Blue Card в принципе отличается от традиционного разрешения на работу, зачем создана эта новая правовая сущность? Это действительно оправданный вопрос. Я попытаюсь ответить на него максимально кратко, опуская множественные юридические детали. Итак, главное отличие в том, что стандартное разрешение для работы нерезидента было реализовано еще в те годы, когда все государства — участники Евросоюза существовали отдельно друга от друга. Естественно, это было сделано на уровне местных национальных законодательств, при этом во многих странах для этого требуется множество своих специфических критериев. В нынешних условиях существования Евросоюза как единого экономического пространства для всех этих стран появилась нужда максимально синхронизировать и обновить все эти условия, свести их к какому-то единому набору разумных и универсальных требований. При этом было важно сбалансировать их под требования именно сегодняшнего дня, в частности, под требования сегодняшнего законодательства Евросоюза и тренды его экономико-демографического развития. Еще одна важная черта — создан единый механизм гибкого и быстрого обновления требований для соискателей карты самых разных профессий, что позволяет решать вопросы по наиболее чувствительным отраслям очень быстро, избегая сложных бюрократических процедур многоуровневых внутринациональных согласований этих новых условий для каждой отдельной страны — члена Евросоюза. Резюмируя: имея Blue Card, вы можете работать на территории всех стран Евросоюза, свободно перемещаться в его пределах, при этом получить такое разрешение можно единообразным способом в любой стране — члене этого экономического союза. У традиционной процедуры получения права на работу в конкретной стране Евросоюза все эти три составляющие не всегда гарантируются или соблюдаются. Кроме того, традиционная процедура получения ВНЖ существенно более сложная и продолжительная по времени, нежели Blue Card. В связи с этим приведу только два примера: обладатель Blue Card в Германии не должен подтверждать основы знания немецкого языка, а члены его семьи автоматически получают право на работу в Германии, в случае же получения традиционного ВНЖ дела с этими двумя факторами обстоят гораздо более сложно. Что вы можете сказать о защите Blue Card? К примеру, американский аналог Green Card продают (изготавливают под заказ) на черном рынке в течение двух-трех дней, при этом такая подделка включает голографическую фотографию и магнитную полосу в точности как на оригинале; их предлагают в пригородах того же Нью-Йорка практически открыто. Я знаю, что, используя такую поддельную карту, в США смогло натурализоваться огромное количество народа. Не случится ли такая же история и с Blue Card? Я понимаю, о чем вы говорите, и разделяю вашу озабоченность. Конечно, я не могу сейчас говорить обо всех технических подробностях защиты Blue Card, но хочу вас уверить в том, что защита последней очень серьезная. Мы изначально исходили из того, что эта карта вводится в оборот в XXI веке, и поэтому защищена она должна быть соответственно. Кроме того, хочу отметить, что кроме непосредственно защиты самой карты уже создана единая электронная система по проверке подлинности носителя любого экземпляра Blue Card, поэтому отчасти даже качественная подделка при таком устройстве системы становится бессмысленной и выявляется при первой же незаконной попытке воспользоваться данным поддельным документом. Какова популярность Blue Card? В частности, мне интересны цифры по отношению к странам Восточной Европы и России, если можно. У меня нет на данный момент точных и актуальных цифр, так как я уже не работаю в этой системе, но могу вас уверить, что количество айтишников из России и Украины, получающих Blue Card именно в Германии, достаточно заметная величина, и это количество увеличивается с каждым годом. Заканчивая наш разговор и выходя за рамки исходной темы, хочется спросить вас, Виктория, а как вы сами относитесь к эмиграции? В России у старших поколений принято считать эмигрантов своего рода предателями и изменниками Родины, которые позорно бежали от бытовых трудностей в более передовые и сытые страны, вместо того чтобы честно потратить остаток своей жизни на развитие своей страны. Я не вижу здесь никакой проблемы. Сама я родилась в США, где выросла и училась, затем переехала во Францию, где работаю уже долгое время, сначала получив здесь вид на жительство, а потом новое гражданство и профильное образование. Потом мне очень понравилась экзотическая Африка, где я в итоге купила небольшой домик, получив вскоре после этого вид на жительство в одной из тамошних вечно жарких стран. Я провожу там, как правило, пару зимних месяцев, чтобы, отдохнув и набравшись сил, снова броситься в пекло европейского темпа жизни. Что касается упомянутого вами восточно-европейского менталитета, могу лишь сказать, что жители западных стран бесконечно далеки от такого восприятия жизни. Я не зря описала свои собственные перипетии и множественные виды на жительства, и если вы спросите меня «почему» или «чего ради» все эти переезды — я вам отвечу просто: мне здесь нравится жить в данный момент времени. Это мой субъективный интерес и предпочтение, на которые я, взрослый человек, безусловно, имею право. Более серьезный ответ на этот вопрос выходит далеко за рамки нескольких реплик, но исходной для понимания является позиция: живет ли твое государство ради человека, честно конкурируя во всем с другими государствами за то, чтобы быть еще более привлекательным в глазах своего гражданина, либо, наоборот, государство считает, что его гражданин — личная собственность, которая должна жить и умереть лишь ради его системных интересов. Понятно, в итоге это приводит к трагедии отдельной личности и краху целых поколений (тяжело говорить об этой теме применительно именно к Германии, в которой у меня очень много друзей).Все как в примере с родителями и их детьми — рано или поздно дети вырастают (или не вырастают никогда при соответствующем воспитании) и начинают жить отдельно и принимать самостоятельные решения. Даже несмотря на все то хорошее, что когда-то для них сделали их родители, они порой уходят. Нужно суметь признать за ними это право. Только по-настоящему взрослое и свободное государство способно признать таковыми и своих граждан. Попытка доминирования родителей с позиций «мы сами знаем, как будет для тебя лучше» или «теперь ты нам обязан по гроб жизни» недальновидна и ведет к деградации прежде всего самой семьи/страны в долгосрочной перспективе.

Подводя итоги

Итак, попробуем суммировать и дополнить сказанное — что же такое Blue Card сегодня: ? это специализированная программа трудоустройства существенно упрощает получение рабочих виз для ряда стран ЕС; ? каждая страна ЕС, которая участвует в этой программе, может иметь свои специфические требования для кандидатов; ? Blue Card ориентирована на высококвалифицированных рабочих и специалистов в отраслях ЕС, которые испытывают нехватку кадров; ? сегодня наибольшие шансы получить Blue Card у айтишников, врачей и инженеров; ? обладатель Blue Card имеет право работать в другой стране, которая тоже участвует в этой программе, но для начала ему необходимо отработать год-полтора в стране, которая выдала карту; ? если один из членов семьи получил Blue Card, его супруг (в общем случае) получает разрешение на работу без привязки к работодателю и сфере деятельности; ? в большинстве случаев через 33 месяца после работы по программе Blue Card вы сможете получить обычный вид на ПМЖ; ? если вы знаете немецкий на уровне B1, то ПМЖ в Германии дадут уже через 21 месяц работы по Blue Card; ? в последнем случае супругу обладателя Blue Card даже не требуется знать немецкий язык, но реальная жизнь говорит о том, что работники посольства с этим могут быть не согласны, так что супругу вполне может понадобиться сертификат о том, что он знает немецкий на уровне А1 (самый низкий уровень); ? чаще всего для того, чтобы получить Blue Card, нужно иметь на руках контракт от местного работодателя с зарплатой не ниже определенной планки, а также нотариально подтвержденное высшее образование в соответствующей сфере.

Краткий алгоритм действий Теперь самые общие советы о том, как искать работу, на примере Германии. Прежде всего нужно знать, что когда отправляют свое резюме работодателю, здесь чаще всего шлют следующие три документа. 1. Bewerbungsschreiben (англ. Cover Letter) — мотивационное письмо, где вы вкратце пишете, чем вас заинтересовала компания, какую должность хотите и почему они должны взять именно вас (один файл на одну страницу). 2. Lebenslauf (англ. — CV) — собственно резюме (тоже один файл, на 1–3 страницы). 3. Zeugnis (англ. — Certificate, Reference) — документы, свидетельствующие о вашем образовании и опыте, отзывы с прошлой работы (отдельные файлы с переводом дипломов и отзывами). Первое в списке — мотивационное письмо — пишется индивидуально для каждой отдельной компании в рассылке, при этом нужно попытаться кратко спроецировать свои способности и опыт на конкретные потребности конкретной компании. Последний пункт — документы, свидетельствующие о вашем образовании и опыте, отзывы с прошлой работы — заверяется переводами: немцы очень щепетильны, поэтому лучше сразу сделать это максимально тщательно и солидно (составить апостиль, то есть перевести все на немецкий язык и нотариально заверить в самой Германии). Ту же операцию (апостиль) нужно сделать и со свидетельством о браке (это понадобится далее). В отдельных случаях на наиболее востребованные позиции подлинность иностранных аттестата и диплома нужно предварительно подтвердить отправкой их в отдел BAMF (министерство по миграционной политике) той федеральной земли, в которой находится работодатель. Проверить свой диплом или аттестат самостоятельно можно через систему Anabin1, статус вашего учебного заведения должен быть H+, в крайнем случае H+–. Еще раз повторюсь, что многие конторы принимают и неподтвержденные отделом BAMF дипломы, поэтому уточняйте у вашего работодателя. Все документы и резюме должны быть представлены потенциальному работодателю в формате PDF. Если вы не знаете немецкий и рассчитываете работать в ИT-компании, где говорят по-английски (а таких примерно 15 % на немецком рынке), можете спокойно слать документы и на английском. Очень распространен некий промежуточный вариант: в компании большинство немцы, поэтому между собой они говорят на немецком, но при служебных обсуждениях и митингах, в документации или при личном разговоре спокойно переходят на английский. ИТ в современной Германии — чаще всего «активная двуязычная среда». Отсюда сразу следует ответ на популярный у русских вопрос — можно ли обойтись в германском ИТ лишь английским без знания немецкого языка? Ответ: да, если очень постараться, то можно. Но если вы знаете немецкий, ваши шансы найти хорошую работу резко увеличиваются прямо пропорционально уровню владения немецким. Откуда начать поиск работы? Про сеть Linkedin знают почти все. Но не все знают про ее аналог www.xing.com, который широко используется в Германии. Кроме этих двух сайтов, можно также зарегистрироваться и искать вакансии через www.monster.de или www.stepstone. de. В ЕС есть множество местных национальных сайтов для поиска работы в области ИТ, вот пример2 их хорошей подборки. 1 http://anabin.kmk.org/no_cache/filter/institutionen.html 2 http://geektimes.ru/post/244306/Если вами кто-то заинтересуется (не пропустите его в тоннах вежливых отказов), вам будет назначено удаленное интервью по скайпу или телефону, как правило, оно и станет для вас решающим. Если вы плохо знаете немецкий, но у вас хороший английский, можно в самом начале интервью (сразу после приветствий) вежливо извиниться, объяснить, что, несмотря на то что учите немецкий язык, сейчас для вас пока сложно на нем объясняться в технической области и поэтому просите провести интервью на английском. Обычно большинство интервьюеров соглашаются. Повторюсь, что таким образом найти работодателя можно полностью удаленно — при должном усердии и уровне квалификации. Ладно, предположим, что работодатель уже найден, а официальное предложение о работе получено. Теперь осталось дождаться, пока придет бумажная версия контракта (обычно высылается на ваш домашний адрес, например в России), подписать ее и идти в посольство Германии за визой, величественно сотрясая воздух оригиналом контракта. Вначале посольство дает трехмесячную национальную визу с целью трудоустройства. Эти три месяца вам даются на то, чтобы вы обосновались в новом городе, сняли квартиру, прописались в ней и уже в Германии (по прибытии и вселении) самостоятельно подали документы на Blue Card (иногда ваша работа может помочь в этом). Кстати, для съема квартир существует большое количество сайтов и сервисов, сделать это можно удаленно накануне отъезда. Теперь, имея прописку и контракт, вы можете подавать документы на Blue Card в вашем местном АБХ (ведомстве по делам иностранцев в Германии). Предварительно нужно забронировать дату подачи документов (называется «терм?ин»), и это можно сделать через их сайт. Кроме всех перечисленных документов для запуска процедуры вам также понадобится медицинская страховка (оформленная в понравившейся Krankenkasse, по этому поводу советую предварительно пообщаться с вашим работодателем).

Дополнительные практические рекомендации Далее привожу советы бывалого программиста и нашего бывшего соотечественника, уже давно живущего в Германии. Я структурировал его длинное интервью, чтобы сделать формат более практичным и кратким. Эти советы рассчитаны прежде всего на семейных, а также на тех, кто устроился в области ИТ, а значит, хорошо зарабатывает. ? Самый идеальный вариант переезда — если вы уже когда-то работали на немецкую фирму или были там в командировках, значит, уже имеете минимум нужных контактов и общее объективное представление о здешней среде. Если нет — съездите сначала пожить на месяц вместо отпуска, присмотритесь и оглядитесь. ? Здесь очень ценятся цойгнисы от ваших предыдущих или текущего работодателей. Если работали с евро- или американскими партнерами, особенно если это фирма с именем, обязательно попросите тамошнего руководителя или менеджера или просто контактное лицо написать вам Reference Letter с такого места работы. Специфика здесь в том, что все цойгнисы, полученные от немецких фирм, часто тщательно проверяют. Дело в том, что в силу высокотолерантной среды они никогда не будут негативными, а весь негатив, если он есть, кроется во внешне положительных фразах (это специфический бюрократический инояз со шлейфом едва заметных намеков). Поэтому тут не все так просто, будут дополнительно пробивать, что вы за птица. ? В большинстве немецких фирм ваше резюме на английском сразу отправится в мусорное ведро. И еще — в Германии принято в своем Lebenslauf вставить фотку с улыбающейся и довольной жизнью рожей. В резюме давайте побольше конкретики — обязательно перечислите свои значимые проекты с использованными технологиями. ? Дойч, дойч и еще раз дойч — многие немцы отлично говорят на английском, но не путайте туризм с проживанием. Без немецкого языка вам будет очень напряжно, поверьте. Если нацелены всерьез, начинайте сразу вкладывать деньги в индивидуальные занятия с толковым репетитором. Несмотря на то что здесь во многих ИT-фирмах все общаются на английском, так как часто команда сборная, вам все равно придется общаться с чиновниками при натурализации, искать квартиру, общаться с людьми на улицах и в магазинах и много чего еще. Не говоря про то, что в повседневной жизни плохое знание языка это уже изоляция (это не турпоездка, я повторяюсь), и фирм в Германии, в которых можно нормально общаться на английском, немного. Да, можно найти работу и без немецкого, но доступные предложения скукожатся раз этак в десять. Можно учить язык и на месте: тут есть курсы по немецкому, при этом их можно пройти практически бесплатно (правда, и качество соответствующее, но есть и приличные коммерческие курсы). Уже на месте лучше всего взять короткий, но интенсивный курс, в идеале это один на один с преподавателем, остальное действительно приложится. ? По возможности не надо при таком переезде сжигать мосты — с готовностью вернуться вам в Германии будет спокойнее, да и даже через несколько лет вы сможете вдруг передумать. Такое случается, поверьте, при этом даже во внешне успешных случаях. ? Рассматривайте предложения с зарплатой только от 4000 евро брутто (грязными) в месяц. Вы же не нищебродствовать сюда едете! Ваши будущие зарплаты чистыми здесь на собеседованиях обсуждать с работодателем не принято, учтите это заранее. ? Постарайтесь как можно больше заранее узнать о фирме — после заключения контракта вы будете от нее очень сильно зависимы. Также совет аналогичный, как и для Америки, — избегайте фирм с нашими русскими товарищами — здесь очень даже возможно кидалово. Общее мнение об айтишниках — денег у них куры не клюют, поэтому формируется соответствующее отношение. ? Специфика работы по всей Германии: Франкфурт — банки, Кёльн — мультимедиа, Мюнхен, Штуттгарт — автостроение, Нюрнберг — индустриальный локомотив, Ингольштадт — «Ауди», Берлин — столица, Бодензее — аэрокосмическая промышленность, и т. д. Мало работы и меньше всего платят в Восточных землях. ? Жилье: стоимость проживание в немецких городах сильно разнится. Самые дорогие — Гамбург и Мюнхен. Дорого также во Франкфурте и Кёльне. Несколько дешевле в Нюрнберге. ? Для поиска жилья я использовал замечательный сервис www. immo bilienscout24.de — крайне рекомендую, очень удобно искать, есть фото, контакты. Есть особенность — если объявление через агентство — они берут provision, что в районе 1000–1500 евро за квартиру плюс владельцу потребуется заплатить три месячных kaltmeter (залога) за квартиру (эта сумма возвращается после того, как вы съезжаете). Некоторые работодатели оплачивают provision из своего кармана, лучше это обсудить с ними заранее, также есть объявления напрямую от владельцев квартир, там часто указано provision free. ? В любом большом городе есть неблагополучные районы (чего греха таить, населенные доверху турками и южными друзьями). Вашей семье такие соседи точно не подойдут. Лучше переплатить и иметь хороших соседей (желательно тоже с детьми, тоже образованных), чем асоциалов (их в Германии сейчас хватает). В любом случае, когда будете осматривать жилье, обратите внимание на почтовые ящики. Немцы там пишут не номера квартир, а фамилии жильцов. Если большинство фамилий немецкие — это хорошо, если много ненемецких, лучше подыскать другой вариант. В итоге дешевле для здоровья выйдет. ? Наличие знакомых и родственников — большой жирный плюс, но не преувеличивайте их возможности в помощи вам (здесь это не принято). ? Blue Card формально позволяет проводить воссоединение семьи, но для разрешения на это воссоединение требуется наличие жилья с 12 квадратными метрами на каждый нос. Реально такие большие площади семьям не сдают. Если вас четверо, смотрите предложения на 90 квадратных метров и больше. ? Рассчитывайте отдавать до 1000 евро за жилье со всеми сопутствующими платежами (в Мюнхене и Гамбурге, возможно, еще больше). Хотя я и снимал во Франкфурте неплохую двухкомнатную квартиру 65 квадратных метров в трехэтажном доме всего за 650 евро в месяц в Preungsheim. Но это мне просто так повезло, а нужно реально рассчитывать на сумму около 800–1000 евро за приличные апартаменты, за 1000 — это должно быть весьма хорошее жилье или близко к центру. Близость к центру, кстати, удовольствие сомнительное — мне было не тяжело проехать на U-Bahn 15 минут, но зато жить в спокойном месте. ? В городах, где много населения и работы, желательно выделить месяц-другой на активный поиск приемлемого варианта. Наличие у вас денежных сбережений и резерва на черный день позволит смотреть на ситуацию с б?ольшим оптимизмом и не спешить, спокойно подбирая лучшее для вас и более выгодное предложение.

Учеба и работа Если говорить о молодых людях, для более комфортной эмиграции они часто выбирают вариант учебы, иногда совмещаемой с работой. Интересно, что направление ИТ — одно из самых востребованных образовательных направлений в Германии. Хорошие зарплаты айтишников подстегивают спрос на соответствующее профильное образование, которое сейчас переживает настоящий бум в Германии и Евросоюзе в целом. Логично, что качественное немецкое ИТ-образование радикально повышает качество последующего трудоустройства, углубляет общий уровень интеграции в общество. Я решил написать очень краткую заметку об этом варианте, так как вслед за введением Blue Card в Германии произошло еще одно долгожданное нововведение. Дело в том, что начиная с нового учебного года 2014/2015 высшее образование в Германии стало полностью бесплатным на всей территории страны. Последней из семи федеральных земель об отмене платы за обучение распорядилась Нижняя Саксония в декабре 2013 года. Впрочем, для нас эту новость делает важным другое. Эти правила распространяются в том числе и на иностранных студентов. Местные студенты уже рассказывают, что первыми отреагировали и ломанулись в Германию американцы, стоимость высшего образования для которых — давно одна из национальных проблем. Тем не менее, несмотря на положительную в целом новость, в этом событии есть чрезвычайно важные детали, о которых я и спешу сообщить: ? В большинстве случаев требуется хорошее знание немецкого языка . Впрочем, есть вариант в виде обучения на английском — и в этом случае выбор университетов достаточно широк. Но нужно быть внимательными и уточнять все заранее. Дело в том, что иногда на сайте университета программа может числиться англоязычной, но на самом деле в ней будут обязательные курсы, которые преподаются только на немецком. ? Нужно подтверждение доходов (на что собираетесь жить во время всего срока учебы?). Важно заранее понимать, что жить в Германии — удовольствие не из дешевых. Поэтому в качестве гарантии обычно требуется 8000 евро на вашем счету. Эти деньги должны быть начислены на блокированный счет в немецком банке (вы можете снять оттуда только 650 евро в месяц). На них вы теоретически должны жить первый год (теоретически, потому что некоторые студенты берут эти деньги в кредит и впоследствии гасят его этими месячными порциями). При соблюдении этого условия учебная виза выдается вам на два года, после чего, если вы еще учитесь, при продлении визы нужно будет снова доказать, что вам есть на что жить. Для этого может сгодиться уже и подработка (например, прямо в университете), если вы не теряли на протяжении этих двух лет времени даром. Например, ассистент лаборатории может получать до 700 евро чистыми. Это небольшие деньги, но их хватает, чтобы скромно дожить до окончания учебы в университете. Как более экзотическая альтернатива взносу в 8000 евро или стипендии — официальная помощь родителей или поручительство гражданина Германии (либо комбинация любого из трех способов, например небольшая стипендия и счет в банке до нужной суммы). ? Возраст — не помеха, ведь средний возраст студента в Германии (выпускника) — 28 лет. Там нет ограничений по возрасту, и довольно много студентов, которым за тридцать. Отношение к ним совершенно обычное и будничное. ? Очень плотный темп обучения . Немцы считают, что готовиться к экзамену нужно за 3–4 недели, а не за 1 день, поэтому не удивляйтесь, что сессия у вас будет длиной в пару недель с экзаменами почти каждый день. Это вам не российский вуз. ? Подавать документы нужно заранее — за 2–4 месяца до начала семестра (в Германии это начало марта и начало октября). ? Бесплатно — только первое высшее образование . Если у вас уже есть высшее образование в России и оно будет признано в Германии, то учеба для вас будет платной. ? Впрочем, оплату можно переложить и на государство . Дело в том, что в РФ действуют социальные программы, спонсирующие граждан РФ, которые успешно поступили в престижные зарубежные вузы мира (есть утвержденный список) с жестким условием вашего возврата на родину после окончания учебы. Задумайтесь — если намерение эмиграции у вас серьезное, то, быть может, проще начать именно с учебы за рубежом, а не сразу с работы? Кроме того, вы получите драгоценное время и навыки для адаптации к малознакомой среде. При наличии на руках немецкого диплома и базовых языковых и культурных навыков, перед вами открываются множество альтернативных вариантов для ПМЖ, а не только один лишь вариант с Blue Card.

Вместо заключения И в завершение еще одна неформальная попытка ответа на вопрос: зачем же эта «голубая карта» вообще нужна, если можно было и раньше, имея на руках контракт, получать рабочую визу в общем режиме? И хотя в приведенном интервью Виктория пытается дать краткий ответ на этот принципиальный вопрос, попробую все-таки прояснить своими словами, в чем здесь вся соль, но немного с другой точки зрения. Говоря очень кратко, с Blue Card эта процедура в разы проще, причем для всех сразу. По «просто инвитейшин от конторы» получить рабочую визу в Германии, вообще говоря, чрезвычайно сложно. Ибо согласно параграфу 18 пункту 2 эмиграционного закона Германии работодатель должен получить от ведомства по труду и миграционной политике разрешение на вашу работу, а для этого сначала он должен продемонстрировать, что он долго и настырно искал на ваше место «чистокровного арийца», но так и не нашел. Эта тягомотина занимает недели и даже месяцы, у многих отбивая вообще охоту связываться с этим. В лучшем случае, если у вас есть специальное межправительственное соглашение или вы уникальный специалист и едете работать на ускорителе в Гамбург по приглашению правительства, то эта процедура персонально для вас упрощается, но в общем случае для обычного человека это геморрой тот еще. Кроме того, насколько я знаю, консульство или посольство за границей не выдает рабочие визы. Вы получаете временную визу (на которой написано Visum — я уж не помню, какая там категория, кажется, D) на въезд в Германию, затем уже в Германии вы идете в ведомство по делам иностранцев. И вот там вам в паспорт вклеивают другую бумажку, на первой страничке которой написано «Aufenthaltstitel», а на второй страничке написано, что «вы можете работать в Германии» (и где, если есть ограничения). В случае вероятной неудачи (здесь много тонкостей) это превратится просто в обычную туристическую поездку, и вы вернетесь несолоно хлебавши.

Часть III .  Айтишные истории

ГЛАВА 10. История одного программиста: ruby «rock star» мистер _why

Каждый день мы приходим на свое рабочее место, выполняя какуюто работу, получая в конце месяца за нее деньги. Все повторяется и на следующий месяц, дни рождения мелькают подобно красивым видам в движущемся на полном ходу поезде-жизни. Задумаемся, отличается ли профессия программиста хоть чем-то от тысяч других профессий? Я смотрю на очередного молодого программиста, сидящего передо мной на собеседовании и агрессивно набивающего себе цену, и думаю: является ли программирование ремеслом или просто способом физически выжить? Это то, что делают лишь за деньги, или оно достойно чего-то большего? Может, это просто технология и хорошо известные алгоритмы, тщательно подобранные паттерны, которые гарантируют хорошие результаты при их понимании и выполнении, где можно расслабиться, доверившись сияющим святостью авторитетам, чтобы впредь самостоятельно не размышлять, предавшись порочной жажде поиска? Либо здесь есть место для неопределенности и вдохновения? Встречаются ли здесь моменты ярких открытий, зовет ли порой жажда поиска нового, и если это так — то где обитают музы программиста? А может, программирование и вовсе некое иррациональное искусство, подобное листингам программ на brainfuck, или даже отдельное направление науки? Наверное, для каждого это что-то свое... Сегодня я расскажу историю короткой жизни программиста, который считал себя артистом, а жизнь — невероятной программой-приключением и который сумел изменить своим примером отношение к жизни у тысячи своих коллег.

* * * Начать свой рассказ, должен признаться, мне тяжело — я просто не знаю, как представить вам нашего сегодняшнего героя. В Сети все его знали под ником «why the lucky stiff» (или просто _why), и это все, что нам известно о нем. Кем он работал? На всех ИТ-конференциях он представлялся неизменно «freelance professor». Несмотря на многочисленные публичные предложения крупнейших мировых компаний и проектов работать на них, в офисе он не проработал ни дня — он всегда откровенно признавался, что у него нет даже номера social security. Пенсионный фонд нашел бы его жалким типом...

Знакомство Мистер _why — это второй человек в мировом сообществе разработчиков Ruby. Доподлинно о нем известно только одно: какой бы самый коварный вопрос ни возникал в списках рассылки сообщества, обстоятельный ответ _why всегда гарантированно закрывал любую проблемную дискуссию. Этим, а также своей фантастической производительностью и неподражаемым вкусом _why заработал славу одного из самых сильных и ярких экспертов в мире Ruby. Конечно, он блистательный программист. Но не только. Например, иллюстрации ко всем своим книгам создатель языка Ruby Юкихиро Мацумото доверял лишь _why — он чертовски классный художник-график (кстати, именно он создал новый комикс-стиль, посвященный Ruby). У него была своя музыкальная группа, каждый вечер за электрогитарой и у микрофона — звезда своего небольшого городка. Интерес к музыке выливался и в программирование, например он создатель музыкальной библиотеки к Ruby bloopsaphone, которая позволяет проигрывать простенькие мелодии, вот, например, мелодия музыкальной заставки мультфильма Simpson: require 'Rubygems' require 'bloops' b = Bloops.newb.tempo = 180 sound = b.sound Bloops::SQUARE sound.volume = 0.4 sound.sustain = 0.3 sound.attack = 0.1 sound.decay = 0.3 b.tune sound, "32 + C E F# 8:A G E C — 8:A 8:F# 8:F# 8:F# 2:G" b.play sleep 1 while !b.stopped? Несмотря на полную анонимность, _why собирал полные залы на свои редкие выступления-лекции по программированию — в зале было невозможно протиснуться, потому что люди сидели везде и слушали его, затаив дыхание. Он отличный оратор и при этом замечательный писатель, который писал примерно в таком же стиле, в каком и жил. За свою короткую жизнь он написал лишь две книги, и обе книги были, конечно же, о Ruby.

(poignant) Guide to Ruby В подзаголовок вынесено название самой известной книги, написанной _why. Иногда ее обозначают как (p)GtR или просто «the poignant guide»1 — это одно и то же. Это учебник для новичка — своего рода введение в язык Ruby, но не только в его, скажем так, внешнюю техническую суть и командный синтаксис, но и очень эффектная попытка передать его философию и дух. Чтобы сразу уйти от бесполезных дискуссий по поводу ее гениальности (или убожества, по мнению других), просто подчеркну то, с чем согласны все: книга не такая, как все. Она не похожа на то, что вы читали ранее. Для начала очертим тот широкий диапазон оценок, что она получила: от зашкаливающих восторгов типа «одна из самых лучших книг по программированию» (от Джоела Спольского), до гневных проклятий: «Да это же просто издевательство какое-то над читателем!» — от одного дедушки-редактора крупного американского издательства, где ее однажды попытались издать.

1 Дословно «душевное руководство».

Понятно, отчего профессиональный издатель приходит в бешенство: книга написана в таком стиле, в котором, пожалуй, про программирование не писал еще никто. Все уже привыкли, что книга по программированию должна представлять собой некий заунывно-монотонный рассказ от зануды-программиста, перемежаемый редкими и скучными листингами. Вряд ли вы возьмете такую книгу с собой в отпуск или будете читать ее пару дней и ночей напролет, не в силах оторваться. _why, конечно, не в состоянии писать, как все: он никогда не работал в офисе, чтобы, как он считал, «ненароком не похоронить там свой живой интерес к жизни». «(poignant) Guide to Ruby» рассказывает о многом, например о его любимом «кусочке бекона» (chunky bacon — фраза, которая впоследствии стала мемом в сообществе Ruby и используется в огромном количестве примеров Ruby-кода), о его повседневной жизни и наблюдениях, восходе солнца или рассуждениях о языке собак... Здесь важно не терять главную суть — все это лишь о языке Ruby, который рассматривается в чрезвычайно широком ракурсе и контексте. Книга сразу навязывает очень неспешное, вдумчивое погружение в язык, тщательную проработку его основ, мотивов и подходов. Словно боясь слишком перегрузить читателя, _why время от времени аккуратно одергивает своего читателя очередной шуткой: эй, приятель, ты еще здесь? Внимательное проговаривание вслух всех листингов — обязательный элемент изучения этого языка, введенный в обиход именно _why. Ruby спроектирован так, что одна из его удивительных особенностей — это формирование в процессе написания программы осмысленного для чтения на обычном английском языке листинга, который более или менее может прочитать и понять любой обычный человек. Попробуйте повторить нечто подобное с Python или не приведи господь с PHP — ну что, получается? Большинство листингов в книге сопровождаются комиксами с диалогами рисованных лисиц, которые обсуждают всю необходимую теорию, чаще используя то, что упомянутый издатель ехидно назвал «как минимум очень странным юмором, если не сказать более».Другой постоянный персонаж книги — черный, как ночь, кот Trady Blix, с которым, по признанию самого _why, он как-то случайно познакомился на телевидении. В самом начале книги _why доверительно признается, что именно Blix научил его «настоящему Ruby». Чтобы такая линейность сюжета не показалась кому-то слишком академичной (основанной на «здравом смысле» — любимое ругательство _why), в ходе изложения они часто меняются местами: в эти моменты уже _why педантично объясняет и учит кота Blix’а особенностям устройства и работы Ruby. Книга содержит огромное количество совершенно безумных листингов, например иногда они являются вспомогательными для понимания механизма путешествия во времени или чего-то вроде того. Важное приложение к книге — полноценный музыкальный альбом, в котором, по словам _why, «он закрепляет некоторые важные моменты курса на эмоциональном уровне». Вторая дополнительная составляющая курса — интерактивный обучающий сайт tryRuby.org. Вслед за Дарвином _why считает, что только непрестанная практика программирования превращает социальную обезьяну в программиста. Делая скидку на человеческую лень, он создал этот сервис — теперь у каждого есть простая возможность проверить все, что описано в книге, не делая никаких лишних движений. Это настоящий интерпретатор Ruby, подключенный напрямую к web, где, используя обычный браузер, можно создать свою первую программу. Другая его книга — Nobody Knows Shoes. Под впечатлением от этого стиля другими были созданы очень похожие на оригинал книги, например Learn you a Haskell for great good.

Маленькое программистское затруднение

На этом _why не успокоился. Продолжением попытки максимально эффективно учить новичков программировать стало создание собственной среды разработки на Ruby, которую он назвал Hackety Hack.

Чтобы максимально точно позиционировать эту IDE, _why выпустил манифест Little Coder’s Predicament, объясняющий суть предназначения Hackety Hack и рассказывающий о проблеме высокого порога вхождения в современное программирование, устранить который отчасти и предназначена эта программа-среда. Он объясняет это так: Мы живем в мире ужасно сложных и продвинутых технологий, которые окружают нас повсюду. Неважно, осознаем мы это или нет, но факт заключается в том, что наши бабушки сегодня пользуются смартфонами, наши дети играют на iPad и т. д. — но технологии, скрытые под капотом всех этих предметов, ужасно сложны и комплексны. Я помню, как в старые добрые времена смог сам легко освоить программирование на Commodore 64, но попробуйте сегодня разобраться в таком же возрасте в программировании под Windows, создать свой собственный поиск-аналог Google или написать свое приложение для любимого iPhone. Сделать это будет не так-то просто, как было во времена моего детства. Я называю этот возросший порог для вхождения в мир программирования Little Coder’s Predicament и пытаюсь преодолеть его посредством новой идеологии обучения программированию, реализованной в Hackety Hack.

Итак, этот редактор реализует блоковую концепцию построения программ из уже готовых кусков кода (заготовок, сниппетов). При этом у новичка есть возможность начинать учиться в процессе создания приложений, сразу разбираясь в его устройстве на примерах составных кусков кода (в чем активно помогает эта IDE), а также модифицируя их под свои текущие нужды (поставляется обширная библиотека подобных сниппетов на все случаи жизни). Такой полуфабрикатный подход позволяет немедленно начать писать программы любому человеку практически без какого-либо предшествующего опыта. Технически редактор базируется на Ruby и Shoes toolkit (библиотека для создания сложных графических интерфейсов).Неожиданная концовка Что случилось потом, никто не знает. В июле 2009 года _why внезапно исчез. Ничего не объясняя, никак не объявляя это заранее, на пике своей сетевой популярности... Все его почтовые ящики-контакты были закрыты, его сверхпопулярный Twitter с более чем 10 000 подписчиков отключен, то же произошло и с его персональным блогом и аккаунтом на GitHub, а также с многочисленными сайтами-проектами. За один день все его проекты и само его присутствие в Сети были полностью разрушены. Сообщество Ruby было шокировано, назвав этот акт виртуальным самоубийством. В личных блогах огромного количества людей в Сети стали появляться признания о том, что _why изменил их жизнь, именно бла годаря ему очень многие пришли в мир программирования или  выбрали Ruby в качестве своего основного языка программирования. Поиск _why был по-настоящему грандиозным — опрашивались все последние журналисты, с которыми он контактировал, анализировались его последние твиты и письма в попытке понять мотивы, было даже запущено в ротацию стандартное для Америки объявление на пакете молока для поиска пропавших людей, но все было тщетно. Сетевые энтузиасты своими силами постепенно восстановили все его проекты (более 100 проектов в самых разных областях программирования и искусства). Последний его твит перед исчезновением, как реквием по программированию, таков: programming is rather thankless. u see your works become replaced by superior ones in a year. unable to run at all in a few more.

До сих пор, несмотря на выступления _why за пределами Сети в реальном мире и на престижных мировых конференциях, активное участие в различных концертах и фрилансерскую работу, никто так и не сумел установить его реального имени или фамилии, равно как достоверно узнать, что же случилось c ним на самом деле.

По неофициальной информации от Ruby-разработчика, плотно с ним общавшегося, настоящее имя _why — Джонатан, и он скончался в 2010 году от рака горла. По словам этого источника, последние три месяца своей жизни он решил полностью посвятить своей семье, отключив все сайты, стерев свои проекты в сети, продав свой компьютер по дешевке и выдернув все сетевые шнуры и вилки, связующие его с внешним миром. Артист, посвятивший всю свою жизнь творчеству и программированию, рисованию и музыке, а также созданию методик эффективного обучения программированию других, в последние месяцы своей жизни жадно наверстывал упущенное, радикально отрекшись от сетевого мира и былых увлечений. Как бы то ни было все на самом деле, отмечая очередную годовщину его таинственного исчезновения, все мировое сообщество Ruby уверяет, что его неоценимый вклад в популяризацию и развитие этого языка будет сохранен в сердцах программистов навсегда. Впрочем, вспоминая о нем, сообщество делает это полностью в стиле самого _why — без грусти, тоски и ненужного трагизма, заочно передавая ему привет на его любимом Ruby: thanks = thank.person("_why") thanks.append("~chunky bacon") Как, улыбаясь, говорит Матц, создатель языка Ruby, даже после своего исчезновения он продолжает подшучивать над нами всеми. Например, журналисты уже замучили создателя Ruby дурацким вопросомрекурсией: But why mister _why had disappeared?

Вместо заключения Необоснованные утверждения многих источников, которые цитирует и Википедия, о том, что _why — это 24-летний веб-разработчик Jonathan Gillette, не выдерживают никакой критики. И не только потому, что сам Jonathan Gillette категорически отрицает это, но хотя бы просто потому, что он не знает и не использует Ruby в своей работе (о боже, он PHP-программист!). К тому же данный разработчик весьма символично работает на обычной офисной работе, тогда как Ruby «rock star» _why всегда повторял:Ходить на работу в офис это как смотреть телевизионные сериалы по вечерам, жизнь — это слишком большая роскошь, чтобы тратить ее на осуществление чужих планов или потребление примитивных телевизионных фантазий. Дурной пример заразителен: вслед за _why под впечатлением его поступка подобный же акт «сетевого самоубийства» совершил один из ведущих евангелистов Python-комьюнити, Марк Пилигрим (автор знаменитой книги «Dive into Python»), который полностью порвал с проектом Python. Но это уже совсем другая история... Закончить хочется твитом самого _why, у которого дотошный репортер однажды спросил, чем он, черт побери, вообще занимается? На что тот лаконично ответил: «хакаю хакерство». Чуть позже он написал твит, который отвечал и на все остальные вопросы: Когда вы ничего не создаете, вас определяют чужие вкусы и мнения, а не ваши возможности. Эти вкусы только ограничивают и отдаляют людей. Поэтому — творите.

ГЛАВА 11. История Рона Авицура: секреты нематериальной мотивации

Речь пойдет о нематериальной мотивации, которую мы сегодня рассмотрим на примере «медленных программистов» (движение slow programming). Общая суть этого общественного движения в медленном, вдумчивом программировании своего идеального продукта без какихлибо встречных компромиссов. Чаще всего коммерческая разработка плохо или никак не подходит для такого «эстонского» стиля кодирования, поэтому чаще всего человек реализует его за свой собственный счет в рамках домашних «пет-проектов», повторяюсь, избегая любых компромиссов или уступок в ущерб своему чувству перфекционизма. Думаю, большинство читателей сразу гневно возразят: это слишком ненормально, чтобы быть правдой, — кто так работает в реальном мире? В связи с этим поясняющая цитата от известного в узких кругах программиста-коммуниста Лекса Кравецкого: По неясной причине в интернетах регулярно проскальзывает мысль в форме «всем известно» на тему «кроме как за деньги, никто качественно свое дело делать не будет». Вроде посмотришь по сторонам — регулярно же делают. Огромные толпы авторов, например, совершенно за так пишут статьи, стихи, рассказы и не менее за так их раздают направо и налево. Куча народа что-то там рисует, фотит, 3д-моделит, программит и снова за так раздает. Безо всякой тени надежды получить за это деньги. Безо всякой тени надежды, повторюсь, — тут даже намерений нет, не то что контракта. При этом оные товарищи шлифуют ими замостряченное порой до степени, временами и не снившейся товарищам на зарплате. И все из-за чего? Из-за интереса, знамо дело.Медленное программирование Итак, популярное на Западе движение cлоулайферов начинает проникать в ИТ, где оно породило свой собственный по отношению к коммерческому мейнстриму контртренд — медленное программирование. Это движение ориентируется не на дедлайны и отношения, выраженные критерием время/извлеченная выгода, а (о черт, далее — ненормативная для бизнес-среды лексика) исключительно на совершенство. Медленное, вдумчивое программирование, осторожный и минимальный рефакторинг, никаких компромиссов между совестью и представлениями клиента, никаких окриков руководства и бесконечных митингов. Лишь кропотливый поиск максимальной эффективности решения и, конечно же, получение личного кайфа от такого рода медитативного программирования. Часто происходит так: затянули проект, провалили все сроки, упорно «делали все на совесть», но оказалось, что все не так просто, как предполагали на этапе постановки задачи... Короче говоря, в конце концов всех уволили. Существует огромное количество подобных историй, но сегодня я расскажу лишь одну — про Рона Авицура (Ron Avitzur), программного инженера Apple. Вернее, уже бывшего инженера этой компании, хотя потом они его попытались нанять снова... Но давайте лучше по порядку. Рон Авицур принимал участие в создании первых версий MacOS. Конкретно Рон отвечал за разработку калькулятора, встроенного теперь в эту ОС, но тогда все находилось еще в зачаточном состоянии. Сроки по созданию нового инновационного визуального калькулятора, концепцию которого, собственно, и разработала группа под руководством самого Рона, постоянно сдвигались. Концепция была настолько нова, что задача состояла не только в том, чтобы «запрограммировать это», а скорее сводилась к поиску «как это вообще сделать». Творческий процесс программирования и разработки концептуально новых приложений — штука сложная сама по себе, но это вдвойне сложно, когда этот процесс монопольно контролирует менеджмент, нацеленный на жесткие сроки, отчетность, обязательства перед партнерами, прибыль... В общем вы поняли.После очередного переноса сроков сдачи проекта Рона его закрыли (проект, а не Рона). Навсегда. Всех программистов его группы уволили, а менеджеров наконец перебросили «на более серьезные задачи». Предварительно менеджмент пытался спасти ситуацию, уговаривая Рона на компромисс: остановить разработку концепта и сделать более-менее обычный калькулятор с отдельными элементами былых задумок, ужавшись до требуемых сроков. Но Рон не видел никакого смысла в создании «еще одного калькулятора», поэтому сказал «нет». Рон вспоминает, что этот день никак не выделялся: они, как обычно, сидели, погрузившись в работу. Зашедший старший менеджер очень кратко объяснил ситуацию, принятое решение и указал на коробки в углу, которые из-за крайней занятости так и не успели убрать со времен вселения в офис. Собственно, тут и начинается настоящая история знаменитого графического калькулятора.

Проникновение в Apple Команда проекта собрала вещи и разъехалась по домам. Но не так-то просто отделаться от некоторых программистов, одержимых своим проектом. Даже такой компании, как Apple. В соответствии с установленным распорядком в последний рабочий день Рон должен был явиться к старшему менеджеру и запросить окончательный расчет за ранее оказанные им услуги, запустив процедуру официального увольнения. Рон понимал, что эта процедура приведет к его официальному уходу из компании, после чего его попросят сдать ID-бэдж, используемый в Apple в качестве входного пропуска. Рон решил перехитрить систему — он не пришел за своим расчетом, взамен оставив себе собственный валидный ID-бэдж. В больших компаниях вроде Apple не так-то просто уследить за тем, получили ли все люди расчет. Обычно люди сами давали знать, что им должны деньги, это и запускало, в частности, процедуру увольнения. На этот раз «установка по умолчанию» не сработала. Идея Рона была проста: продолжить разработку графического калькулятора, плавно переведя ее в стадию подпольной. Чуть позже к негласной разработке присоединились коллеги Рона, хотя до конца пути дошел только один из них — Грег Роббинс (Greg Robbins). Рон и Грег отказались от всех предложений о новой работе, после чего решили использовать собственные средства для продолжения разработки проекта. Позже на образовательном семинаре Google, куда Рона пригласили рассказать необычную историю своего проекта, он говорил, что тогда у него была лишь одна идея фикс: сделать самый лучший графический калькулятор в мире, и он стремился завершить работу над ним до выхода нового «Макинтоша» любой ценой. «Я просто не мог бросить все на полпути, я был обязан довести этот проект до конца. Мы знали, что это будет лучший калькулятор, оставалось лишь доказать это другим». Таким образом, они ежедневно тайком ходили на свою уже бывшую работу, приходя намного раньше других и уходя позже всех, чтобы особо не попадаться на глаза менеджерам. И если в самой Apple уже были прототипы новых Маков, то вне стен компании их еще не существовало в природе, поэтому разработчики калькулятора и использовали свои ID-бэджи, чтобы продолжать разработку в своем бывшем офисе в здании Apple.

Смотреть сквозь пальцы… Подобная тайная и неофициальная работа была достаточно распространенной ситуацией в Apple того времени. По словам Рона, «в то время контора буквально кишела фанатиками». В качестве примера Рон вспоминает, что в другом конце здания такие же уволенные ранее инженеры Apple продолжали упорно развивать проект Spectre — также официально закрытый. Все рядовые сотрудники знали, что в здании полно подобных «волонтеров», но предпочитали их не только официально не замечать, но даже наоборот — помогать всеми возможными способами. В сентябре 1993 года, когда проект уже был готов на 90 %, вдруг произошло неожиданное: руководство Apple решило нанять новых людей и посадить их в официально пустующий кабинет, в котором работали Рон и его друзья. Представим: неожиданно явившиеся в комнату менеджеры застукали там всю небольшую команду Рона. Работа в 12-часовом режиме привела к тому, что команда ела и спала прямо в офисе, и комната была заставлена спальными мешками и неким запасом продовольствия. Общие небритость и красноглазие присутствующих только увеличивали степень подозрительности всего происходящего в здании, находящемся под охраной. Делаю эту историю короче — на этот раз сотрудники безопасности Apple аннулировали пропуска Рона и его друзей, окончательно оборвав пуповину, связывавшую их с бывшей компанией.

Остаться или уйти? Конечно, личный ID-бэдж был навсегда потерян, но зато осталось множество добрых друзей, готовых помочь словом и делом. Еще два месяца Рон и команда продолжали незаконно проникать в здание Apple, используя помощь друзей, которые проводили их в качестве посетителей, а иногда и вовсе делились своим бэджем. Минимальные перемещения в коридорах здания ранним утром и поздним вечером по заранее разработанным наикратчайшим маршрутам отчасти нивелировали опасности такого рода работы. Развязка этой истории произошла в октябре 1993 года, когда продукт был полностью готов и его решили представить высшему менеджменту Apple. Через цепочку знакомых Рон вышел на руководство фирмы, которое назначило дату приемки проекта. Презентация прошла великолепно, продукт был оценен по достоинству и сразу же утвержден на включение в Mac OS. Единственная заминка вышла под конец, когда разработчиков попросили завершить протокол утверждения продукта. Рон вспоминает, что тогда прозвучало много «странных» для их ситуации вопросов, как то: «В какой группе вы работаете?», «Кто ваш непосредственный руководитель?», «Где ваш утвержденный график развития продукта?», «Почему мы не видели этого раньше?» и прочие, и прочие, и прочие. Несмотря на весьма длинный и запутанный разговор в тот вечер, после небольшой адаптации и мелких изменений проект был полностью утвержден в январе 1994-го — отныне Graphing Calculator стал официальной частью компьютера Макинтош.В общей сложности он разошелся тиражом свыше 25 миллионов экземпляров, при этом проект не только не существовал официально, но не имел вообще никакой документации и спецификаций. «Поскольку у нас не было менеджеров, то не было и совещаний и мы могли быть невероятно продуктивными. Нам не нужно было писать ничего лишнего, кроме самой программы. Поскольку мы были единоличными цензорами и создателями в полной мере своего продукта, мы могли позволить себе искать, экспериментировать, а также переделывать калькулятор ровно столько раз, сколько это было нужно для воплощения его идеального образа». Чтобы прочувствовать общую атмосферу такого образа жизни, вот еще один типичный диалог того времени со случайно встреченным менеджером Apple, в изложении Рона: — Вы здесь работаете? — Нет. — То есть вы на контракте? — Нет на самом деле. — А кто ж вам платит? — Никто. — А как же вы живете? — Да вот, просто живу.

Жизненный принцип Рон и его история стали широко известны после недавнего выступления перед работниками Google в центральном офисе. Ирония этого выступления — в откровенном признании Рона в том, что он, скорее всего, не смог бы работать в столь жестких административно-командных условиях, как это принято в Google. Рон стал одной из икон медленного программирования: он отказался от нескольких предложений потрудиться на крупные компании и заработать кучу денег, чтобы реализовать собственный фундаментальный труд. И даже когда триумф его графического калькулятора стал очевиден и почти родная ему компания Apple захотела подписать с ним контракт на постоянную работу, он ответил отказом. По словам Рона, «не было смысла начинать эту историю заново». Отчасти из-за этого отказа работать на компанию яблочный гигант так и не смог наладить поддержку и развитие графического калькулятора (еще раз — команды разработчиков этого проекта официально никогда не существовало), поэтому через несколько лет его сменила собственная альтернативная разработка — Grapher. Тогда Рон основал собственную компанию и стал продавать графический калькулятор под новым брендом NuCalc, который со временем был портирован и под Windows (Рон шутил, что выход Windows-версии так затянулся из-за повышенной политики безопасности здания Microsoft в Редмонде), став в итоге одной из самых популярных программ в нише трехмерных визуальных калькуляторов. Как признает Рон, коммерческий успех его калькулятора отчасти был обусловлен бесплатной многолетней рекламой программы и ее концепции в составе «Макинтош», что породило целое поколение специалистов, взращенных на этом визуальном инструменте (аналогов которому в то время не существовало). Поэтому тот факт, что Apple почти ничего не заплатила Рону за разработку такого продукта, был с лихвой компенсирован возможностью спустя пару лет подхватить разработку уже ранее раскрученного «большой компанией» продукта и в итоге создать, как сейчас бы сказали, собственный исследовательский стартап. Рон резюмирует философию своего образа жизни: Я серьезно увлекаюсь йогой, в которой одним из важнейших элементов является способность расслабляться и наслаждаться моментом «здесь и сейчас». Это неизбежно отражается на моей работе — сейчас, как и 10 лет тому назад, я по-прежнему предпочитаю работать в свое удовольствие, делая свой собственный продукт, реализуя его так, как вижу и чувствую эту концепцию я сам.

Его спросили — в чем главный секрет успеха?В умении доводить все начатое до конца, в умении не сдаваться перед трудностями, какую бы экзотическую форму они ни принимали. В свою очередь секрет этой способности — искренне любить свою работу, каждый момент своей жизни, переживая на опыте, что вы создаете самый лучший продукт и осуществляете свою мечту, — этим вы реализуете все самые лучшие черты своего характера. Полностью эту историю можно прочитать в авторском изложении на сайте Рона1 либо посмотреть видеозапись выступления-рассказа о его приключениях и принципах на конференции Google TechTalks2.



Поделиться книгой:

На главную
Назад