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

в 20:42, , рубрики: java, spring framework, карьера, Программирование

Мой предыдущий пост возымел определенный эффект – несколько человек посчитали его очень мотивирующим и попросили меня дать некоторые советы и рекомендации, с чего же начать карьеру разработчика. Очевидно, вопрос слишком широкий и не имеет ответа как такового, поэтому я поставлю его более узко: что должен знать молодой 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. Различные рассуждения и дополнения категорически приветствуются.

Автор: tmn4jq

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js