Что важно знать.
Прежде всего я выяснил, что практика в Майкрософт в США очень престижна и поэтому туда очень большой конкурс. Большинство студентов-практикантов набирается Майкрософт напрямую из США. Что касается студентов-иностранцев, то, согласно инсайдерский информации, что я получил, из порядка 3000 резюме, которые Майкрософт каждый год на практику приглашаются около 20-30 человек. То есть отбор получется порядка 1 к 100, что конечно уступает конкурсы в ведущие вузы России, но все равно достаточно впечатляет.
Из официальных источников -- в частности после детального изучения сайта carrier.microsoft.com -- было выяснено, что практика в США для студентов возможна в виде Microsoft Research Intern, для занимающихся наукой аспирантов и "одарённых" студентов, либо в виде business intern для всех остальных. Второй вид практики подразумевал трехмесячную практику с мая по сентябрь (12 недель из этого интервала) в одной из трех возможных ролей:
- разработчик (SDE), в задачи которого входила разработка программных решений
- тестировщик(SDE-T), занимающийся написанием автоматизированных тестов и
- программный менеджер (PM), занимающийся организацией работы программиста и тестера, пишущий спецификации, занимающийся feature engineering и так далее.
Для подачи заявления на практику требовалось заполнить подробное резюме на сайте career.microsoft.com до 15 декабря, чтобы претендовать на одно из мест на следующее лето. После отбора кандидатов на основании резюме, кандидаты должны были пройти телефонное интервью и в случае его успеха -- еще и очное интервью с двумя представителями из той группы, которой требовались практиканты. В случае успешного прохождения очного собеседования кандидат приглашался на практику. Очные собеседования проходили для кандидатов из Европы в "европейских офисах" Майкрософта: в Дублине, в Варшаве и в Мюнхене. Как я понял, в этих офисах один раз в год -- примерно в конце февраля - начале марта -- высаживался десант из сотрудников МС из США, которые проводили собеседования и приглашали успешно прошедних их к себе на практику.
Поиск информации о том, как же проходит собеседование в Майкрософт, давал просто море результатов: оказалось, что есть даже отдельная статься в Википедии, посвящённая этому вопросу. Если тезисно изложить все то, что я собрал из Интернета в свой OneNote блокнот, то получится примерно следующее:
- Майкрософт как компания известен своим неординарным отношением к собеседованию.
- Само собеседование проводится несколькими сотрудниками, которые потом должны достичь консенсуса относительно кандидата. В случае приема на работу собеседование проводят 4-5 сотрудников отдела, при этом уровень собеседующего растет с каждым следующим собеседованием: то есть если начинает собеседование рядовой программист, то заканчивает его начальник отдела или архитектор. Известно много случаев, когда собеседование заканчивалось "досточно" и после двух собеседований кандидат отправлялся домой.
- В ранние годы, когда собеседование курировал лично основатель компании Билл Гейтс, на собеседовании часто задавались различные вопросы-головоломки (brain teasers), которые не всегда имели прямое отношение к непосредственно задачам, которыми бы занимался работник, и требовали от собеседующегося определенной эрудиции и смекалки.
- Кроме вопросов-головоломок, частым типов вопросов были вопросы на оценку, известные как задачи Ферма, суть которых заключалась в оценке некоего параметра, точное значение которого не может быть известно интервьюируемому, но который с определенной точностью мог быть оценен на основании общеизвестных фактов и ряда допущений.
- В последние годы Майкрософт официально отошел от практики таких вопросов, возможность таких вопросов все равно не 100% иссключена, особенно в качестве дополнительных, решающих вопросов.
После сбора всей доступной информации о практике в Майкрософт я начал занимался подготовкой к подаче документов и к собеседованиям.
Подготовка резюме.
Прежде всего необходимо было подготовить резюме. В моей случае этот процесс занял порядка двух месяцев и около 25 итераций. К редактированию моего резюме приложили руку несколько сотрудников Microsoft Deutschland с опытом работы в США, которых я знал лично и попросил помочь, несколько моих друзей, работающих в США не в Майкрософт, мой профессор из университета, у которого я писал научную работу, проработавший более 10 лет в Америке, а также ряд моих немецких друзей. После каждой редакции резюме перекраивалось настолько, что мне приходилось практически пересобирать его заново из кусочков, оставшихся после редактирования предыдущей версии.
Сразу скажу, что работа эта по большей части была излишней, ибо при подаче заявления на практику на сайте Майкрософт все-равно надо использовать их "конструктор", в который конечно, можно, импортировать уже существующее резюме, но который сам определяет формат и необходимую информацию.
Нужно всегда помнить, что резюме -- это первое, по чему отсеиваются кандидаты, и именно на этапе резюме отсеивается 90%. Поэтому черезвычайно важно, чтобы здесь все было в идеальном порядке.
Подготовка к телефонному интервью.
Для кандидатов, прошедших предварительный отбор на основании резюме, следующим этапом является телефонное интервью.
На основании почерпнутой из интернета и из разного рода пособий по подготовке к телефонным интервью, во время этого интервью сотрудником, проводящим собеседование, решаются следующие вопросы:
- В первую очередь, собеседование служит целью оценить уровень владения английским языком. Разумеется, никто не ожидает от человека, всю жизнь прожившего за пределами США и англоговорящих стран, что он будет говорить безупречно. Однако, необходим свободный уровень владения языком, способность четко и ясно излагать свои мысли, понимать вопросы интервьюера и уметь аргументировать свои ответы.
- Если уровень английского у кандидата достаточен, то интервьюер оценивает общую адекватность собеседника. Здесь особое внимание уделяется так-называемым "стоп-сигналам" (red flags), которые могут указывать на (некоторую) неадекватность или эксцентричность кандидата. Такими сигналами может быть:
- неадекватная оценка своей роли (заносчивость или высокомерие при описании прошлых проектов, "они ничего не могли сделать пока я не пришел, и всё не сделал", "все держалось лишь на мне, потому что только я знал дотнет" и т.п.),
- неспособность четко и ясно изложить суть выполненных проектов (чрезмерный уход в детали ("мы использовали PInvoke с kernel32.dll чтобы получить доступ к информации из драйвера"), либо чрезмерные обобщения ("я занимался разработкой баз данных в Яве")).
От кандидата ожидается более-менее критическая оценка своей деятельности и выполненных проектов и относительно честный ответ на вопрос "что бы вы сделали по-другому?". При этом не так важен сам ответ (например, можно спокойно ответить "я бы сделал точно также"), а его аргументация ("потому что в другом случае я думаю, у нас бы возникли следующие проблемы ...").
Как оно получилось у меня.
После составления резюме и его отсылки через уже упомянутый сайт carreer.microsoft.com в начале декабря я ничего не слышал от Майкрософт до конца января. Учитывая тот факт, что очные собеседования должны были проходить в феврале в Мюнхене (это тоже была инсайдерская информация), я постепенно начинал все больше и больше волноваться о судьбе моего резюме. Меня успокаивал лишь тот факт, что и отказ мне пока не приходил.
Телефонное интервью.
30 января я наконец получил письмо от university recruiter из США, которая поздравляла меня с тем, что моё резюме прошло первый этап отбора и предлагала выбрать время для получасового телефонного интервью. С учетом разницы во времени между США и Германией, собеседование предполагалось между 11 часами ночи и 4 часами утра. Я выбрал 11 ночи, так как все-равно вряд ли бы смог уснуть, если бы собеседование было поздно ночью.
В ответном письме рекруитер подтвердила мне время интервью, а также назвала имя интервьюера. Короткий поиск по Facebook сразу увенчался успехов, даже не смотря на то, что рекруитер не указал явно компанию, где он работает, но имя и место работы в Greater Seattle Area достаточно однозначно его идентифицировали. Не знаю, зачем я это сделал -- наверное потому, что я сам по сути визуал и чувствую себя очень неуверенно, когда мне нужно говорить по-телефону с кем-то, кого я не знаю. Тот факт, что я увидел как выглядит мои собеседник на фотографии уже в значительной степени меня успокоил.
Также в письме был красным выделен целый абзац, в котором говорилось, что во время интервью меня могут попросить решить небольшую задачу по программирования и что я должен быть готов продиктовать ее решение рекруитеру по телефону. По поводу того, можно ли использовать компьютер или нет ничего не говорилось.
Следуя советам из книги Cracking the Coding Interview (эту книгу я подробно разберу в следующей части), я взял своё резюме и подготовил большую таблицу, каждой строчкой в которой был пункт из моего резюме (учеба, работа, практика), а в колонках я кратко (два-три слова) описал возможные ответы на вопросы рекруитера. Я выбрал шесть наиболее вероятных вопросов:
- Каков был мой личный вклад в проект или работу.
- Что было наиболее интересным, важным, занимательным, поучительным и т.д.
- Какие результаты были достигнуты по итогам проекта, учебы или практики.
- С какими проблемами пришлось столкнуться во время проекта.
- Как проходило сотрудничество с другими участниками проекта.
- Что бы я, на мой взгляд, сделал по-другому, учитывая мой нынешний опыт.
После составления таблицы я немного порепетировал, что я буду отвечать на вопросы и выписал себе отдельно различного рода вводные выражения на английском, типа "despite of the fact that ... we had to use", "Even though we managed to ... we nonetheless ...", "To solve the problem X we were facing from the very beginning we decided to ...", "At the end of the day, we came up with an interim solution where we ...". Здесь также важно отметить, что я специально старался везде использовать we, как бы немного провоцируя рекруитера на вопрос о личном вкладе и одновременно как бы подчеркивая тот факт, что я работал всегда в команде, а не один.
В рамках подготовки к задаче по программированию я составил табличку с разными типами данных (массив, список, balanced B-tree, heap, и еще парочку экзотических), где для каждой поддерживаемой операции я отметил её сложность (в О-нотации). Не знаю уж почему, но мне это казалось тем minimum minimorum, который мне мог понадобиться. Компьютер я не стал брать из тех соображений, что удары по клавишам все-равно будет слышно и что это будет меня только отвлекать от решения: наверняка задача не будет архи-сложная, раз все интервью планируется всего на полчаса.
Не знаю, почему так получилось, но интервьюер позвонил на час раньше. То ли я неправильно перевел время в местное, то ли он ошибся -- но факт остается фактом, в 10 часов мне неожиданно позвонили и представились как "интервьюер". Хорошо, что это было вечером и я уже, в принципе, был наготове и как раз репетировал, но все-равно в первые секунды я был просто ошарашен. Мой совет поэтому -- не откладывайте репетицию на последний час перед интервью :)
Интервьюер хоть и был американец, но честно старался говорить медленно и четко. Можно сказать, было прям слышно как он старается четко произносить свои слова, которые наверняка были заготовленным текстом. Это, конечно сильно помогало. Мешало же то, что скорее всего использовалась какая-то IP-телефония, потому что периодические искажения его голоса очень напоминали разговор в скайпе через аналоговый модем.
После того, как он представился и спросил меня, тот ли я кандидат, началось само интевью. Он сразу же взял последнию мой проект в резюме и стал задавать по нему вопросы из тех, на которые я уже подготовил ответы: про проблемы, про то, что бы я сделал по-другому, про отношение в команде. Затем он задал более общий вопрос: какие свои навыки я считаю наиболее важными и ценными и почему. Все вместе это заняло около 15 минут.
Ровно через 15 минут он спросил меня, есть ли у меня нему вопросы и если нет, то мы можем "conclude our conversation". Я ответил, что вопросов у меня нет и что я готов к "conclude", заодно приготовив бумагу чтобы записывать условия задания для программирования которое, по моему мнению, должно было быть в следующие 15 минут после этого "conclude". На что он скачал "Ok, then good bye, Alexander" и положил трубку.
В первые несколько секунд я просто был в ступоре. Потом я положил трубку, думаю что может быть я неправильно понял и это просто прервалась связь и он мне перезвонит. Но прошло минут десять и мне никто не перезванивал. Телефона интервьюера у меня, естественно не было. Единственная мысль, которая у меня крутилась в голове: наверное я скачал что-то совсем глупое или неправильное и он решил вообще не давать никакого задания. Но что это могло быть я не знал -- мне казалось, я довольно бегло, без большого числа ошибок и честно рассказал.
Слава Богу, ждать было недолго: интервью было 13 февраля, а с 22 по 26 февраля были назначены собеседования в Мюнхене (о чём я знал). Учитывая, что я сам живу в Гамбурге, меня должны были предупредить за 2-3 дня, то есть ждать оставалось фактически меньше недели.
Однако прошла неделя, пошла неделя собеседований -- а мне никто так ничего и не написал. В последний день собеседований, 26 февраля, был мой день рождения, поэтому к концу недели я уже практически смирился с отказом (все-равно уже не было шансов успеть на интервью в Мюнхен) и был занят приятными хлопотами по подготовке празднования Дня Рождения.
Ответ пришел как раз в день моего рождения, в пятницу вечером. Стардартный ответ, рекруитер просто нажала на Reply в своем Outlook'е, поэтому увидев заголовок на телефоне я даже не стал открывать письмо, чтобы не расстраиваться...