Тут є світло - коворкінги Києва 🔥

Кто такой Java Developer: обзор от разработчика с 15-летним опытом

О профессии рассказывает Владимир Шевченко, SPD-Ukraine, Team Lead & Engineering Manager, PitchBook.

Оставить комментарий
Кто такой Java Developer: обзор от разработчика с 15-летним опытом

О профессии рассказывает Владимир Шевченко, SPD-Ukraine, Team Lead & Engineering Manager, PitchBook.

Содержание

Владимир Шевченко имеет 12 лет опыта в сфере ИТ, 11 из которых, основным языком программирования является Java. Свой путь он начинал с PHP и Javascript. После года экспериментов остановился на Java. Первой долгосрочной работой была позиция Java full-stack разработчика.

«Скажу заранее, что опыт работы с front-end дал много плюсов в понимании, как все устроено. Но здесь есть минусы, при работе на позиции full-stack разработчика нужно держать в голове большой объем технологий, таким образом не всегда хватает времени углубить свои знания в каком-то конкретном направлении», — рассказывает он. На следующей работе уже сосредоточился на Java и постепенно усугублял свои навыки в этом направлении.

Что такое Java

Java — это один из самых популярных языков программирования, количество пользователей которого составляет около 9 млн.

Впервые язык был представлен в 1995 году Sun Microsystems. Цель ее создания — получить многопрофильный язык и гибкий код, мало зависевший от платформ (Windows, Linux и т. п.), и работал на любом «железе». Это позволяет создавать программное обеспечение для бытовой техники, мобильных средств связи, устройств дистанционного управления и т. д.

В 2022 году Java — это универсальный язык для написания сайтов, разработки Android-программ и создания сверхнадежных и мощных сервисов. А Java Developer, соответственно, это специалист, который владеет языком и может написать на нем IT-продукт.

Обязанности и ответственность

Работа почти каждого программиста, независимо от языка проектирования, состоит из следующих этапов:

  • общение с заказчиком; выявление технических требований к будущему продукту;
  • проектирование, разработка архитектуры, программных модулей;
  • непосредственное написание кода и покрытие его тестами для надежности;
  • тестирование — проверка на наличие ошибок;
  • исправление ошибок, если они замечены при работе с продуктом;
  • размещение на платформах и последующая техническая поддержка.

Итак, Java Developer, кроме кодинга, занимается внедрением, тестированием, адаптацией программ, модификацией кода, а также проектированием архитектуры будущих сервисов и баз данных, да еще многим, что иногда напрямую к Java не относится :)

Компетенции Java-программиста: junior, middle, senior

Очевидно, но базовым знанием для Java разработчика является синтаксис языка, его особенности, среда разработки (где собственно пишется код). Обычно это IntelliJ IDEA, Eclipse и NetBeans, широко используемые для создания серверных приложений.

И, наконец, любое программирование не будет полноценным без знания фреймворков. Так же, как автомеханик имеет большой набор инструментов для того, чтобы делать свою работу более качественно и быстро, так же, и Java-разработчик имеет в своем арсенале множество инструментов, которые помогают ему выполнять свою работу гораздо эффективнее. Одним из таких инструментов является Spring Framework.

Конечно, уровень знаний и навыков зависит от уровня специалиста.

Junior Java Developer

  • язык Java (синтаксис, многопоточность, стандартная библиотека);
  • понимание алгоритмов и структур данных;
  • принципы объектноориентированного программирования (ООП);
  • система управления базами данных и инструменты по работе с ними, написание SQL запросов
  • навыки работы с системой контроля версий Git
  • умение писать Unit-тесты
  • использование Spring Framework на базовом уровне
  • понимание протоколов связи (HTTP, TCP/IP и т. д.)

Хотя на первых этапах от Junior-разработчика не требуется углубленного понимания инструментов, такого не скажешь о позиции медла, поэтому сейчас остановимся на технологиях подробнее:

Middle Java Developer

Java-разработчик, претендующий на уровень Middle, должен обладать такими технологиями.

SQL и NoSQL

SQL — это язык программирования структурированных запросов для конкретного домена, используемый для хранения, обработки и получения данных в СУБД (Реляционная система управления базами данных). Она в основном используется для управления структурированными данными, когда мы имеем взаимосвязь между разными сущностями и переменными данными.

NoSQL (Not Only SQL) — это база данных, которая дает вам возможность управлять данными, находящимися в нереляционной форме, то есть неструктурированной в табличном виде. NoSQL все больше набирает популярность, поскольку используется в приложениях больших данных и в реальном времени. Их структуры данных полностью отличаются от структур реляционных баз данных.

XML

Extensible Markup Language — расширяющийся язык разметки, с помощью которого можно структурировать данные для удобства их дальнейшей обработки. Очень часто XML можно встретить как описание конфигураций.

JDBC

Еще одна технология о базах данных.

JDBC — это короткая общепринятая форма для подключения к базе данных Java. Если говорить просто, это стандарт, позволяющий любой Java-программе работать с любой базой данных одинаковыми методами.

Hibernate

Hibernate — это фреймворк, отображающий объектно-ориентированную модель данных в виде традиционной реляционной базы.

Java EE

Java Enterprise Edition — это платформа для создания корпоративных решений с помощью языка Java. Чаще всего на ней разрабатывают веб-приложения и веб-сервисы, но встречаются и легко масштабируемые приложения.

Spring Framework

Spring Framework — это популярный фреймворк с открытым кодом и контейнеры с поддержкой инверсии управления для платформы Java.

Основные особенности Spring Framework могут быть использованы любым приложением Java, но есть расширения для создания веб-приложений на платформе Java EE.

Знание других языков программирования, кроме Java

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

Unit тестирование

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

Хорошим подходом к написанию кода является TDD (test-driven development). Фактически это написание кода через тесты, и таким образом можно создать качественный и протестированный код. Кроме Unit-тестов нужно не забывать и об Integration-тестах.

Git

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

Английский язык

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

Методологии Agile Scrum + Kanban

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

Senior Java Developer

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

Более того, кроме hard skills — обязательных навыков технического характера, существуют и soft skills, так называемые «мягкие навыки».

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

Что вы точно должны знать: у каждой компании есть свои требования, исходящие из специфики и направления работы. К примеру, IT компания, создающая ПО в сфере License Statistics, требует от специалиста знаний Maven (инструмент для автоматизации определенных процессов в проекте). А в другой компании, занимающейся разработкой для Android, требуется другой инструмент.

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

Примеры требований в вакансиях

Базовые знания и английский — это musthave для первой работы разработчика, остальным можно научиться походу, главное желание. Уровень Junior говорит о том, что у вас уже есть практический опыт в коммерческом проекте в своей копилке. Требования могут варьироваться в зависимости от проекта и направления, но основными, по моему опыту, являются следующие:

Уровень Junior

Требования:

  • 1-2 года практического опыта работы с Java 11;
  • Знание Spring Framework (Spring Core/Boot/Security/Data/AOP);
  • Опыт работы с базой данных PostgreSQL;
  • Английский — Intermediate+

Будет плюсом:

  • опыт работы с облачной платформой AWS (S3, SNS, SQS и т. п.);
  • понимание архитектуры микросервиса;
  • Опыт работы с методологией Agile/Scrum;

Уровень Middle

В вакансиях для медов, чаще всего определяются следующие требования:

  • 1,5-2 года опыта работы с Java
  • 1,5-2 года опыта работы с Spring (Boot, Data, REST)
  • как минимум 1 год работы с SQL базами данных
  • опыт создания REST API, написание запросов в базы данных
  • English — intermediate+

Будет плюсом:

  • Docker и Docker Compose
  • AWS (S3, Cognito, RDS, Beanstalk)

Уровень Senior

Для уровня Senior, на основе потребностей рынка и собственного опыта, здесь можно выделить следующие компетенции:

  • 5-8 лет опыта работы Java Engineer;
  • Опыт работы с UNIX/Linux и языками сценариев;
  • опыт работы с J2EE и смежными технологиями;
  • солидные навыки и опыт разработки приложений на основе веб-сервиса Java;
  • технологии (REST, SOAP);
  • Опыт работы с MySQL, PostgreSQL, а также технологиями отображения OR, такими как JPA;
  • Базовое понимание фронтенда;
  • знание концепций баз данных;
  • Понимание принципов разработки ПО;
  • опыт работы с контейнерами Java EE и серверами приложений (JBoss, Tomcat и т. п.);
  • Опыт работы с Java Messaging (JMS);
  • Опыт разработки высокодоступных масштабируемых служб с помощью технологий Java;
  • Опыт работы с Azure или AWS
  • знание облачных сервисов — плюс.

Путь становления Java Developer

Обучение Java-разработчику — это длительный процесс, который может занять 1-1,5 года, прежде чем вы сможете написать рабочий и чистый код для простейших программ. В целом же обучение ИТ-специалиста не заканчивается никогда. Будьте готовы к этому.

Процесс овладения профессией можно разделить на этапы:

1. Основы

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

2. База

Здесь рассматриваются уже более сложные понятия и технологии. В частности, речь идет о Java Virtual Machine и фреймворках, управлении памятью проекта и данными, принципах поточности и многопоточности.

3. Инструменты и библиотеки

Полезно знать такие инструменты как Maven (его мы уже упоминали выше), Ant и Gradle. По сути все три созданы для одного (по небольшим отличиям) — пилотирование определенных процессов внутри проекта, чтобы разработчику не приходилось прописывать элементарные операции собственноручно.

4. Фреймворки

Мы уже говорили о фреймворке Spring. Но даже такой мощный инструмент порой не способен предоставить весь функционал, который нужен вам для конкретной программы. Поэтому не помешает поработать и с Spring Boot, Play Framework и Spark.

5. Базы данных

Это обширный раздел, который можно условно разделить на два.

Первый раздел — ORM (Object-Relational Mapping). ORM — это метод программирования, когда реляционная база данных согласуется с объектно-ориентировочной сущностью языка Java. Иногда такую систему называют объектно-реляционной — и не нашей, и не вашей. Это компромисс между двумя подходами проектирования программ с использованием лучших сторон обеих.

Второй раздел — JDBC. Это интерфейс прикладного программирования, используемый в Java для взаимодействия с базами данных.

6. Тестирование

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

Книги по Java

  1. Kathy Sierra, Bert Bates — Head First Java (2nd Edition)
  2. Tom Hombergs — Get Your Hands Руководство по Clean Architecture.
  3. Magnus Larsson — Hands-On Microservices with Spring Boot and Spring Cloud: Build and Deploy Java microservices using Spring Cloud, Istio, and Kubernetes
  4. Robert Cecil Martin — Clean Coder: A Code of Conduct for Professional Programmers
  5. Robert Cecil Martin — Clean Architecture: Craftsman’s Guide to Software Structure and Design (Роберт C. Martin Series)
  6. Steve Freeman — Расширение объекта-ориентированного программного обеспечения, производимого тестом (Addison-Wesley Signature Series (Beck)) 1st Edition, Kindle Edition
  7. Herbert Schildt — Java: The Complete Reference. 12th edition / Horstmann Cay S. Core Java, Volume I: Fundamentals 12th edition
  8. Lynn Beighley — Head First SQL
  9. Martin Fowler — Refactoring: Improvement the Design of Existing Code.
  10. Gerard Meszaros — xUnit Test Patterns: Refactoring Test Code

Вместо вывода

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

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

Каждый уровень компетенции Java-разработчика отличается не просто теоретическими и прикладными знаниями, но и конкретными годами практики. Именно поэтому нет смысла читать все технологии сразу и хвататься за голову от тон информации. Начните с самого легкого, YouTube и онлайн курсы вам в помощь! А продвинутые технологии войдут в ваш арсенал знаний и умений только впоследствии и органически.

Мы желаем вам высокой мотивации, твердой веры в себя и интересных проектов!

Кто такой Unity Developer: основные задачи, обязанности и зона ответственности. Обзор профессии от Team Lead Unity в Pingle Game Studio
Кто такой Unity Developer: основные задачи, обязанности и ответственность. Обзор профессии от Team Lead Unity в Pingle Game Studio
По теме
Кто такой Unity Developer: основные задачи, обязанности и ответственность. Обзор профессии от Team Lead Unity в Pingle Game Studio
Профессии в ИТ. Кто такой инженер-электронщик, который должен знать и где может учиться
Профессии в ИТ. Кто такой инженер-электронщик, который должен знать и где может учиться
По теме
Профессии в ИТ. Кто такой инженер-электронщик, который должен знать и где может учиться
Кто такой DevOps Engineer? Обзор профессии от Олега Миколайченко
Кто такой DevOps Engineer? Обзор профессии от Олега Миколайченко
По теме
Кто такой DevOps Engineer? Обзор профессии от Олега Миколайченко
Читайте главные IT-новости страны в нашем Telegram
Читайте главные IT-новости страны в нашем Telegram
По теме
Читайте главные IT-новости страны в нашем Telegram



Електробайки по-українськи між Києвом та Лос-Анджелесом в «СКШ»

Дивіться, чим живе Delfast під час війни в Україні

Мы запускаем рассылку об украинском IT-комьюнити. Оставьте email, чтобы понимать больше. Премьера — скоро!
Спасибо! На указанный адрес отправлено письмо для подтверждения подписки.
Читайте также
12 онлайн-курсов по Java для новичков и профи в 2022 году
12 онлайн-курсов по Java для новичков и профи в 2022 году
12 онлайн-курсов по Java для новичков и профи в 2022 году
Java по-прежнему входит в список самых популярных языков программирования. Вместе с Digital Defund составили список курсов, которые подойдут как новичкам, так и людям с опытом программирования, и помогут освоить этот востребованный язык.
Профессии в IT. Кто такие тимлиды, что они должны знать и как их оценивать?
Профессии в IT. Кто такие тимлиды, что они должны знать и как их оценивать?
Профессии в IT. Кто такие тимлиды, что они должны знать и как их оценивать?
Большинство молодых айтишников с первых дней работы мечтают вырасти до сеньора и стать тимлидом, менторить джунов и помогать команде решать сложные задачи. Однако какими именно компетенциями должен обладать тимлид, что уметь и где учиться — вопрос для многих открыт. Чтобы прояснить эту ситуацию, мы пообщались с Solutions Architect в компании DataArt Дмитрием Куперманом, уже много лет занимающимся асесментом тимлидов в компании: проводит интервью и оценивает подготовку и опыт коллег и кандидатов.
«Менеджмент не заканчивается на словах Agile или Kanban"». Кто такой Project Manager и как им стать
«Менеджмент не заканчивается на словах Agile или Kanban"». Кто такой Project Manager и как им стать
«Менеджмент не заканчивается на словах Agile или Kanban"». Кто такой Project Manager и как им стать
Желающих войти в IT с каждым днем становится больше. Однако большинство потенциальных айтишников оказываются перед сложным выбором: кем стать, чтобы работать в сфере информационных технологий. dev.ua начинает новую рубрику, в которой будет рассказывать, какие специальности в украинском IT есть, что делают конкретные специалисты и где учиться, чтобы стать айтишником. Сегодня о профессии Project Manager рассказывает опытный PM в EPAM Яна Стильчук,
Запускай код прямо в браузере: лучшие онлайн-компиляторы для C++, PHP, Python, Java, C#, Go и не только
Запускай код прямо в браузере: лучшие онлайн-компиляторы для C++, PHP, Python, Java, C#, Go и не только
Запускай код прямо в браузере: лучшие онлайн-компиляторы для C++, PHP, Python, Java, C#, Go и не только
Не всегда есть доступ к любимой IDE или время на ее запуск. Но когда нужно быстро проверить какой-то простой функционал или воплотить новую идею, пригодится онлайн-компилятор.

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментариев пока нет.