Куда лучше устроиться: в корпорацию или стартап? Этот вопрос волнует не только разработчиков, но и всех, кто так или иначе связан с IT. Мы поговорили с Булатом Фаттаховым, который сменил Яндекс на развивающийся Evolution Gaming, а затем еще пару других компаний и стран прежде, чем оказаться в Google.
Обсудили его опыт работы в Google: компанию, образование, подготовку и ошибки на собеседованиях. А еще поговорили о том, куда проще устроиться с узкой специализацией, а куда ― совсем без опыта.
Булат ― Boston-qualified, Software Development Engineer в швейцарском офисе Google, разрабатывает бэкенд Google Карт, марафонец, игрок спортивной версии «Что? Где? Когда?» и «Своей Игры».
Что выбрать: FAANG или молодой стартап
Между FAANG и стартапами есть большое отличие. И выбор зависит от желания, опыта и компании, в которой вы хотите работать.
В крупную компанию проще устроиться после университета. Нужно, чтобы человек был эрудированным, знал базовые вещи в компьютерных науках, был ответственным и порядочным. Компания его всему обучит и воспитает в традициях корпоративной культуры.
Считается, что корпорации проще вырастить сотрудника, чем найти готового. Сотрудники отмечают это и на карьерном росте внутри компании. Если человек приходит после 30–40 лет, его не возьмут джуниором. Нужно соответствовать более синьорной позиции, от которой другие ожидания: смотрят не только на опыт работы, но и на то, чем ты занимаешься по жизни, как развивался. Это добавляет сложностей в получении предложения о работе.
Помимо предпочтений в опыте, в крупных международных компаниях существует понятие разнообразия (“Diversity”). Они обращают внимание на возраст, пол, самоидентификацию, расу и физические ограничения. Поэтому возраст влияет на скорость и сложность поиска работы, но не ограничивает саму возможность. Здесь можно посмотреть отчет Google Diversity 2020.
В то же время в стартапах ситуация будет обратной: скорее возьмут человека с опытом, эксперта в конкретном framework’e, чтобы он с первого же дня приносил пользу и сокращал время выхода продукта на рынок.
С чего начать, чтобы попасть в FAANG?
определите, чем хотите заниматься в будущем;
решите, как должна выглядеть компания;
отполируйте резюме;
напишите сопроводительное письмо;
ищите вакансии и отсылайте резюме сразу в несколько компаний;
не стесняйтесь искать рефералы.
Опытному разработчику в России достаточно на полчаса открыть доступ к наполовину заполненной анкете на джоб-бордах, чтобы получить звонки от рекрутеров. В Европе и США ситуация другая. Нужно актуализировать резюме, самому найти вакансию, откликнуться и написать сопроводительное письмо, заточенное под конкретную вакансию. В крупные компании пишет много соискателей, и отдел по персоналу бегло просматривает резюме. Если человек приходит по рекомендации, то HR тратит на его резюме больше времени, что увеличивает шансы заинтересовать.
Сотрудникам часто платят деньги за успешные рекомендации, поэтому искать рефералы несложно. Если у вас нет знакомых в конкретной компании, напишите тому, с кем учились в одном вузе или когда-то работали вместе, даже если не знакомы лично. Вам вряд ли откажут в рекомендации.
Например, Булат подавался первый раз в Google по рекомендации бывшего коллеги, который уехал за год до этого. В первый раз что-то не срослось, но Булат остался в базе соискателей. Во второй раз рекрутер уже сам вышел на него.
Это нормально если вам откажут десять и даже двадцать раз. Кто покупает больше лотерейных билетов, тот и выигрывает.
<рекламная пауза>
Подписывайтесь на наш чат-бот @g-jobbot, мы поможем вам с поиском вакансий и убедимся, что вы получили обратную связь от компании.
</рекламная пауза>
Держите руку на пульсе и грамотно планируйте собеседования
Чтобы найти подходящую компанию и удачно переехать, сделайте так, чтобы получить все офферы более-менее к одной дате. Часто получается, что в одной компании вы уже на третьем собеседовании, а с другой только начинаете разговор. Если не отслеживать сроки, можно оказаться в ситуации, когда еще непонятны результаты в одной компании, а другая ждет вашего решения.
Чтобы этого не допускать, назначайте очередное собеседование не на следующую неделю, а через две или три. Можно сказать, что уезжаете в отпуск и использовать эту паузу для собеседований в других компаниях, чтобы везде быть примерно на одной стадии.
У Булата, процесс интервью в Google занял около двух месяцев, что меньше среднего. Зная, сколько это займет, затягивайте процесс или подгоняйте рекрутеров.
Одна из особенностей Google в том, что вам сначала делают предложение о работе, а команду подбирают потом. Оффер — это электронная форма с предложением, где вы ставите электронную подпись, подтверждая ваше согласие. После этого происходит “team matching”, который занимает еще пару месяцев. В начале месяца, после того как команда найдена, вы выходите на работу и проходите онбординг с другими новичками.
Лайфхаки собеседований в FAANG
Выучите, наконец, алгоритмы сортировки, нотацию О-большое и оценку сложности алгоритмов и т.д. По опыту Булата, на это уйдет 2–3 месяца обучения по вечерам.
Тренируйтесь решать задачи на ресурсах типа HackerRank или Leetcode.
Покажите свою привычку тестировать код: обсудите тестирование на всех интервью, добавьте тесты в задание, которое вам вышлют.
Мыслите в категориях дизайна и архитектуры. Практически в любой секции есть возможность для дизайна, даже для абстрактной программистской задачи. Оберните алгоритм в простенький интерфейс или хотя бы обозначьте на собеседовании, что если вы сделаете так, то пользоваться этим кодом будет проще. Если это сервис, подумайте как он будет разворачиваться и как будет выглядеть CI/CD, как он встраивается архитектуру приложения.
Помните, что задачи по архитектуре сервиса или приложения на собеседованиях часто не имеют правильного ответа. Решение зависит от входных условий, которые обычно не сформулированы при постановке задачи. Чтобы не использовать золотой молоток, начните с определения требований: какое окружение, сколько пользователей, какое время на разработку.
Помогите собеседующему написать про вас отчет. Интервьюер всегда пишет отчет, по которому позже будет приниматься решение. Он копирует написанный код в отчет. Если не можете сходу придумать оптимальное решение, напишите brute force за три минуты, проговорите, что для малых n этот brute force помещается в памяти, поэтому решение имеет право на существование. Возможно, в формате диалога удастся оптимизировать решение.
На собеседованиях в больших компаниях важно создавать артефакты, чтобы человек, который с вами не общался на собеседовании, мог понять что-то о вас.
На работу в Google подаются около трех миллионов соискателей в год. Поэтому безопаснее упустить крутого специалиста, чем принять ложноположительное решение, нанять некрутого и потратить время на онбординг и увольнение. Если на собеседовании есть сомнения, компания трактует их не в пользу кандидата, поэтому сделайте так, чтобы сомнений не могло появиться. Это как на первом свидании ― вы, конечно, волнуетесь, но надо быть остроумным, интересующимся, лучшей версией себя.
Обычно требуется придумать оптимальный алгоритм или разбираться в структурах данных. Тогда чистота кода или даже язык, на котором вы пишете, не имеет большого значения. Булат на собеседованиях в Google в трех секциях из пяти писал на Scala, при том что интервьюеры его не знали. Об этом договаривались в начале собеседования, и когда собеседник признавался, что Scala не знает, Булат обещал ему объяснять.
Если хотите узнать о структуре собеседований FAANG, вы найдете массу информации в нашей статье, а тут рекомендации Google, как устроиться к ним на работу.
Если не о Google, то иногда в компаниях встречаются задачи на проверку навыков написания кода. Как пример: на вход подается два массива, задача ― вывести результат merge sort’a. Здесь нет ничего с точки зрения математики и алгоритмов, тогда важно, как вы напишете код. Насколько он правильно написан, чистота и внятность названия переменных.
Собеседования по компетенциям и soft skills
Важно не только хорошо писать код, но и соответствовать культуре компании. И корпорации, и стартапы задают вопросы про ваш прошлый опыт, конфликтные ситуации, неудачи, ошибки и какие выводы вы из них сделали. В Google такая интегративная характеристика сотрудника называется Googliness.
Подготовьтесь к собеседованию по компетенциям и софт скиллам. Сначала изучите сайт компании, найдите миссию, values и vision. Смотрите, какие слова и термины используются, какие софт скиллы ценятся в компании. Будьте честными прежде всего с собой и подумайте, подходит ли всё это конкретно вам. Это важно, потому что если вам что-то не нравится в описании, скорее всего, потом будет некомфортно работать в компании.
Мы рекомендуем изучать английскую версию, если вы устраиваетесь в зарубежный офис, но для примера, так AWS описывает свою культуру и ключевые навыки. Продумайте ответы на вопросы по этим компетенциям. Списки вопросов можно найти в интернете, например, на портале Competencylibrary.com. В ответах не стесняйтесь использовать терминологию компании и выделять интересные компании скиллы, которые есть у вас. Для структурирования ответов используйте метод STAR:
Situation ― краткое описание ситуации из прошлого;
Task ― поставленная перед вами задача или возникшая проблема;
Action ― действия, которые вы предприняли;
Result ― к чему это привело, положительный или отрицательный результат.
Кратко опишите чему научились, особенно если ситуацию не удалось решить.
Зачем на собеседованиях в FAANG просят разворачивать дерево
Многие жалуются, что на собеседованиях FAANG просят развернуть дерево, хотя с будущей работой это никак не связано. На этот счет Булат поделился прекрасной аналогией с гражданской авиацией. Он уверен, что пилота можно подготовить к 90% рейсов на современном лайнере месяца за три: базовая рулежка, сказать «Здравствуйте, наш рейс проходит на высоте 10 500 метров» и нажать на три кнопки, чтобы запустить автопилот. Но есть 10 % случаев, когда требуется ручное вмешательство.
В программировании тоже большая часть работы повторяется из раза в раз и отличается, может, только на стадии рисеча. Поэтому, нет смысла спрашивать базовые вещи, если у разработчика пять лет опыта. Спрашивают про оставшиеся 10%, которые он, возможно, не знает. Те вещи, которые помогут ему в неизвестной ситуации не наступить на грабли и не написать квадратичный алгоритм, где можно написать логарифмический.
Так ли важно высшее образование
Все прекрасно понимают, что в IT высшее образование ― не самая существенная вещь, но без него будет сложнее доказать в Европе вашу квалификацию и преодолеть бюрократию.
Например, в Швейцарии разрешено подаваться на работу с высшим образованием после трех лет опыта работы. Степени бакалавра достаточно. Если его нет ― потребуется десять лет опыта в конкретной области.
Российское образование не всегда консистентно, но у него есть неоспоримые плюсы ― его принимают в других странах как подтверждение квалификации и оно зачастую бесплатное или дешевое по мировым меркам. Если есть возможность доучиться и получить диплом, даже если вам это не очень нравится, рекомендуем это сделать.
Непрофильное образование не помешают вам найти работу программистом в Европе, но может добавить проблем, например, с получением Blue Card. У Булата не было голубой карты, когда он работал в Риге на Evolution Gaming, потому что в Латвии на тот момент было требование, чтобы специальность по диплому соответствовала названию должности. В Германии в 2020 году на это смотрят лояльнее, поэтому проверяйте правила страны, куда переезжаете.
Чтобы не вводить вас в заблуждение, отметим, что Швейцария не входит в Евросоюз, хоть и расположена в центре Европы, поэтому у нее свои визовые правила и Blue Card они не выдают.
Почему отказывали Булату
После поездки в Лондон Булат загорелся идей там жить и работать. Поэтому начал массово отправлять резюме британским компаниям. Пять или шесть из них пригласили его на собеседования, но в итоге все отказали.
Одна из причин, названных Булатом, — то, что на собеседованиях не клеится разговор. Может быть кто-то не в духе или нет нужной химии. Поэтому собеседование проходит вяло, и вы уже понимаете, что ничего из этого не получится.
Другая причина ― заваленные тестовые задания. Булат хорошо помнит одно тестовое задание, которое показалось ему простым, и он решил произвести впечатление.
По его словам, он чересчур усложнил и наворотил на IO Monad’ах. Решение было корректное, но очень сложное. Мнения нанимающей команды по поводу тестового задания разошлись, и они взяли паузу на раздумья. Булат за два часа выкинул сложную часть и отправил его снова, но ему ответили, что второго шанса никому не дают. Это было очень обидно: он сам себе создал проблему.
Иногда компании отказывают по внутренним причинам: сняли вакансию, поняли что, искали неправильного человека, или, в случае с Великобританией, — неизвестность, связанная с Брекзитом.
Часто, в конкуренции за место побеждает другой кандидат. Это несомненно разочаровывает. Совет здесь один: keep trying.
Рекомендации Булата
Курс MIT для базового понимания, где рассказывают про вещи, которые обычно упускаются в обучении разработчиков Missing Semester.
Канал Мартина Клеппманна.
Книга Мартина Клеппманна для базовой подготовки к system design собеседованию «Высоконагруженные приложения. Программирование, масштабирование, поддержка».
Серия книг Андрей Столярова удаляет магию из программирования.