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


Задача первых — делиться вдохновением, чтобы побуждать. Задача вторых — работать, чтобы исполнять прихоти других. Так абстрактные планы меньшинства никак не пересекаются с прагматичной конкретикой большинства, утверждают китайцы.

В заключение этого заковыристого китайского трактата постулируется неожиданный вывод — никогда не имей дела с теми, кто тебя не ценит и не любит (без исключений и компромиссов). Иначе сам не заметишь, как станешь безликой шестеренкой чужого бизнеса.


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

У меня нет связанных рук благодаря стандартным условиям неразглашения вопросов и задач (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).

Назад Дальше