Привет!
Сегодня поговорим о пути развития Java-разработчика и о том, что он обязательно должен знать, чтобы быть востребованным.
Любой разработчик на собеседовании может “завалить” кандидата на должность. Например, начнет задавать вопросы по специфическим темам, с которыми он сталкивался в текущем проекте. Но не знать все — это нормально. То, что вы не ответите на некоторые вопросы — это тоже нормально.
Как правило, у каждого Java-программиста должны быть базовые знания о разработке. Итак, давайте разберем, какие же технологии считаются “базовыми”.
Он должен быть у вас на первом месте, чтобы понимать, что такое Spring: что такое Spring контейнер, бины, DI, IoC и так далее. Так сказать, понять саму философию использования Spring. Дальнейшее изучение Spring-фреймворков будет происходить, отталкиваясь от этой базы. Возможно, стоит создать свое небольшое приложение, к которому вы будете понемногу прикручивать новые изученные технологии.
Ранее мы говорили о технологии JDBC как про технологии для создания соединения с базой данных. Вообще, “голое” использование технологии сейчас можно и не встретить в проектах, поэтому может показаться, что изучение JDBC и не нужно. Но это не совсем так.
Рассмотрев “голое” использование JDBC, вы сможете увидеть технологию на более низком уровне, разобраться с ее проблемами и недостатками. Начав изучать Spring JDBC, вы поймете, что именно данный фреймворк улучшает, оптимизирует и скрывает от наших глаз.
Как и в случае с “голым” JDBC, данный фреймворк улучшает использование уже существующей технологии, в данном случае Hibernate. Если рассмотреть использование Hibernate без Spring, вы точно поймете, в чем заключается выгода от использования Spring Hibernate.
Ранее мы говорили о JPA и о том, что это только спецификация, для которой существуют различные реализации. Среди этих реализаций наиболее близок к идеалу Hibernate.
У Spring есть собственная идеальная реализация JPA, которая “под капотом” использует Hibernate и максимально приближена к идеалу JPA-спецификаций.
Эта технология носит название Spring JPA. К слову она сильно упрощает обращения к базе данных.
Можно изучить только JPA без изучения JDBC, Hibernate, Spring JDBC, Spring Hibernate. Но в таком случае ваши знания по соединению с базой данных будут очень поверхностными.
С этой технологией можно отображать веб-интерфейс нашего приложения для пользователей и обеспечивать общение интерфейса с остальной частью приложения. Также технология может работать без отображения, когда есть некоторое приложение, отвечающее за отображение, и вы с этим приложением взаимодействуете с помощью запросов и ответов по RESTful технологии.
Чтобы лучше усвоить информацию о Spring, помимо статей, лекций на ютубе, можно прочесть несколько книг. Мне очень зашла книга “Spring в действии” Уоллса Крейга. К сожалению, на русском сейчас есть только третья версия, которая считается устаревшей. Советую прочесть именно 6-ю версию, если вы хорошо знаете английский.
Еще одна великолепная книга по Spring — “Spring 5 для профессионалов”. Она более тяжелая для освоения и больше похожа на библию справочник по Spring, который лучше держать всегда под рукой, чем прочитать от корки до корки.
Эта технология в разы упрощает использование Spring. Я не просто так вынес ее в конец списка, ведь она скрывает многое под “капотом” и для человека, незнакомого с обычным Spring, многие моменты могут быть не очевидны и непонятны.
Сперва для лучшего понимания работы фреймворков Spring стоит использовать обычный Spring, а — потом все высшие блага использования Spring Boot.
Также советую ознакомиться со Spring Security и Spring AOP. Но в отличие от технологий, приведенных выше, глубокие познания этих двух сейчас не нужны.
Это технологии не для новичков. На собеседованиях джунов о них не спрашивают (разве что один поверхностный вопрос). Почитайте обобщенно, что это за технологии и принципы работы.
В этой статье я постоянно упоминал прочтение книг. С одной стороны, это не обязательно. Можно стать программистом, не прочитав ни единой книги, изучив все необходимое по статьям и обучающим видео.
С другой стороны, на данный момент на рынке начинающих разработчиков конкуренция высока, что и завышает планку необходимых начальных знаний для новичка. Поэтому чем больше вы будете знать, тем быстрее вы сможете найти свою первую работу, впечатлив интервьюера уровнем своих знаний.
Всем спасибо, и да пребудет с вами Java.
1. Базовые алгоритмы
Первое, за что стоит взяться, начав изучать программирование (касается не только Java), — это разбор основ. Например, алгоритмов. Их существует бесконечное множество, и не стоит убивать целые годы на попытки изучить как можно больше алгоритмов: большинство из них вам не пригодятся. Необходимый минимум знаний можно получить из книги “Грокаем алгоритмы”. Для начала пути этого хватит, но при желании можно подучиться с помощью книги “Структуры и алгоритмы” или “Алгоритмы на Java” Роберта Седжвика и Кевина Уэйна. Также я советую вам подтянуть знания основ информатики. Это можно сделать на JavaRush с помощью курса CS50.2. Java Syntax
После изучения основ алгоритмов мы должны выучить Java синтаксис. Ведь мы тут все учимся именно на Java-программистов, не так ли? Для этого отлично подойдет курс JavaRush. В процессе выполнения многочисленных задач вы “набьете” руку на Java синтаксисе и будете без особых раздумий писать/читать Java-код, будто это ваш родной язык. JavaRush — это практика, а помимо нее нужно еще и поглядывать в теорию, чтобы понимать, что вы именно делаете. Для этого можно прочесть книги, например одну из следующих:- “Head First Java”;
- “Java для чайников” Барри Бёрд;
- “Java. Руководство для начинающих” Герберт Шилдт.
- “Философия Java”, Брюс Экель;
- “Эффективное программирование”, Джошуа Блох;
- “Java. Полное руководство”, Герберт Шилдт.
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”, Линн Бейли.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ