Что работодатели ожидают от джуниор Java-разработчиков

Привет! Я Анастасия Рагозина, продакт-менеджер на курсе «Java-разработчик». Сейчас рынок труда в IT-сфере переживает не самый простой период, и новичкам на нём особенно тяжело. Поэтому мы с коллегами в последнем квартале 2023 года провели исследование и выяснили, какие навыки и инструменты нужны начинающим Java-разработчикам. А также — к чему стоит готовиться при устройстве на работу.

25dfc5dc411a9df878ff699a011f6a73.png

Зачем и как проводили исследование

Мы хотели понять, как изменился рынок труда за последние пару лет, какие требования сейчас работодатели предъявляют к новичкам, а также соответствует ли наш курс этим требованиям. Нам предстояло выяснить:  

  • какие задачи решает начинающий специалист в первые полгода работы;

  • какие навыки обязательны, а какие — желательны;

  • как проходят собеседования;  

  • какой бэкграунд ценят работодатели.

Чтобы ответить на эти вопросы, мы проанализировали более 1000 вакансий на HeadHunter, провели 18 интервью с разработчиками, тимлидами и лидами направлений, а также опросили выпускников и студентов курса «Java-разработчик», которые нашли работу. Дальше по пунктам разберём основные требования и задачи, которые предстоит решать джуниор-джависту.

Необходимые навыки и инструменты

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

Технологии, которые наиболее часто встречаются в требованиях

Технологии, которые наиболее часто встречаются в требованиях

Это самые популярные технологии, которые можно увидеть в требованиях. Кроме них обязательно уметь работать с Git, терминалом, IDEA. Без этих навыков разработчику не обойтись.

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

»Должно быть комфортно общаться. Скорее возьмём более слабого по хардам, но с которым приятно общаться, чем более хардового, но тяжёлого».

»Must have у джуна это мотивация. То есть собственная. Чтобы он понимал, чего он хочет от работы, зачем он сюда идёт. Это не обязательно должна быть какая-то возвышенная цель, но понимание хочется иметь. Потому что, когда приходит человек такой: »ну, надо работать я пойду работать», — это неинтересно. Когда он говорит, что »я хочу посмотреть на то, как крутые специалисты работают, набраться опыта в высоконагруженных сервисах, не знаю, либо в программировании на конкретном языке, либо в работе с такими-то инструментами», это уже конкретика».

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

Хардскилы

Софтскилы

Необязательные навыки, которые дадут преимущество

Java Core — хороший уровень. Понимание объектно-ориентированного программирования, знание особенностей при работе с ним в Java.

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

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

Spring Boot общие принципы, опыт работы, основные аннотации, способы внедрения зависимостей. 

Базы данных знание синтаксиса SQL, Postgres, умение самостоятельно писать запросы, базовые знания о транзакциях.

JUnit — базовые знания, умение написать простейший юнит-тест.

Принципы SOLID, REST.

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

Развитые навыки коммуникации. Работодатели смотрят на то, как общается человек и комфортно ли им с ним взаимодействовать. Это важно, потому что общаться приходится много. 

Умение логически рассуждать. Одно из основных требований — наличие логики и аналитический склад ума.

Мотивация и желание развиваться в программировании. Важно иметь ответы на вопросы: «Зачем я это делаю? Что мне интересно? Куда я хочу двигаться?»

Проактивность. Большим плюсом будет умение грамотно формулировать проблемы и задавать вопросы. Если этого не делать, легко застрять, и работа встанет. 

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

Знание ORM — Spring Data, Hibernate: как устроен, как следит за сущностями, какие есть плюсы и минусы.

Углублённые знания Spring — AOP, Transactional, Conditional, контейнер сервлетов, отличие Spring и Spring Boot — что это такое, как работает. 

Знание Linux, командной строки — умение пользоваться из консоли и понимать суть.

Знание Docker и основ Kubernetes — создание и запуск контейнеров, умение пробросить переменные.

Kafka — устройство, топики, партиции и опыт работы с ней, отличия от RabbitMQ.

Индексы в базах данных — что это такое и как работает.

Понимание бизнес-процессов в команде — постановка и оценивание задач, ревью, метод канбан и т. д. 

Понимание и опыт работы с микросервисами.

Знание OpenAPI specs, OpenAPI generator.

Наличие своих проектов чтобы посмотреть перед или во время интервью.

Какой бэкграунд считается оптимальным

Не менее важен опыт работы. На него работодатели смотрят в первую очередь. Предпочтение отдадут кандидату с релевантным опытом — такому человеку будет проще влиться в проект.

Если опыта работы нет, важно показать собственные проекты, например, приложив ссылку на свой GitHub. Техническое образование (инженеры, физики), знание какого-то языка программирования, собственные проекты или участие в open source будут плюсом. Таким образом, отсутствие опыта уменьшает шансы соискателя, но не будет приговором.

Чего ожидать на собеседовании и как происходит наём

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

  • Чаще всего HR ищет резюме через hh.ru, реже — через другие каналы, например, Хабр карьера. А ещё некоторые компании проводят внутреннее обучение, после которого берут участников в штат.

  • Работодатель смотрит, как кандидат презентует себя в резюме. Оценивается и оформление резюме: в начале должен быть опыт работы по специальности, затем — всё остальное. 

  • Многие кандидаты пренебрегают сопроводительным письмом. А зря! Ведь в нём можно показать свою заинтересованность в позиции, а также подробнее рассказать, как опыт кандидата перекликается с тем, чем занимается компания.

Если первый этап пройден, то соискателя приглашают на интервью. Обычно собеседование состоит из нескольких частей:

  1. Алгоритмическая секция или решение задачек в формате лайвкодинга.

Этот этап присутствует не везде и может отличаться в разных компаниях. Например, такие гиганты, как Яндекс или Тинькофф, ждут от кандидатов глубокого знания алгоритмов. Они дают соискателям более сложные задачи. Там, где глубокие алгоритмические знания не требуются, кандидата могут попросить решить несложную задачку, например, реализовать алгоритм бинарного поиска. 

  1. Техническое интервью — вопросы по Java, инструментам и технологиям, обсуждение опыта, проектов и технические вопросы по ним.

Все работодатели подчеркнули, что важно глубокое знание языка и понимание его особенностей. Кроме этого, начинающему разработчику необходимо уверенно писать запросы к базам данных, пользоваться Git и IDEA. В остальных навыках требования могут отличаться. Например, крупные компании реже ждут от соискателей глубокого понимания Spring или Hibernate — достаточно уверенного знания основ. В компаниях поменьше от кандидатов, наоборот, требуют более глубоких знаний всех необходимых в вакансии технологий.

  1. Опциональный, но частый этап — интервью с командой или менеджером проекта.

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

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

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

Какие задачи предстоит выполнять на испытательном сроке

Чаще всего испытательный срок длится три месяца. Работать предстоит в команде из 5—10 человек, в которой кроме разработчиков есть тестировщики и аналитики.

Мы спрашивали, есть ли какие-то принципиальные отличия в задачах для начинающего и более опытного разработчика. Большая часть работодателей ответила, что задачи вполне могут быть одинаковыми, но будут отличаться сроки их выполнения, качество и автономность разработчика. Задачку, с которой опытный разработчик даже на новом для себя проекте справится за день, джун может делать 2—3 дня — это нормально. Кроме того, начинающему программисту может понадобиться помощь с тем, чтобы разобраться в проекте. Первое время у джуна будет наставник, к которому можно обратиться за помощью, более опытный разработчик, скорее всего, справится самостоятельно. Примеры задач в первые 3 месяца работы:  

  • написать простой код или протестировать, как он работает;  

  • дополнить полями какую-то сущность;

  • исправить несложные баги;  

  • выполнять задачи по поручению более опытного специалиста и т. д.

Заключение

По результатам исследования мы выяснили:

  1. Требования к начинающим разработчикам выросли. Если раньше было достаточно знаний языка, основ Spring и баз данных, то сейчас работодатели ждут от кандидатов большего числа навыков.

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

  1. Для себя мы подтвердили соответствие программы курса «Java-разработчик» рынку с точки зрения хардовых навыков. Поняли, что нужно делать акцент и учить студентов софтам; создавать среду, где они смогут делать больше самостоятельных проектов для портфолио, и обновить версии некоторых технологий, о которых рассказываем. 

© Habrahabr.ru