Rocky Road to Berlin - Поиск работы и онлайн-собеседования - p1

Rocky Road to Berlin - Поиск работы и онлайн-собеседования - p1

https://t.me/anscombes_quartet

UDP: вторая часть - вот здесь.

Давеча собирался написать серию заметок про Берлин вообще, пусть эта будет первой.

Вещи, сказанные здесь по большей части самоочевидны для тех, кто знает детали поиска работы в Берлине, и уже были озвучены, однако мне кажется что всегда полезно посмотреть на то, как кто-то в миллионный раз проходится по всем известным граблям.

TL;DR

Итого: 5 офферов (4 в Берлин, 1 в Мюнхен)

Потраченное время:

  • 8 месяцев зубрежки английского
  • 2 месяца LeetCode + Codility + Cracking the Coding Interview
  • 1 месяц на подачу / онлайн собеседования
  • 1 неделя в Берлине на онсайтах

Результат: Data Engineer позиция в Zalando

Часть 1 - Где искать?

Самый простой вариант, с которого стоит начать - это ковровая бомбардировка на Glassdoor + Linkedin. Суммарно по этому варианту я отправил около 20 CV + CL, из них 3 превратились в офферы. Я бы сказал что это отличная тренировка на кошках, алгоритм поиска очень простой:

  • Находите позицию на сайте-агрегаторе
  • Ищете эту же позицию на сайте самой конторы (если у конторы нет на сайте Jobs-раздела, делать там нечего)
  • Кидаете CV + CL
  • Ждете отклика

Пару заметок про вакансии:

  • Достаточно чтобы совпадало 60/70% ваших скиллов и скиллов в описании позиции
  • Если позиция описана на немецком, а немецкого вы не знаете - skip
  • Если по позиции видно что нужен джун, хотя в названии гордо стоит middle/senior - skip

Опционально и если возможно - лучше подаваться по рефералам, это:

  • сильно повышает ваши шансы на успешный отклик
  • снимает необходимость общаться с HR
  • на надо проходить всякие онлайновые тесты на время по типу Codlility
  • улучшает сон, пищеварение и нервную систему

Часть 2 - Short note про CV/CL

Про CV спето ужо много песен, я бы выделил главное:

  • Обязательный джентельменский набор ссылок - Linkedin, Github (если вы разработчик с пустым GitHub в 2019 году, мне нечего сказать), Kaggle если вы DS/ ML Engineer и есть чем похвастаться
  • Скиллы выносим крупно блоками, не списками - достаточно одних названий. Все равно на прескрининге резюме HR будет смотреть на regexp match ваших скиллов и текста в вакансии
  • Одна страница без фото/возраста/пола - вы не модель

В CL можно почти всегда писать одно и то же - нравится ваш продукт, классный международный опыт, и далее по списку.

Часть 3 - Собеседования

Классический путь от собеседования до оффера выглядит так (в зависимости от компании пункты в списке могут меняться или исчезать):

  • Онлайн с HR
  • Codility/ LeetCode
  • Тестовое задание
  • Онлайн с инженерами
  • Онлайн с тимлидом
  • Онсайт вайтбординг
  • Онсайт архитектура
  • Онсайт с тимлидом
  • Оффер

Разберем онлайн и онсайт собеседования по кусочкам.

Часть 4 - Онлайн

Общие рекомендации:

  • Нормальный микрофон
  • Хороший интернет
  • Розетка рядом

Последний пункт испытан на собственной шкуре - на одном из собеседований в самый разгар дискуссии по поводу полнотекстового поиска мой ноут решил что ему пора отдохнуть - вышло не очень приятно, но оффер все же был получен.

Почти наверняка ваш первый разговор будет с HR. В идеале практиковаться для начала с HR из всяких агенств - да, это не прямой путь к позиции, но если вам нужна языковая тренировка, это бесплатные полтора часа общения. Поскольку большинство HR в Берлине по непонятной мне причине - либо британцы, либо работают на аутсорсе из Лондона - приготовьтесь к тому что в половине слов будут отсутствовать слоги, поэтому очень советую послушать что-нибудь по типу BBC в процессе подготовки, чтобы не быть в шоке от акцента. С вашей стороны очень на руку будет заготовить пачку ответов на классические "расскажите о себе", "сколько вы хотите", "почему вам интересна наша позиция" и пару раз вдумчиво их проговорить.

Если HR - не native speaker, говорите не торопясь, вам же лучше - вас смогут понять. Как кто-то остроумно писал - "lingua franca of European IT is the bad English".

После прохождения HR, вам скорее всего в любом случае прилетит фидбек, воронка на проход далее тут сужается процентов на 10, не более - если больше, вам стоит поменять что-то в самоописаниях.

Следующий шаг - это LeetCode / Codility (если вам не повезло). Ничего особенно сложного в этих заданиях нет, обычные задачки-гномики, иногда с прикладным смыслом (напишите API который делает X от входов Y,Z), для Data Engineer будет полезно повторить SQL в привязке к PostgreSQL (обычно тесты пишутся под него). Мне кажется что здесь практически невозможно потеряться, потому что времени на задания обычно дается от 2 до 4 часов - что вполне соответствует их сложности, а иногда даже и чересчур.

Если вы успешно проходите LeetCode, вам скорее всего вышлют тестовое задание. Оно обычно довольно generic, мне попадались такие:

  • Напишите репликатор из одной Postgres таблицы в другую, не используя CDC решения или внутренние механики репликации Postgres. В табличку идет большой поток апдейтов, соответственно решение было простым - сначала выкачиваем в параллель всю базу с ее текущим состоянием (Google Cloud + Spark), затем начинаем раз-в-X (в моем случае была выбрана минута) вычитывать данные из БД с фильтром по update_dttm (тут пригодился Python + Psychopg, он читает мелкие батчи гораздо быстрее).
  • Дан 400MB json-массив с комментами по поводу различных туристических локаций, напишите масштабируемый полнотекстовый поиск по комментам. В качестве базового решения предлагался Python с in-memory словарем, обернутый в Tornado, необходимо было сделать решение быстрее. У меня было мало времени на эту домашку, поэтому я воспользовался готовыми технологиями - данные залил в Redis и воспользовался готовым полнотекстовым поиском от Redis Labs, сервер сделал на Go с fastHTTP, ускорение получилось где-то x4 от исходного теста. В качестве аргумента масштабируемости был приведет Redis cluster-mode.
  • Напишите любую модель (точность не важна) на Python, которая предсказывает Titanic Dataset по трем полям. Оберните модель в HTTP ReST API. Я сделал это в виде классического sklearn + pickle и сверху добавил Connexion модуль

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

Пара комментов по поводу ТЗ:

  • не забудьте написать минимальные тесты
  • не забудьте написать документацию к вашему решению
  • если ТЗ занимает больше двух вечеров, скорее всего кто-то делает свою работу за ваш счет - отказывайтесь от таких опций.

Почти наверняка через пару дней после рассмотрения вашего ТЗ у вас будет онлайн-звонок с инженерами, которые в перспективе станут вашими коллегами. Тут нужно уметь грамотно аргументировать свое решение. В большинстве случаев это - самая адекватная и интересная часть всего процесса отбора (если кто-нибудь из тех кто общается с вами не считает себя rockstar developer, конечно же). Обычно сюда же добавится обсуждение некоторых технических деталей и расспросы по теоретической базе. В целом в процессе этого собеседования стоит поинтересоваться у ваших возможных будущих коллег - чем они занимаются, над чем и как они работают. Я всегда расспрашивал про то, как происходит планирование спринтов, кто и сколько работает на проекте, как происходит code-review, как обстоят дела с CI/CD пайплайнами - обычно самые интересные ответы и больше всего релевантных данных вы можете получить здесь.

Последним шагом на пути к приглашению на онсайт (если таковой имеется), будет общение с тимлидом. Обычно это cultural-fit тест, делаем poker-face и учимся продавать свои навыки по завышенной цене. После всей цепочки вы получите фидбек, обычно где-то за 2-3 дня. В моем случае всегда, когда я доходил до тимлида, я получал либо оффер, либо приглашение на онсайт, могу предположить что если не ударить в грязь лицом и показать себя адекватным человеком, шансов провалиться здесь практически нет.

В заключение по первой части

Если руки дойдут и фидбек читателей будет позитивным, расскажу как я проходил онсайты в Берлине (3 компании за 4 дня).

Мой канал в TG - https://t.me/anscombes_quartet

P.S. Если вы все знаете из того что тут написано, или ищете позицию Senior Data Engineer в Берлине - подавайтесь в нашу команду Event Processing:

Report Page