Следующий год должен был быть решающим, так как сил и денег в подготовку к IELTS было вложено не мало. Будет преувеличением сказать, что я был на столько же уверен в положительном результате своей затеи, но решительности мне было не отбавлять.
Зима 2020. Эх, раз, да ещё раз! Да ещё много-много раз!
Что же, приступим к одному из худших годов в моей жизни. Не худший, бывало и веселее, но я думаю почетное место в тройке он точно займет. Не будем вдаваться в подробности коронавируса, это всем известно и совершенно неинтересно. Итак, в феврале я хотел в третий раз попытать счастья с IELTS в Москве. Написав за пару месяцев пару десятков эссе и писем, и сделав еще с 10 полных тестов, я решил не откладывать дело в долгий ящик и снова записался на сдачу 21 февраля. Единственное, я учел, что идти на Speaking часть после 2,5 часов остальных частей не самая хорошая идея и, как и в первый раз, поставил Speaking первым. Сдаем, ждем результаты. C1 получен! Ура? Как бы не так. Listening 7.5, Reading 7.5, Speaking 6, Writing 6. Опять слабый Speaking, хотя тема была удачная и никаких явных косяков я не допустил. Writing же стабильно 6. Три раза подряд. Все части имели разные баллы, то лучше, то хуже. Writing же всегда стабильно 6. После занятий с 3 разными репетиторами. Чудеса.
Дальше, будет исключительно неподтвержденная информация, основанная на моих догадках. Погуглив, я выяснил, что по неведомым причинам, в некоторых странах сдать IELTS сложнее чем во всем остальном мире. Россия, Китай, Турция. Про Китай мне говорил еще самый первый репетитор. Он жил в Таиланде и к ним ездили китайцы автобусами сдавать IELTS, потому что в Таиланде они получали на 1–1,5 балла больше чем на родине. Другой случай мне рассказал мой третий репетитор. У него занималась девушка из Турции, которая свободно разговаривала на английском. В Турции у нее не получалось получить больше 6 баллов за Speaking. Она поехала во Францию в отпуск и сдала за одно экзамен там. 8 баллов! Это невероятная разница. Сложив эту информацию, я решил в марте рвануть в Польшу и попробовать сдать там. Не получится и тоже будут низкие баллы по частям что оценивает человек? Значит я все-таки сам дурак, начинаем искать номинации от провинций в Канаде или работу. И то, и другое должно добавить баллы, недостающие из-за слабого английского. К сожалению, проверить мою теорию заговора не получилось. Границы закрыли и остался я со своим С1 дома ждать чуда.
На работе же началось предсказуемая жопа. Поработай пару месяцев в старом монолите, ага. Ковид очень крепко ударил по компании. Как я понимал, планы были пересаживать текущих заказчиков с монолита на новые микросервисы. Вот только в разгар Covid-19, никто обновляться не захотел. А новые заказчики почему-то воротили от микросервисов нос. Возможно, у конкурентов подобное решение было лучше. Или наше не было готово полностью. Кто же его знает. И всех разработчиков потащили обратно в монолит. Конечно, многим это не понравилось и начался плавный побег. Ну как плавный… Общий рабочий чат за полгода сократился на 150 человек из 650. За полгода не пришло ни одного нового человека, даже студентов, уже прошедших обучение на курсах, разворачивали и просили подождать осени. Правда, стоит признать, что осенью часть из них все же была устроена на работу. Но с текущими разработчиками разговор был короткий. Или монолит или до свидания. Мне предложили продолжить работу в монолите, еще раз накинуть деньжат и через 3 месяца искать новый проект. Пусть даже в монолите, но что-то более-менее свежее. Казалось бы, не так все и плохо. Но это только казалось.
Весна 2020. Что такое самоизоляция и с чем ее едят.
Ковид шагает по планете, но сидеть и ждать, ничего не делая невыносимо. Всех перевели на удаленку, спортзалы, кино и остальные развлечения закрылись. За окном обычная российская весна, когда и танк утонет. Поэтому решил начать готовиться к собеседованиям в Европу и попробовать туда свалить летом, несмотря на ковид. Даже если не получится, то пойму, чего не знаю и попрактикуюсь в прохождении собеседований на английском. А там глядишь и границы к осени зиме начнут открывать и можно будет еще раз попробовать IELTS сдать.
Для подготовки выбрана следующая стратегия. С теорией у меня все было нормально. Но надо было подтянуть live coding и где-то попрактиковать собеседования на английском. Для первого, полно всевозможных сайтов, я занимался на Leetcode. Подкупило то, что в платной подписке была возможность посмотреть, какие задачи спрашивают разные компании. Для английского абсолютно случайно нашел сайт pramp.com . Бесплатно можно проводить интервью с разными людьми из разных уголков планеты. Указываешь свой язык программирования, указываешь интересующие темы и ставишь дату интервью. Находится подходящий тебе человек, который хочет практиковать тоже самое и все. Полчаса ты его гоняешь, полчаса он. Можно даже live coding устраивать. Провел около 5 собеседований. Были корейцы, китайцы, турок и немец. В целом для тренировки пойдет, но набор заданий не большой и наскучивает. Если после пары попыток проблем именно с общением нет, то можно спокойно забрасывать и идти решать задачи на Leetcode и его аналоги. Чем я и занимался оставшиеся 2 месяца.
Где я брал время? О, это очень просто. У меня было его достаточно. И это не потому, что всех перевели на работу из дома. А потому что на работе обещанного повышения зарплаты не было. И это за добровольный перевод в скучный проект и реализации всех задуманных фич за двоих, потому что второй разработчик уволился. Аргумент, естественно, был «ну ковид, сам понимаешь». Я, конечно, все понял и решил, что 50 процентов рабочего времени вполне можно пустить на подготовку к собеседованиям. Ковид же, сами понимаете.
Как обычно, беда не приходит одна. Умирает дедушка. Конечно, странно сравнивать все предыдущие проблемы и жизнь родного человека. Однако, раз это просто рассказ, то, наверное, стоит это упомянуть. На фоне всего этого мой мозг решил, что это отличная идея заедать стресс(особенно при полностью закрытых спортзалах) и я поправился еще на 5 кг. Печально. Лена убедила обратиться к психологу, что, забегая вперед, помогло.
Лето 2020. Dear Aleksandr, we have a great opportunity for you!
Наконец-то приступим к самому интересному. Собеседованиям. Но перед этим хотелось бы затронуть еще 2 темы.
Первая это опять работа. Куда уж без нее. Но мне бы очень хотелось, чтобы читающие этот великолепный опус, понимали мое состояние на начало прохождений собеседований. Проект, за который обещали повышение зарплаты подходил к концу и надо было искать новый. Но искать не пришлось. Ко мне пришли сами 3 разных проекта. Да, все из монолита, но не забываем, что ковид в самом разгаре. Можно бы и выбрать, что больше подходит. Казалось бы. Почему-то мой непосредственный менеджер решил, что в них он меня отдавать не хочет. Доходило до абсурда. Я созваниваюсь с product owner проекта, даю согласие на переход. Он пропадает на неделю. Через неделю я спрашиваю у своего менеджера: «Так что, почему тишина от них?». Ответ: «Да что-то они думают еще». Иду к product owner: «Почему не берете, планы поменялись?». Ответ: «Нет, мы очень хотели тебя забрать, но тебя не отпускает твой менеджер.». Иду опять к нему: «В чем проблема, почему вы меня не отпускаете?» Ответ: «Ну потому что».
В итоге меня отправили переделывать местную базу данных. Скучнее и противнее проекта придумать было невозможно. Но и это было еще не все. В проекте не было лида. Был двухголовый дракон. Был технический лид, который терпеть не мог лидовую работу и общаться. И был скрам мастер, который ничего не понимал в технической стороне. Но и это было еще не все. Мы должны были привести в порядок код, который был написан этим тех лидом и студентом олимпиадником для демо за месяц практически без код ревью. Вы даже в страшных снах не сможете представить на сколько этот код вонял. Через раз наш архитектор говорил «Я понятия не имею как тут и что работает». Но и это еще не все. Да, да, это смешно, но это так. Когда мы все-таки начали рефакторинг, наш чудо тех лид пару раз на вопросы ребят в команде «А почему тут так работает?», которые естественным образом возникали в процессе рефакторинга, отвечал буквально «Потому что». Лучший просто. В общем, мотивация хоть что-то делать у меня пропала полностью и тратил я на это, от силы, 20 процентов рабочего времени. Что с одной стороны хорошо, потому что было время на собеседования. Но, с другой стороны, я терпеть не могу так работать, потому что понимание бесполезности и ненависть к работе очень сильно выматывают.
В середине лета ко мне опять приходило 2 проекта и предлагали перейти к ним. Я ходил к менеджеру и говорил «Я ничего тут не делаю, работаю на 10 процентов своего кпд, может быть все-таки отпустите в нормальный проект чтобы я приносил пользу?» Нет, не отпустили. Но полностью очистили мою совесть, и я спокойно пошел по собеседованиям в середине рабочего дня вместо работы.
Вторая тема это выбор стран в Европе куда я хотел отправлять резюме. Германия, Нидерланды, Швеция из-за отличного уровня жизни и большого спроса в IT. Затем шли Португалия и Испания. Море, теплый климат, не плохой уровень жизни, есть спрос в IT. Следующими шел набор стран, в которых было мало вакансий на Linkedin, но попробовать стоило. Это Австрия, Дания, Норвегия, Швейцария. Великобритания отпала из-за проблем с перевозкой кошек. Это очень сложно и дорого. Примерно 250 тысяч рублей на одного кота. Италия и Франция хороши для отпуска, но не для жизни. Восточную Европу пока не хотелось рассматривать.
Что же приступим к летописи. Да, я специально все записывал, я бываю занудой.
Июнь 2020. На старт! Внимание!
1) На меня сама вышла HR из агентства, у которого было 3 подходящих мне вакансии в Германии. Одни решили со мной поговорить. Прислали задание домой сделать не очень сложное задание на многопоточность.
Having a Player class — an instance of this class with that can communicate with other Player(s) (other instances of this class)
The use case for this task is as bellow:
1. create 2 players
2. one of the players should send a message to second player (let’s call this player “initiator”)
3. when a player receives a message should send back a new message that contains the received message concatenated with the message counter that this player sent.
4. finalize the program (gracefully) after the initiator sent 10 messages and received back 10 messages (stop condition)
5. both players should run in the same java process (strong requirement)
6. document for every class the responsibilities it has.
7. opposite to 5: have every player in a separate JAVA process (different PID).
Please use pure Java as much as possible (no additional frameworks like spring, etc.)
Please deliver one single maven project with the source code only (no jars). Please send the maven project as archive attached to e-mail (eventual links for download will be ignored due to security policy).
Please provide a shell script to start the program.
К своему сожалению, я работал только со старой реализацией и совсем мало с concurrency package и nio. Как же я сдал Oracle экзамен? Ну как вам сказать… Это было 5 лет назад и на своем текущем месте я ни разу это не открывал. Spring заменил нам все. К счастью или сожалению. Но да, я понимаю, что это исключительно моя проблема и я должен был это лучше знать. Все так. Но, как всегда, есть нюансы. Задание было выполнено при помощи обычных Thread, его приняли и пригласили на интервью. Что означает что их оно устроило. Вакансия была на enterprise а не на Java Core. Что подразумевает, что надо бы поспрашивать что-то кроме Core. К сожалению, собеседующий меня думал не так. Усталый парень, даже не включив камеру задал пару вопросов только по concurrency пакету и не получив правильных ответов свернул интервью. Позитивное начало.
2) Спросил у знакомой девушки из Индии, которая жила в Нидерландах, нет ли у компании, на которую она работало вакансий. Она ответила, что пока нанимают только тех, у кого есть разрешение на работу в ЕС.
3) Отозвался на 8 вакансий в Португалии. Даже ни одной стандартной отписки «Извините, вы нам не подходите». Игнор.
4) Отозвался на 7 вакансий в Швеции. 2 компании вежливо ответили стандартной отпиской.
5) 1 вакансия в Дании. Тишина.
Июль 2020. Марш! А где все?
1) 4 вакансии в Португалии. Ноль ответов. Закрываем Португалию и больше туда не пишем.
2) Ни одной подходящей вакансии в Испании за 2 месяца. Забываем про Испанию тоже.
3) 2 вакансии в Австрии. Без ответа.
4) 8 вакансий в Швеции. 3 отписки. 1 приглашение на интервью. Небольшая компания порядка 100 человек, собеседование проводил архитектор. 1 час, самые обычные вопросы по Java Core, на все ответил и правильно(уж извините, но это были очень простые вопросы и я был уверен в них, да и потом даже перепроверил). Единственная проблема, они не использовали Spring, а какой-то специфичный фреймворк. Но он сказал, что это не проблема. Через пару дней отказ, решили продолжить с другим кандидатом. Как я понял он просто имел разрешение на работу в Швеции.
5) 22 вакансии в Германии. 9 отписок. 1 звонок рекрутера из агентства, собравшего информацию и больше не перезвонившего. 1 приглашение на собеседование. Поговорил с HR, потом был live coding. Задачу решил, была одна ошибка, которую заметил, в процессе тестирования. Объяснил, что не так, но поправить код не успел. После собеседования за 5 минут додебажил и поправил. Не пригласили дальше. Возможно, надо было пройти идеально или просто было много кандидатов, предложивших лучшее или идеальное решение. Бывает.
6) 17 вакансий в Нидерландах. 4 отписки. 3 приглашения на собеседования.
a. Опять вакансия на Java Core с уклоном в Multhithreading. Но теперь то я уже был готов. Прохожу собеседование с HR. Первое техническое собеседование один на один. Поговорили про опыт, вроде бы не сложные теоретические вопросы, пара очень простеньких задачек. Через пару дней звонок от HR. Вы хорошо прошли техническое интервью, но мы решили, что у вас недостаточно опыта работы именно с многопоточными приложениями, поэтому вынуждены вам отказать. То есть прочитав резюме мой опыт был достаточен. С ним я смог пройти ваше первое техническое интервью. Но вы все равно решили, что вам нужен чистый Java Core Senior. Ну ок.
b. Компания искала людей на легаси. Достаточно древнее, около 10 лет. Собеседование скорее походило на презентацию их приложения. Был HR, пара менеджеров и тимлид. Первые полчаса, HR и менеджеры рассказывали про их компанию и слушали мой стандартный рассказ об опыте работы в других компаниях. Затем слово взял тимлид. Он полтора часа показывал реальный код их приложения на экране. Рассказывал какую-то фичу минут 15–20, потом открывал юнит тест и спрашивал выполнится он успешно или нет. Я отвечал минут 5. Затем он переходил к следующей особенности их приложения. Так продолжалось полтора часа, за которые я правильно ответил на 3 вопроса, на один ответил сначала неправильно, потом исправился, и на один я не смог дать ответа. Ноль вопросов по моим знаниям. В конце интервью один из менеджеров уточнил, понимаю ли я, что придется по большей части поддерживать старый код, а не писать новый? На что я ответил, что понимаю и готов и что это часть работы в больших компаниях. Через неделю ответ: «Знаете, вы нам понравились, но другой кандидат показал больше желания работать в нашей компании». Понятно.
c. Третья компания прислала ссылку на тест. Которая не открывалась. Вообще. Написал два письма с просьбой прислать другую ссылку. Ни на одно из них не ответили.
Август 2020. Как то все грустно получается.
1) Нет новых вакансий в Швеции.
2) Нет новых вакансий в Нидерландах.
10) 9 вакансий в Германии. 2 отписки, 2 приглашения на интервью.
a. HR позвонила, 40 минут разговаривали. По результатам она сказала, что все хорошо и вечером пришлет приглашение на первое техническое собеседование. Вечером ничего не приходит, на следующий день стандартная отписка что я им не подхожу. Похоже сходила к начальству, оно сказало, что даже не собирается рассматривать релокейт.
b. Прошел интервью с HR. Прошел первое техническое интервью. 30–40 минут, простенькие вопросы. Второе интервью live coding на 1 час. Дали не сложную задачу, разрешили даже писать в идее. Накидал метод, работает. А давайте напишем тест для этого. Ну ок, написал. А давайте вынесем это в отдельный сервис и вызовем в контролере. Ну ок. А давайте и на это напишем тесты. Написал и позитивный и негативный сценарии. Прошло 40 минут. Парень заканчивает интервью со словами «Все хорошо, спасибо. Мне все понятно, результат будет через пару дней». Через пару дней ответ: «Извините, но мы решили не продолжать с вами собеседования. Ниже наш фидбек.»
- Плохие названия для классов, просто CompanyNameService, UrlException.
- System.out() вместо систем логирования типа log4j. В Live coding сессии. Не использовал систему логирования. В Java Core. Ну, бывает.
- Не создали константы для пары значений. Это просто было вранье, так как код я писал в своей IDEA, он у меня сохранился и я перепроверил. Нормально все было с константами. Я сначала написал обычной строкой, потому что думал над решениием, но потом вынес в константы. Видно, проверяющий так внимательно следил и после собеседования еще раз смотрел на код, что не заметил.
- Название Junit теста в неправильном формате. Было ServiceTest, должно быть CompanyNameServiceTest.
Все. То есть на live coding они решили придираться к стилю. На live coding интервью, которое является стресс интервью и где у тебя обычно есть время только на то, чтобы быстро понять, что от тебя хотят, придумать решение, реализовать его и молиться чтобы оно сработало с первого раза, потому что времени на отладку нет. К названиям классов, к логированию. Молодцы. Хочу добавить, что в моем понимании, эти замечания имели бы место в какой-нибудь home task, когда тебе дают неделю и просят сделать какое-то небольшое приложение. Тут да, играет роль логирование, стиль, тесты и тд. Но не в live coding. Конечно, стоит признать, что это чуть ли не единственная компания, которая позволила использовать IDEA для кода и прислали фидбек, а не дежурную отписку. За это им большой плюс. Я могу быть не согласным с ними, но хотя бы знаю почему меня развернули.
И на этом первый заход закончился.
Осень 2020. Печальная пора.
Да, первый заход на поиск работы в Европе был холодным душем. Минимальное количество ответов на резюме. Никакой заинтересованности. Те же, кто отвечал, были одни страннее других, и мой опыт им абсолютно не подходил. Сейчас, оглядываясь назад, я понимаю, что причин такого эпического провала, скорее всего, было две. Во-первых, это было лето и самый разгар ковида. Компании банально не понимали, что будет дальше, будет ли у них финансирование, инвесторы, как релоцировать людей и тд и тп. Во-вторых, у меня не было никакого подтверждения своих скиллов, кроме пары Oracle сертификатов. Этого мало. Обязательно нужен GitHub с каким-то проектом или набором решенных задач с того же Leetcode, что бы работодатель мог сразу оценить и понять, что ты хотя бы что-то умеешь.
С ковидом я ничего не мог сделать. А вот накидать кода в GitHub или в моем случае GitLab было можно. Решил доделать приложение с хранением документов. Микросервисная архитектура, бек на Java+Spring, фронт на Angular, база данных MongoDB, плюс прикрученный OAuth2. Выглядело прилично. Одновременно решил сохранять свои решения с Leetcode в свой GitLab. Туда же в дальнейшем и попадали тестовые домашние приложения, которые я делал для разных компании как один из этапов на собеседованиях. Новая рассылка резюме была запланирована на декабрь.
На работе все было по-прежнему. Я просто получал зарплату и ничего не делал.
Декабрь 2020. No comments.
В начале декабря опять разослал свое резюме на подходящие вакансии в пару стран.
1) 9 вакансий в Швеции. 2 отписки, 1 приглашение на интервью. Прислали тест на логику на час. Сделал. Пригласили на собеседование с HR. Поговорил, никакого ответа.
2) 16 вакансий в Германии. 6 отписок, 5 приглашений на собеседование.
a. Позвонила рекрутерша. Предложила 2 вакансии. Большее ее никто не видел.
b. Рекрутер сам меня нашел, поговорил с ним, сделал тестовое задание (2 из 3 сделал правильно, 3 написал, но не рабочая рекурсия), приняли, позвали на собес HR непосредственно из компании. Поговорили полчаса с вопросами “Что вы знаете про Дортмунд?”, “Как вы станете себя вести как только придете в компанию?”, “Как помогать джуну в его первые рабочие дни?”. На следующий день стандартная отписка, что вы нам не подходите.
c. Поговорил с HR, опять отписка о том, что мы решили продолжить с другим кандидатом.
d. HR сама мне написала, поговорили. На следующий день отписка, что для меня нет вакансий. А зачем ты мне писала сама, чудо?
Можно было бы подумать, что отказы от HR были, потому что я плохо говорю на английском. И в этом была бы своя правда, если бы не одно «Но». К этому моменту я уже около 10 раз разговаривал с рекрутерами и HR из Европы. И летом они меня не отшивали таким образом ни разу. Так же, вопросы как правило, они задавали абсолютно стандартные и я уже на автомате им отвечал одну и ту же историю. Ну и последний гвоздь в эту версию. Я ни разу не переспросил ни одного вопроса и что самое главное они тоже. То есть мы прекрасно друг друга понимали. А значит проблем с коммуникацией у нас не было. Что, собственно, и подтвердится через пару месяцев. Моя версия в том, что они шерстят все подряд, а когда приходят к заказчику или менеджеру, принимающему решение, то он посылал меня лесом, потому что не из ЕС.
Из-за полного отсутствия альтернатив в Европе и невозможности находится на своем текущем рабочем месте, я открыл LinkedIn и ответил на последние 3 письма от разных HR на текущей неделе. Да, предложение о работе в России приходили обычно по 5–7 в неделю. Сходил на 3 собеседования. 2 предложили работу, 1 морозились, потому что ждали ответа от заказчика из США. Из первых двух компаний, выбрал ту, что предложила работу на иностранного заказчика, более интересный проект и более конкурентную зарплату.
На текущем месте работы диалог с начальником выглядел следующим образом.
«Привет, я ухожу через 2 недели.»
«Привет, мы можем тебе что-то предложить, чтобы ты остался?»
«Такую же зарплату и перевод в нормальные проект.»
«Нет.»
«А зачем спрашивали? Ну пока.»
Хотелось бы добавить последний штрих к моему прощанию с этой компанией. В конце года, генеральный директор решил поощрить работников. И выписал всем премию в 500 баксов. Да, вы правильно понимаете, годовая премия в 500 баксов. Впервые за 5 лет. Но даже ее я не получил. Потому что, как оказалось это была не премия по итогам года, а стимулирующая выплата. Тем, кто планирует компанию покинуть, данную выплату решили не начислять. Стимулирующая выплата в 500 баксов раз в 5 лет. Работайте детки, а раз в 5 лет я вам выплачу целых 500 баксов.
Итог года был полный провал. Не получилось сдать IELTS на необходимые баллы. Из-за ковида пришлось забыть про Канаду. Ни одно из собеседований в Европе не было даже близко к успеху, да и количество заинтересованности стремилось к нулю. Ужасный демотивирующий год на работе, который не дал ничего кроме нервов. Как результат, переход на удаленку в аутсорс из продуктовой компании. Плюс родители, понимая, что я на самом деле ищу работу в Европе, постоянно названивали и пытались доказать, что это плохая идея. Вскоре их риторика повернулась в сторону «Видишь, ты пока никому там не нужен». В конце года, скорее всего, они решили, что я сменил работу, успокоился и забыл про свою дурацкую идею с переездом.
Как вы понимаете, не было даже намека на то, что стакан наполовину полон. Скорее он был разбит в хлам.
Ссылки:
Мой Instagram чуть-чуть фото из Нидерландов
Instagram Лены много фото из Нидерландов
Тоже самое, но на Medium
В предыдущих сериях:
Сложный путь из России в … Нидерланды. Часть 1. Канада?
Продолжение:
Как только будет опубликован, оставлю в комментариях ссылку. Ищите по "Часть 3".
- Сложно ли отказаться от хорошего офера в Польшу? - Как сильно на тебя будут материться, если уйти с новой работы спустя 3 месяца?
- Что будет если опоздать на собеседование?