Мінімальний набір знань молодого розробника

Мій попередній пост мав певний ефект – кілька людей вважають його дуже мотивуючим і мене попросили дати деякі поради і рекомендації, з чого ж почати кар'єру розробника. Очевидно, питання надто широкий і не має відповіді як такої, тому я поставлю його більш вузько: що повинен знати молодий java-розробник, пише back-end?
Цей пост не є курсом молодого бійця, а є лише:
  • Моєю спробою вибрати основні напрямки, в яких повинен орієнтуватися кожен початківець java back-end розробник.
  • Невеликим зібранням матеріалів до вивчення.
  • Описом тестового проекту, який розробник повинен зуміти реалізувати з використанням зазначених інструментів.
Мета:
  • Висвітлити список основних інструментів екосистеми мови, якими необхідно вміти користуватися і розуміти на базовому рівні. Я не ставлю за мету дати глибоке розуміння інструментів, так як це саме розуміння можна придбати лише з досвідом.
Як я вже говорив, я буду оперувати термінами екосистеми Java, хоча в цілому це легко можна спроектувати на будь-яку іншу платформу.
Отже, є людина, яка розуміє ООП і прочитав хоча б одну вартісну книгу з мови від авторитетного автора. Людини в подальшому будемо називати «падаван», і якщо падаван не читав книг – все ж варто це зробити. Це необхідно для того, щоб розуміти можливості мови і його основних бібліотек, але закопуватися теж не варто – для початку однієї хорошої книги буде достатньо. Фанатичне читання без практики ніяких особливих переваг не дає, особливо на початкових порах.
Значить, що ми поки що маємо:
  • Падаван – 1 одиниця.
  • Є розуміння ООП.
  • Базове розуміння можливостей мови і знання основних його бібліотек теж в наявності.
Як можна застосувати наявні поки знання? Аж ніяк. Для цього потрібно занурюватися в екосистему платформи. Для Java, на мою думку, необхідно розуміння наступних інструментів:
  • Collections Framework. Взагалі кажучи, це Core Java, тобто не частина екосистеми як такої. Орієнтуватися в структурах даних – обов'язково. Необхідно чітко розуміти різницю між LinkedList і ArrayList. А також розуміти, що таке Set і Map (а ще пам'ятати, що Map – це не Collection). Хороша стаття про HashMap, наприклад. Я б навіть рекомендував ще подивитися сюди.
  • Ієрархія винятків: тут
  • Ієрархію класів до речі теж непогано представляти в загальних рисах. Хоча б пам'ятати, що всі класи неявно успадковують від Object.
  • Spring. Це фреймворк, який сильно спрощує життя. Фреймворк цей занадто великий, тому для початку достатньо просто розуміти, навіщо він потрібен.
  • Знати, як розшифровується ORM і для чого це потрібно. Я б дав таку коротку і сильно спрощену формулювання: ORM (гаразд, Object-Relational Mapping – це така штука, яка дозволяє перетворювати записи (рядки) бази даних на об'єкти мови. З цими об'єктами потім можна працювати так само, як і з будь-якими іншими – перевіряти або змінювати їх стан, викликаючи ті чи інші методи. Відповідно, всі зміни об'єкта відіб'ються в БД.
  • JDBC. Це те, що дозволяє досить складно і незрозуміло працювати з базою даних. Але знати корисно. Сюди ж і віднесу базове знання SQL.
  • Maven. Безумовно необхідний, так як ця штука допомагає зібрати проект з шматочків в один виконуваний файл (грубо кажучи). Є аналоги: Gradle, Ant. Останній, на мій погляд, досить складний для початку, так і популярність його на сьогодні досить мала.
  • HTML на базовому рівні, тобто вміти красиво верстати ні до чого для початку.
  • JUnit / TestNG, в загальному – юніт-тестування. Я не буду робити на цьому акцент, а також не буду говорити про TDD або BDD – отже вже занадто багато матеріалів для початку. Я б навіть сказав, що на початкових порах скоріше більш важливо саме розуміння важливості юніт-тестування, а не безпосередньо вміння писати тести.
Якщо я упустив якісь важливі моменти, прошу мене виправити і доповнити.
Отже, в чому полягає суть тестового проекту: я пропоную падавану зробити найпростішу блог-платформу без реєстрації та без красивих форм на bootstrap. Нехай це буде голий потворний html без будь-яких мов, а головна форма має лише:
  • Поле вводу. Просто вбийте туди слова «Hello World».
  • Кнопку «створити запис». Натискаєте на неї, і слова «Hello World» йдуть з додатком на обробку, зберігаються в БД, а потім з'являється на сторінці. Динаміки не потрібно, нехай запис з'явиться тільки після перезавантаження сторінки.
  • Список створених раніше записів. Звичайно, вони будуть підтягуватися з БД і відображається на формі при кожному новому запуску програми. Дані не будуть загублені після завершення роботи програми.
Все! Це правда все. Це дуже просто, але якщо ви тільки починаєте, то вам доведеться ознайомитися з безліччю моментів.
Ніби хтось колись казав:
Java – це інструмент для перетворення великих xml-файлів в stack-трейсы.
В цьому є частка правди, тому я рекомендую відразу ж позбутися від всієї цієї xml-конфігурації, використовуючи Spring Boot – він оперує анотаціями.
Я вже говорив, що це не курс молодого бійця, а лише мої міркування. Так що нижче я дам лише рекомендації про порядок виконання цього проекту:
  1. рекомендую Почати з встановлення Java на комп'ютер, як не дивно. JDK8 можна скачати здесь;
  2. Поставити Maven;
  3. Створити перший Spring-boot проект. Здесь описано лише як створити «Hello, World!»;
  4. Поставити БД (наприклад, postgre, h2 або mysql);
  5. Створити класи моделей. Точніше, один найпростіший клас;
  6. Реалізувати CRUD (create-read-update-delete, операції з даними);
  7. Створити найпростішу jsp-форму;
  8. Зв'язати форму з контролером.
З приводу пунктів 5-8 можна почитати наступне:
  • Тут є все, але замість додавання найпростіших повідомлень автор пропонує додавати співробітників.
  • Ця стаття більше орієнтована на створення API-додатки, так що все розуміти в неї ні до чого. Але прочитати її теж буде дуже непогано.
І це все! Я вірю, якщо падаван освоїть зазначені моменти і зуміє не просто склепати найпростішу блог-платформу, але і зрозуміє, для чого він робив кожне з дій, то цього буде досить для першого працевлаштування на позицію junior java-developer. Різні міркування і доповнення категорично вітаються.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.