Дорожная карта
Современная индустрия разработки ПО велика и разнообразна. Тяжело затронуть все актуальные направления, инструменты и библиотеки даже в рамках одного языка программирования. Посмотрите, например, на различные полезные библиотеки для Java разработчиков — по ссылке перечислено около 1000 позиций. И это далеко не все!
Java занимает стабильную нишу в современной разработке и не собирается сдавать позиции. Более того, существуют интересные прогнозы относительно будущего этого языка программирования. Прочитайте статью Mike Melason «Don’t call it a comeback: Why Java is still champ».
Как начать изучать Java? Вот основные рекомендации:
- Найдите актуальную дорожную карту для изучения Java и двигайтесь по ней.
- Изучайте фундаментальные вещи в проверенных книгах.
- Уделяйте большое внимание практическим навыкам и реальному опыту.
- Бонусный универсальный совет — постепенно, но неустанно и настойчиво улучшайте свой уровень английского языка. Это первый язык в IT, которым стоит овладеть новичкам. Его невозможно выучить быстро, нужно регулярно работать.
Работодатели много ожидают от тех, кто подается на позицию Junior Developer: отличное владение языком программирования и некоторыми базовыми инструментами, хорошие софт-скилы и хороший уровень английского языка.
К счастью для современных новичков, существует отличная дорожная карта (и не одна), которая показывает, как пройти от базового до уровня профессионального разработчика. Ещё одна хорошая новость: в мире создано огромное количество учебных ресурсов, которые помогают овладеть любой технологией. Учеба сегодня — настоящий бизнес с жесткой конкуренцией, есть из чего выбирать среди платных и бесплатных ресурсов. Чтобы учиться эффективнее, советую прочесть книгу Барбары Окли «Научиться учиться. Как запустить свой мозг по полной».
С чего начать
Рассмотрим карту, приведенную выше, и определим, с чего начать. Она не полна, да и составить полную универсальную карту невозможно. В будущем ваше личное развитие и характер проектов, на которых вы будете работать, будет её дополнять.
- Путь на карте начинается с базовых навыков: Java, Maven/Gradle, SQL и общих навыков, необходимых каждому (Git, HTTP, Data structures и т. д.).
- Далее карта ведет нас к базам данных, фреймворкам и ORM. Ещё дальше — тестирование, разнообразные библиотеки, микросервисы и многое другое.
- Когда освоите базовые навыки в Java, можно параллельно заниматься SQL и разбираться с основами Maven или Gradle. Для тех, кому нужно начинать совсем с нуля, я бы посоветовал Kathy Sierra, Bert Bates «Head First. Java».
- 4) Далее можно перейти к более серьезной литературе — Herbert Schildt «Java: A Beginner’s Guide» или «Java: The Complete Reference» или Cay S. Horstmann «Core Java». Кстати, у обоих авторов есть другие книги по Java (и не только), на которые стоит обратить внимание. А когда уже почувствуете себя совершенно уверенно, беритесь за следующий уровень сложность: книги Bruce Eckel «Thinking in Java» и Joshua Bloch «Effective Java».
Я специально уделяю максимум внимания книгам в самом начале пути новичка, потому что они закладывают хороший фундамент знаний, а это ключ к вашему успеху как Java-разработчика.
Основные навыки
Кроме собственно Java, советуют освоить системы управления зависимостями, такими как Gradle и Maven.
- Можно начать с быстрого курса на Udemy — Maven Quick Start: A Fast Introduction to Maven by Example.
- Но впоследствии стоит прочесть что-то более основательное, например, Tim O’Brien «Maven: The Complete Reference».
- Изучение Gradle можно начать с курса на Linkedin — Learning Gradle, а затем углубиться в официальную документацию — Gradle Guides gradle.org/guides.
Третьим компонентом фундамента Backend-разработчика является, конечно, работа с базами данных. И здесь не обойдешься без знания SQL. Для начала могу посоветовать книгу Thomas Nield «Getting Started with SQL».
Перед тем, как идти дальше, сделаем маленькое отступление и рассмотрим такой вопрос: какие ресурсы использовать для обучения? Ведь технологий и тем, которые стоит изучить, будет все больше и больше, а времени все меньше и меньше.
- Книги дают хорошую основу для знаний по определенной технологии или теме. Однако следует помнить, что они выходят с некоторым опозданием. Впрочем, всегда есть книги обязательные для чтения в любом стеке технологий. Начните с литературы для начинающих и уже позже, когда наберётесь опыта, переходите на книги для профессионалов.
- Учебные курсы на Coursera, LinkedIn, Udemy и других подобных платформах тоже могут быть хорошим источником информации, особенно если у курса хорошие отзывы, есть практические задания и хороший темп.
- Официальная документация, вероятно, единственный источник, который может предоставить исчерпывающую информацию о возможности технологии или инструмента (кроме исходного кода, конечно).
- Разнообразные блоги, туториалы, статьи, Stackoverflow могут помочь решить какую-либо конкретную проблему или дать ответы на вопросы.
Дополнительные навыки
- Сюда можно включить системы контроля версий (Git, SVN), HTTPS, REST, web (basic, OAuth, SSO, JWT), Scrum, Kanban, структуры данных, алгоритмы и многое другое.
- Знакомство со смежными специальностями, чтобы понимать суть работы своих коллег. Мой список рекомендуемой литературы:
— The Phoenix Project by Gene Kim, Kevin Behr, and George Spafford;
— Beautiful Testing: Leading Professionals Reveal How They Improve Software by Tim Riley, Adam Goucher;
— Business Analysis For Dummies by Kate McGoey, Kupe Kupersmith;
— 100 Things Every Designer Needs to Know About People by Susan Weinschenk;
— Making Things Happen: Mastering Project Management by Scott Berkun. - Умение решать задачи с помощью программирования и писать хороший код. Здесь пригодится определенная комбинация практики и теории.
Теория:
- SOLID, DRY, YAGNI;
- Clean Code: A Handbook of Agile Software Craftsmanship 1st Edition by Robert C. Martin;
- Code Craft: The Practice of Writing Excellent Code 1st Edition by Pete Goodliffe
Практика:
- https://codingdojo.org/practices/
- https://www.codewars.com/
- https://leetcode.com/
- https://codegym.cc/tasks
Куда двигаться дальше
После того, как вы освоили фундаментальные вещи, можно переходить к следующим пунктам на нашей карте: CLI tools, Web frameworks, Databases и так далее. Выбирайте хорошую книгу или онлайн-курс для каждого инструмента, которым вы хотите овладеть.
На этом этапе стоит задуматься о простых задачах, которые вы можете начать решать с вашим опытом или даже о собственном пет-проекте. Следующий шаг: участие в проектах с открытым кодом. Здесь могут пригодиться следующие ресурсы:
- 20+ Trending and Popular Java Open Source Project
- Help out your favorite open source projects and become a better developer while doing it.
Всегда можно найти информацию, соответствующую вашему уровню и количеству свободного времени. Участие в таких проектах будет большим плюсом при поиске работы и позволит вам получить уникальный опыт.
Выводы
Что ж, был рад поделиться своими мыслями. Путь от новичка до первого признания — довольно сложный. Требуется много времени, терпения и мотивации. Но хорошая дорожная карта и эффективные учебные ресурсы помогут избежать острых углов и значительно облегчат вашу работу. Не забывайте про мои рекомендации в начале статьи — вам пригодится дорожная карта и её переодические обновления, понимание фундаментальных вещей из книг, практика и реальный опыт.
Полезные ссылки
Как научиться:
- Java learning in general
- Java Developer Roadmap
- Making Java easy to learn
Паттерны проектирования разными языками программирования
- Java Design Patterns and Architecture на Udemy
- 10 Free Courses to Learn Data Structure and Algorithms in Java, Python, and C++
- Java Interview Questions You Need To Know
- Don’t call it a comeback: Why Java is still champ
- The 25 greatest Java apps ever written
- awesome-java
Общие навыки:
- Одна книга для кожного напрямку: Java, DevOps, BA, та ще сім професій
- Head First Java by Kathy Sierra & Bert Bates
- The Phoenix Project by Gene Kim, Kevin Behr, and George Spafford
- Business Analysis For Dummies by Kate McGoey, Kupe Kupersmith
- 100 Things Every Designer Needs to Know About People by Susan Weinschenk
- Making Things Happen: Mastering Project Management by Scott Berkun
- Beautiful Testing: Leading Professionals Reveal How They Improve Software by Tim Riley, Adam Goucher
- Database Internals: A Deep Dive into How Distributed Data Systems Work +
- SQL Antipatterns: Avoiding the Pitfalls of Database Programming
Clean Code — A Handbook of Agile Software Craftsmanship by Robert Cecil Martin - Design Patterns: Elements of Reusable Object-Oriented Software
Тестирование ПО
Ещё больше про Java:
- Top 5 Free Apache Maven eBooks for Java Developers
- SSH Basics for Cloud Security
- Build Secure APIs with Auth0 and Postman
- Welcome to SQL
- The Complete SQL Bootcamp 2022: Go from Zero to Hero
- SQL for Data Science
- Database Design Fundamentals for Software Engineers
- Top 5 Courses to Learn SQL and Database in 2022 — Best of Lot
- A handy new Google Cloud, AWS, and Azure product map
Написание кода
Open source
- 20+ Trending and Popular Java Open Source Project
- Help out your favorite open source projects and become a better developer while doing it.
About Spring Boot
- What Is Spring Boot?
- Spring Boot For Beginners
- Spring REST API for Beginners
- The Complete Guide to Spring 5 and Spring Boot 2
- Learn Spring Boot — Rapid Spring Application Development
- Master Microservices with Spring Boot and Spring Cloud
- Top 5 Courses to Learn Spring Boot in 2022 for Java Developers — Best of Lot
- Spring Boot: Complete guide from development to deployment
- Top 5 Books to Learn Spring framework and Spring MVC for Java Programmers
- Spring Framework — Bean Creation — A Practical Approach
- Student Management System Project — FullStack Java + Spring Boot + React.js Example Tutorial
Что еще почитать по теме в блогах:
Как научиться тестировать самому и найти работу в трудные времена. Гид
Как быть успешным джуном и не завалить испытательный срок
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.
Комментарий скрыт за нарушение правил комментирования.
[censored - П. 4.1.2. Пользовательского соглашения — https://dev.by/pages/agreement]