В интернете чаще всего размещается контент о секретах© успеха™ и способах его достижения. Историй о том, кто и как облажался встречается гораздо меньше. Я решил чуть выровнять этот дисбаланс и поделиться личной историей о том, как сам попытался заскочить на поезд релокации в 2021/22 году, срубить немного денюшек в зарубежных компаниях и что из этого получилось.
Disclaimer: названия компаний тут прикрыты (потому что я шизоид), но догадаться несложно.
Вводная
Я простой русский Юрий регион Сибирь, писать много лет «весна» фреймворк микросервис компьютер перекладывать JSON, радовать родной компания получать миска-рис и кошка-жена, славить корпоративная культура получать путевка конференция. Удар!
Вкратце о себе: с компуктерами хоть и связан с детства, но в олимпиадах и прочих конкурсах по информатике звезд с неба не хватал, как правило доходя-таки до финалов какого-нибудь Всесиба и с диким треском в них проваливаясь. Так получилось, что в этот момент времени в моем окружении не нашлось никого, кто швырнул бы мне в ноги томик Бхаргавы «Грокаем алгоритмы», а сам я был достаточно тупой, чтобы найти какой-то материал. В отношениях же с математикой та заняла позицию лютейшей доминатрикс, посему наши токсичные отношения закончились на почетных 62 баллах конкурса «Кенгуру» в далёком 2011м.
Впечатляющие конечно стартовые данные, не так ли? Кроме диплома «первого неклассического» университета (где впрочем мне выдали отличную базу по вычислительной технике) даже и похвастаться нечем.
Вкупе с этим я успел поработать в подмастерьях у матерого сисадмина в среднего размера организации, вебкамщицей веб-мастером на фрилансе и джуном-андройдером в небольшой компании с АТМОСФЕРОЙ СТАРТАПА, а на сегодняшний день улюлюкаю в уютном немецком корпорате, где в АТМОСФЕРЕ СТАРТАПА педалю стильный-модный-молодежный SaaS-продукт.
Мысли о переезде
Честно говоря, мне очень повезло с детства хотя бы раз в пару лет выезжать за границу. Когда начал зарабатывать самостоятельно, тенденция продолжилась, и география посещенных мест расширялась – как внутри Родины, так и за ее пределами. Вкупе с этим у меня сложилось четкое восприятие, что страны бывают разные, уровень жизни в них бывает разный, везде есть свои нюансы, а туризм как таковой поразительно отличается от эмиграции. Не тринадцатилетняя девочка с мыслями «пора валить» после пары дней в твиттере, короче.
К тому же, для меня крайне важно чувство дома и идентичности. Мне безумно тяжело представить, как я могу отказаться от снежной зимы, родных берёзок, хрущевок серии 1-464 или распития горькой под «Новое сердце» ДДТ где-то в центре моего уютного Питера.
С другой стороны, желание получить новый опыт, возможность открыть для себя еще больше мест на карте и словить ачивку «Пожил за рубежом» все-таки перевешивало домоседство вкупе с сытой и беззаботной жизнью русского айтишника.
Было решено неспешно готовиться к собеседованиям и просматривать разного рода варианты, если таковые подвернутся. Конкретного списка стран у меня не было, ибо каждая страна хороша и интересна по-своему, а без приемлемого оффера эта затея была не очень интересна.
Приемлемый оффер отнюдь не означает 300кк/сек и скупку всех соседей, но на мой скромный взгляд, труд инженера должен достойно оплачиваться.
Подготовка
Так как я начал подготовку до того момента, как @begor начал нещадно писать топовые 300кк/сек мануалы к собесам, а таргет-компаний у меня как таковых не было, план изучения пришлось сделать самостоятельно:
- Был пройден курс по алгоритмам от Роберта Седжвика на Coursera;
- Куплена премиум подписочка на Leetcode, вспомнил про свои аккаунты на Хакерранке, CodeSignal и прочих платформах;
- Перечитана уйма статей и книг по Java и Spring дабы освежить знания по своим же инструментам;
- Скачана и прочитана книжечка Cracking The Code Interview;
- Отшлифовано резюме до размера одного листа А4.
Не знаю, на что я рассчитывал, но это была такая заготов_очка на будущее. Кроме того, для подготовки я не ходил на собеседования во всякие российские банки и галеры по крайней мере двум причинам:
- Меня вполне устраивало текущее место работы;
- Я не перевариваю душные вопросы про Spring/CQRS/Synchronized – и сам такое говно не спрашиваю, когда провожу собесы.
В итоге вообще вышло, что долгое время не имея опыта собеседований «по ту сторону стола», я сам стучался в двери только в известные и большие корпораты. С места в карьер, да. Очень умно (нет).
Первый блин комом
Кто: Ну одна там большая софтверная корпорация делает окна всякие)))
Локация: Таллинн, Эстония
Время: Осень 2020
Прекрасным осенним вечером я просто ловил отходосы от недавнего ковида и катал очередную катку в FIFA, как внезапно в почту прилетело письмо от рекрутера примерно следующего содержания: «Ну ты вроде классный, давай пообщаемся?)))». После размышлений о том, что ничего не потеряю, даже облажавшись по полной программе, потными от волнения ладошками был напечатан утвердительный ответ. Дальше процесс был следующего формата:
- Звонок с рекрутером, обсуждение позиции;
- Онлайн-решалка с 3 задачами;
- 4 интервью подряд в течение одного дня.
Где-то на этом этапе у меня перемкнуло в голове со словами «Ну и как ты будешь проходить интервью по System Design?». В срочном порядке было просмотрено с пяток-десяток индийских мануалов по систем-дизайну в ютубе. Не делайте так, читайте кабанчика заранее, пожалуйста. А еще лучше, берите на себя задачи по проектированию чего-либо в своем проекте, это реально помогает.
Онлайн-решалка же была прорешана в виде 2.5 задач / 3, после чего меня тут же позвали на онсайт.
Презабавно, но я очень нервничал и ждал именно алгоритмической секции, чтобы сразу получить по щщам и угомониться. А зря!
Round 1. System design.
Интервьюер оказался очень доброжелательным инженером, который вывалил каноничную задачу на проектирование Parking Lot. По индийским заветам с окраин ютуба я начал лихо собирать все возможные требования, набрасывать какие-то блоки и рассуждать про трейдоффы. В ответ мне накидывали новые требования к системе и следили за реакцией. В общем и целом ощущалось, что мне не хватает опыта, но фидбэк по этой части оказался хороший.
Round 2. Behavioral.
Супер-нежданчик, потому что мне казалось, что бихейв-секция всегда остается на сладенькое. Прошло просто прекрасно – начали диалог с того, как я дошел до жизни такой, закончили вот этими всеми вопросами «А расскажи про свой самый мощный импакт? Были ли у тебя конфликты в работе и как ты их решал?». По этой части фидбэк был тоже ок.
Round 3. Coding.
Тут вышло не очень круто. Как только я увидел online-IDE, сразу подумал что это алго-секция и принял позу для расчета асимптотики алгоритма. Оказалось всё совсем не так – это была задачка на ООП, где нужно было спроектировать относительно нехитрую игру наподобие шахмат. Не могу сказать что интервьюер был плохой, но мы как-то не нашли общий контакт, задизайнил я задачу плохо (потому что вообще сперва не понял что это собес на ООП, лол), хотя на теоретических вопросах вроде было ничего так. Короче, meh.
Round 4. Algorithms
АХАХАХАХА! Ну вот я и дождался сладкого момента с алгоритмами. Пожалуй, давно так не позорился. Выпала простейшая LC-Easy задачка, коих было нарешано предостаточно, и я просто не смог ее закодить – хотя на виртуальном вайтборде все выглядело просто прекрасно. На мой взгляд, все сложилось из нескольких вещей – внезапно заглючила online-IDE и было невозможно перемещаться по коду, заранее заготовленных структур данных как в Leetcode там не оказалось, а потом сказалось общее нервное напряжение и я заруинил все что можно. Очень обидно.
Спустя три дня я получил звонок от HR, которая сообщила, что часть секций была хорошей, часть не очень, что они не получили должного набора сигналов, и предлагают мне еще одно интервью.
Bonus round. Algorithms
Красивая medium-задача на отрезки, допереть до решения которой я смог только к концу интервью, и только на вайтборде. Обидно, но справедливо – нужно было лучше готовиться. Reject.
Краткий итог: я не так уж и сильно ударил в грязь лицом, понял, что не фатально туп, и вообще, собеседования – это не так уж и страшно!
Русский бигтех и внезапный вин
Кто: Ну там пацаны и поиск и такси делают и все такое)))
Локация: Россия, Москва/Петербург
Время: Лето 2021
Все сложилось как один большой прикол. С момента прошлого провала я решил немного повременить с собеседованиями куда-либо, занявшись личными делами и чуть более размеренно отнесясь к подготовке. Как всегда, внезапно, прилетает сообщение в Telegram от HR: «Ну ты вроде классный, давай пообщаемся?)))»
Тут небольшое отступление: вообще, я тот еще очкодав, и хоть на просмотр вакансий смотрю трезво, рассылаю резюме и соглашаюсь на собесы не ранее чем после третьей бутылки пива.
В общем, после идеи «ты же wannabe-литкодер, сходи-ка по приколу и туда», я согласился поболтать. Звонок, обсуждение позиции, вроде даже интересно, давайте попробуем.
Процесс в эту компанию известный, описан и отбомблен во всех вайтборд-чатах и прочих Хабрах, и выглядит он безумно просто:
– Вот тебе для разминки easy-level задача. А можно быстрее?
– Вот тебе medium-задачка. Клевое решение, а можно быстрее?
– Вот тебе еще одна задачка. Клевое решение, а можно быстрее?
– Никаких тебе System Design раундов
Как ни странно, деревьев переворачивать не пришлось, все было в относительно адекватных рамках. Дальше беседа с потенциальным тимлидом «за жизнь» и помпезное оглашение оффера спустя пару дней.
Впрочем, оффер оказался не то чтобы симпатичным, позиция была не то чтобы высокой (оттого, видимо, и раундов было чуть меньше), к тому же большого желания менять работу не было (я же хотел релокацию а не вот это все), и я отказался.
Краткий итог: самооценка уравновесилась, оказалось что мало-мальски задачи я решать умею, и не все потеряно. Отличная тренировка!
Успокоившись, я занялся более насущными вещами: графоманией всяких унылых текстов в блоге и торговлей лицом где попало. Повышать скиллы было решено неспешно, форсируя подготовку при приближении других собесов.
Загорая на пляже поздней осенью, после очередного пака мексиканского Dos Equis, в голову пальнула идея еще порассылать резюме. Ответы, как водится, посыпались немного позже.
Как мы закончили, так и не начав
Кто: Ну там пацаны службу такси делают)))
Локация: Вильнюс, Литва
Время: Осень 2021
Мне непросто оценивать свой уровень касательно бигтеха: это в своем корпорате ты можешь иметь лычку супер-пупер-эксперта, но на входе у этих ребят могут быть совершенно иные требования. Так или иначе, CV по приколу я закинул на обе открытые позиции в Вильнюсе: Senior и Regular Engineer – авось, сами разберутся, куда я подхожу.
Выкатываясь дождливым петербургским утром в метро, проверяя почту, я внезапно увидел сообщение от тамошнего рекрутера: «Ну ты вроде классный, давай пообщаемся?)))». Что ж, не за этим ли я пришел? Забиваем таймслот в Calendly, заходим в Zoom. Рекрутер-британец со свойским ему accent расспросил про опыт, мои хотелки, рассказал про ультимативные плюшки позиции Senior Software Engineer в этой замечательной компании и… кинул ссылку на Codesignal. С прокторингом! Это когда ты мало того, что решаешь задачи в какой-то онлайн решалке, так еще и тебя палят по вебке. Затея 0/10, но что поделать.
Понимая, что времени у меня неделя, я начал в панике снова крутить литкод. Слава богу, через несколько дней пришел рекрутер с фоллоу-апом и радостно сообщил, что для Senior позиции у них скрининг с инженером вместо CodeSignal. Ура! Шансы есть.
На звонке был мега-приятный литовец, с ним мы поговорили про предыдущий опыт и он расчехлил несложную задачку. Тыкаясь-мыкаясь я ее решил, написал тесты, которые тоже отработали, и на приятной ноте мы с ним разбежались.
Спустя неделю пришел рекрутер, который сообщил, что, дескать, увы и ах, но на Senior как-то ты не тянешь. Жаль, видимо я был не очень убедителен и сделал слишком много оверинжиниринга в задаче. Договорились пообщаться спустя полгода и сразу на онсайте со всеми раундами.
Взяв небольшой перекур, внезапно прилетело очередное приглашение от следующей компании.
В суть задачи не вникай, сразу кодить начинай
Кто: Ну там пацаны и ноутбуки делают и телефоны и вообще фрукты клево знаешь)))
Локация: Лондон, Англия
Время: Зима 2021/22
В общем, на ящик я получил безумно красиво оформленное письмо с основной идеей (да-да!) «Ну ты вроде классный, давай пообщаемся?)))». Малость ошалев от такого поворота событий, я радостно согласился продолжить.
Процесс должен был выглядеть следующим образом:
- Поболтать со спецами из таргет-команды;
- Покодить на Java и поговорить как она работает;
- Пописать увлекательные алгоритмы;
- Систем дизайн и снова поболтать за жизу, в том числе с Hiring Manager.
Все этапы размеренны, step-by-step, никаких тебе собесов за один день, проходишь один этап – проваливаешься в следующий.
Round 1. Call to know each other
На первом звонке присутствовали двое матерых инженеров, с которыми вышла увлекательная беседа про прошлый опыт и микросервисы. Немного порофлив втроем с их бюрократии, мы внезапно сцепились языками насчет одной технологии, на которой я успел съесть собаку и которую, как ни странно, эти ребята тоже используют у себя в команде. Получив положительный фидбэк, настала пора готовиться к следующему раунду.
Round 2. Coding
Давайте вернемся к очередности, которую я получил: там было четко написано про Java. Поэтому я потратил все три имеющиеся в запасе недели на изучение Concurrency, потрошков JVM и всякую там Java Memory Model. Литкод было решено почти не трогать.
В свою очередь, на звонке инженер расчехлил ехидную задачку на Java Iterator, в которой я ну никак не разглядел литкод. Подумав, что это надо делать именно с точки зрения Java, я начал рожать что-то стандартное. Подсказки в стиле «Let’s think outside the box» не помогли, с горем пополам и пинками собеседующего я разродился на мало-мальски рабочее решение, и этот раунд успешно завалил.
Надо ли говорить, что буквально спустя 15 минут после собеса я понял что это литкодовая задача и легко расколол за вечер три таких же однотипных? Фантастический провал.
Спустя еще пару дней прилетел стандартный реджект: «Спасибо что откликнулись, но мы решили не продолжать». Ожидаемо, но сам виноват.
Краткий итог: процесс у компании приятный, но нужно быть внимательнее и не додумывать за других, что там от тебя хотят на собесе.
Посокрушавшись с неделю от собственного раздолбайства, получил новый апдейт в LinkedIn.
Насколько ты лидер, братишка?
Кто: Ну там пацаны облако делают и интернет магазин и вообще оч много деняк у них))))
Локация: Берлин, Германия / Краков, Польша
Время: Зима 2021/22
Что же я увидел зайдя в LinkedIn в очередной раз? Ммм, «Ну ты вроде классный, давай пообщаемся?)))». Что ж, маховичок уже раскрутился по полной, давайте попробуем.
Процесс обещали следующий: вот тебе наша супер-классная платформа для решения задачек, тестов на твои LEADERSHIP PRINCIPLES, ну и архитектуры немножко. Если все будет чики-пуки, то продолжим. Эээм, sounds wierd, но давайте так, чо уж.
Итак, получив одноразовую ссылочку на онлайн-решалку, я столкнулся со следующим:
Online Round 1. Coding
Две милейшие (нет) задачки и обе, сука, на Dynamic Programming. Я бы заменил это на другую аббревиатуру с буквами DP, если вы понимаете, о чем я. С горем пополам набрал 100% в первой, а вторую просто закодил «в лоб», набрав 60%. С динамикой у меня откровенная беда, поэтому набранные баллы были за счастье.
Online Round 2. Architecture
Вот здесь было уже интересно. Тебе рисуется интерфейс типа почтового клиента, где вы с коллегами типа разрабатываете три разных системы. Нужно выбрать в порядке предпочтения ту или иную технологию на каждом этапе в зависимости от трейдоффов и преимуществ, которые она в себе несет. Ну типа, вот есть система видеонаблюдения для метро, как хранить данные? Как их между собой гонять? А тут синк/асинк? Что же, это хотя бы было интересно.
Online Round 3. Leadership Principles
Господи, это было нудно. Делать в тесте на тонну однотипных вопросов выбор между очевидными вариантами «поступить как батя и порадовать кастомера» vs. «отморожусь пока не придет менеджер с пинками» было выше моих сил.
Так или иначе, после онлайн-решалки мне любезно предложили пообщаться с менеджером насчет LEADERSHIP PRINCIPLES, и рекомендовали для каждого LEADERSHIP PRINCIPLE вспомнить ситуацию из своего опыта, заботливо притом описав ее по STAR. Мдаконечно, но давайте попробуем.
Round 4. Leadership Principles
Вкратце можно охарактеризовать как «Ну я это». У меня не нашлось истории на каждый LEADERSHIP PRINCIPLE, а выдумывать что-то сказочное мне совершенно не хотелось. Разговор прошел 50/50, но проскакивали явные нотки, что от меня слышали порой совсем не то, что ожидалось.
В итоге получил отказ, но даже не расстроился. Страшно представить, какую тягомотину можно было бы ожидать дальше.
Краткий итог: видимо, я нихрена не LEADER 🙁
Спустя неделю-две меня ждал совершенно комический нежданчик.
Такси. Добро пожаловать, снова
Кто: Ну я там про такси рассказывал уже))))
Локация: Вильнюс, Литва
Время: Зима 2021/22
Снова «Ну ты вроде классный, давай пообщаемся?)))», но подождите-ка, вы же вот меня зачехлили недавно! На звонке с уже другим рекрутером как-то выяснилось, что она была не в курсе моего прошлого захода, но «так как у нас на улице очередь из таких как ты», то вот тебе Codesignal на Regular позицию, набирай нужное количество баллов на задачках, а там посмотрим. Спасибо, что в этот раз без прокторинга!
Онлайн-решалка состояла из нескольких частей:
- Вот тебе две задачки на программирование;
- Вот тебе тест по Kafka (эм, правда?).
Задачки оказались так себе, первая была решена на 100%, вторая на 50%. Смутно помню, что там было, но кажется, первая была на Greedy Algorithms.
В тесте по Кафке я ответил правильно на 5 вопросов из 8. В сумме этих баллов не хватило на продвижение дальше, и меня (вот сюрприз!) развернули. Бывает.
Краткий итог: читайте «Замок» документацию, крутите литкод и будьте удачливее в следующий раз.
Кстати, бывалые рассказывают, что если набрать большой процент очков в онлайн-решалках в больших компаниях, то могут и сразу позвать на онсайт. Не могу сказать, насколько это соответствует действительности, сам проверить я не смог)))0)
Итоги
Дальше было немного не до хайринга (а что случилось?), а спустя некоторое время я принял приемлемый зарубежный оффер от собственной компании. Жизнь, ироничная же ты сука.
Какие выводы я сделал из этого провального хайринг-сезона?
- Собесы в большие компании в любом случае хорошо: при подготовке к ним можно провести отличную ретроспективу собственного опыта и обновить для себя скиллы базовой Computer Science. Субъективно, я все-таки неплохо постарался для расширения собственного кругозора;
- В большинстве случаев бигтеху насрать на чем ты там пишешь, и это просто прекрасно – тебя не будут душить унылыми вопросами про работу ZhopaContextAwareService при тех или иных условиях;
- Я элементарно стал смелее и раскрепощеннее при общении на технические темы – дискуссия она на то и дискуссия, чтобы взвесить свою точку зрения на тот или иной счет;
- Серьезные собеседования требуют серьезной подготовки (кэп). Нет, не надо действовать нахрапом, и лучше бы иметь какой-то подробный и работающий план. Еще лучше, если ты будешь решать действительно много сложных технических задач на работе – простым перекладыванием JSON’ов ты точно не нарастишь свои скиллы;
- Если повезет, еще и оффер получишь, лол.
Опыт, даже негативный, это все равно опыт. Осознание своих слабых мест – прекрасный выхлоп, потому что это дает тебе скоуп проблем, над которыми можно работать. В общем, я не пожалел. Буду ли пробовать еще? Why not, просто к процессу нужно подойти ответственнее и внимательнее. Побоюсь ли в следующий раз? Ну уж точно нет.
That’s all folks, спасибо что пришли на мой TED Talk!
Ну ты вроде классный, давай еще! :)
Классный пост! Жду апдейта с success story
Примерно так и прошли мои многократные интервью в Гугл, Фейсбук, линкедин. Да.
Спасибо за пост! У меня ушло 1.5 года от первого собеседования в зарубежную компанию до первых офферов. Приятно знать, что не один такой 😅
Свой первый собес в зарубежную компанию у меня произошел неожиданно, просто рекрутер сама написала в Линкедин. Собес был один единственный технический, без лайвкодингов. Получил оффер который тут же принял. Еще бы, сразу 4x к моей тогда еще первой зарплате джуна. Но это удаленка.
Над вторым же оффером, уже с релокейтом, год спустя пришлось попотеть похожим образом. Заняло 3 месяца. Все эти лайвкодинги, сисдезы и бехавиорал. Даже не знал, что со всем этим придется столкнуться. Системный дизайн я явно не тянул с моими 2 годами опыта, а интервьюеры всегда хотели слышать больше, чем я успел узнать на ютубе. В итоге получилось пройти в компанию где было 2 комплексных техсобеса сразу с лайвкодингом и сисдизом, с одними и теми же людьми. Видимо в таком случае общее впечатление о тебе остается хорошим, даже если где-то лажанул, но в целом был ок, и наверх уходит сбалансированный фидбек. В случае же с отдельными собесами по каждому чиху, ты зависишь от слишком большого количества людей и хер его знает в каком виде все это дойдет до хайринг менеджера
Спасибо за твой текст! Теперь мне еще страшнее искать работу, вроде и не джоины туда-сюда перетаскиваю, а все равно нет уверенности, что попадется именно та задачка, которую сможешь решить(
Очень классный пост получился, спасибо что поделился!)
Ты искал вакансии просто на сайтах компаний которые были интересны?
Привет коллега))
Супер крутой и интересный пост, спасибо!
Очень круто, спасибо за рассказ! Подскажи, сколько по времени у тебя занимало прохождение этапов в разных компаниях? Почему спрашиваю: весной смотрела вакансии и оказалась не готова к тому, на какой долгий срок может все затянуться. Привыкла к тому, что в РФ часто бывает быстрее.
Спасибо, что поделился! Как ты готовился к сис дизайну? Есть какие-то рекомендации?
Почти как про себя читала, только без хеппи энда.....
Привет, а офер от телекома в Бонн? или предложили вне Германии?