вторник, 21 октября 2014 г.

Майкрософт. Часть 1

Со 2-го сентября этого года я перешел работать в Майкрософт. Позиция SDE 2, Developer Division, Visual Studio Online, проект – Application Insights.

clip_image002

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

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

Началось все с MVP-саммита, на котором мне самому удалось оценить, что из себя представляет северо-западное побережье США, которое мне приглянулась больше, нежели восточное побережье в лице Нью Йорка. А также удалось познакомиться в живую с несколькими ребятами, давно знакомыми по RSDN.RU (AndrewVK, IB, Gollum и Кириллом Осенковым), и даже сфоткаться со стариной Рихтером.

clip_image003

Сразу после возвращения из Штатов, это было в конце февраля 13-го года, я решил таки попробовать вариант именно с Майкрософтом. Я начал заливать свое резюме на careers.microsoft.com. Реакции – ноль. Попробовал добавить заголовок, типа «бедный MVP ищет работу» - результат аналогичный. Подождав еще пару недель, я понял, что делов не будет и нужны обходные пути. Тогда я попросил Кирилла, в перерывах между ломанием Roslyn-а, мне помочь.

Помощь оказалась весомой, и через пару-тройку недель со мной связался ПМ одной из команд Visual Studio для прохождения предварительного собеседования. Было очень забавно, когда после пре-скрининга он попросил меня «зааплаиться» на позицию в Visual Studio Team, заявку на которую я оставил уже месяц назад. Потом был технический прескрин с товарищем индусской наружности. Получился интересный диалог:

Интервьюер (И):

И: - Привет, кагделы? Вот тебе задача: давая на голом С сделаем поиск подстроки!
Я: - ВТФ! А разве вы используете unmanaged code?
И: - Нет!
Я: - Так какого ... мне использовать язык, на котором я последний раз писал 10 лет назад?
И: - А, ну ладно, давай тогда чего-то на C#-е запилим.

После чего он подогнал какую-то задачу по графам, и 80% времени ушло на то, чтобы я понял, что он от меня хочет. Мне кажется, что даже по окончанию собеседования я так и не понял, что он от меня хотел, но «добро» на полное собеседование я получил.

Полное техническое собеседование

Через несколько недель я уехал в НЮ в командировку и как раз в это время вышли на связь HR-ы и предложили пройти полное техническое собеседование. Поскольку от Нью Йорка до Рэдмонда пол лаптя по карте (а не два с половиной, как из Украины), то появилась возможность пройти очное интервью, вместо удаленного.

Общение по поводу интервью началось в начале недели, а само интервью должно было быть в пятницу. Когда во вторник со мной связался «старший планировщик интервью» (senior interview scheduler), я понял, что до пятницы нам не успеть! Каким-то чудом, перебукивая билеты дважды, я попал на самолет вовремя.

Прилетев в аэропорт Такома в 12 ночи (рейс задержался на 2 часа), с тремя часами разницы во времени с Нью Йорком, в почте я обнаружил «тестовое» задание! Задание было по дизайну (даже по анализу и дизайну) и заключалось в проектировании распределенной пропускной системы (транснациональная корпорация, которая переходит с ручной пропускной системы на автоматическую). Наличие адреналина сделало свое дело, так что 5 часов сна оказалось вполне достаточным и даже легкий джет-лэг не особенно мешал.

Весь процесс собеседования состоял из таких этапов:

  1. Общение с HR-ом (30мин). Мне даже дали совет, как лучше отвечать на вопросы, чтобы произвести максимальное впечатление!
  2. Тех-собеседование 1 (1 час). Кодинг.
  3. Тех-собеседование 2 (1.5 часа). Анализ и проектирование
  4. Ланч-интервью (1 час). Потереть о жизни, процессах.
  5. Тех-собеседование 3 (1 час). Кодинг.
  6. ПМ-интервью (1 час). Потереть с менеджером о жизни!

В том же Нью Йорке собеседования очень похожи на киевские – в них уделяется довольно много внимания технологиям, но в таких конторах, как Майкрософт или Гугл, собеседования несколько иные. Сейчас Майкрософт увлекается live coding-ом, что и было самым сложным во всем собеседовании.

В нашем обычном интервью ты обычно сразу понимаешь, какое ты производишь впечатление. Довольно легко перевести разговор с базовых вещей на продвинутые, и довольно просто заглянуть даже в дебри, о которых не знает интервьюер. Когда же речь заходит о кодинге, то ты не знаешь, какие критерии «хорошего кода» есть в голове у интервьюера. Что важнее: сделать за 1 час работающую программу, или же лучше подойти более качественно к дизайну, добавить тесты, подумать о граничных условиях. Я уже молчу за то, что такое интервью не имеет ничего общего с обычной рабочей обстановкой, когда ты можешь сесть, расслабиться и нормально подумать.

Очень приятно слышать от интервьюера фразу: «ну, а теперь расслабься, вот тебе задача. Ее нужно закончить за 45 минут. Ну и ты на меня не смотри, я просто тут посижу тихонькои буду посматривать на воооон тот огромный монитор, к которому твой комп подключен.»

В первой задаче мне нужно было сделать Incremental Search (предполагалось даже наличие UI-я на WPF, правда заглушка уже была). Во втором кодинг-интервью я делал tic tac toe.

Ни одну из кодинг-задач я не довел до конца. В первой большую часть времени я «выдумывал» подходящую структуру данных, а во второй задаче я подошел через чур основательно и потратил слишком много времени на построение домена. Уже в аэропорту Сиэттла я упростил решение второй задачи, а во время пересадки в ЛА я выслал интервьюеру обновленный вариант решения (благо, Кирилл подсказал мне мыло интервьюера).

Самым классным было интервью на дизайн пропускной системы. Тут можно было пофилософствовать: поговорить о компромиссах между доступностью и надежностью (consistency vs. availability) и даже вспомнить CAP-теорему, подумать о технических проблемах начиная с уровня устройств, заканчивая глобальными архитектурными вопросами. Мне было несколько проще, поскольку 7 лет до этого я занимался разработкой охранных систем, логика которых является схожей с логикой пропускной системы. Ну и анализ с дизайном, вроде как, являются достаточно сильными сторонами.

Мне сложно сказать, какое общее впечатление я произвел, но, видимо, оно было достаточно положительным, чтобы через 2 недели я получил оффер на позицию SDE II в Visual Studio Team.

Кстати, в интервью не было никаких логических задач. Не было вопросов по технологиям: никаких проблем с изменяемыми значимыми типами, тестабилити дизайна или вопросами асинхронного программирования. Но и нельзя сказать, что требовались специальные знания алгоритмов: общей вменяемости было достаточно, а когда решение не приходило в голову, то интервьюер легко подталкивал в нужном направлении. Мне кажется, что с тем же Бингом или командой компилятора такой бы фокус не прошел, но здесь специальных знаний не требовали.

clip_image005

Переезд

Еще во время первого общения с HR-м, мне сказали, что Штатовская виза может быть готова не раньше октября 2014 года (напомню, что разговор этот был в июне 2013). На H1B визу можно подаваться лишь в апреле, и в случае удачного «розыгрыша», виза позволяет начать работу с 1 октября. Поскольку до следующего октября было больше года, то были озвучены другие варианты: получение рабочей визы в Канаду или Англию, с последующим переводом по L2, если с H1B возникнут сложности.

Мы выбрали Канаду. Но примерно в то время (лето 2013), канадцы усложнили процесс получения визы, и вместо обычных 3-4 недель, мы ждали канадскую визу 10 месяцев! Так что в мае 14-го года у нас на руках были две визы – канадская и штатовская, и мы уже рассчитывали на переезд в октябре сразу в Редмонд. Но, так уж вышло, что нас решили выдернуть раньше, поэтому сентябрь мы прожили в замечательном Ванкувере, а в начале октября перебрались поближе к штаб-квартире МелкоМягких.

Интересного по теме

Как проводить технические собеседования?

Моя супруга начала вести видео-блог, в котором делится этими же впечатлениями, но уже со своей стороны:

З.Ы. Кстати, читатель. Мне сложно сказать, чтобы тебе было еще интересно узнать о Майкрософте, о местных нравах или о чем-то еще. Так что если у тебя есть конкретные вопросы по этому поводу, то я буду рад их услышать.

32 комментария:

  1. Мои поздравления! Успехов на новом месте!

    ОтветитьУдалить
  2. Как там с жильём? Сколько обещали ЗП? Каковы перспективы карьерного роста? Соцпакет? Правда ли, что в Штатах очень дорогая медицина?

    ОтветитьУдалить
    Ответы
    1. С жильем - все ок. ЗП - достойная. Перспективы - отличные. Соцпакет - впаряде. За медицину - не знаю, но у МС-а страховка хорошая:))

      Удалить
  3. Поздравляю!
    А что это за SDE II, есть ли SDE III? И какая между ними разница?
    И можно поподробнее чем будешь заниматься в Visual Studio Team?

    ОтветитьУдалить
    Ответы
    1. Линейка разработчиков в МС-е такая: SDE, SDE II, Senior SDE, Principal SDE, Distinquished Engnineer, Technical Fellow. Это для так называемого individual contributor. Если переходить на групповой уровень, то там будет - Dev Manager, Principal Dev Manager, Partner Dev Manager, Vice President, Corporate Vice President и еще пара ступеней до Сатьи.

      В VS Team я занимаюсь backend-ом тулы под названием Application Insights. Тула гуглящаяся. Если вкратце - то это смесь Google Analytics с VSO, которая позволяет собирать и отображать любые метрики с приложения, и обладает алертингом (умеет уведомлять при выходе метрик за определенные границы).

      Удалить
  4. Поздравляю.

    Я вот читаю иногда примеры интервью на www.geeksforgeeks.org и как-то у вас довольно простое получилось по срвнению некоторыми)

    ОтветитьУдалить
    Ответы
    1. Да, самым сложным все же было добиться этого интервью. Само интервью, хоть и было необычным, но было не смертельно сложным. Я думаю, что это связано еще и с командой, которой, по сути, специфические знания все же не нужны. Думаю, что с Bing-ом и Roslyn-ом была бы несколько другая история.

      Удалить
  5. Спасибо, что поделились опытом) Очень интересно!

    ОтветитьУдалить
  6. Этот комментарий был удален автором.

    ОтветитьУдалить
  7. Тру саксесс стори, камрад :-D

    ОтветитьУдалить
  8. Награда нашла своего героя! Поздравляю!

    ОтветитьУдалить
  9. Поздравляю вас!

    ЗЫ: книгу по паттернам все же надеюсь увидеть :)

    ОтветитьУдалить
    Ответы
    1. Александр, спасибо.

      Над книгой работаю. Хотя, не скрою, переезд несколько усложнил этот процесс. Но стараюсь идти по графику:)

      Удалить
  10. Спасибо за интересный пост. А почему Сиэтл понравился больше, чем Нью-Йорк?

    ОтветитьУдалить
    Ответы
    1. Впечатление довольно субъективное, но Нью Йорк - больше, грязнее, там больше людей. В Seattle Area лучше природа (но хуже погода), сами городки новее, просторнее... В Нью Йорке нормальное жилье находится в часе-полутора езды от города, зачастую тянучки на выходных на выезде из города.

      Что еще: Нью Йорк очень классный для командировок - масса всего интересного, но жить там мне не очень захотелось.

      Удалить
  11. >В Нью Йорке нормальное жилье находится в часе-полутора езды от города, зачастую тянучки на выходных на выезде из города.

    Немного уточню: на самом деле любой каприз за ваши деньги. За 2500 в месяц можно снять хорошую квартирку (1-2 bedroom) в 20 минутах от lower Manhattan с классным видом на этот самый Manhattan. С учетом очень высоких зарплат в NY, это не сказать что очень дорого.

    ОтветитьУдалить
    Ответы
    1. Паш, а ты учитываешь семейный статус и необходимость наличия школы в этом районе? ;)

      В Джерси Сити, например, школ нет (нормальных). Остается Квинс и Бруклин. Так ведь?

      Удалить
  12. Сергей, сори за оффтоп, было бы интересно услышать от вас о работе в Люкссофте. Насколько это этично конечно.

    ОтветитьУдалить
    Ответы
    1. Дмитрий, стучитесь в личку с более конкретными вопросами.

      Все зависит от проекта, но лично я ничего плохого сказать о Люксофте не могу, хотя проработал там 4 года:)

      Удалить
  13. Вопрос крайне простой, как раз по микрософту: как так получается, что все кругом умные ("даже шляпа на башке"), а мобильный сегмент откровенно про***али? Кто виноват? Какая там команда? Что вообще за проблема может быть у компании с ГОТОВЫМ ДОТНЕТОМ (по-идее, даже многоплатформенным) и такой бестолковой политикой для разработчиков, что никто под Win10M даже писать не хочет?
    Если есть инфа, поделитесь, плиз.

    ОтветитьУдалить