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