Java #
Java/Spring - одна из лидирующих платформ для бэкенд разработки, несмотря на возраст. Хороша для старта карьеры, после чего можно углубляться в другие платформы и смежные области, потому что технологии не стоят на месте и их актуальность меняется со временем.
Базовый синтаксис #
Под базовым синтаксисом понимаются основы - переменные и типы данных, ветвления, циклы for/while.
По этому материалу существует огромное количество ресурсов, книг, курсов. Я советую совмещать теорию с практикой. В качестве теории - книгу или курс, в качестве практики по закреплению синтаксиса - задачи.
Избранные курсы и учебные ресурсы #
- Курс “Java для начинающих” Наиля Алишева, глава - “Основы Java”, курс Продвинутая Java, глава “Коллекции”
- Курс “Java (Джава) для начинающих: с нуля до сертификата Oracle” Заура Трегулова, первые 20 уроков
- “Философия Java” Эккеля, главы 3, 4, 11, 13
- Мой live-coding стрим по написанию проекта в процедурном стиле - https://www.youtube.com/watch?v=PPikj1qHxrA
- Практика:
- Cайты с задачами, например https://app.codesignal.com/. Важно не переборщить с задачами, как только рука будет набита, и задачи уровня medium решаются легко, следует идти дальше.
- Практика - Проект “Виселица”
Предлагаемый порядок изучения материалов:
- Выбрать 1 курс или книгу, точечно изучить те главы, которые я озвучил
- Параллельно изучению теории решать задачи
- Написать проект “Виселица”
Объектно-ориентированное программирование #
ООП является одной из ключевых идей в основе Java. Потенциальная “глубина” владения ООП велика, и этот навык растет годами.
Что нужно знать и уметь:
- Синтаксис описания классов, работы с объектами
- Основные идеи ООП - инкапсуляция, наследование, полиморфизм
- Писать свои классы и иерархии
- Понимать чем плохой ООП код отличается от хорошего
Избранные курсы и учебные ресурсы #
- Курс “Java для начинающих” Наиля Алишева, главы со второй по пятую
- Курс “Java (Джава) для начинающих: с нуля до сертификата Oracle”, уроки с 21 до конца
- “Философия Java” Эккеля, главы 1, 2, 6, 7, 8, 12, 19
- Серия моих live-coding стримов по написанию проекта в ООП стиле - https://www.youtube.com/watch?v=Pzydm8GZzMs
- Практика:
- Практика - Проект “Симуляция”
Предлагаемый порядок изучения материалов:
- Выбрать 1 курс или книгу, точечно изучить те главы, которые я озвучил
- Написать проект “Симуляция”
Паттерны проектирования #
Паттерны проектирования, общепринятые “рецепты” классов для решения повторяющихся задач. Большинство задач являются типовыми, или их вариациями, и паттерны проектирования предлагают набор решения для этих задач.
Каждый паттерн - класс или семейство классов с определённым стилем именования и набором методов.
Что нужно знать:
- Постепенно осваивать паттерны, начиная с самых популярных - Singleton, Factory
Избранные курсы и учебные ресурсы #
- Книги - “Java Head First Design Patterns”, “GoF Design Patterns”
- Репозиторий с примерами реализации паттернов на Java - https://github.com/iluwatar/java-design-patterns
- Примеры применения паттернов в стандартных библиотеках Java - https://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns-in-javas-core-libraries
- https://refactoring.guru/ - коллекция кратких статей по каждому паттерну с примерами
- Практика - проекты курса, начиная со 2, содержат проблемы, которые можно решить с помощью паттернов
MVC #
MVC - самый актуальный для бэкенд приложений паттерн.
Суть MVC - разбиение кода на “слои”, каждый из которых занимается одной задачей:
- Модели - описывают сущности приложения
- View - отображение состояния, в виде веб-страниц, JSON ответов
- Контроллер - принятие запросов от пользователя, создание модели и view для генерации ответа
Зачастую, MVC расширяется ещё одним слоем - Service, такой паттерн называется MVCS. Классы-сервисы описывают бизнес-логику приложения.
Избранные курсы и учебные ресурсы #
- Моя лекция по MVC - https://www.youtube.com/watch?v=syjOb_jPJWE
- Статья с примерами - https://github.com/iluwatar/java-design-patterns/tree/master/model-view-controller
- Книги - “Java Head First Design Pattern”, глава 12 “составные паттерны”
- Практика - проекты курса, начиная с 4
Чистый код #
Чистый код - это код, понятный и податливый к изменениям. Писать такой код - навык, развивающийся на протяжении всей карьеры.
Практические проекты в рамках этого курса подразумевают не только использование фреймворков и библиотек, но и реализацию логики своими силами. Написание кода с нуля и работа над ним является главным элементом в повышении чистоты своего кода.
Избранные курсы и учебные ресурсы #
- Книги - “Чистый код” Мартина, “Рефакторинг” Фаулера, “Совершенный код” Макконнелла
- Плейлист с моими live coding стримами, где я пишу код, озвучивая свои мысли и комментируя принятые решения - https://www.youtube.com/playlist?list=PLOVOZrcS3XMZ-QJDHowJQ3abxNHoW8pV3
- Плейлист с избранными ревью реализаций проектов курса студентами - https://www.youtube.com/playlist?list=PLOVOZrcS3XMbS4iInU-7p6TbIQW-kATfz
- Практика:
- Писать проекты курса, отправлять их мне на ревью. Примеры готовых проектов с ревью
- Читать чужой код и оценивать его качество
Что дальше #
- Kotlin - совместимый с Java язык с более “чистым” синтаксисом
- Реактивное программирование