- PVSM.RU - https://www.pvsm.ru -

Минимальный набор знаний молодого разработчика

Мой предыдущий [1] пост возымел определенный эффект – несколько человек посчитали его очень мотивирующим и попросили меня дать некоторые советы и рекомендации, с чего же начать карьеру разработчика. Очевидно, вопрос слишком широкий и не имеет ответа как такового, поэтому я поставлю его более узко: что должен знать молодой java-разработчик, пишущий back-end?

Этот пост не является курсом молодого бойца, а является лишь:

  • Моей попыткой выбрать основные направления, в которых должен ориентироваться каждый начинающий java back-end разработчик.
  • Небольшим собранием материалов к изучению.
  • Описанием тестового проекта, который разработчик должен суметь реализовать с использованием указанных инструментов.

Цель:

  • Осветить список основных инструментов экосистемы языка, которыми необходимо уметь пользоваться и понимать на базовом уровне. Я не ставлю целью дать глубокое понимание инструментов, так как это самое понимание можно приобрести лишь с опытом.

Как я уже говорил, я буду оперировать терминами экосистемы Java, хотя в целом это легко можно спроецировать на любую другую платформу.

Итак, есть человек, понимающий ООП и прочитавший хотя бы одну стоящую книгу по языку от авторитетного автора. Человека в дальнейшем будем называть “падаван”, и если падаван не читал книг – все же стоит это сделать. Это необходимо для того, чтобы понимать возможности языка и его основных библиотек, но закапываться тоже не стоит – для начала одной хорошей книги будет достаточно. Фанатичное чтение без практики никаких особых плюсов не дает, особенно на начальных порах.

Значит, что мы пока что имеем:

  • Падаван – 1 единица.
  • Имеется понимание ООП.
  • Базовое понимание возможностей языка и знание основных его библиотек тоже в наличии.

Как можно применить имеющиеся пока знания? Никак. Для этого нужно погружаться в экосистему платформы. Для Java, по моему мнению, необходимо понимание следующих инструментов:

  • Collections Framework. Вообще говоря, это Core Java, то есть не часть экосистемы как таковой. Ориентироваться в структурах данных – обязательно. Необходимо четко понимать разницу между LinkedList [2] и ArrayList [3]. А также понимать, что такое Set и Map (а еще помнить, что Map – это не Collection). Хорошая статья про HashMap, например [4]. Я бы даже рекомендовал еще посмотреть сюда [5].

  • Иерархия исключений: тут [6]

  • Иерархию классов кстати тоже неплохо представлять в общих чертах. Хотя бы помнить, что все классы неявно наследуют от 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 можно скачать здесь [7];
  2. Поставить Maven [8];
  3. Создать первый Spring-boot проект. Здесь [9] описано лишь как создать “Hello, World!”;
  4. Поставить БД (например, postgre, h2 или mysql);
  5. Создать классы моделей. Точнее, один простейший класс;
  6. Реализовать CRUD (create-read-update-delete, операции с данными);
  7. Создать простейшую jsp-форму;
  8. Связать форму с контроллером.

По поводу пунктов 5-8 можно почитать следующее:

  • Здесь [10] есть все, но вместо добавления простейших сообщений автор предлагает добавлять сотрудников.
  • Эта статья [11] больше ориентирована на создание API-приложения, так что все понимать в ней ни к чему. Но прочитать ее тоже будет весьма недурно.

И это все! Я верю, если падаван освоит указанные моменты и сумеет не просто склепать простейшую блог-платформу, но и поймет, для чего он делал каждое из действий, то этого будет достаточно для первого трудоустройства на позицию junior java-developer. Различные рассуждения и дополнения категорически приветствуются.

Автор: tmn4jq

Источник [12]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/193680

Ссылки в тексте:

[1] предыдущий: https://habrahabr.ru/post/310028/

[2] LinkedList: https://habrahabr.ru/post/127864/

[3] ArrayList: https://habrahabr.ru/post/128269/

[4] например: https://habrahabr.ru/post/128017/

[5] сюда: https://habrahabr.ru/post/162017/

[6] тут: http://www.programcreek.com/2009/02/diagram-for-hierarchy-of-exception-classes/

[7] здесь: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

[8] Maven: https://maven.apache.org/install.html

[9] Здесь: http://docs.spring.io/spring-boot/docs/current/reference/html/getting-started-first-application.html

[10] Здесь: https://www.toptal.com/spring/beginners-guide-to-mvc-with-spring-framework

[11] Эта статья: https://stormpath.com/blog/tutorial-crud-spring-boot-20-minutes

[12] Источник: https://habrahabr.ru/post/311272/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best