В нашем блоге мы уже не один раз рассказывали о переезде в
Нидерланды (раз,
два).
Разработчики, которые оказались в Амстердаме в один голос говорят о
том, что с точки зрения технологий и подходов к разработке среди
местных ИТ-компаний в лучшую сторону выделяется Uber. И сегодня нам
удалось поговорить Алиной Коваленко, которая работает в компании в
должности Software Engineer II. Алина поделится своим опытом
переезда и даст несколько полезных советов. Передаем ей слово!
Всем привет, меня зовут Алина, и уже несколько лет я живу в
Амстердаме и работаю backend-разработчиком в одной из команд
направления финансовых сервисов (Money Hub) в Uber. Сегодня
расскажу о том, как устроены процессы разработки, что необходимо
для карьерного роста в Uber, а также к чему стоит готовиться перед
прохождением интервью в компанию.
Введение: как переехала я
О переезде серьезно я задумалась примерно в 2014 году. Именно
тогда мне захотелось эмигрировать, причем не просто пожить годик за
границей, а именно связать свою жизнь с Европой. На протяжении
многих лет я была влюблена в Германию, поэтому изучение вопросов
эмиграции начала именно с этой страны.
Тогда стало понятно, что прежде всего нужно подтянуть
английский, а моего intermediate-уровня не хватит для переезда. На
тот момент я работала backend-инженером в Mail.Ru, и у нас там были
корпоративные курсы английского ими я и воспользовалась. В плюс к
этому отдельно с преподавателем я занималась именно подготовкой к
собеседованиям, ведь прохождение интервью это отдельный скил,
который нужно прокачивать (особенно если говорить надо на
иностранном языке).
Когда я почувствовала себя готовой к прохождению интервью,
начала рассылать резюме. На то время использовала популярные
job-сайты, вроде Monster,de, Indeed.de, Xing.com. Конечно, смотрела
и сайты компаний, отправляла резюме по всей Европе и даже в
некоторые американские.
Сегодня найти вакансии с возможностью релокации в Европу и
Амстердам в частности, можно проще используйте бота g-mate
(@g_jobbot),
чтобы получать предложения, подходящие именно под ваш опыт, прямо в
Telegram.
Среди компаний, которые позвали меня на интервью были
американский сервис Yelp и Booking.com. С Booking процесс двигался
активнее всего я прошла skype-собеседование, и меня позвали на
onsite-интервью. В тот приезд Амстердам мне дико не понравился
везде стоял специфический запах травы, была неприятная октябрьская
погода. Но в итоге мне отказали, сказав, что нужно еще немного
прокачаться.
Также в тот заход я получила два оффера из немецких компаний
один в Берлин, другой от небольшой компании из города Хомбург
(земля Саарбрюккен). На тот момент я не решилась принять эти
предложения и продолжила работать в Mail.Ru, где мне нравился
текущий проект. Тогда я занималась разработкой антифрода для всей
компании.
Через два года тема с переездом возникла вновь. Мне окончательно
разонравилось в Москве, хотелось куда-то уехать. Был вопрос куда
именно. Можно было купить недвижимость где-то в Подмосковье или еще
раз попробовать эмигрировать. Второй вариант нравился больше, и я
решила рассмотреть три страны: Германию, Австрию и Нидерланды.
В Австрии миграционная система оказалась довольно сложной,
аналог немецкой голубой карты получить очень нелегко. Плюс
выяснилось, что в этой стране крайне мало компаний готовы
перевозить сотрудников только со знанием английского, а немецкий я
не знала. В Германии довольно легко было уехать в Берлин, где куча
международных стартапов, и английского там было бы вполне
достаточно. Но мне не нравился сам город он слишком
космополитичный, а мне Германия нравится именно своей немецкостью.
А в более национально-колоритных регионах типа Баварии компании
тоже ищут людей со знанием немецкого.
Нидерланды же привлекали тем, что здесь понятные правила
эмиграции после пяти лет проживания можно сдать языковой тест и
получить гражданство выгодное налогообложение (об этом хорошо
напдисано здесь),
хорошие зарплаты, даже повыше чем в Германии.
В итоге выбор пал на Нидерланды и Амстердам, а в этом городе
есть два известных варианта все тот же Booking и Uber. Я
собеседовалась в обе компании. В Uber был стандартный процесс,
начиная со скрининга с HR-специалистом, а в Booking меня уже знали,
так что дали просто тестовое задание и сразу позвали на
onsite-интервью.
Расскажу поподробнее об onsite-интервью в Uber это достойно
отдельного упоминания. Начнем с того, что их в один день было
шесть: 2 интервью на кодинг, 2 на дизайн и архитектуру, 1
поведенческое интервью с инжиниринг-менеджером и один так
называемый bar raiser. В ходе этого последнего этапа собеседующий
тебя senior-инженер оценивает, насколько ты подходишь под культуру
компании в целом.
Это был очень тяжелый и невероятно выматывающий день. К
последнему этапу сил у меня почти не осталось, плюс bar raiserом
был инженер из Дании, которого я очень плохо понимала, и почти
каждый вопрос приходилось переспрашивать. В итоге мне казалось, что
собеседование я не прошла, вернулась в Москву и отправилась в
отпуск автопутешествие через Германию в Амстердам, где было
запланировано интервью в Booking. За три дня до этого интервью, мне
написали из Uber и сказали, что они готовят оффер, но уже точно
меня берут и даже назвали зарплату.
Интервью в Booking я все равно прошла, и оно оказалось гораздо
легче всего три этапа (кодинг, архитектура и поведенческое
интервью), задачи были полегче. Зарплату там в итоге предложили
почти такую же, но мне не очень понравилось отношение некоторых
русскоговорящих интервьюеров, чего не было в Uber, где все были
очень приветливыми и приятными. Так что сомнений перед принятием
оффера Uber не было.
Процесс переезда и адаптация на новом месте
У Uber есть специальный внутренний сайт, через который можно
заказывать услуги и товары, необходимые для переезда например,
услуги перевозки вещей это все сразу оплачивается компанией. Если
же нужно заказать что-то не через этот сайт (авиабилеты, отель,
справки для кошки), то нужно сохранить чеки, информацию о
транзакциях, и затем получить возмещение затрат. То есть стоит
понимать, что для переезда лучше иметь какой-то запас денег, пусть
их потом и компенсируют.
В команде я оказалась единственной девушкой-инженером, но наш
инжиниринг-менеджер тоже была девушка, и ее начальник и начальник
начальника тоже были девушками. Большая часть коллег в команде
переехала из софийского офиса в Болгарии, а еще было два
нейтив-спикера из Южной Африки.
Первые месяцы мне было очень тяжело из-за языка. Произношение
наших нейтивов нелегко мне давалось, целый день разговаривать на
английском было непросто. Причем на английском мы разговаривали
даже с русскоязычными инженерами! В итоге я даже на обед с
коллегами не ходила, хотелось просто побыть одной и
перезагрузиться. Все это накладывалось на стресс от переезда,
поиска жилья, ремонт в нем (я сняла таунхаус, где даже лампочек не
было) нагрузка была очень большая.
Проблема с языком решилась за 4-5 месяцев, еще где-то полгода я
в целом привыкала к новому городу, проектам и т.п. После этого я
вышла на максимальную продуктивность и вовлеклась в активности
помимо основной работы стала ментором для новых разработчиков,
проводила интервью, вела курсы по базам данных для коллег и
т.п.
Как устроена разработка в Uber
В компании строгий стек технологий на момент моего прихода для
бэкенда это были Python, Java, Go, а для фронта Node.js. Теперь
Python постепенно выводится из обращения, а основная разработка
ведется на Java и Go. Также Uber почти не использует внешние
сервисы есть ряд исключений типа DynamoDB и Google Cloud Spanner. В
тот период, когда я пришла, Uber переживал интересный период в
жизни происходила трансформация из стартапа в большую компанию. В
частности, особое внимание стало уделяться не просто созданию
продуктов, которые работают, но и достижению высокой надежности и
производительности.
Появились так называемые Engineering Foundations инжиниринговые
инициативы по улучшению кода. Например, у нас был сервис Realtime
API, изначально написанный на Node.js его полностью переписали, на
микросервисы. Вот отличная статья об этом в
инженерном блоге.
Этот тренд охватил всю разработку монолитные сервисы до сих пор
активно разбивают. Все сервисы, которые касаются денег (тот самый
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/месяц, но быть
в центре всей движухи. Мне это не так интересно.
В статьях про Голландию часто пишут о том, что тут очень легко
путешествовать согласна с этим, всю страну можно проехать за пару
часов:
Также я постоянно езжу по всей Европе, причем делать это на
машине очень удобно. Например, я часто беру сноуборд и еду кататься
в Альпы.
С помощью бота g-mate (@g_jobbot) вы
можете получать вакансии по своему профилю с возможностью релокации
в Нидерланды, Латвию и десятки других стран прямо в Telegram.
Компании могут опубликовать первые три вакансии бесплатно
переходите по ссылке
и начинайте искать своих идеальных кандидатов.