Про Херсон він херсонця 🔥

Хто такий 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 Dirty on Clean Architecture: A hands-on guide to creating clean web applications with code examples in Java
  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 — The Clean Coder: A Code of Conduct for Professional Programmers
  5. Robert Cecil Martin — Clean Architecture: A Craftsman’s Guide to Software Structure and Design (Robert C. Martin Series) 1st Edition
  6. Steve Freeman — Growing Object-Oriented Software, Guided by Tests (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
По темi
Хто такий Unity Developer: основні задачі, обов’язки та зона відповідальності. Огляд професії від Team Lead Unity у Pingle Game Studio
Професії в ІТ. Хто такий інженер-електронщик що має знати та де може навчатися
Професії в ІТ. Хто такий інженер-електронщик, що має знати та де може навчатися
По темi
Професії в ІТ. Хто такий інженер-електронщик, що має знати та де може навчатися
Хто такий DevOps Engineer. Огляд професії від Олега Миколайченка
Хто такий DevOps Engineer. Огляд професії від Олега Миколайченка
По темi
Хто такий DevOps Engineer. Огляд професії від Олега Миколайченка
Читайте головні IT-новини країни в нашому Telegram
Читайте головні IT-новини країни в нашому Telegram
По темi
Читайте головні IT-новини країни в нашому Telegram



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

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

Ми запускаємо розсилку про українське IT-ком’юніті. Залиште email, аби розуміти більше. Прем’єра — скоро!
Дякую! На вказану адресу надіслано листа для підтвердження підписки.
Читайте також
12 онлайн-курсів із Java для новачків і профі у 2022 році
12 онлайн-курсів із Java для новачків і профі у 2022 році
12 онлайн-курсів із Java для новачків і профі у 2022 році
Java, як і раніше, входить до списку найпопулярніших мов програмування. Разом із Digital Defund склали список курсів, які підійдуть як новачкам, так і людям із досвідом програмування, і допоможуть опанувати цю потрібну мову.
Запускай код прямо в браузері: найкращі онлайн-компілятори для C++, PHP, Python, Java, C#, Go і не тільки
Запускай код прямо в браузері: найкращі онлайн-компілятори для C++, PHP, Python, Java, C#, Go і не тільки
Запускай код прямо в браузері: найкращі онлайн-компілятори для C++, PHP, Python, Java, C#, Go і не тільки
Не завжди є доступ до улюбленої IDE, або час на її запуск. Але коли потрібно швидко перевірити якийсь простий функціонал або втілити нову ідею, стане у пригоді онлайн-компілятор.
Як я навчалась у EPAM University. Анонімна розповідь 18-річної джавістки
Як я навчалась у EPAM University. Анонімна розповідь 18-річної джавістки
Як я навчалась у EPAM University. Анонімна розповідь 18-річної джавістки
Увійти в IT — завдання не з простих, особливо коли ти гуманітарій, тобі 18, і ти вчишся в університеті. Проте бажання стати кращою версією себе, бути в тренді та забезпечити собі гідний рівень життя перемагає будь-які перешкоди. І наша героїня — яскравий цьому приклад. За бажанням співрозмовниці ми не називатимемо її імені. dev.ua публікує розповідь 18-річної студентки EPAM University про те, як це — увійти в IT власними силами, навіть коли ти з маленького провінційного містечка.   Наша героїня розповіла dev.ua, як потрапити в EPAM University, чи важко там вчитися та які перспективи чекають на випускників.
Одвічне питання: чим Java відрізняється від JavaScript. Детальний гайд
Одвічне питання: чим Java відрізняється від JavaScript. Детальний гайд
Одвічне питання: чим Java відрізняється від JavaScript. Детальний гайд
Для когось відповідь на питання про різницю Java і JavaScript є очевидною — тут починаються жарти про подібність між килимом й автомобілем (Java схожа на JavaScript так само, як «car» на «carpet»). Попри це, деякі люди ще можуть мати помилкове уявлення, вважаючи, що це дві назви тої самої мови, або що технології тісно пов’язані. Спробуємо трохи прояснити ситуацію.

Хочете повідомити важливу новину? Пишіть у Telegram-бот

Головні події та корисні посилання в нашому Telegram-каналі

Обговорення
Коментарів поки немає.