JavaRush /Java блог /Random UA /Що потрібно знати, щоб стати Java Junior, і що з цим роби...

Що потрібно знати, щоб стати Java Junior, і що з цим робити?

Стаття з групи Random UA
Вимоги до потенційних Java-розробників постійно змінюються і за ними складно встежити. Чи достатньо знати лише Java Core, щоб стати Trainee? Наскільки добре потрібно розбиратися у Spring та Hibernate для отримання посади Java Junior? Чи варто вивчати бази даних, чи розбиратися з алгоритмами сортування та пошуку? І оскільки студентів JavaRush дуже часто хвилюють ці питання, ми вирішабо поставити їх нашим випускникам, які вже працюють на Java Junior або стажуються в компаніях на посаді Java Trainee. Зауважимо, 13% опитаних пощастило з першої спроби здобути посаду Java Middle минаючи стадію Junior. Що потрібно знати, щоб стати Java Junior, і що з цим робити?  - 1Респонденти поділабося інформацією про те, які технології їм знадобабося для співбесіди, а які вони використовували в перший рік першої роботи, пов'язаної з Java.

Java Core потрібна всім

Термін Java Core досить широкий. Під цим ім'ям розуміють і елементарний синтаксис мови, таку складну тему, як багатопоточність. Власне, курс JavaRush головним чином присвячений саме Core. Що потрібно знати, щоб стати Java Junior, і що з цим робити?  - 2Java Syntax. Основи мови. Всі ці типи даних, оператори, цикли та розгалуження. Звичайно, 92.4% тих, хто отримав роботу, оцінабо своє знання синтаксису як "хороше або відмінне". Тим не менш, 7.6% респондентів примудрабося стати Java Trainee із середнім знанням синтаксису. Однак це потрібно оцінювати скоріше як везіння (або хвастощі респондентів:)). Зрозуміло, що синтаксис мови повинні знати всі, хто претендує на роботу програміста. Об'єктно-орієнтоване програмування (ООП).Все Java складається з об'єктів, тому ООП можна вважати однією з найголовніших тем мови. Об'єктно-орієнтований підхід може спочатку здатися незвичним, особливо якщо ви раніше вивчали тільки процедурні мови, але перевчитися на об'єкти не важко. Найбільші складнощі у новачків викликають рівні абстракції та їх самостійний розподіл — програміст-початківець повинен вміти грамотно скласти ієрархію об'єктів, зрозуміти, за що відповідатиме інтерфейс, а що можна винести в абстрактний клас, скласти сходи успадкування і так далі. Як завжди, цю складність вирішує практика. Більшість респондентів, а це 80.3% тих, хто отримав першу роботу, добре знали принципи ОВП і використовували їх постійно. У перший рік роботи Java Junior та стажистами 78,8% опитаних користувалися принципами ООП дуже часто, 12, 1% - іноді. 7,6% слухачів використовували їх рідко - ці хлопці були зайняті в основному модульним тестуванням та різними невеликими завданнями. Тобто, зрозуміло, вони теж користувалися класами чи об'єктами (без цього Java ніяк), але рідко становабо ієрархії класів. Collections Framework.Колекція - це сукупність окремих об'єктів, представлених як єдине ціле. У Java для представлення колекцій є дуже тямущий Collections Framework. Колекції засновані на популярних структурах даних - списках, звичайних та зв'язкових, множинах, хеш-таблицях. Так що при вивченні колекцій було б добре познайомитися зі структурами даних. Основні труднощі у вивченні колекцій — зрозуміти та запам'ятати принцип їхньої роботи. Якщо розумієш, яким чином відбувається звернення до елемента, вилучення з колекції і додавання до неї, то починаєш розуміти, де застосовувати ту чи іншу структуру. Це приходить із практикою. Але, на щастя, з величезної кількості колекцій активно використовуються у реальній роботі далеко не всі. 80,3% респондентів відзначабо, що добре чи навіть добре знали колекції до того,Що потрібно знати, щоб стати Java Junior, і що з цим робити?  - 3Обробка винятків. Виняток — це ситуація, яка виходить з ряду геть, яка може виникнути при виконанні вашої програми. Усі класи винятків є підтипами класу java.lang.Exception. Механізм обробки винятків значно спрощує процеси пошуку помилок у програмах. Зазвичай студенти досить рано починають використовувати винятки, скажімо, JavaRush На JavaRush ця тема піднімається ще в першому квесті Java Syntax. Практично всі випускники JavaRush, які отримали першу роботу, вміли поводитися з винятками, і, природно, використовували їх під час роботи. Потоки вводу/виводу (I/O Streams Java).Найперші програми, написані на Java, зазвичай містять щось на зразок System.out.println(“Hello world”). Найчастіше новачки розуміють, що метод println виводить рядок у консоль, але гадки не мають, навіщо там System і out, і як вони працюють. Трохи пізніше з'ясовується, що Java виконує операції введення та виведення за допомогою потоків (streams), безперервного потоку даних. Потоки — не найпростіша тема для розуміння, і вона не так часто використовується в роботі новачків: тільки 22,7% людей, які отримали першу роботу Java Junior/Trainee, сказали, що вони часто використовують потоки введення-виведення, 31,8% - Іноді, 25,8% - рідко. Тож трохи менше 20% взагалі не використовували їх протягом першого року роботи в ролі Java-розробника. Під час навчання 18.2% не відчували особливих труднощів із потоками і знали їх добре, 36. Багатопоточність (Java Multithreading/Concurrency).Мабуть, саме ця тема викликає найбільше нерозуміння у розробників-початківців. Незважаючи на те, що багатопоточність у Java реалізована дуже добре, в ній складно розібратися, і проблеми можуть виникнути навіть при написанні найпростіших програм (наприклад, багатопотокового Hello, world). Багато роботодавців це розуміють і не вимагають глибокого розуміння багатопоточності від початківців, розраховуючи, що воно прийде з досвідом. Тільки 12% опитаних відзначабо, що вони знали тему на хорошому рівні до отримання першого оффера, тоді як майже 32% респондентів визнали, що взагалі нічого не розуміли в цій темі. Більшість, 56,2%, заявабо про те, що «мали деяке уявлення» про багатопоточність. Так що якщо труднощі роботи з thread'ами вам зараз здаються непереборними, ці цифри можуть вас обнадіяти. Проте, якщо ви хочете отримати конкурентну перевагу на співбесіді, ця тема може стати вашим ковзаном. На реальних проектах новачків також досить рідко припускають до роботи з потоками. Так, 15.1% програмістів-початківців взагалі не стикалися з Java Multithreading у своїй роботі, а 39.4% стикалися, але рідко. Часто першого року роботи довелося працювати з багатопоточністю лише 9.1% респондентів. Лямбда-вирази. Лямбда-вирази та натяки на функціональне програмування з'явабося в Java 8, але новачки не так часто використовують цей зручний інструмент. Лямбда-вираз – це функція, яка може бути створена без належності до будь-якого класу, і ви можете передати її як об'єкт або виконати на запит. Лише 22,7% опитаних випускників добре знали Лямбда-вирази перед тим, як отримати першу пропозицію про роботу, а 48,5% оцінабо своє знання теми як «близьке до нуля». У той же час, понад 85% нових програмістів заявабо, що використовували лямбда-вирази в перший рік роботи. Заради справедливості вкажемо, що невисокий відсоток знаючих цю тему може бути пов'язаний з тим, що на JavaRush лямбда-вирази поки що представлені тільки в новому квесті Java Syntax Pro істаттях . Таким чином, ми можемо сміливо стверджувати, що знання Core Java для будь-якого потенційного Java Junior і навіть Trainee просто потрібне. Зрозуміло, деякі теми, наприклад, багатопоточність допустимо знати дещо гірше, але синтаксис Java, ОВП та колекції повинні міцно впровадитися у вашу свідомість.

Алгоритми та структури даних

З приводу вивчення алгоритмів сортування та пошуку ведуться постійні суперечки. З одного боку, найкращі алгоритми вже давно написані та включені до бібліотек усіх популярних мов програмування, у тому числі і Java. І їх можна легально використовувати, не морочачись написанням власного коду. Однак фахівці, які навчають програмістів, все-таки рекомендують кожному розробнику-початківцю потренувати мозок написанням усіх цих алгоритмів бульбашки, злиття, бінарного пошуку та їм подібним. По-перше, ці алгоритми — своєрідний лакмусовий папірець умінь програміста (саме не знань, а умінь) та розуміння людиною, що таке програмування в принципі. Якщо мозок вже добре налаштований на подібну роботу, ви писатимете алгоритми відносно легко. Проте слід пам'ятати: алгоритми вам потрібні саме для тренування мозку… і для того, щоб пройти співбесіду: в'їдливі Senior-розробники, що проводять їх, дуже люблять мучити претендентів на прохання написати той чи інший алгоритм. А ось у роботі більшість (48.5%) використовує стандартні бібліотечні алгоритми, ефективні та перевірені, тоді як 16% респондентів взагалі не використовували сортування у перший рік роботи програмістом.Що потрібно знати, щоб стати Java Junior, і що з цим робити?  - 469,6% випускників стверджують, що до отримання першої пропозиції про роботу вони непогано орієнтувалися в алгоритмах сортування та пошуку та могли написати їх самостійно. Що потрібно знати, щоб стати Java Junior, і що з цим робити?  - 5Ми вже торкалися теми структур даних, коли говорабо про колекції Java. Так, у них краще розібратися, щоб знати, де та яку структуру застосувати. Складання власних структур даних за образом і подобою бібліотечних - відмінна вправа, яка допоможе вам краще розібратися в них. Ви можете, наприклад, спробувати написати власну версію ArrayList або запропонувати свій однозв'язковий список (звичайний LinkedList в Java - двозв'язковий). Що потрібно знати, щоб стати Java Junior, і що з цим робити?  - 6Під час роботи програмісти-початківці використовували головним чином стандартні структури даних.Що потрібно знати, щоб стати Java Junior, і що з цим робити?  - 7

Unit-тестування

За модульне (unit) тестування Java відповідає бібліотека JUnit. На самому юніт-тестуванні можна розпочати чи не на самому початку навчання. Принаймні в той момент, коли ви беретеся за свій перший самостійний проект, навіть дуже маленький вам краще вже володіти цим інструментом. Писати модульні тести не так вже й складно, хоча є нюанси. Вивчення JUnit не займе багато часу, а ось користь з його знання величезна. Ви зможете покривати тестами свій та чужий код. Дуже часто новачкам доручають написання юніт-тестів для колег, тож це може стати в нагоді і безпосередньо в новій роботі. 57,5% респондентів заявабо, що використали JUnit перед першою успішною співбесідою з Java, і більше 83% вже використали модульне тестування в перший рік роботи.

Бібліотеки утиліт, GUI та корисні компоненти

Ми запитали, наскільки добре випускники JavaRush були знайомі з рядом інструментів, частина з яких вивчалася і в нашому курсі.
  • Сервлети це програмні компоненти Java, які розширюють можливості сервера.
  • JDBC – це незалежний від платформи стандарт взаємодії між програмами Java та базами даних. JDBC реалізований як пакет java. SQL входить до складу Java SE (Standard Edition).
  • log4j - найвідоміша бібліотека для реєстрації повідомлень. Він дозволяє писати дзвінки бібліотеки в java-коді, а потім гнучко налаштовувати його, не змінюючи вже написаний код.
  • Jackson/JSON. JSON (JavaScript Object Notation) – надзвичайно популярний відкритий стандартний формат файлів та формат обміну даними, а Jackson – це високопродуктивний процесор JSON для Java.
Всі ці інструменти дуже корисні і часто використовуються в роботі і більшість студентів не нехтували ними під час підготовки до співбесіди. Особливо це стосується Jackson, з яким стикалися 72.7% претендентів на посаду Java-програміста, JDBC — цю бібліотеку випробувало понад 78% опитаних. У роботі ці технології використали практично всі. З GUI Java-розробники стикаються не так часто. Ми запитали JavaFX: з цією технологією по роботі зіткнулися лише 18% респондентів.Що потрібно знати, щоб стати Java Junior, і що з цим робити?  - 8Дві третини респондентів працювали із сервлетами, трохи менше опитаних випробували їх під час навчання. Також виявилося, що частина Java-програмістів, що приступабо до роботи, стикалася з такими проектами, як Apache Commons (набір бібліотек, орієнтований на всі аспекти повторно використовуваних компонентів Java) і Guava (набір спільних бібліотек для Java з відкритим вихідним кодом, в основному розроблений інженерами Google ).Що потрібно знати, щоб стати Java Junior, і що з цим робити?  - 9

Frameworks

Раніше від Java Junior ніхто не очікував знання Spring чи Hibernate. Але часи змінюються, і сьогодні цього часом чекають навіть від Trainee. Вивчати ці технології самостійно непросто. Навіть якщо все здається зрозумілим, студенти часто забувають, що до чого дуже швидко. Деколи навіть програми, самостійно написані на Spring — не панацея. Допоможе лише активна робота. Проте перед успішною співбесідою третина респондентів була знайома зі Spring на хорошому рівні, а 45.5% розбиралися в ньому середньо. Ситуація зі Spring boot дещо гірша (36.4% взагалі його не знала), а про добрі знання Hibernate заявило майже 44% опитаних випускників JavaRush. Що потрібно знати, щоб стати Java Junior, і що з цим робити?  - 10У той же час, під час роботи головним Java-фреймворком користувалося майже 88% новоспечених програмістів, Spring Boot - 83%, Hibernate - 81%.Що потрібно знати, щоб стати Java Junior, і що з цим робити?  - 11

Build Automation tools та сервери додатків

Більшість опитаних випускників JavaRush намагалися працювати зі збирачами проектів. Найчастіше це був Maven (40.9% спробували його практично, ще 30.3% використовували його іноді, а 12.1% вже під час навчання використовували його постійно). У роботі з Maven довелося стикатися 72.7% (часто), 7.6% (іноді) та 3% (рідко). Що стосується Gradle, тут ситуація дещо гірша. Тільки 22.7% практикувалися з цим збирачем, причому більшість із них лише випробували технологію. У роботі Gradle застосовували майже половину респондентів.Що потрібно знати, щоб стати Java Junior, і що з цим робити?  - 12Ant давно втратив свої позиції, і це позначилося на його популярності серед наших випускників: поралося з ним лише 3% опитаних. А працювати з ним довелося 12% тих, хто відповів на запитання. Серед серверів додатків лідирує Tomcat, з ним під час навчання розібралося понад 77% опитаних, 11% випробували GlassFish, 12% - JBoss. Так само виглядає популярність серверів серед тих, хто вже працює. Тільки 31.8% тих, хто отримав роботу, не стикалися з Tomcat. Також випускники JavaRush під час першого року роботи програмістом випробували такі сервери як WebSphere, Jetty, Netty, Wildfly, Weblogic.Що потрібно знати, щоб стати Java Junior, і що з цим робити?  - 13

Що ще?

Переважна більшість опитаних ще до отримання першої роботи:
  • мали уявлення про HTML, CSS та JavaScript;
  • працювали з базами даних, знали SQL;
  • майже всі користувалися Git та GitHub;
  • намагалися працювати з чистим XML.
Всі ці технології стали в нагоді їм у подальшій роботі. Від Java-програміста, та й від будь-якого іншого, за замовчуванням чекають знайомства з усім переліченим вище. Саме знайомства, а чи не глибоких знань. Тому рекомендуємо іноді відволікатися від Java і розширювати кругозір, вивчаючи ці технології. Також деякі відповіли на запитання відзначабо, що на співбесіді від них чекали знань, хоча б теоретичних, шаблонів проектування, архітектурних шаблонів, а також правил хорошого тону у програмуванні (всі ці KISS, DRY, SOLID). Однак найчастіше на співбесіді вистачало одних визначень: ті, хто проводив інтерв'ю, чудово усвідомлювали, що справжнє розуміння таких речей приходить лише з постійною практикою. Чи знадобабося вони у роботі? Звісно знадобабося.

Висновки

Сподіваємося, ми не надто вас налякали кількістю технологій, які вам належить вивчити. Не все з цього потрібно знати досконало, до того ж розбиратися з усім цим — дуже цікаво. Не дарма ж ви вирішабо стати програмістом, чи не так? Так що продовжуйте вивчати Java і не втрачайте мотивації. Успіхів! PS Якщо ви вже знайшли роботу і хочете розповісти про свій досвід — ласкаво просимо в коментарі!
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ