[Личный опыт] Работа в Uber в Амстердаме: как устроена разработка, карьерный рост, подготовка к интервью

В нашем блоге мы уже не один раз рассказывали о переезде в Нидерланды (раз, два). Разработчики, которые оказались в Амстердаме в один голос говорят о том, что с точки зрения технологий и подходов к разработке среди местных ИТ-компаний в лучшую сторону выделяется Uber. И сегодня нам удалось поговорить Алиной Коваленко, которая работает в компании в должности Software Engineer II. Алина поделится своим опытом переезда и даст несколько полезных советов. Передаем ей слово!

7707cfb9530aa97e075ec96453650610

Всем привет, меня зовут Алина, и уже несколько лет я живу в Амстердаме и работаю backend-разработчиком в одной из команд направления финансовых сервисов (Money Hub) в Uber. Сегодня расскажу о том, как устроены процессы разработки, что необходимо для карьерного роста в Uber, а также к чему стоит готовиться перед прохождением интервью в компанию. 

Введение: как переехала я

О переезде серьезно я задумалась примерно в 2014 году. Именно тогда мне захотелось эмигрировать, причем не просто пожить годик за границей, а именно связать свою жизнь с Европой. На протяжении многих лет я была влюблена в Германию, поэтому изучение вопросов эмиграции начала именно с этой страны.

Тогда стало понятно, что прежде всего нужно подтянуть английский, а моего intermediate-уровня не хватит для переезда. На тот момент я работала backend-инженером в Mail.Ru, и у нас там были корпоративные курсы английского — ими я и воспользовалась. В плюс к этому отдельно с преподавателем я занималась именно подготовкой к собеседованиям, ведь прохождение интервью — это отдельный скил, который нужно прокачивать (особенно если говорить надо на иностранном языке).

Когда я почувствовала себя готовой к прохождению интервью, начала рассылать резюме. На то время использовала популярные job-сайты, вроде Monster, de, Indeed.de, Xing.com. Конечно, смотрела и сайты компаний, отправляла резюме по всей Европе и даже в некоторые американские.

Сегодня найти вакансии с возможностью релокации в Европу и Амстердам в частности, можно проще — используйте бота g-mate (@g_jobbot), чтобы получать предложения, подходящие именно под ваш опыт, прямо в Telegram.

54516bedfd601c62a996ba21ef5bec01.gif

Среди компаний, которые позвали меня на интервью были американский сервис Yelp и Booking.com. С Booking процесс двигался активнее всего — я прошла  skype-собеседование, и меня позвали на onsite-интервью. В тот приезд Амстердам мне дико не понравился — везде стоял специфический запах травы, была неприятная октябрьская погода. Но в итоге мне отказали, сказав, что нужно еще немного прокачаться. 

Также в тот заход я получила два оффера из немецких компаний — один в Берлин, другой от небольшой компании из города Хомбург (земля Саарбрюккен). На тот момент я не решилась принять эти предложения и продолжила работать в Mail.Ru, где мне нравился текущий проект. Тогда я занималась разработкой антифрода для всей компании. 

Через два года тема с переездом возникла вновь. Мне окончательно разонравилось в Москве, хотелось куда-то уехать. Был вопрос — куда именно. Можно было купить недвижимость где-то в Подмосковье или еще раз попробовать эмигрировать. Второй вариант нравился больше, и я решила рассмотреть три страны: Германию, Австрию и Нидерланды.

В Австрии миграционная система оказалась довольно сложной, аналог немецкой голубой карты получить очень нелегко. Плюс выяснилось, что в этой стране крайне мало компаний готовы перевозить сотрудников только со знанием английского, а немецкий я не знала. В Германии довольно легко было уехать в Берлин, где куча международных стартапов, и английского там было бы вполне достаточно. Но мне не нравился сам город — он слишком космополитичный, а мне Германия нравится именно своей «немецкостью». А в более национально-колоритных регионах типа Баварии компании тоже ищут людей со знанием немецкого.

Нидерланды же привлекали тем, что здесь понятные правила эмиграции — после пяти лет проживания можно сдать языковой тест и получить гражданство — выгодное налогообложение (об этом хорошо напдисано здесь), хорошие зарплаты, даже повыше чем в Германии. 

97a38bbf219945479f56c2b44a573b7e

В итоге выбор пал на Нидерланды и Амстердам, а в этом городе есть два известных варианта — все тот же Booking и Uber. Я собеседовалась в обе компании. В Uber был стандартный процесс, начиная со скрининга с HR-специалистом, а в Booking меня уже знали, так что дали просто тестовое задание и сразу позвали на onsite-интервью. 

Расскажу поподробнее об onsite-интервью в Uber — это достойно отдельного упоминания. Начнем с того, что их в один день было шесть: 2 интервью на кодинг, 2 на дизайн и архитектуру, 1 поведенческое интервью с инжиниринг-менеджером и один так называемый bar raiser. В ходе этого последнего этапа собеседующий тебя senior-инженер оценивает, насколько ты подходишь под культуру компании в целом.

Это был очень тяжелый и невероятно выматывающий день. К последнему этапу сил у меня почти не осталось, плюс bar raiser«ом был инженер из Дании, которого я очень плохо понимала, и почти каждый вопрос приходилось переспрашивать. В итоге мне казалось, что собеседование я не прошла, вернулась в Москву и отправилась в отпуск — автопутешествие через Германию в Амстердам, где было запланировано интервью в Booking. За три дня до этого интервью, мне написали из Uber и сказали, что они готовят оффер, но уже точно меня берут и даже назвали зарплату.

Интервью в Booking я все равно прошла, и оно оказалось гораздо легче — всего три этапа (кодинг, архитектура и поведенческое интервью), задачи были полегче. Зарплату там в итоге предложили почти такую же, но мне не очень понравилось отношение некоторых русскоговорящих интервьюеров, чего не было в Uber, где все были очень приветливыми и приятными. Так что сомнений перед принятием оффера Uber не было. 

Процесс переезда и адаптация на новом месте

У Uber есть специальный внутренний сайт, через который можно заказывать услуги и товары, необходимые для переезда — например, услуги перевозки вещей — это все сразу оплачивается компанией. Если же нужно заказать что-то не через этот сайт (авиабилеты, отель, справки для кошки), то нужно сохранить чеки, информацию о транзакциях, и затем получить возмещение затрат. То есть стоит понимать, что для переезда лучше иметь какой-то запас денег, пусть их потом и компенсируют.

283850433f8fa34613568c67431e6807

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

Первые месяцы мне было очень тяжело из-за языка. Произношение наших нейтивов нелегко мне давалось, целый день разговаривать на английском было непросто. Причем на английском мы разговаривали даже с русскоязычными инженерами! В итоге я даже на обед с коллегами не ходила, хотелось просто побыть одной и перезагрузиться. Все это накладывалось на стресс от переезда, поиска жилья, ремонт в нем (я сняла таунхаус, где даже лампочек не было) — нагрузка была очень большая. 

Проблема с языком решилась за 4–5 месяцев, еще где-то полгода я в целом привыкала к новому городу, проектам и т.п. После этого я вышла на максимальную продуктивность и вовлеклась в активности помимо основной работы — стала ментором для новых разработчиков, проводила интервью, вела курсы по базам данных для коллег и т.п.

Как устроена разработка в Uber

В компании строгий стек технологий — на момент моего прихода для бэкенда это были Python, Java, Go, а для фронта Node.js. Теперь Python постепенно выводится из обращения, а основная разработка ведется на Java и Go. Также Uber почти не использует внешние сервисы — есть ряд исключений типа DynamoDB и Google Cloud Spanner. В тот период, когда я пришла, Uber переживал интересный период в жизни — происходила трансформация из стартапа в большую компанию. В частности, особое внимание стало уделяться не просто созданию продуктов, которые работают, но и достижению высокой надежности и производительности.

Появились так называемые Engineering Foundations — инжиниринговые инициативы по улучшению кода. Например, у нас был сервис Realtime API, изначально написанный на Node.js — его полностью переписали, на микросервисы. Вот отличная статья об этом в инженерном блоге.

8ece6bf99a2fadcfc141939ed6c4f145

Этот тренд охватил всю разработку — монолитные сервисы до сих пор активно разбивают. Все сервисы, которые касаются денег (тот самый Money Hub — я работаю в одной из его команд), разрабатываются в соответствии с требованиями комплаенса, применяется автоматический provisioning для повышения надежности и т.п.

Для любого изменения в инфраструктуре есть формальный ERD-процесс, который зависит от масштабов перемен. Если нужно, например, переписать какой-то сервис, то сначала разрабатывается документ с описанием того, зачем это нужно (Abstract), а потом уже изменения описываются подробно. Когда я переделывала сервис по выводу средств (on-demand cashouts) мое описание составило примерно 40 страниц. Этот документ комментируют члены команды, и если нужно, коллеги из команд, чьи сервисы также будут затронуты. Аналогично построен процесс для новых проектов.

То есть нельзя просто взять и начать писать код, сначала нужно понять, зачем это вообще делать, и донести информацию до других инженеров. После того, как код написан, он также проходит процесс review. Сейчас мы переехали в две монорепы для Java и Go — это удобно, потому что все в одном месте, и можно подсмотреть детали реализации разных вещей у коллег. Есть и минусы — время сборки и запуска тестов увеличивается, всегда большая очередь на мердж и т.п.

Есть и специфика — например, в компании считается, что лучше инженеров их код никто не протестирует. Поэтому у нас нет тестировщиков как класса, тест-кейсы мы пишем сами. Правильно ли это — дискуссионный вопрос, но у него явно есть свои плюсы и минусы.

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

Сравнение с Mail.Ru, карьерный рост в Uber

Мне трудно сравнивать Uber и Mail.Ru, потому что в текущей компании есть жесткий стек технологий и почти все проекты очень тесно связаны — пожалуй, кроме Self-driving cars и Maps. В «Мейле» же всегда было множество не особенно связанных друг с другом проектов. Поэтому и стек технологий, и процессы разработки каждая команда выстраивала под себя. Во время моей работы там, мы использовали Jira, код ревью минимум от двух коллег, но на 2016 год, когда я уходила, процессы разработки еще не были выстроены настолько строго и существовали на уровне команд и проектов. С Uber это нельзя корректно сравнить.

При этом в Mail.Ru было проще расти по карьерной лестнице. Там работало меньше людей, так что всегда было пространство для того, чтобы показать себя. Но с другой стороны, процесс карьерного роста не был формально описан, а значит все происходило непрозрачно. Повышение ты получал, когда шел разговаривать с начальником, а тот принимал решение — дать или не дать.

В Uber не так — здесь есть четкие критерии, которым нужно соответствовать для получения promotion. Когда я пришла в компанию, для этого в том числе нужно было написать большой документ — Review — о том, что ты делал и какие навыки задействовал. Также был отдельный документ Skillset — в нем для каждой роли описывались необходимые навыки. Для повышения ты должен был показать, что в своей работе уже задействуешь навыки со следующего уровня по карьерной лестнице.

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

Сейчас процессы упростились, и теперь повышение дается на основе документа под названием Impact resume. Тут все попроще — нужно описать свои проекты и достижения, какие были трудности, как они решались, и какие навыки задействовались по определенному шаблону. Также здесь указывают все, что человек делал помимо основной работы — например, я вела стажировки, выступала в качестве happiness manager для команды — организовывала неформальное общение и т.п. Конечно же, этот документ также проходит peer review.

В итоге повышение получают только те, кто к этому готов, а не тот, кто лучше договаривается с начальством. Я считаю, что ситуация, когда человек плюс-минус достоин повышения, но не получил его сразу, лучше, чем когда повышают явно неготового сотрудника. Это серьезно демотивирует всю команду.

Как пройти интервью в Uber: советы инженерам

За последние годы я провела множество интервью и могу поделиться основными советами для тех, кто хотел бы попасть на работу в Uber:

  • Готовьтесь к интервью — это не легкая прогулка, особенно в компаниях вроде Uber. Решайте практические задачи на Leetcode и HackerRank, прокачивайте английский, проходите mock-интервью. 

  • Решайте практические задачи — у нас не спрашивают странных задач на графы и вычисления путей с Glassdoor. Не тратьте на это время. Когда мы просим написать код, нам важно посмотреть, как вы это делаете, а не увидеть решение какой-то безумной задачи.

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

  • Готовьтесь к вызовам — вас могут попросить «спроектировать WhatsApp» или что-то подобное. Важно не потеряться и начать рассуждать о том, как бы вы это сделали. Понятно, что на такие вопросы нет правильных и неправильных ответов, самое главное — ход мысли, и его надо показать.

В целом, в Uber собеседования построены вполне адекватно. В компании все понимают, что конкурируют за разработчиков с гигантами, вроде Google и Microsoft. Поэтому одна из задач интервьюеров — «продать» компанию кандидату. Так что обстановка на собеседованиях здесь вполне дружелюбная, и у вас будут все возможности показать себя во всей красе. Главное хорошо подготовиться!

Еще немного про жизнь в Голландии: жилье, общение и путешествия

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

Во-вторых, в Голландии все хорошо с точки зрения work-life balance — перерабатывать не принято, есть все возможности для общения. Хотя я живу за городом, можно сказать в деревне — зато у меня три своих этажа, сад и парковочное место. И все это за €1200 (без коммуналки) в месяц, при этом доехать до офиса можно за полчаса на велосипеде. Есть коллеги, кому нравится жить в стеклянной высотке в городе и платить за аренду €2500/месяц, но быть в центре всей «движухи». Мне это не так интересно.

В статьях про Голландию часто пишут о том, что тут очень легко путешествовать — согласна с этим, всю страну можно проехать за пару часов:

6385acc01dd70470c43bb985597bdc6d473ef23f3fec6ecf56339c7296b1ecf06ad1d88bb6f396e123409cb41e4d7181

Также я постоянно езжу по всей Европе, причем делать это на машине очень удобно. Например, я часто беру сноуборд и еду кататься в Альпы.

С помощью  бота g-mate (@g_jobbot) вы можете получать вакансии по своему профилю с возможностью релокации в Нидерланды, Латвию и десятки других стран прямо в Telegram. Компании могут опубликовать первые три вакансии бесплатно — переходите по ссылке и начинайте искать своих идеальных кандидатов.

© Habrahabr.ru