Хто такий 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 та онлайн курси вам в допомогу! А просунуті технології увійдуть у ваш арсенал знань та вмінь лише згодом і органічно.
Ми бажаємо вам високої мотивації, непохитної віри в себе та цікавих проєктів!