Кто такой Java Developer: обзор от разработчика с 15-летним опытом
О профессии рассказывает Владимир Шевченко, SPD-Ukraine, Team Lead & Engineering Manager, PitchBook.
О профессии рассказывает Владимир Шевченко, SPD-Ukraine, Team Lead & Engineering Manager, PitchBook.
Владимир Шевченко имеет 12 лет опыта в сфере ИТ, 11 из которых, основным языком программирования является Java. Свой путь он начинал с PHP и Javascript. После года экспериментов остановился на Java. Первой долгосрочной работой была позиция Java full-stack разработчика.
«Скажу заранее, что опыт работы с front-end дал много плюсов в понимании, как все устроено. Но здесь есть минусы, при работе на позиции full-stack разработчика нужно держать в голове большой объем технологий, таким образом не всегда хватает времени углубить свои знания в каком-то конкретном направлении», — рассказывает он. На следующей работе уже сосредоточился на Java и постепенно усугублял свои навыки в этом направлении.
Java — это один из самых популярных языков программирования, количество пользователей которого составляет около 9 млн.
Впервые язык был представлен в 1995 году Sun Microsystems. Цель ее создания — получить многопрофильный язык и гибкий код, мало зависевший от платформ (Windows, Linux и т. п.), и работал на любом «железе». Это позволяет создавать программное обеспечение для бытовой техники, мобильных средств связи, устройств дистанционного управления и т. д.
В 2022 году Java — это универсальный язык для написания сайтов, разработки Android-программ и создания сверхнадежных и мощных сервисов. А Java Developer, соответственно, это специалист, который владеет языком и может написать на нем IT-продукт.
Работа почти каждого программиста, независимо от языка проектирования, состоит из следующих этапов:
Итак, Java Developer, кроме кодинга, занимается внедрением, тестированием, адаптацией программ, модификацией кода, а также проектированием архитектуры будущих сервисов и баз данных, да еще многим, что иногда напрямую к Java не относится :)
Очевидно, но базовым знанием для Java разработчика является синтаксис языка, его особенности, среда разработки (где собственно пишется код). Обычно это IntelliJ IDEA, Eclipse и NetBeans, широко используемые для создания серверных приложений.
И, наконец, любое программирование не будет полноценным без знания фреймворков. Так же, как автомеханик имеет большой набор инструментов для того, чтобы делать свою работу более качественно и быстро, так же, и Java-разработчик имеет в своем арсенале множество инструментов, которые помогают ему выполнять свою работу гораздо эффективнее. Одним из таких инструментов является Spring Framework.
Конечно, уровень знаний и навыков зависит от уровня специалиста.
Хотя на первых этапах от Junior-разработчика не требуется углубленного понимания инструментов, такого не скажешь о позиции медла, поэтому сейчас остановимся на технологиях подробнее:
Java-разработчик, претендующий на уровень Middle, должен обладать такими технологиями.
SQL — это язык программирования структурированных запросов для конкретного домена, используемый для хранения, обработки и получения данных в СУБД (Реляционная система управления базами данных). Она в основном используется для управления структурированными данными, когда мы имеем взаимосвязь между разными сущностями и переменными данными.
NoSQL (Not Only SQL) — это база данных, которая дает вам возможность управлять данными, находящимися в нереляционной форме, то есть неструктурированной в табличном виде. NoSQL все больше набирает популярность, поскольку используется в приложениях больших данных и в реальном времени. Их структуры данных полностью отличаются от структур реляционных баз данных.
Extensible Markup Language — расширяющийся язык разметки, с помощью которого можно структурировать данные для удобства их дальнейшей обработки. Очень часто XML можно встретить как описание конфигураций.
Еще одна технология о базах данных.
JDBC — это короткая общепринятая форма для подключения к базе данных Java. Если говорить просто, это стандарт, позволяющий любой Java-программе работать с любой базой данных одинаковыми методами.
Hibernate — это фреймворк, отображающий объектно-ориентированную модель данных в виде традиционной реляционной базы.
Java Enterprise Edition — это платформа для создания корпоративных решений с помощью языка Java. Чаще всего на ней разрабатывают веб-приложения и веб-сервисы, но встречаются и легко масштабируемые приложения.
Spring Framework — это популярный фреймворк с открытым кодом и контейнеры с поддержкой инверсии управления для платформы Java.
Основные особенности Spring Framework могут быть использованы любым приложением Java, но есть расширения для создания веб-приложений на платформе Java EE.
Другие языки дают разработчику возможность проводить параллели между ними и выбрать оптимальную под конкретные нужды. Я бы рекомендовал начать учить еще язык Kotlin. В качестве аргументации для изучения этого языка авторы Kotlin говорят о том, что Java накопила целый багаж неудачных решений, которые уже никак не изменить, именно поэтому нужен язык с более приятным синтаксисом для разработчиков.
Unit-тесты — очень важный пункт при разработке, поскольку они дают возможность повысить качество кода и застраховаться на случай будущих рефакторингов.
Хорошим подходом к написанию кода является TDD (test-driven development). Фактически это написание кода через тесты, и таким образом можно создать качественный и протестированный код. Кроме Unit-тестов нужно не забывать и об Integration-тестах.
Git — самая популярная система контроля версий, позволяющая вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. Очень удобно для командной работы.
Большинство новой информации о технологиях, курсах, учебных и справочных материалах, не говоря о документации к обновлениям, появляются прежде всего на английском. Поэтому уровень владения языком должен быть не ниже Upper-Intermediate. Также, нужно не забывать, что помимо документации, в работе разработчика есть много коммуникаций с заказчиком, и здесь уже нужно знание разговорного английского. Поэтому рекомендую сосредоточиться на этих двух моментах и подтянуть свои скилы.
Знание этих методов позволяет организовывать максимально эффективный рабочий процесс с минимальными рисками, учитывая особенности команды и внешние факторы. Главный принцип состоит в эффективном распределении времени, зон ответственности и контроля.
Для этого уровня важен нетривиальный опыт работы с перечисленными технологиями. То есть с этого момента вопрос не только в широте знаний, но и в их глубине.
Soft Skills — универсальные непрофессиональные качества, которые помогают нам взаимодействовать между собой в команде вне зависимости от сферы деятельности. К ним относятся коммуникативные навыки, критическое мышление, лидерские качества, эмоциональный интеллект и позитивное мышление, умение работать в команде и самоорганизация.
Что вы точно должны знать: у каждой компании есть свои требования, исходящие из специфики и направления работы. К примеру, IT компания, создающая ПО в сфере License Statistics, требует от специалиста знаний Maven (инструмент для автоматизации определенных процессов в проекте). А в другой компании, занимающейся разработкой для Android, требуется другой инструмент.
Широта и глубина требуемых знаний коррелируются также и с вознаграждением, которое вам предлагают.
Базовые знания и английский — это musthave для первой работы разработчика, остальным можно научиться походу, главное желание. Уровень Junior говорит о том, что у вас уже есть практический опыт в коммерческом проекте в своей копилке. Требования могут варьироваться в зависимости от проекта и направления, но основными, по моему опыту, являются следующие:
Требования:
Будет плюсом:
В вакансиях для медов, чаще всего определяются следующие требования:
Будет плюсом:
Для уровня Senior, на основе потребностей рынка и собственного опыта, здесь можно выделить следующие компетенции:
Обучение Java-разработчику — это длительный процесс, который может занять 1-1,5 года, прежде чем вы сможете написать рабочий и чистый код для простейших программ. В целом же обучение ИТ-специалиста не заканчивается никогда. Будьте готовы к этому.
Процесс овладения профессией можно разделить на этапы:
На этом этапе изучаются синтаксис Java, типы данных и базовые функции. Здесь же закладываются понятия об объектно-ориентировочном программировании, пакетах и классах, структуре данных и работе с файловой частью.
Здесь рассматриваются уже более сложные понятия и технологии. В частности, речь идет о Java Virtual Machine и фреймворках, управлении памятью проекта и данными, принципах поточности и многопоточности.
Полезно знать такие инструменты как Maven (его мы уже упоминали выше), Ant и Gradle. По сути все три созданы для одного (по небольшим отличиям) — пилотирование определенных процессов внутри проекта, чтобы разработчику не приходилось прописывать элементарные операции собственноручно.
Мы уже говорили о фреймворке Spring. Но даже такой мощный инструмент порой не способен предоставить весь функционал, который нужен вам для конкретной программы. Поэтому не помешает поработать и с Spring Boot, Play Framework и Spark.
Это обширный раздел, который можно условно разделить на два.
Первый раздел — ORM (Object-Relational Mapping). ORM — это метод программирования, когда реляционная база данных согласуется с объектно-ориентировочной сущностью языка Java. Иногда такую систему называют объектно-реляционной — и не нашей, и не вашей. Это компромисс между двумя подходами проектирования программ с использованием лучших сторон обеих.
Второй раздел — JDBC. Это интерфейс прикладного программирования, используемый в Java для взаимодействия с базами данных.
Каждый программист должен уметь тестировать собственный код, чтобы не кошмарить тестировщиков любой малейшей ошибкой. Для этого пишутся простые Unit тесты и интеграционные тесты. Первые — призваны тестировать ваш код по модулям, вторые — протестируют все части кода во взаимодействии между собой.
Java — это надежный и хорошо развитый язык с огромным количеством поклонников, впечатляющим репозиторием и комьюнити, где всегда можно найти ответы на вопросы.
Чтобы начать кодировать, вам понадобится около года обучения. Это средняя оценка, которая, конечно, будет зависеть от вашего бекграунда, способностей, выбранного пути овладения профессией.
Каждый уровень компетенции Java-разработчика отличается не просто теоретическими и прикладными знаниями, но и конкретными годами практики. Именно поэтому нет смысла читать все технологии сразу и хвататься за голову от тон информации. Начните с самого легкого, YouTube и онлайн курсы вам в помощь! А продвинутые технологии войдут в ваш арсенал знаний и умений только впоследствии и органически.
Мы желаем вам высокой мотивации, твердой веры в себя и интересных проектов!