0
Обложка: Гайд для «джуна». Что нужно знать начинающему разработчику Java, чтобы получить работу

Гайд для «джуна». Что нужно знать начинающему разработчику Java, чтобы получить работу

Очень часто даже на позицию Junior-разработчика компании предпочитают набирать специалистов, уже имеющих опыт работы. Где приобрести этот опыт, как проявить компетенции на первом рабочем месте и какие скиллы, помимо кодинга, должны присутствовать в арсенале начинающего программиста — объясняет на личном примере старший Java-разработчик компании IT_One Роман Тищенко.

Роман Тищенко
Роман Тищенко
Cтарший Java-разработчик IT_One

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

В дальнейшем у меня были разные проекты на Java: один длился два с половиной года, некоторые другие намного меньше. Оказалось, что на качество твоей работы влияет множество факторов: и твои собственные hard и soft skills, и влияние окружающих людей, с которыми ты работаешь в команде. Рассмотрим эти факторы подробнее.

Почему Java?

В старших классах, готовясь к олимпиаде по программированию Университета Иннополис, я наткнулся на образовательную площадку JavaRush, и она мне очень понравилась. Правда, это не избавило меня от необходимости знакомиться с другими языками вроде Pascal — но это был мощный триггер для углубленного изучения именно Java.

Наверное, не ошибусь, если порекомендую Java как универсальный язык программирования, удобный для изучения и популярный у работодателей. В доказательство приведу данные совсем свежего исследования, проведенного аналитиками платформы All Cups от VK, Фондом «Сколково» и IT_One в рамках чемпионата IT_One Cup. Java. По результатам опроса более чем 1,5 тысяч разработчиков — Java был назван наиболее востребованным языком программирования (так отметили 33% респондентов). В топ-3 также вошли Python (21%) и С++ (16%). 39% опрошенных уверены, что Java всегда будет востребован, а каждый четвертый разработчик отметил, что этот язык развивается активнее остальных.

Код

Долго говорить о коде мы не будем: либо вы любите Java и хотите узнать о нем больше, либо зачем вы здесь? Остановимся на том, как лучше изучать основы программирования и практиковаться. Чаще всего начинающие программисты используют для этих целей интернет-ресурсы: обучающие вроде JavaRush или профессиональные вроде Хабра, где часто публикуют материалы, полезные как раз для новичков.

Но и традиционное обучение по книгам не менее эффективно. Для понимания фундаментальных основ языка (Java Core) можно взять, например, пособия серии Head First — «Паттерны проектирования», «Изучаем Java» и другие. В них материал подается очень доходчиво, приводятся живые примеры и ставятся практические задачи для закрепления темы.

После азов стоит переходить уже к более частным вещам — например, прочитать книгу «Spring в действии» Крейга Уоллса, новое издание которой вышло в 2022 году. Правда, монография посвящена Spring 3, а актуальная версия фреймворка в Java — Spring 5. Поэтому дополнительно вам нужно будет ознакомиться с официальной документацией Spring, где подробно описана его функциональность, приведены гайды для Spring-проектов на русском и на английском языках, а также кейсы.

Но самое эффективное обучение — это, конечно, реальная практика. Для старшеклассников и студентов существуют летние школы программирования и другие виды курсов, после успешного окончания которых вы уже можете претендовать на стажировку.

Базы данных

Умение использовать базы данных для программиста почти так же важно, как и грамотный кодинг. На первом этапе вы просто подключаете базу данных и действуете по шаблону. Однако стоит сразу иметь в виду, что баз данных и их реализаций очень много: колоночные, реляционные, нереляционные и т. д. В одних проектах лучше применять одни, в других — другие. Для выбора БД и СУБД можно руководствоваться их основными характеристиками, выраженными в акрониме ACID (Atomicity, Consistency, Isolation, Durability). Мы смотрим, какие критерии атомарности, соласованности, изолированности, стойкости нам нужны, — и в зависимости от этого подбираем наиболее подходящую базу.

Что касается наиболее популярных СУБД — на моей практике в большинстве проектов встречались либо PostgreSQL, либо mongoDB. Скорее всего, когда вы придете к своему первому работодателю, то тоже столкнетесь с одной из них. Подготовьтесь к этому заранее.

Бренчирование и контроль версий

Когда ты «сам себе разработчик», у тебя одна ветка кода, ты заливаешь ее в master, и не испытываешь никаких проблем. Но когда ты приходишь в команду, то сталкиваешься с десятками веток, тысячами коммитов. Они нужны для того, чтобы разработчики не мешали друг другу и могли правильно позиционировать свой код. Чтобы такая структура не выглядела для вас как хаос, с самого начала лучше узнать у лида или старшего наставника, какая у команды стратегия бренчирования (стратегия построения веток): GitFlow, GitHub Flow, GitLab Flow, Trunk-based Development или что-то еще. Облегчает работу с версиями кода специальный программный инструмент — система контроля версий (Version Control System, VCS). В данный момент в этом сегменте ПО вне конкуренции Git, и вы уже сейчас можете смело начинать его изучать.

В большой корпоративной разработке крайне важно, какую платформу (хостинг) контроля версий использует компания. Среди разработчиков наиболее популярен GitHub, где можно найти огромное количество источников данных. Но в рамках корпоративного проекта, скорее всего, вы будете пользоваться Bitbucket или GitLab. Bitbucket напминает GitHub по функциональности, но имеет и свои преимущества: например, приватные репозитории, которые можно создавать бесплатно в большом количестве. У GitLab так же есть уникальный функционал, связанный с CI/CD-пайплайнами.

Методология CI/CD

CI/CD, или непрерывная интеграция и развертывание — это методология DevOps, которую необходимо знать, если в компании практикуется быстрая разработка и вывод продукта конечному пользователю. Она позволяет автоматизировать процессы тестирования и доставки новых модулей в проект. Начинающему разработчику стоит иметь представление об основных этапах CI/CD: Plan, Code, Build, Test и так далее, а также разбираться в основных инструментах, которые его поддерживают, технологиях контейнеризации (прежде всего Docker) и оркестрации.

Soft Skills: кирпичики для карьерного роста

По моему опыту, выработанные «гибкие навыки» программиста действительно помогают при трудоустройстве и продвижении по карьерной лестнице. Ведь если на одну и ту же должность претендуют два кандидата с примерно одинаковыми компетенциями, работодатель скорее выберет того, кто более общителен, дисциплинирован, лучше умеет брать на себя ответственность, хорошо ладит с другими людьми, самостоятельно может сгенерировать уникальное, не шаблонное решение.

Более того: именно прокаченные soft skills, а не hard skills, на мой взгляд, больше всего отличают «сеньора» от «джуна». Программист высокого уровня может брать на себя большую ответственность, умеет распределять задачи среди участников команды, развивать их навыки, а также расставлять приоритеты для собственного развития. Креативность, умение адаптироваться к новым условиям (гибкость), дисциплинированность, самостоятельность — те умения, которые вам очень понадобятся. Универсального совета по их приобретению нет — некоторые скиллы приходят с опытом, некоторые можно наработать самому. Главное — больше общайтесь и относитесь к своей профессии серьезно.

В добрый путь

Итак, какие основные технологии нужно знать, чтобы претендовать на место в команде Java разработчиков? Помимо кода, необходимо понимание работы с базами данных, Spring и Git, умение красиво «обернуть» свой код (здесь Docker вам в помощь). Знание Kafka — опционально, потому что если вы изучите базы данных и будете понимать, как они работают, то переход на конкретный брокер типа Kafka не составит труда.

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