JavaRush /Java блог /Random UA /Чекліст Java-developer'а. Що має знати розробник
Константин
36 рівень

Чекліст Java-developer'а. Що має знати розробник

Стаття з групи Random UA
Вітання! Сьогодні поговоримо про шлях розвитку Java-розробника та про те, що він обов'язково повинен знати, щоб бути затребуваним. Чекліст Java-developer'а.  Що повинен знати розробник - 1Будь-який розробник співбесіди може “завалити” кандидата посаду. Наприклад, почне ставити запитання на специфічні теми, з якими він стикався в поточному проекті. Але не знати все – це нормально. Те, що ви не відповісте на деякі питання, — це теж нормально. Як правило, кожен Java-програміст повинен мати базові знання про розробку. Отже, давайте розберемо, які технології вважаються “базовими”.

1. Базові алгоритми

Перше, за що варто взятися, почавши вивчати програмування (стосується не тільки Java), це розбір основ. Наприклад, алгоритми. Їх існує безліч, і не варто вбивати цілі роки на спроби вивчити якомога більше алгоритмів: більшість з них вам не знадобляться. Необхідний мінімум знань можна отримати з книги " Грозуємо алгоритми ". Для початку шляху цього вистачить, але за бажання можна навчитися за допомогою книги " Структури та алгоритми " або "Алгоритми на Java" Роберта Седжвіка та Кевіна Уейна. Також я раджу вам підтягнути знання засад інформатики. Це можна зробити на JavaRush за допомогою курсу CS50 .

2. Java Syntax

Після вивчення основ алгоритмів ми повинні вивчити синтаксис Java. Адже ми тут все вчимося саме на Java-програмістів, чи не так? Для цього чудово підійде курс JavaRush. У процесі виконання численних завдань ви "наб'єте" руку на Java синтаксисі і будете без особливих роздумів писати/читати Java-код, ніби це ваша рідна мова. JavaRush - це практика, а крім неї потрібно ще й поглядати в теорію, щоб розуміти, що саме ви робите. Для цього можна прочитати книги, наприклад, одну з наступних:
  • " Head First Java ";
  • "Java для чайників" Баррі Берд;
  • “Java. Посібник для початківців” Герберт Шілдт.
Після прочитання цих книг можна братися за книжки складніше:
  • "Філософія Java", Брюс Екель;
  • "Ефективне програмування", Джошуа Блох;
  • “Java. Повне керівництво”, Герберт Шілдт.
Останні три книги не є легким чтивом для новачків, але вони можуть дати міцні знання теорії Java. Також не потрібно забувати про статті на JavaRush, адже в них можна знайти пояснення на більшість тем, що вас цікавлять. Знайти потрібну статтю можна, вбивши в пошуку цікаву для вас тему: Чекліст Java-developer'а.  Що повинен знати розробник - 2Також настійно рекомендую шукати питання з співбесід по Java, як наприклад, у цій добірці питань з абстрактних класів та інтерфейсів . Це допоможе зрозуміти, що саме вам потрібно вивчити та до яких питань бути готовим.Чекліст Java-developer'а.  Що повинен знати розробник?

3. Патерни програмування

Паттерни програмування - це деякі повторювані шаблони, які являють собою вирішення проблеми в рамках контексту, що часто виникає. Серед них є базові, прості шаблони, які повинен знати кожен програміст, який себе поважає. Щоб розібратися в цій темі, використовуйте книгу Head First. Паттерни проектування ”. Вона доступно пояснить базові патерни програмування. Але в книзі багато говориться про Java , тому на момент вивчення книги необхідно опанувати цю мову програмування. Для більшого заглиблення в патерни можна також прочитати “Прийоми об'єктно-орієнтованого проектування. Паттерни проектування” від Банди чотирьох ( Gang of Four: колектив авторів, до якого входять Еріх Гамма, Річард Хелм, Ральф Джонсон, Джон Вліссідес ​​– прим. ред.). Після вивчення цієї теми ви почнете бачити патерни практично скрізь у коді. Звертайте на це увагу, особливо на патерни, що використовуються в Spring , так як це популярне питання на співбесідах.

4. Парадигми програмування. Чистота коду

Крім стандартних шаблонів програмування, існують різні принципи та парадигми, які необхідно знати ( SOLID , GRASP ). Також необхідно стежити за чистотою коду та його читальністю. Все, що потрібно знати на цю тему, є в книзі “ Чистий код ” Роберта Мартіна або взяти на озброєння книгу “Ідеальний код” Стіва Макконнелла.

5. SQL

Наступним пунктом у нас йде вивчення мови реляційних баз даних – SQL . Бази даних – це місце, де зберігається інформація (дані) веб-програми. База даних складається з безлічі таблиць (адресана книга у вашому телефоні - найпростіший приклад подібних таблиць). Докладніше про бази даних можна почитати в цій статті . Для Java-розробників зона відповідальності - це не тільки Java-додаток, але і база даних, з якою вона взаємодіє і де зберігає дані. У реляційних (найпоширеніших) базах все взаємодія відбувається через спеціальну мову — Structured Query Language, чи SQL. Щоб розібратися в цій темі, достатньо прочитати одну з книг:
  • "Вивчаємо SQL", Алан Бьюлі;
  • "SQL", Кріс Фіайлі;
  • "Head First SQL", Лінн Бейлі.
Але ж практика без теорії не працює, чи не так? І на співбесідах для перевірки знань з SQL нерідко (чи не завжди) дають одну-дві завдання на написання SQL-запиту. Тому дуже важливо відточити свої практичні SQL-навички, щоб показати себе у хорошому світлі. Відмінним ресурсом для набивання SQL-практики може стати ресурс sql-ex.ru .

6. MySQL/PostgreSQL

Після вивчення мови SQL вам потрібно ознайомитися з конкретною реалізацією бази даних. Залежно від бази даних, деякі команди можуть відрізнятися. Та й різниця в можливостях баз даних дуже відчутна. Найпоширеніші реляційні бази даних - MySQL і PostgreSQL . Чекліст Java-developer'а.  Що повинен знати розробник?MySQL набагато простіше, але при цьому у PostgreSQL ширші можливості. Для початку достатньо бути знайомим хоча б із однією з них. Вивчати реалізацію баз даних можна, якщо використовувати навички з гугленія — знаходити потрібні статті та навчальні уроки в Youtube. Ви повинні набивати руку на правильному пошуку питань, що вас цікавлять, адже програміст - це людина "з чорним поясом" з пошуку в Google.

7. Maven/Gradle

Необхідно вивчити один з фреймворків Gradle або Maven , які призначені для складання проектів, тому що тепер для вас Java - це не тільки завдання з кількох класів, але й мова для написання повноцінних додатків. Ви повинні розуміти, як збирати проект, які є етапи складання, як потрібно підвантажувати необхідні зовнішні бібліотеки з готовим кодом і багато іншого. Незважаючи на те, що Gradle новий і лаконічний, Maven використовується в більшості випадків. Тому приділіть особливу увагу саме його життєвому циклу збирання.

8. Git

Git – розподілена система управління версіями. Ця технологія дозволяє розробникам спільно створювати один додаток, причому один одному не заважаючи. Звичайно, є й аналоги даної системи керування версіями. Наприклад, Subversion . Але в основному використовується саме Git і потрібно вміти працювати з ним. Чекліст Java-developer'а.  Що повинен знати розробник?Крім навчальних статей по ньому, у Youtube достатньо відео, які допоможуть вам крок за кроком освоїти цю технологію. Спочатку краще використовувати саме консольний Git, а не якусь інтерфейсну імплементацію, адже в ній потрібно буде все робити через команди. На співбесідах часто люблять запитувати деякі команди Gitтому рекомендую вам виписувати їх і тримати десь під рукою. Також раджу вести конспект, у який ви відзначатимете найважливіші моменти, щоб перед співбесідою пройтися по ньому та освіжити пам'ять.

9. JDBC

Ця технологія призначена для забезпечення з'єднання між вашим Java-додатком і реляційною базою даних. Щоб ознайомитись з основами, рекомендую прочитати статтю JDBC або з чого все починається. Статей, що пояснюють технологію JDBC і надають елементарні приклади, достатньо, незважаючи на те, що голий JDBC безпосередньо вже ніхто не використовує.

10. JPA. Hibernate

JPA — це спосіб організації з'єднання між програмою Java та базою даних, так само, як і JDBC. Але при цьому JPA — більш високорівнева технологія і, відповідно, простіша у використанні. Але JPA — це лише специфікація (концепція), яка не реалізована і для якої потрібна її конкретна реалізація. Таких реалізацій багато, але найближчої до ідеалів JPA, популярною і розвиненою, вважається Hibernate . У своїй кар'єрі розробника ви неодноразово зіткнетеся з даною технологією. Тому окрім знайомства з цією технологією за статтями, можливо, варто задуматися про прочитання книги про неї, наприклад, - " Java Persistence API ".

11. Spring

Коли ви станете Java-розробником, Spring перестає бути вам просто словом. Чекліст Java-developer'а.  Що повинен знати розробник?Зараз цей фреймворк за важливістю ділить перше місце із необхідністю знати синтаксис мови Java. Ви можете сказати, що Spring має аналог, тобто технології Java EE. Але Java EE застаріла і на нових проектах вже й не використовується. У переважній більшості зараз Java-розробник - це Java-Spring-розробник, тому знання деяких базових технологій Spring є обов'язковим. Spring це не просто фреймворк, а ціла платформа фреймворків: Чекліст Java-developer'а.  Що повинен знати розробник?І це тільки частина фреймворків, які надає Spring. Новачку ж достатньо знати лише деякі з них:

  • Spring Core

Він повинен бути у вас на першому місці, щоб розуміти, що таке Spring: що таке Spring контейнер, біни, DI, IoC і таке інше. Так би мовити, зрозуміти саму філософію використання Spring. Подальше вивчення Spring-фреймворків відбуватиметься, відштовхуючись від цієї бази. Можливо, варто створити свою невелику програму, до якої ви потроху прикручуватимете нові вивчені технології.

  • Spring JDBC

Раніше ми говорабо про технологію JDBC як про технологію для створення з'єднання з базою даних. Взагалі "голе" використання технології зараз можна і не зустріти в проектах, тому може здатися, що вивчення JDBC і не потрібно. Але це зовсім так. Розглянувши голе використання JDBC, ви зможете побачити технологію на нижчому рівні, розібратися з її проблемами і недоліками. Почавши вивчати Spring JDBC, ви зрозумієте, що саме цей фреймворк покращує, оптимізує та приховує від наших очей.

  • Spring Hibernate

Як і у випадку з “голим” JDBC, цей фреймворк покращує використання вже існуючої технології, в даному випадку – Hibernate. Якщо розглянути використання Hibernate без Spring, ви зрозумієте, в чому полягає вигода від використання Spring Hibernate.

  • Spring JPA

Раніше ми говорабо про JPA та про те, що це лише специфікація, для якої існують різні реалізації. Серед цих реалізацій найближчий до ідеалу Hibernate. Spring має власну ідеальну реалізацію JPA, яка “під капотом” використовує Hibernate і максимально наближена до ідеалу JPA-специфікацій. Ця технологія називається Spring JPA. До речі вона сильно полегшує звернення до бази даних. Можна вивчити лише JPA без вивчення JDBC, Hibernate, Spring JDBC, Spring Hibernate. Але в такому випадку ваші знання щодо з'єднання з базою даних будуть дуже поверховими.

  • Spring MVC

З цією технологією можна відображати веб-інтерфейс нашої програми для користувачів та забезпечувати спілкування інтерфейсу з іншою частиною програми. Також технологія може працювати без відображення, коли є деяка програма, що відповідає за відображення, і ви з цією програмою взаємодієте за допомогою запитів та відповідей за RESTful технології. Щоб краще засвоїти інформацію про Spring, окрім статей, лекцій на ютубі, можна прочитати кілька книг. Мені дуже зайшла книга "Spring у дії" Уоллса Крейга. На жаль, російською зараз є тільки третя версія, яка вважається застарілою. Раджу прочитати саме 6 версію, якщо ви добре знаєте англійську. Ще одна чудова книга по Spring - "Spring 5 для професіоналів". Вона важча для освоєння і більше схожа на бібліюдовідник по Spring, який краще тримати завжди під рукою, ніж прочитати від кірки до кірки.Чекліст Java-developer'а.  Що повинен знати розробник?

  • Spring Boot

Ця технологія в рази полегшує використання Spring. Я не просто так виніс її в кінець списку, адже вона приховує багато під "капотом" і для людини, незнайомої зі звичайним Spring, багато моментів може бути не очевидним і незрозумілим. Спершу для кращого розуміння роботи фреймворків Spring варто використовувати звичайний Spring, а потім всі вищі блага використання Spring Boot. Також раджу ознайомитися зі Spring Security та Spring AOP. Але на відміну від технологій, наведених вище, глибокі знання цих двох зараз не потрібні. Це технології не для новачків. На співбесідах джунів про них не запитують (хіба що одне поверхове питання). Почитайте узагальнено, що це за технології та принципи роботи. У цій статті я постійно згадував прочитання книг. З одного боку це не обов'язково. Можна стати програмістом, не прочитавши жодної книги, вивчивши все необхідне за статтями та навчальним відео. З іншого боку, на даний момент на ринку розробників-початківців конкуренція висока, що і завищує планку необхідних початкових знань для новачка. Тому чим більше ви знатимете, тим швидше ви зможете знайти свою першу роботу, вразивши інтерв'юера рівнем своїх знань. Всім дякую, і нехай буде з вамиJava .Чекліст Java-developer'а.  Що повинен знати розробник?
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ