0
Обложка: Как я бросила инженерию и стала backend-разработчиком в Швеции

Как я бросила инженерию и стала backend-разработчиком в Швеции

Анастасия Шарковская
Анастасия Шарковская
Backend-разработчик в Volvo Autonomous Solutions, выпускница курса «Java-программирование с нуля» в Нетологии

Рассказываю, как после переезда в Швецию я освоила Java-разработку, получила опыт работы в благотворительном проекте и устроилась в Volvo.

Почему я решила сменить профессию

По образованию я инженер безопасности дорожного движения. После университета два года работала по специальности: проектировала дороги, парковки, светофоры. Потом мужа пригласили работать в Швецию, и мы переехали.

Я очень люблю свою профессию и хотела продолжить работать по ней в Швеции. Но когда началась пандемия, муж предложил мне освоить программирование, которым занимается сам. Вообще оно всегда меня привлекало, просто я не относилась к этим мыслям серьёзно, а тут решила попробовать.

Нужно было выбрать: фронтенд или бэкенд. Фронтенд казался мне более творческим направлением, а мне не очень хорошо даётся визуализация. Зато просчитывать и искать логику — это моё. Я чистый инженер, поэтому выбрала бэкенд.

Как я училась и какие были сложности с Java

Я решила начать с Java, поскольку это один из самых популярных языков: на нём часто строится бэкенд и многие приложения. Подумала, что если разберусь, как работает объектно-ориентированное программирование в Java, то изучить дальше С#, Kotlin или Python не составит труда.

Я посмотрела разные онлайн-школы, а муж как опытный программист помог с окончательным выбором. Он оценил содержание курсов и выбрал тот, который охватывал все актуальные подходы и фреймворки и давал, по его мнению, только нужные для начинающего разработчика навыки. Среди них были Spring Framework и Spring Boot, обучение работе в средах разработки, таких как IntelliJ IDEA, работа с базами данных в целом и в конкретных программах, например в PostgreSQL.

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

Процесс обучения в онлайне я воспринимаю как стопроцентное самообразование. Платформа даёт чёткий план и учебные материалы. — это 20%. Остальные 80% зависят от меня.

В начале было сложно. Объектно-ориентированное программирование, на котором строится Java,  давалось мне с трудом. Было сложно научиться мыслить объектами и классами и понять, как это работает. Например, было задание по организации работы библиотеки, где посетитель может брать и возвращать книги. В ней были классы «посетитель» и «книга». Я упортно пыталась задать классу «посетитель» переменную «взял книгу» и долго не могла осознать, что переменная не может принадлежать обоим классам.

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

Только постоянная практика на аналогичных заданиях, помогают постепенно нарабатывать опыт и понимание. У меня на это ушло 3–4 месяца. А чтобы быть уверенной, что я всё поняла, я вернулась в начало курса, пересмотрела все материалы, ещё раз их законспектировала и только потом продолжила. А уже когда разбираешься в основах, стало проще: знания нарастают как снежный ком, и это затягивает.

Первый опыт работы

В конце обучения студентам моего курса предложили поработать в благотворительном проекте. Нужно было делать веб- и мобильное приложение для Первого московского хосписа, которое бы помогло систематизировать работу с документами и упростить передачу информации между сотрудниками и волонтёрами. К разработке привлекали опытных IT-специалистов, преподавателей и студентов Нетологии. Идея мне очень понравилась, и я согласилась, не раздумывая. Тем более, это была отличная возможность попрактиковаться и получить опыт в реальном проекте.

Вдвоём с ещё одним студентом мы работали над backend-частью. Реализовывали функциональность приложения: хранение, передачу и изменение информации в базе данных. Ещё в нашей команде были наставники. Они курировали работу и предлагали архитектурные решения, а мы уже реализовывали их с технической точки зрения.

Моей задачей было дать пользователю возможность получить информацию через поиск новостей. Чтобы, когда он кликает на кнопку «получить новости», на бэкенд шёл соответствующий запрос и приложение выдавало нужную информацию. Здесь очень пригодилось умение использовать PostgreSQL и вообще всё, что я изучала по базам данных. Я уже умела пользоваться системой и понимала, как в ней будут передаваться и храниться данные по заданным мной классам. Это очень облегчило работу.

Конечно, невозможно заранее освоить все инструменты. Приходится постоянно осваивать что-то новое. Для этого достаточно обратиться к официальной документации. Правда, она не всегда бывает переведена и к тому же часто оказывается чересчур сложной. Я в таких случаях ищу короткие видео-объяснения на YouTube, не длиннее 15-минут. Это даёт общее понимание, и дальше становится проще разбираться.

Ещё одной из задач в проекте было прописать проверку авторизации пользователя — так, чтобы данные мог получить только зарегистрированный в системе персонал. С механикой я уже была знакома по дипломному проекту. В нём я писала backend-часть для облачного хранилища, и у меня была похожая задача — проверять при введении логина и пароля, существует ли такой пользователь. Вот как это было реализовано:

backend разработка

Полностью дипломный проект можно посмотреть у меня на GitHub.

Вообще 70% того, с чем я столкнулась в проекте хосписа, я освоила в процессе написания диплома. Поэтому понимание, как должна быть выполнена работа уже было.

И всё-таки поначалу было непросто. В первую очередь с точки зрения организации: нужно было научиться работать в команде и разбивать задачи. Наставники нам очень помогали, но они совмещали проект с основной работой, а мы посвящали этому всё время. Так что набирались опыта и постоянно задавали им вопросы. Иногда казалось, что они отвечают на иностранном языке — ничего не было непонятно. Приходилось разбираться и уточнять, зато так мы параллельно выучили программистский сленг.

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

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

Как я устроилась в Volvo

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

В Гётеборге, где я живу, находится офис Volvo Autonomous Solutions. На тот момент у них были открытые вакансий разработчиков, я отправила им своё резюме и меня пригласили на собеседование. Нужно было пройти несколько этапов интервью и выполнить задания. К сожалению, всех подробностей я рассказать не могу. Но в итоге я успешно со всем справилась, и меня приняли на должность бэкенд-разработчика.

Volvo Autonomous Solutions — часть группы компаний Volvo, которая занимается беспилотными грузовиками. Они работают абсолютно автономно: роют туннели и разбирают завалы — могут делать разные опасные задачи без риска для человека. А моя задача: с помощью кода описывать логику работы этих машин.

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

Программирование — это целая галактика. Здесь нужно постоянно учиться и осваивать новое.

Как проходит отбор разработчиков в Швеции

Если вы ищете возможности работать за рубежом, могу сказать, что в Европе вакансий для разработчиков много. Особенно востребованы Java, Python, С# и С++. Я заметила, что на C# много вакансий для игровых дизайнеров, и обычно в них предлагают больше денег, а на С++ чаще всего требуются Senior-разработчики. Но вообще здесь нет чёткого разделения по уровням — чаще всего просто указывают, сколько лет опыта требуется.

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

На Junior-позиции проверяют знание теории в формате интерактивного теста. Чаще всего это базовые вопросы вроде: чем отличается HashMap от TreeMap. Поэтому нужно знать основы, но если чего-то не знаешь — это нормально, можно загуглить. Даже Senior-разработчики это делают. Здесь скорее важен навык работы с информацией, чем знание фактов.

Тестовые задания бывают разные. Могут быть задания без учёта времени, а бывают на время, когда заходишь в сессию и идёт обратный отсчёт. Обычно они длятся 1–3 часа, но мне попадалось задание и на 6 часов — нужно было написать мини-приложение за это время. Вообще делать задания на время довольно стрессово, не говоря уже о том, что иногда они оказываются сложнее, чем то, что требуется от начинающего специалиста.

Вообще в Швеции при отборе на работу очень внимательно смотрят на то, какой ты человек. Не страшно, если ты чего-то не знаешь, главное — как ты реагируешь на нестандартные ситуации. Адаптивность и целеустремленность очень ценится. Так что собеседование больше похоже на разговор по душам. Например, мне задавали абсолютно жизненные вопросы: спрашивали про мой опыт работы в России, о том, почему мы приехали, и почему я решила переучиваться.

С чего начать путь в backend-разработке

Мне кажется, мой путь в разработке был достаточно логичным, и ему вполне можно следовать:

  • Сначала нужно определиться с направлением и найти обучение. При этом быть готовым, что поначалу будет непросто: даже на курсах придется много самостоятельно учиться, пробовать и ошибаться — иначе никак.
  • Затем найти практику в реальном проекте, которая позволит получить опыт. Можно даже попробовать совместить окончание обучения с практикой. Это будет сложнее из-за большой нагрузки, зато поможет быстрее войти в профессию.
  • А уже имея практический опыт, можно начинать искать полноценную работу. Будьте готовы к тому, что на это потребуется время, но в конце концов всё обязательно получится!