Найти тему
IT += Германия

Стэк технологий для работы в Германии: что хотят немецкие IT-компании от Python разработчика

Ниже речь пойдет о наиболее популярных и распространенных в Германии технологиях, которыми должен владеть Python-разработчик, чтобы успешно трудоустроиться. Особый акцент мне хотелось бы сделать на так называемом "стэке джуна", иными словами, на тех технологиях, которые необходимо знать начинающему разработчику для того, чтобы быть востребованным в немецких IT-компаниях. Сразу же оговорюсь, что главным образом в этой статье речь пойдет о веб-разработке на Python, поскольку именно эта область мне наиболее близка и именно ее состояние мне известно из первых рук. Если вы еще только начинаете идти нелегким путем разработки и вам интересно попробовать себя и испытать удачу на зарубежном IT-рынке, то этот текст точно для вас. Если же вы уже далеко не начинающий, но и заканчивать пока не входит в ваши планы и при этом вам было бы любопытно узнать о том, как обстоят дела там, "за (западной) границей", то welcome, непременно, найдете для себя пищу для размышлений.

Котика заполучил тут: https://neuro-holst.ru/text-to-image
Котика заполучил тут: https://neuro-holst.ru/text-to-image

"Рабочий" стэк, он же стэк, с которым я нашел работу в Германии

Итак, с ками же стэком технологий я устроился на работу в немецкую компанию (отдельно о моей фирме можно почитать тут) на позицию джуна? Стоит признать, что знакомясь с моим стеком, дорогой читатель, ты вряд ли сильно удивишься, поскольку он мало чем отличается от стэка многих начинающих разработчиков на Python: к моменту получения оффера от немцев (январь 2023 года) я преимущественно работал с такими фреймворками, как Django, Django REST Framework, Flask и немного FastAPI. Под словом "работал" здесь я подразумеваю не только написание пет-проектов, но и настоящую "боевую" или комерческую разработку, которая, однако, велась исключительно на Django и Django REST Framework (все остальные указанные фреймворки осваивались как раз на пет-проектах). Кроме этого непосильного багажа знаний мою несильно искушенную на тот момент времени рабочим опытом (свою первую Python-позицию я получил в Москве лишь в августе 2022 года) голову также обременяли базовые знания Docker'а (умел писать Dockerfile'ы для джанго-проектов и деплоить контейнеры на сервер), начальные знания CI/CD в их GitGub Actions варианте, приличные знания Git'а, ну и отмечу здесь также Celery в связке с Redis. Кроме того, у меня были некоторые знания JavaScript'а, но охарактеризовать их как-то конкретно было бы сложно, потому как столь малые величины, вряд ли в принципе можно измерить.

С таким обыденным техническим бэкграундом мне без каких-либо проблем удалось получить оффер на позицию Software Developer'а, которая требовала буквально следующих навыков и умений (дальше приведу цитату из описания вакансии, к счастью, "роботы" сделали слепок прошлого в нужное время и мое путешествие удалось благодаря этой, - довольно, известной, - штуке):

Deine Aufgaben (Твои, т.е. мои задачи)
Weiterentwicklung von Web-Applikationen (Python / JavaScript) mit Schnittstellen zu vielen verschiedenen Systemen (Дальнейшее развитие веб-приложений (Python / JavaScript), связанных по API со многими, различными системами; ой, не врали...)
Automatisierung von Prozessen (Python) (ну тут и так все понятно без перевода)
Enge Zusammenarbeit mit den Stakeholdern (Совмесная работа со стэкхолдерами)
Tech-Stack: Debian, Docker, Kubernetes, GitLab, Django, Ember.js (оставлю без перевода)
_______________________________________________________________________________
Dein Profil (Твой профиль)
Studium oder Ausbildung im Bereich Informatik, Anwendungsentwicklung oder ähnliches Erfahrung in der Software Entwicklung mit Python (Получил образование или прошел стажировку в области информатики, разработки приложений или имел аналогичный опыт - здесь имеется в виду комерческий, - в разработке софта на Python)
Schnelle Auffassungsgabe und Lernbereitschaft (Быстро соображаешь и учишься)
Kommunikativ, kritikfähig, proaktiv und teamorientiert (комуникативен, нормально переносишь критику, проактивен, командоориентирован)
Eigeninitiative sowie selbstständige Arbeitsweise (Самостоятельный стиль работы)
(Technisches) Englisch in Wort und Schrift (Технический английский, письменное и устное владение)

Последнюю часть, где представляют "твой профиль", комментировать, видимо, излишне, тут и так все ясно - это стандартное описание, которое мало чем выделяется и в принципе не особо примечательно. Первая часть значительно интереснее. Как вы можете видеть, тот набор навыков, которыми я обладал до устройства на работу, не так, чтобы сильно бился с теми навыками, которые желал видеть мой будущий работодатель... Если не полениться и подсчитать, то вы найдете только три прямых совпадения - Python, Django и Docker. Отсюда напрашивается вывод: зачастую немецкие компании (а данный пример скорее во многом правило, чем исключение) готовы брать человека на работу и обучать его сами, при чем брать не на позицию стажера или трейни, но на полноценную рабочую ставку. В этом, на мой взгляд, кроме всего прочего проявляет себя немецкий прагматизм и реализм: местные компании прекрасно понимают, что специалистов на всех не хватит и отсеивать кандидатов из-за того, что их стэк лишь частично перекрывает желаемый с порога не стоит (в Германии, как и в России, большая нехватка IT-кадров), но стоит для начала пообщаться с кандидатом напрямую. Кстати, отмечу, что попасть на собеседование в Германии в разы легче, чем в России, видимо, все по той же причине (подробнее о собеседовании см. тут). Однако давайте оставим в стороне мой конкретный кейс и попробуем более глобально взглянуть на релевантный для многих немецких компаний технический стэк Python-разработчика, помня при этом, что определенная доля условности здесь всегда будет присутствовать, т.к. мой личный пример наглядно показывает, что 100% совпадения всего лишь благое пожелание, но никак не реальность.

https://risovach.ru/kartinka/12315597
https://risovach.ru/kartinka/12315597

Tech-Stack для питониста на немецкий лад

Каких же тех. навыков ждут от кандидата немецкие фирмы? Излишне будет здесь говорить, что вы, действительно, должны знать Python на достаточном уровне, иметь представление о синтетических конструкциях и языковых структурах, владеть теорией ООП, разбираться в основных магических методах и пр. При этом любопытно отметить, что во время собеседования в Германии мне лично ни разу не задавали классические вопросы по типу "Какие типы данных существуют?" или что быстрее "Кортеж или словарь?". Очевидно, интервьюеры подразумевают, что вы и так это знаете и спрашивать такое будет излишне (даже если вы собеседуетесь на позицию джуна).

Что по фреймворкам? Здесь все примерно также как и в России, распространен Django, встречается Flask, постепенно умы и сердца завоевывает FastAPI. Но есть и разительное отличие от российского рынка: дело в том, что в Германии не так многочисленны фирмы, специализирующиеся исключительно на веб-разработке, на создании сайтов и веб-приложений под заказ. Сложно сказать чем это обусловлено, может быть тем, что заказать сайт будет значительно дешевле в другой европейской стране, будь то Польша или Чехия, но так или иначе, если вы ищите позицию Python-разработчика, то, наверняка, вам будут попадаться вакансии, связанные с обслуживанием уже существующих или созданием новых проектов для внутренних нужд компании. Иными словами, это вроде как тоже сайты на заказ, но заказчиками выступают другие отделы твоей собственной фирмы, а уже в зависимости от того, чем фирма непосредственно занимается, определяется и круг технологий, отвечающий ее текущим потребностям и запросам. К счастью, Python в этом смысле язык достаточно универсальный, хотя среди явных минусов подобной специфики рынка стоит назвать засилье "легаси", а уже по этой причине вы периодически будете удивляться наличию у вашего потенциального работодателя проектов написаных черт знает на чем (что когда-то было популярно и хайпово; но не продолжительное время...), к примеру на фреймворке Pyramid. С этим связан и еще один нюанс.

Очень часто (практически всегда) позиция Python-разработчика в Германии подразумевает, что вы все равно немного fullstack, т.к. задачи, которе вам с завидной периодичностью прилетают в Jira'е подразумевают владение JavaScript'ом и версткой, а кроме того еще и хотя бы одним фронтенд фреймворком будь-то Angular, Vue, React или Ember. Наряду с этим, подавляющее большинство вакансий ждет от потенциальных кандидатов владение Docker'ом, docker-compose'ом и понимание контейнеризации в целом. Ну и Kubernetes набирает себе все больше сторонников и все чаще появляется в описаниях вакансий для Python-разработчиков, хотя пока еще зачастую только в качестве пожелания (но думаю через пару лет это пожелание уже начнет превращаться в требование). Никогда не лишним будет продвинутое владение линуксом, это требование встречается практически в половине вакансий питонистов, ну и как вишенка на торте - базы данных. Самая распространенная база данных в связке с Python - это ни разу не Postgres, а MySQL, что лично для меня было небольшим удивлением, т.к. в России, если память моя ничего не путает, было с точностью да наоборот.

https://dycpoisk.ru/eto-baza-otkuda-mem
https://dycpoisk.ru/eto-baza-otkuda-mem

Выводы

Тех. стэк Python-разработчика в Германии, как и можно было в принципе с самого начала ожидать, не так сильно отличается от того, что на эту позицию требуют в России, однако при этом здесь есть ярко выраженная особенность, которая заключается в небольшом количестве веб-студий, что зачастую сводит работу программиста к проектам, использующимся исключительно внутри той компании, где он работает. Другая характерная черта современного немецкого питониста - оснащенность DevOps знаниями и умениями, отсюда вы только выиграете если на приемлемом уровне будете владеть Docker'ом, я уже не говорю о Kubernetes'е и сопутствующем ему Helm Chart'е. Ну и последнее - это тяготение к fullstack (что, как мне кажется, обусловленно спецификой рынка). Не решусь советовать вам учиться на фулстэк, поскольку мой личный опыт подсказывает, что для начала лучше хорошо разобраться с одной технологией, одним языком программирования и пр., но имейте в виду, что в Германии эта тема распространенная, хотя в то же время, если вы владеете хорошо одним языком, тем же Python' ном, это не будет служить большим препятствием для найма вас на работу в большинстве случаев.

Понравился текст - ставь лайк и подписывайся, оставляй комментарии (соглашайся, ворчи, негодуй, порицай - дай себе волю). На связи.
Auf Wiedersehen!