Привет, Хабр!
Хочу поделиться своей историей о том, как я добрался в Microsoft. Постараюсь без лишних эмоций рассказать, как было, что делал, что получалось, и что не получалось. В этой статье я не буду "продавать" идею куда-то идти, либо отговаривать.
Я уже писал несколько статей на Хабр, где я делился подходом к собеседованиям, где упоминал Бигтех (мне не очень нравится как звучит это слово, но так как Microsoft отсутствует в нашумевшем бренде FAANG то я намеренно использовал именно его) и уже успел встретить некоторое количество вопросов. Для того, чтобы никого не мучить сразу выдам спойлеры. TL;DR:
Заняло 2 года подготовки
5 отказов в разные компании. Удачная попытка – 6-я (конкретно в Microsoft - вторая, но я весь Бигтех считаю)
Должность – Senior Software Engineer
~500 задач на Leetcode (но алгоритмы проходил ее уже и на 250-300, заваливал остальные секции)
Локация - Сербия (находился здесь же, здесь же и наняли. Никуда не ехал)
Дальше – моя личная история. Для тех, кому все еще интересно :) Для того, чтобы картина была полноценной я буду писать факты о себе и своей жизни. А еще буду щедро расписывать все мои провалы, а то одни "я работал и все получилось" кругом.
Не хочу истории, хочу подготовиться
Насобирав шишек, я написал 3 статьи
Про Behavioral (не советую этой секцией пренебрегать. Почитайте про это где угодно)
Все, что дальше в статье - мой личный опыт.
О себе
У меня не очень "крепкое" образование в обычном ВУЗе в провинции. Программирование было в некотором количестве. Я видел что такое C и указатели, но не сильно дальше этого. Где-то с 3.5 курса универа мой фокус сместился на работу, так что считаю, то у меня "3 года университета".
Я попал в Яндекс. Вышел туда в первый учебный день своего 4 курса. В Яндексе у меня было 3.5 часа собеседования про все на свете. Алгоритмы на тот момент не были обязательными, в меня поверили, и "авансом" взяли. Так в целом и сказали. С Яндексом мне сильно повезло. Это был прорыв в карьере.
Я проработал там долго (7 лет. Где-то половину из них я топтался на месте и стагнировал, но не сразу осознал).
После ухода из Яндекса я завалил кучу собеседований на алгоритмы, и просто стал отказываться от собеседований где были алгоритмы.
Такой вот у меня контекст. Вроде и IT образование, вроде и Яндекс был. На бумаге помогало получить интерес со стороны HR, но дальше на технических частях было тяжеловато. Чего уж там, когда я еще работал в Яндексе я не смог решить задачу про скобочки.
В IT я суммарно 14 лет на момент написания статьи. Начинал с фронтенда, потом перешел на бекенд (через ~7 лет).
Общее про структуру собеседований
Все собеседования проходят по похожей схеме с небольшими отличиями. Этапы такие:
Звонок с HR
"Скрининг" 1-2 собеседования (Обычно это 1 задача + немного подизайнить + немного поговорить "за жизнь")
Финал (те самые легендарные собеседования)
Звонок с HR на Senior позицию ну очень формальный. HR расскажет как будут проходить собеседования и немного приободрит, скажет чтобы ты не переживал.
Скрининг обычно не сложный. Он все время разный, но там не будет ничего, чего не будет в основном этапе.
Финал - то самое, страшное, о чем все говорят:
Кодинг (LeetCode-style задачи)
System Design (backend)
Behavioral (Самая недооцененная секция по моему мнению. Очень трудно было готовиться, очень трудно прокачиваться)
Нечто. Эта секция всегда разная. Чего у меня тут только не было. Фронтенд дизайн (одна с рисованием, вторая просто 45 минут разговора), "ООП-дизайн", Системное администрирование нацеленное на понимание Linux, при подготовке давали книги по SRE.
Итого, полноценно готовиться вы можете только к 1-3.
1-2 раза я "размазывал" финал по неделе, но большую часть времени это 4 часа в режиме: "45 минут собеседования, 15 минут перерыв, и следующее".
Да. По факту это всегда 5-6 собеседований (звонки с HR не считаются, потому что там HR пытается просто вам помочь). Много видел мемов про 30 этапов, но за все мои 6 попыток не сталкивался. Наверное, это из серии "6 (ощущается как 30)".
Fun fact: регулярно путают последовательность. Однажды спустя 10-15 минут собеседования я обнаружил что это бекенд дизайн, а не фронтенд. А я уже там в голове мусолил что да как по компонентам. Пришлось на лету перестраиваться. После этого случая (и нескольких других), я просто на каждом собеседовании уточнял, что сейчас именно та самая секция, которая идет по расписанию. Это очень сбивает в моменте, поэтому лучше быть готовым к любой секции.
Первые шаги (1 и 2 отказ)
Вообще Бигтех это страшно. Очень много мифов и легенд. Выглядит как эдакая "неберучка". Я подумал, что все равно я туда не пойду, да и вообще, быстро не подготовлюсь, и надо сразу завалить 1-2 собеседования, чтобы посмотреть, что же там у них. Сходил, завалил. ВНЕЗАПНО нужно было лучше решать задачки. System Design был моей лучшей секцией, потому-что проработав около 10 лет работы что-то да расскажешь. Я всегда считал что у меня отличные софт скилы, и "на поговорить" точно справлюсь. На удивление сказали что достаточно размыто было и не хватало конкретики. Посмотрев на людей по ту сторону экрана, которые работают в тех самых чудо местах я увидел, что это обычные люди. А не какие-то там эдакие вундеркинды. Это очень помогло "разблокировать" мысль в голове о том, что это невозможно или "не для меня". Так я получил свои первые 2 отказа.
Хочется тут отдельно отметить, что мне очень подошла стратегия просто пробовать, не надеясь на мгновенный успех. Эти отказы были очень хорошим примером. "Просто попробовать и облажаться". Мой первый пет проект был неудачным, я не смог заполучить пользователей. Моя первая статья на хабр была об этом проекте, некий дядя Сережа написал что я вообще непонятно на что надеялся, и мой провал это закономерный результат. В дальнейшем у меня получалось получше.
Сначала заплати себе
Эта фраза из мира инвестиций очень здорово резонирует с прогрессом по личным целям. Как-то меня она зацепила, и я ее переложил на обучение как инвестицию собственного времени. Работодатель мне платит зарплату, я плачу ему собственным временем и тем, что я решаю конкретные проблемы. Это честный win-win. Но! Сначала я заплачу себе. Привычка строилась так:
Проснулся утром
Сделал кофеечек
1-2 "помидорки" LeetCode в среднем. 25-50 мин
Забегая вперед, скажу, что эта привычка осталась со мной, и так я и живу с тех пор. Все Систем Дизайны и прочее я укладывал именно в этот временной слот. Сейчас это, правда, 0.5-1 помидорка (10-25 мин). Когда я заболел или устал или тема не очень обширная я делаю поменьше, когда что-то попадается побольше - делаю побольше. В отпуске делаю буквально минут 5 для того, чтобы эта привычка оставалась частью моей жизни. Так я не испытываю того болезненного "возвращения в будни", по крайней мере, в части обучения.
Получай, литкод несчастный
В один прекрасный день я решил бороться с кризисом 30 лет замотивировался, и решил, что хочу все-таки преодолеть эту планку. По совместительству я хотел переехать в Ирландию либо UK (забегая вперед, пока не получилось).
И вот я решил готовиться решительно и серьезно. Решил, что буду готовиться иначе, включив режим "с щитом или на щите".
Я ненавидел эти задачи всей душой (когда-то я не любил английский язык, но тоже пришлось полюбить), но как-то я смог увидеть в них ценность и пользу, и решал их каждый день без исключений (тот самый "сначала заплати себе"). Первые недели были самыми тяжелыми, но вот я и смог месяц решать задачи каждый день, вот и два… Так прошел год (шок жесть). Забегая вперед – я написал статью на хабре, посвященную именно этой части пути.
Мне, кстати, понравился результат, который я получил. Я увидел много изящных решений, увидел как оптимизация влияет на красоту кода, увидел что такое эффективные решения и расширил кругозор.
Тем не менее мои отношения с задачами остались абьюзивными, полными эмоциональных качель (в один день мне кажется что я вообще крутецкий и все умею, а иногда я валюсь на очередной Easy задаче, и хочется плакать). Так по сей день и осталось на уровне ощущений, но собеседования начали все-таки проходиться.
Новая попытка, новый отказ (3й)
Первые 2 отказа были не страшны. Я ничего не решал, я знал что завалю, и я просто пошел поглядеть, что там интересного. Спустя год каждодневного решения собеседоваться было прям страшно. Помимо этого, рынок стал заметно менее приветлив. Через знакомых-знакомых я узнал контакт парня, который когда-то был в чате про мок интервью, и кого-то рекомендовал в одну из FAANG компаний (прям без преувеличений написал как есть). Я ему написал: "привет, можешь порефералить?" Сказал, может.
Если бы я прошел и пережил испытательный срок – он бы получил денег. А я был бы счастлив получить такую ачивку в своей карьере.
Важный момент: на сегодняшний день если нет реферала – нет Бигтеха. Даже с рефералом не всегда можно попасть в Бигтех (один очень большой поисковик не стал рассматривать меня даже через реферал от моего бывшего коллеги).
Итак, звонок с HR, дали 2 недели на подготовку, пошел на собеседования. Я решил 2 задачи. Даже почти сам, местами подталкивали, но зачли. Хороший интервьюер всегда подталкивает и помогает, кстати.
И вот, долгожданный фидбек! Отличные новости! Я прошел кодинг секцию! Но все равно получаю отказ. Системный дизайн слабенький, фронтенд дизайн слабенький (в этом достаточно исключительном случае он был), Behavioral "на ваш опыт ожидали большего".
Жизнь после пройденной кодинг секции (4-5 отказы)
Итак. У меня получился кодинг, но дизайн и бихейв были "недостаточно для вашего опыта" (тут уже, внезапно, стаж играл против меня). Хорошо, оставляем кодинг время от времени "в режиме поддержания штанов", и наваливаемся на System Design. Мой личный (возможно, спорный) совет - не начинайте с "кабанчика" (Designing Data-Intensive Applications). До него нужно дойти, но лучше наберитесь материалов перед тем как к ней приступать. Я прочитал 2 книги перед тем как ее открыть, и очень этому рад.
Ускорю историю тем, что я получил пару отказов на что-то поближе к администрированию. Очень прокачался в этой области пока готовился, ни о чем не жалею. Набил еще шишек
Собеседование = соревнование/олимпиада
Получив еще немного опыта, я стал смотреть на собеседования как на спортивное соревнование. Спортсмены, участвующие в соревнованиях высшего уровня выходят на них на пике формы. Я стал относиться к собеседованиям так же. Минимум за 2-4 недели до того как начать откликаться (бывало, звали буквально на следующий день):
Порешиваю задачки. В первые дни easy уровень, чтобы раскачаться, постепенно повышаю сложность. Hard решаю ну очень редко, почти никогда
Пролистываю свои бумажные книги по System Design там, где я загнул листочки и выделил часть текста карандашом. Эдакий личный индекс по 3м книгам, что у меня есть.
Освежаю свои Behavioral истории через напоминалки и мок собеседования
Английский. При работе в русскоговорящей среде тоже заметно проседает. На одном из последних собеседований так и сказали, что слабоват. Надо прям набалтывать
Я называю это "подвестись" (к пику формы).
Подготовка после 5 отказа
Пишу вот, и думаю, какой же я упрямый человек. Но настроение к этому моменту было уже упадническое. Что им еще надо, ну в самом деле :) Я перерос себя на 3 головы, стал чувствовать себя увереннее на текущей работе. Всегда страдал от синдрома самозванца. Но тут пришло новое, ранее невиданное ощущение уверенности в собственных навыках. Я знал, что я проходил кодинг и System Design по отдельности. Оставался Behavioral.
Еженедельный созвон с коллегой на 1 час + материалы + болезненная корректировка самого плана подготовки (я все 5 собеседований не считал, что мне нужно готовиться так, как это требовалось на самом деле). У меня был документ, в котором я описал 13 историй в сжатом формате на самые популярные вопросы.
Подготовка к Behavioral была некомфортной, но сложила в моей голове некоторую картину "как действует профессионал".
Оффер
Я "подвелся" к новому этапу, порешал задачек, порепетировал мои Behavioral истории, освежил System Design и позанимался английским с носителем. Пошел еще раз. Я знал, что я сделал все, что смог, и решил "я просто схожу, и стану лучше еще раз". Не было ни одного случая после собеседования в Бигтех, чтобы я не стал лучше.
К этому моменту я уже успел пробежать свой первый полумарафон (21км). Бег меня многому научил и усилил мое упрямство. К тому же, как часто цитировал мой коллега: "если сдаться - легче не станет".
Звонок с HR был совсем уж формальным, скрининг как-то тоже быстро прошел. Перед финалом я проснулся пораньше, поел медленных углеводов (привет, бег на длинные дистанции). Кстати, я считаю, что хорошо помогло. После 4 часов собеседований я себя чувствовал лучше, чем обычно. Финал был не очень легким, я откровенно завалил первое же собеседование, причем с треском. Остальные 3 прошли более-менее неплохо (кодинг+систем дизайн+бихейв). Оказалось, что 3х успешных секций в финале мне хватило.
Жизнь после оффера
Часто слышал о том, что в Бигтех набирают крутых специалистов, а они потом "кнопки красят". Сменив русский язык на английский, JavaScript на C#, Linux на Windows, я осознал, что у меня нет ничего, на что бы я мог опереться из предыдущей жизни. Взяли меня в инфраструктуру облака в очень непростой проект с невероятно огромным продакшеном с кучей непростых проблем. Я рад, что мне не пришлось красить кнопки, честно говоря:) Также слышал, что могут взять на другой язык, но опыта такого не было. Чувствуется, что компания считает, что если ты прошел все круги ада - то язык уж выучишь.
Через пару месяцев мне предложили взять под свое крыло непростой проект, я согласился. Веду нашу маленькую подкомманду к светлому (надеюсь) будущему.
А еще, оказалось, что Senior Software Engineer это очень престижно и с твоим мнением считаются с первого дня. Да и в целом мне пока кажется, что к разработчикам относятся с бóльшим уважением, чем во многих других местах.
Посмотрим, что будет дальше, но пока я не жалею о пройденном пути и о результате. Как минимум, эту планку я взял.
Это завершающая статья из серии "как один упрямый парень попал в Бигтех". Что бы вы ни делали, не сдавайтесь. Все будет. Просто, возможно, не сразу.
Дальнейшие планы
Дальше я планирую вырасти в честного настоящего Principal Software Engineer / Tech Lead. В такого, за которого не стыдно. Расти в техническую ветку оказалось достаточно занимательным. Также Хабр открыл для меня, что есть люди, которым интересно читать то, что я пишу, а мне, оказывается, понравилось писать текст. Даже завел себе тг канал, который уже вырос до 11 подписчиков! =)