JavaRush /Java блог /Random /Чеклист Java-developer’а. Что должен знать разработчик
Константин
36 уровень

Чеклист Java-developer’а. Что должен знать разработчик

Статья из группы Random
Привет! Сегодня поговорим о пути развития 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

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’а. Что должен знать разработчик - 4MySQL гораздо проще, но при этом у PostgreSQL шире возможности. Для начала достаточно быть знакомым хотя бы с одной из них. Изучать реализации баз данных можно, если использовать навыки по гуглению — находить нужные статьи и обучающие уроки в Youtube. Вы должны набивать руку на правильном поиске интересующих вас вопросов, ведь программист — это человек “с черным поясом” по поиску в Google.

7. Maven/Gradle

Необходимо изучить один из фреймворков Gradle или Maven, которые предназначены для сборки проектов, так как теперь для вас Java — это не только задачки из пары классов, но и язык для написания полноценных приложений. Вы должны понимать, как собирать проект, какие есть этапы сборки, как нужно подгружать необходимые внешние библиотеки с уже готовым кодом и многое другое. Несмотря на то, что Gradle более новый и лаконичный, Maven используется в большинстве случаев. Поэтому уделите особое внимание именно его жизненному циклу сборки.

8. Git

Git — распределенная система управления версиями. Данная технология позволяет разработчикам совместно создавать одно приложение, при этом друг другу не мешая. Конечно, есть и аналоги данной системы управления версиями. Например, Subversion. Но в основном используется именно Git, и нужно уметь работать с ним.Чеклист Java-developer’а. Что должен знать разработчик - 5Помимо обучающих статей по нему, в 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’а. Что должен знать разработчик - 6Сейчас данный фреймворк по важности делит первое место с необходимостью знать синтаксис языка Java. Вы можете сказать, что у Spring есть аналог, то есть технологии Java EE. Но Java EE устарела, и на новых проектах уже и не используется. В подавляющем большинстве сейчас Java-разработчик — это Java-Spring-разработчик, поэтому знание некоторых базовых технологий Spring обязательно. Spring — это не просто фреймворк, а целая платформа фреймворков:Чеклист Java-developer’а. Что должен знать разработчик - 7И это только часть фреймворков, которые предоставляет 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’а. Что должен знать разработчик - 8

  • Spring Boot

Эта технология в разы упрощает использование Spring. Я не просто так вынес ее в конец списка, ведь она скрывает многое под “капотом” и для человека, незнакомого с обычным Spring, многие моменты могут быть не очевидны и непонятны. Сперва для лучшего понимания работы фреймворков Spring стоит использовать обычный Spring, а — потом все высшие блага использования Spring Boot. Также советую ознакомиться со Spring Security и Spring AOP. Но в отличие от технологий, приведенных выше, глубокие познания этих двух сейчас не нужны. Это технологии не для новичков. На собеседованиях джунов о них не спрашивают (разве что один поверхностный вопрос). Почитайте обобщенно, что это за технологии и принципы работы. В этой статье я постоянно упоминал прочтение книг. С одной стороны, это не обязательно. Можно стать программистом, не прочитав ни единой книги, изучив все необходимое по статьям и обучающим видео. С другой стороны, на данный момент на рынке начинающих разработчиков конкуренция высока, что и завышает планку необходимых начальных знаний для новичка. Поэтому чем больше вы будете знать, тем быстрее вы сможете найти свою первую работу, впечатлив интервьюера уровнем своих знаний. Всем спасибо, и да пребудет с вами Java.Чеклист Java-developer’а. Что должен знать разработчик - 9
Комментарии (39)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Максим Уровень 37
13 апреля 2021
Классная статья с кучей полезных ссылок, спасибо! Почитал комментарии, что то большинство приуныло, а я наоборот взбодрился) Где то в середине марта дошел до 35-го уровня, решил что пока хватит, если что заскочить на стажировку и начал смотреть на разные требования на джуна и доучивать технологии. Как итог за месяц спокойно можно освоить на начальном уровне SQL (sql-ex правда крутой сайт с задачами, необязательно решать все), Maven, Git, Java EE(Servlet, JSP, JDBC),причем не выходя из этого сайта, есть много статей с примерами и написать пару простеньких CRUD приложений. Spring Core и MVC очень доступно разобран у alishev в ютубе, правда курс не полный, так что пришлось купить на юдеми курс по Spring, который неоднократно тоже здесь советовали. Так что доучиваю немного Spring и Hibernate (вот за него еще не брался), пишу опять простенькое приложение и иду испытывать свою удачу) А по поводу того, что кто то с 20-го уровня устраивается, у меня лично есть знакомый, который устроился с 19-го, зная только Java Сore и SQL, но это было почти 2 года назад, требований было меньше.
Ansagan Islamgali Уровень 32
5 февраля 2021
ООО боже как же вас тут так много на платформе. Статья от 2-го февраля и столько комментариев и лайков) 👍👍👍👍
Владислав Уровень 41
2 февраля 2021
Меня 3 дня назад взяли на работу. Прошел 41 уровень, и стажировку. Ушел год на все про все. Как говорится, глаза боятся - руки делают)
EkaterinaLvova Уровень 19
2 февраля 2021
Как по мне для начинающих еще хорош Вайсфельд "Объектно-ориентированный подход". Мне очень помогает.
Дмитрий Уровень 18
2 февраля 2021
У людей легкая паника с этой статьи =) Постараюсь сгладить рамки. 1. алгоритмы Познакомиться стоит. "Грокаем" советую читать вообще всем. Не во всех компаниях спрашивают. Важнее уметь понять алгоритм, построить свой. Время: 2 недели + 2. Syntax Авторы портала приводят примеры трудоустройства с 20+ уровня. “Head First Java” Можно просто почитать, чтобы освежить в памяти или глубже понять сложную тему. “Философия Java”, Брюс Экель; Это настольная книга Java разраба, на собеседовании её иметь не обязательно, потом да. 3. Паттерны Не критично для джуна. Будете мочь в паттерны, супер, нет, научитесь. 4. Чистота кода На собеседовании скорее всего не спросят. Вот после трудоустройства уже могут потребовать соблюдать их стандарты. Лучше привыкать заранее, делать все по красоте. Давать внятные имена переменным, писать комментарии, писать тайтлы. Время 1 неделя + 5. SQL Может и не пригодиться. Познакомиться стоит. Время: 2 недели + 6. MySQL/PostgreSQL Опять же для разраба тем более джуна, достаточно минимального понимания. С базами работают отдельные люди — Базисты =) 7. Maven/Gradle Познакомиться, мочь на примитивном уровне. Время 1 неделя + 8. Git Когда я стал недоджуном на Go, мне дали доступ, сказали тыкай сюда, пиши сюда. У конторы может быть один из популярных и не очень репозиториев. Просто познакомьтесь заранее, страшного нет совсем. Время 1 неделя + Все следующие пункты не испытывал на личном опыте. Страха не вызывают. Это инструменты написанные людьми для людей. Вспомните уроки труда, все инструменты лежат и ждут когда вы начнете ими пользоваться. Ничего страшного. Не ядерная физика. Итого после курса + алгоритмов, понадобится, как минимум 7 недель для знакомства и мин. опыта почти во всех пунктах этого списка. 2 месяца это небольшая цена за крутую и интересную работу. Если компания готова брать на позицию джуна, то там прекрасно понимают, что человек берется для роста. Под конкретную задачу, конкретный стек. Направят, обучат, подскажут и будут платить за это!
Михаил Уровень 9
2 февраля 2021
Чем тяжелее путь, тем слаще победа! Человек ценит только то, что получил с трудом!
Aleksandr Уровень 22
2 февраля 2021
Автору спасибо за статью! У каждого свой путь - у кого-то быстрее, у кого-то медленнее. А собеседоваться нужно даже когда нет полной уверенности в своих силах и полноте знаний - это знатно мотивирует и, шанс, что вас возьмут есть, а на реальной работе учишься гораздо быстрее - оно работает, я проверял. Так что руки не опускайте!
Юрий Уровень 31
2 февраля 2021
Все получится!!!! Выше нос будущие программисты!!! И не все так страшно....
Антон Володин Уровень 31
2 февраля 2021
Читая такте статьи руки почему-то начинают опускаться. Я понимаю, что чтоб чего-то достичь,надо приложить не мало усилий (в другой сфере уже достиг). Но понимая, какой одъем информации надо изучить, усвоить, чтобы просто начать, начинаю задумаваться а стоит ли это того. Может приложить столько услий в другой сфере?.. Занимаюсь с полного нуля 3 месяца по 3-6ч в день + январь на расслабоне (1-2 задачи в день). Чем больше изучаешь, тем лучше понимаешь, что еще столько надо изучить... Мне 35.
Dmitry Уровень 27
2 февраля 2021
Для новичков скажу: я уже год занимаюсь по часов 5 в среднем в день. Пока не катируюсь на джуна. чтобы вы понимали объем знаний и времени которые вам нужны.