
Ранее я уже делился опытом, как мой приятель искал работу в Германии в 2025 году (см. статью [Личный опыт] Поиск работы в Германии в середине 2025). И вот теперь уже нашей компании самой пришлось искать Middle Data Engineer в команду на замену увольняющемуся сотруднику, что позволило мне взглянуть на процесс с другой стороны баррикад, так как я выполнял в этом найме роль основного технического эксперта. Как это выглядит со стороны работодателя, а также своими наблюдениями я хочу поделиться в данной статье.
Спойлер - от результата (кого в итоге мы наняли) я выпал в осадок %)
Кого искали
Вначале немного контекста. Требовалась замена очень сильному синьору в маленькую команду, который проработал в компании несколько лет, внедрил кучу улучшений и т.п., но ему стало "тесно" в рамках текущей структуры, ограничений и т.п., а все возможные места для "промоушена" и расширения зон ��тветственности были уже заняты, так что он решил уйти в другую компанию. Нанимающий менеджер резонно рассудил, что он не хочет через еще 3 года опять искать нового сотрудника, поэтому ему нужен смышленый мидл, который будет "расти вместе с командой" и просто пилить задачи, пользуясь уже выстроенными его предшественником фреймворками, библиотеками, стандартами, архитектурой и проч.
Мои 5 копеек о таком подходе.
Я, если честно, подход нанимающего менеджера не разделяю, хотя рациональное зерно в нем, безусловно, есть. Дата-платформа — это не статическая субстанция, а живой организм. Ее постоянно надо развивать — начиная от интеграции новых источников (используя, конечно же, наилучший подход для конкретного кейса) и заканчивая внедрением постоянных улучшений, новых фич и нового функционала, которые предлагают вендоры (в нашем случае это Azure и Databricks). И квалификация, а главное, мотивация инженеров должна позволять это делать.
В общем, основные тех. требования в описании вакансии были сформулированы следующим образом:
Основные hard-скилы из описания вакансии:
5+ years of experience in data engineering, with hands-on exposure to analytics engineering practices (e.g., data modeling, transformation logic)
Expertise in Scala and experience using Spark in production environments
Experience with cloud-native architectures, especially Azure Cloud Platform and Databricks
Solid grasp of data modeling concepts, especially in the context of analytics and reporting (conceptual/logical/physical models).
Languages & Frameworks: Scala, SQL, Spark
Cloud & Infra: Azure Cloud Platform, Databricks, Azure DevOps/GitHub, Terraform
За первую неделю получили 133 отклика, ��а все время поиска - 2 месяца без пары дней - примерно 280+ резюме. Вакансия была достаточно срочная, так как команда, в которую нужен был Data Engineer, как уже упоминал выше, маленькая, и нанимающий менеджер очень хотел, чтобы новый сотрудник вышел ASAP, и лучше, чтобы даже пересекся хотя бы на пару недель с увольняющимся для передачи дел.
Главная сложность в поиске была ясна изначально - в требованиях есть Scala, которая очень редко встречается в Дата-инженерии в Европе, и нам не нужно было никакого Питона (напротив, очень сильно распространенного в Дата-инженерии там). К тому же из-за требования найма обязательно мидла (а не сеньора) отваливались те немногие инженеры, которые как раз имели опыт с ней. Все же маловероятно, что 5 лет назад какой-нибудь джун, входящий в профессию Дата-инженера, начинал свой профессиональный путь с изучения Scala. Я сам познакомился с ней только через 10+ лет профессиональной деятельности (и влюбился в нее :-)). Именно требования к грейду дополнительно отрезали мне возможность рекомендовать кого-то из своих бывших коллег, которые были у меня на хорошем счету.
Скриниг и разбор CV
Как уже упомянул выше, вначале был вал откликов! Через 2 недели поток стал спадать до нескольких штук в день. У нас в компании не используются никакие AST-фильтры и прочее - все просматривали вручную либо я, либо нанимающий менеджер. Первый месяц бóльшая часть CV проходила именно через меня. После обсуждения с нанимающим менеджером мы решили, что основные технические требования у нас - это наличие опыта:
работы дата инженером
Spark
Scala
Databricks и/или какой-нить Cloud
Я при скрининге обычно просто открывал CV, искал там через "Ctrl + F" слова "Scala" и "Spark", и если не находил - автоматический реджект. Если находил, то уже просматривал резюме полностью. Также по договоренности с нанимающим менеджером мы реджектили всех, кто часто менял работы и у кого нет опыта работы в Германии (это, кстати, автоматом отсеивало всех, кому нужна релокация).
Мои наблюдения по результатам этого этапа:
80% всех резюме — от каких-то индусов/турков/иранцев/пакистанцев и т.п. — в общем, не от людей с европейскими именами. Мне и компании, если честно, это было без разницы. У нас уже 50+ национальностей работает, и первая тройка выглядит так: немцы — индусы — русскоговорящие :-) Но, получается, действительно, если ты ищешь работу в Германии сейчас, то конкурировать будешь именно с "неевропейцами" по большей части.
Немало резюме приходило от "молодых" специалистов, без 5+ лет опыта. Вообще, про таких специалистов мне лично было сложно сложить впечатление, так как в Германии нередко в их профессиональном пути намешаны и получение бакалавра, и семестр по обмену, работа, потом магистратура, работа Werkstudent’ом (типа студенческой подработки) в паре мест, какой-то университетский проект... Короче, всего по немногу и "смешать и взболтать".
Несмотря на то, что у нас в вакансии четко написано аж в 2-х местах "Scala", и не было упомянуто никакого Питона, все равно в 90% резюме Scala даже не была упомянута и даже нет никакого намека на то, что кандидат хотя бы "стоял рядом" с ней. Через неделю я попросил HR добавить в форму для отправки резюме наравне с уже имеющимися вопросами "Откуда вы о нас узнали?" и подобными ненужными ещё и вопрос "Сколько у вас лет опыта использования Scala?", надеясь, что кандидаты задумаются. Но, ожидаемо, это никак не повлияло на поток неподходящих резюме: люди уверенно писали 1-2-3 года, когда сама Scala в CV даже не упоминалась. Полагаю, что они трактовали этот вопрос как "Сколько лет опыта работы"?
Также было достаточно большое количество совсем нерелевантных откликов: мы ищем Дата Инженера уровня мидл, а получаем CV Дата Аналитиков, Дата Сатанистов, прилетали резюме сеньоров, и даже архитекторов и лидов...
Большой поток настолько нерелевантных резюме вызвал во мне мысли о том, что феномен, когда кандидаты массово используют LLM для подгона и адаптации оных под вакансию, как минимум обо��ел нас стороной - даже самая тупая модель дала на выходе куда лучше адаптированное CV, чем половина того, что прилетало нам.
Из забавного, что встречалось в резюме:
Чел, который работал в Амазоне и Мете. Что он делал в этих компаниях, расписано максимально бизнесовыми общими словами, за которыми непонятно, чем именно он конкретно занимался и какие технологии за этим стоят. Я сразу вспомнил заметку-баян про работу в Амазоне (кому интересно - https://nekrolm.github.io/post.html?post=posts%2Fleaving-aws.md), а еще рассказы бывших коллег, что работают (или работали) в Apple :-)
Чел из СНГ с неуместными, на мой взгляд, сносками-звездочками напротив своего имени и последнего места работы с пояснениями, касающимися особенностей его имени (хотя у него вполне обычное имя), и обстоятельств переезда из одной страны в другую при смене предпоследнего работодателя. Полагаю, это была проекция его комплексов на других.
У нас в описании вакансии изо всех щелей торчит Spark и Big Data, но было немало резюме кандидатов, всю жизнь работавших исключительно с dbt, SQL и реляционными базами данных. Народ, ну вы что?!
Очень интересно было бы узнать, что было в голове у кандидата, который на вакансию на английском в немецкой компании прислал резюме на французском!
А что HR?
Еще мне бы хотелось очень залезть в голову HR. Для меня так и осталось загадкой, как работает HR. У нас в компании рекрутингом занимаются специально выделенные сотрудники, которые специализируются именно на рекрутинге — поиске и работе с кандидатами. В компании у нас открыто было раз-два и обчелся вакансий. То есть, по моему субъективному мнению, у них не то чтобы завал работы... Я так и не понял, как они обрабатывают результаты нашего с менеджером скрининга — точно не по принципу FIFO. Почему-то некоторые кандидаты уже на следующий день в системе "передвигались" на следующий статус, а какие-то могли "висеть" без движения 3-4 дня. Как-то за выходные нам прилетело 2 очень сильных резюме. В понедельник я их отскринил, и, так как кандидаты были сильные, то дополнительно написал в общий чат по этой вакансии — мол, ура, два сильных кандидата, берем скорее в оборот. Первый контакт HR с ними был только через 3 дня...
А еще оказалось, что даже во время первого созвона с кандидатом HR не задает критический уточняющий вопрос для нас по поводу опыта со Scala. На мою очень деликатную просьбу я получил примерно такой ответ:
Ой, это a little bit tricky так углубляться в тех.детали в течении всего 30 минут. Мне надо уточнить так много HR-моментов. Но я постараюсь сделать по возможности что-нибудь (перевожу на обычный язык: не буду ничего менять - прим. мое)
Тестовое задание
В общем именно поэтому на этап тестового пролезли несколько "странных личностей" и мне пришлось тратить время на его проверку. Спойлер - не много времени, так как все было понятно с первого взгляда :-)
Тестовое у нас было простым. ИМХО, даже очень простым. Придумывая его, я старался не перемудрить и просто упростил и адаптировал одну из реальных небольших задач, которую мы решали год назад, выбросив для упрощения ряд подводных камней. Кроме того, условие и сгенерированные примеры загружаемых в рамках тестового задания файлов сознательно были "допилены", чтобы вызвать у кандидата определенные мысли по упрощению решения и подтолкнуть его к переиспользованию одних и тех же функций/классов в коде, просто с разными параметрами (спойлер - никто из кандидатов так и не воспользовался этими подсказками). Состояло задание из 3-х частей:
Написать простенькое Spark-приложение на Scala по загрузке трех CSV-файлов. Сначала я сформулировал условия этой части без конкретизации технических требований к реализации — просто с просьбой принять во внимание наш тех. стек из описания вакансии. Идея была как раз в том, чтобы посмотреть "полет фантазии" кандидата, который всегда является отражением его опыта, привычек и подходов, к которым он привык. Но, видя, какие CV нам поступают на вход, еще до отправки задания первому кандидату, решил все же сформулировать требования жестче — не хотелось попасть в ситуацию, когда кандидат формально выполнит задание, но по сути это задание не поможет нам никак его оценить (например, напишет его на Питоне или, еще хуже, используя dbt :-); кстати, последнее - реальный случай от одного бывшего коллеги, который нанимал Дата Инженера)
Вопрос про деплой приложения
Поделиться мыслями по улучшению написанного приложения
Всего было проверено 6 тестовых заданий. Три были отреджекчены сразу по причине неполного выполнения (только приложение), вообще какого-то шлака (вообще не поняли, что это было прислано) и за то, что весь код был свален в один файл. Также за отсутствием большого количества хороших кандидатов "простили" одного за то, что он прислал нам архив на 400 Мегабайт(!) - причем .gitignore у него настроено все корректно, но чел все равно просто упаковал в архив всю папку с проектом (куда вошли и все скомпилированные классы, тестовые данные и прочее), большой объем архива его никак не смутил при этом, а так как во почте файл "не пролез", то он, не парясь, прислал нам его ссылкой на Google Диск %).
UPD по горячим следам. Буквально на этой неделе, пока статья валялась в черновиках и получала последние правки, к нам обратилась наша служба информационной безопасности (кстати, молодцы, что сначала сделали это "неофициально", используя горизонтальные связи, а не сразу завели инцидент) — они обнаружили на GitHub в публичном доступе часть предположительно нашего кода! Оказалось, что один из кандидатов выложил решение тестового задания на свой GitHub, причем не убрав в комментариях и именах пакетов название нашей компании :-) Хорошо, что мы его реджектнули — он даже
.gitignoreдля своего репозитория настроить правильно не смог и закомитил в GitHub то, чего там не должно быть. В общем, мораль — имейте в виду, что в крупных компаниях могут мониторить такое. Формально чел ничего плохого не сделал. Но в глазах нашей компании и моей лично репутацию себе подмочил.
Собеседования
Я участвовал в тех. собеседованиях вдвоем с нанимающим менеджером. Я бы сказал, что 50% времени занимали разговоры менеджера и кандидата про опыт, мотивацию, что интересно кандидату, плюс вопросы к нам в конце, а еще 50% — непосредственно техническая часть, которую вел я. Надо тут сказать, что проводить собеседования со стороны крупной европейской компании — та еще задачка. На представителе компании лежит ответственность за создание у кандидата общего впечатления о компании, есть негласные правила (которые никто не говорит, но они как бы висят в воздухе) — надо быть вежливым, ни в коем случае не унижать достоинство кандидата, не выставлять его в дурном свете, быть максимально милым и т.п. Мне было непросто, если честно, в этот раз. В предыдущие разы, когда меня привлекали к собеседованиям, я их проводил вдвоем с другим разработчиком, и поэтому было проще. Тут же моим напарником был нанимающий менеджер. Конечно, я бы мог "быть собой", расслабиться и быть менее деликатным, но это бы точно заметил и отметил менеджер, и сделал бы соответствующие "пометки" в своей голове, а мне же с ним еще работать. В итоге собеседования получаются какими-то слащавыми, где кандидат из кожи вон лезет, чтобы произвести хорошее впечатление, и ты тоже стараешься с одной стороны понять границы его знаний, проверить, наврал ли он в CV, но при этом сделать это так, чтобы не дай бог не поставить его в неловкое положение. Мне это давалось непросто.
Звучит для нашего, российского менталитета как-то дико, правда? Но надо учитывать, что "там" немного другой менталитет и "традиции делового оборота". Тут не могу не вспомнить рассказ хорошей знакомой, которая учится в магистратуре в Германии:
У нас была в универе презентация-защита студенческих проектов. Выступает Амели (имя изменено — прим. мое). После выступления ей один из преподавателей деликатно задал вопрос: мол, "спасибо, очень интересно, а вы в рамках проекта не думали о том, чтобы рассмотреть такой-то вопрос?"
Было сразу заметно, как Амели прямо изменилась в лице и чуть ли не обиделась. Она, конечно же, не думала об этом. Для меня это было неожиданно и удивительно! В РФ мы на такое отвечали, не смущаясь: мол, "спасибо, интересная мысль, рассмотрим обязательно в следующих работах".
Для себя отметил, что уровень кандидатов падает. В своей прошлой компании (в 2022 году) я задавал такие же вопросы и получал на них ответы. Сейчас же кандидаты на многие из тех же вопросов ответить не могут! Что удивительно, все эти вопросы уже давно есть в интернете, и бóльшая часть из них находится в статьях типа "10-20-30 вопросов на собеседовании по Spark/Scala/any other technology", не говоря уже о "ЧатGPT, дай мне 10 самых распространенных вопросов на собеседовании на тему Х". Но кандидаты либо обленились, либо действительно идет проф. деградация, причем не только по хардам, но и по софтам ("нагуглить вопросы перед собеседованием" — я этот навык отношу к софтам).
Жалко, что реально сильного кандидата (мужик родом из СНГ, правда, возможно, overqualified для мидла) коллеги реджектнули по софт-скилам после Culture Fit интервью — нашему бизнесу и аналитикам он показался уж очень технически ориентированным.
Ну а еще один кандидат отказался продолжать диалог, хотя мы были готовы пропустить его дальше, так как не захотел переходить с AWS на Azure и с Python на Scala. Но я думаю, что это красивая отмазка, скорее всего. Более вероятно, что в CV он приврал, assessment был сделан с помощью AI-ассистентов, а на техническом ему повезло (так как именно с ним менеджер проболтал больше планового, из-за чего тайминги сдвинулись, и после обсуждения его решения тестового задания мы вынуждены были отдать мяч на его сторону для вопросов к нам), и, поняв после собеседования, чем предстоит заниматься и с чем работать (другое облако, другой язык, еще основы CI/CD надо понимать), чел резонно осознал, что не потянет столько нового для себя. Респект, кстати, ему, если это действительно так.
Кого же в итоге наняли?
Ой, вот тут нет слов. Оффер выставили челу, который на техническом собеседовании ответил более-менее только на 1 из 9 вопросов!!! ОДИН из ДЕВЯТИ, Карл! Я немного прифигел даже, так как не был готов, что мы закончим с вопросами так быстро, ибо кандидат просто на 2/3 вопросов говорил сразу: мол, "соррян, не знаю". А ведь это были оооочень простые вопросы. Вот примеры :
Scala: разница между val и var, map и flatMap, что такое implicit ...
Spark: разница между repartition и coalesce, между Dataframe и Dataset ...
Зато кандидат понравился бизнесу на Culture Fit интервью, HR понравилась его мотивация, нанимающему менеджеру - рассказ про то, что он делал на прошлом месте, да и вообще, он показался всем очень смышленым. Еще нанимающий менеджер пообщался с другими менеджерами, которые тоже в последние полгода нанимали Data Engineer'ов, узнал от них про трудности с поиском нормальных кандидатов и т.п. и решил, что лучше взять без нужных знаний, но смышленого и учить его. Прям узнаю подход нашего Head of Data :-) Вообще, это особенность текущего времени и особенно Германии (а может и Европы) - мол, хард скилам можно научить, поэтому бóльшую роль при найме играют софт скилы.
На HR-комитете по обсуждению, делать ли оффер кандидату или нет, все участники процесса отмечали, что это nice guy, приятный в общении и т.п. И только я деликатно констатировал, что с технической точки зрения он слабый, максимум джуниор, что ответил на 1 из 9 вопросов, а тестовое сделано, скорее всего, при помощи AI-ассистентов (нанимающий менеджер, кстати, не имеет ничего против этого, мол, он и сам ими пользуется), поэтому вопрос: готова ли команда инвестировать в его развитие?
Заключение
Как более технический специалист, я в шоке. Нанятый кандидат, ИМХО, не должен был быть нанят. Ну разве что как джун на вырост под нормального мидла+, но точно не как рабочая лошадка. Но, думаю, как обычно, большие компании имеют большую накопленную инерцию, поэтому, скорее всего, если он и правда "смышленый", он запрыгнет в поезд этой инерции и не даст повода уволить себя во время испытательного срока, ну а потом его уже вряд ли уволят. Больший упор на софт-скилы при найме, плюс процессы большой компании в итоге привели к такому результату. Я на наглядном примере убедился, как работает (немецкая?) ментальность: "Если есть процесс, который все считают 'хорошим', то с результатом этого процесса в целом все согласны и считают, что результат — тоже более чем приемлемый."
Для себя сейчас я немного "сожалею", что "запятнал" свою репутацию (перед самим собой в первую очередь) участием в этом найме (но, объективно, у меня особо-то и выбора не было): процесс устроен так, что ответственность за найм ложится на всех участников процесса и распределяется между ними. Коллективная ответственность. Круговая порука. И теперь у меня нет морального права в будущем, если вдруг "смышлености" кандидата будет недостаточно, даже в шутку сказать, что мол "не того наняли" — в ответ всегда может прилететь "мол, ты ж мог сказать в свое время, что не надо его нанимать." Ну да, формально мог, но по факту подпортил бы свое реноме в компании. А оно было надо мне? :-)
Зато теперь я немного понимаю, как же так получается, что с одной стороны сильные профессионалы месяцами не могут найти достойное место, и в то же время компании долго не могут найти подходящих кандидатов и в итоге нанимают "хоть кого-то" (кстати, это, наверное, тема отдельной статьи, что несмотря на все заявления о привлечении лучших, поиске талантов, способствовании проф. росту, выращивании сильной команды и т.п., по факту компаниям нужны "серые мыши", которые будут "работу работать" и следовать формальным процессам). Что с этим делать и какой практический вывод сделать для себя? Я пока не знаю. Наверное, искать больше как работу, так и новых членов команды через знакомства. Но тут тоже есть свои подводные камни и ограничения...