Перейти к основному содержимому
DevScallix
← Java Backend Career TrackПриём заявок открыт

Java Backend Career Track: Полная программа — 24 недели

Шесть этапов от первой программы до защищённого backend-проекта. В каждой неделе есть конкретная лабораторная работа и практическое задание, большинство заданий сдаётся как Pull Request.

Это планируемая программа для первой группы. Порядок и глубина могут корректироваться до начала и во время обучения в зависимости от уровня группы. Недельная нагрузка и расписание объявляются вместе с группой.

01 · Недели 1–4

Основы

Цель этапа: Писать и отлаживать небольшие программы на Java и пользоваться Git.

  1. Неделя 1

    Как работают программы

    • JDK, JVM и IDE
    • Компиляция и запуск программы
    • Переменные, типы и операторы
    • Чтение ошибок компилятора
    • Первые коммиты в Git

    Лабораторная: Настройте JDK, IntelliJ IDEA и Git, затем напишите небольшой консольный калькулятор и закоммитьте его осмысленными шагами.

    Задание: Конвертер единиц (например, температуры и длины) с аккуратной историей коммитов в репозитории на GitHub.

  2. Неделя 2

    Управление потоком, методы и отладка

    • Условия и циклы
    • Методы и параметры
    • Отладка с breakpoint
    • Разбиение задачи на шаги

    Лабораторная: Напишите игру «угадай число», разбив её на небольшие методы, и найдите заранее заложенную ошибку с помощью отладчика.

    Задание: Программа с текстовым меню (например, простой учёт расходов в памяти) и короткая заметка о том, как вы разбили задачу на шаги.

  3. Неделя 3

    Массивы, строки и простые алгоритмы

    • Массивы и строки
    • Линейный и бинарный поиск
    • Интуиция сортировки
    • Мышление о стоимости (интуиция Big-O)

    Лабораторная: Реализуйте поиск и простую сортировку вручную, затем сравните, сколько шагов каждому нужно на растущих входных данных.

    Задание: Инструмент статистики слов для текста (количество слов, самые частые слова) и письменное сравнение двух подходов.

  4. Неделя 4

    ООП I и первый Pull Request

    • Классы и объекты
    • Инкапсуляция
    • Конструкторы
    • Ветки Git
    • Первый Pull Request

    Лабораторная: Смоделируйте небольшую предметную область (например, банковский счёт или книгу в библиотеке) классами и отправьте её из feature-ветки как Pull Request.

    Задание: Перепишите консольное приложение этапа с использованием классов, сдайте как Pull Request и учтите замечания ревью.

Контрольная точка: Консольное приложение, сданное как Pull Request, прошедшее ревью и доработанное по замечаниям.

02 · Недели 5–9

Java Core

Цель этапа: Моделировать предметную область чистым и протестированным кодом на Java.

  1. Неделя 5

    ООП II и первые принципы SOLID

    • Интерфейсы и полиморфизм
    • Наследование и композиция
    • Single responsibility и open/closed
    • Проектирование с учётом изменений

    Лабораторная: Отрефакторите небольшой пример уведомлений или платежей с наследования на интерфейсы и композицию.

    Задание: Спроектируйте небольшую предметную область (например, расчёт цены заказа с несколькими правилами скидок) за интерфейсами и сдайте как Pull Request.

  2. Неделя 6

    Коллекции и generics

    • List, Set, Map и Deque
    • Выбор коллекции по характеру доступа
    • Generics и типобезопасность
    • Итерация и сортировка с Comparator

    Лабораторная: Решите одну задачу (например, поиск заказов по клиенту) разными коллекциями и объясните, какая подходит лучше.

    Задание: Каталог в памяти с поиском, группировкой и сортировкой и короткая заметка о том, почему вы выбрали каждую коллекцию.

  3. Неделя 7

    Исключения, равенство, record и enum

    • Checked и unchecked исключения
    • equals и hashCode
    • Record и enum
    • Неизменяемость
    • Проектирование обработки ошибок

    Лабораторная: Замените коды ошибок в прежнем проекте осмысленными исключениями и превратите объекты-значения в record.

    Задание: Добавьте в модель предметной области валидацию, собственные исключения и неизменяемые объекты-значения, сдайте как Pull Request.

  4. Неделя 8

    Лямбды, stream и чистый код

    • Лямбды и функциональные интерфейсы
    • Stream: map, filter, collect
    • Optional
    • Именование и небольшие функции
    • Читаемые условия

    Лабораторная: Перепишите код с множеством циклов на stream там, где это улучшает читаемость, и разбейте один длинный метод на небольшие именованные.

    Задание: Функция отчёта в вашей предметной области на stream (например, суммы по клиентам) и самопроверка читаемости.

  5. Неделя 9

    Тестирование, Maven и основы конкурентности

    • Unit-тесты с JUnit 5 и AssertJ
    • Сборка Maven и зависимости (и чем отличается Gradle)
    • Дизайн теста: arrange, act, assert
    • Потоки и ExecutorService
    • Почему общее состояние — это сложно

    Лабораторная: Переведите проект на Maven, напишите unit-тесты для ключевых правил и запустите небольшую задачу через ExecutorService.

    Задание: Увеличьте покрытие осмысленного поведения тестами, продемонстрируйте race condition и покажите один способ её устранить.

Контрольная точка: Протестированная библиотека предметной области (например, библиотека или заказы), code review и короткая защита проектных решений.

03 · Недели 10–12

Данные

Цель этапа: Проектировать реляционную модель, делать по ней запросы и использовать её из Java.

  1. Неделя 10

    Основы SQL с PostgreSQL

    • PostgreSQL в Docker
    • SELECT и фильтрация
    • Join
    • Агрегация и группировка

    Лабораторная: Запустите PostgreSQL в Docker, загрузите небольшой набор данных и ответьте на бизнес-вопросы запросами.

    Задание: Набор SQL-запросов по заданной схеме, у каждого однострочное пояснение, сдаётся как Pull Request.

  2. Неделя 11

    Моделирование данных и транзакции

    • Первичные и внешние ключи
    • Нормализация
    • Ограничения (constraints)
    • Первые индексы и чтение плана запроса
    • Транзакции и ACID

    Лабораторная: Спроектируйте схему для домена заказов, добавьте ограничения и индекс и сравните план запроса до и после.

    Задание: ER-диаграмма и SQL-схема для вашей небольшой предметной области и заметка о том, какое ограничение защищает какое правило.

  3. Неделя 12

    От JDBC к JPA/Hibernate

    • Основы JDBC
    • Сущности и связи
    • Репозитории
    • Проблема N+1
    • Миграции Flyway

    Лабораторная: Сначала прочитайте данные через чистый JDBC, затем отобразите их через JPA, спровоцируйте запросы N+1 и исправьте.

    Задание: Сохраните вашу предметную область через JPA и миграции Flyway; сдайте как Pull Request вместе со скриптами миграций.

Контрольная точка: Ревью модели данных: ER-диаграмма, миграции и объяснённые запросы.

04 · Недели 13–17

Spring и REST API

Цель этапа: Построить защищённый, валидируемый и протестированный REST API.

  1. Неделя 13

    Spring Core

    • Inversion of Control
    • Dependency injection и bean
    • Конфигурация и properties
    • Профили

    Лабораторная: Свяжите небольшой сервис вручную, затем доверьте это Spring и переключите поведение между двумя профилями.

    Задание: Настраиваемый компонент (например, калькулятор цены с параметрами для разных сред), сдаётся как Pull Request.

  2. Неделя 14

    Spring Boot REST

    • Контроллеры и DTO
    • HTTP-методы и семантика
    • Дизайн ресурсов и коды статуса
    • Пагинация и фильтрация
    • Работа с HTTP-клиентом

    Лабораторная: Откройте вашу предметную область как REST API с созданием, чтением, обновлением и удалением и проверьте её HTTP-клиентом.

    Задание: Спроектируйте и реализуйте endpoint-ы для одного ресурса с корректными кодами статуса и пагинацией, с короткой заметкой о дизайне API.

  3. Неделя 15

    Валидация, ошибки и сервисный слой

    • Bean Validation
    • Единообразные ответы об ошибках (Problem Details)
    • Сервисный слой
    • @Transactional и его границы

    Лабораторная: Добавьте валидацию и глобальный обработчик исключений, возвращающий Problem Details, и перенесите бизнес-правила в сервис.

    Задание: Сделайте так, чтобы API единообразно отклонял неверный ввод, а каждая бизнес-операция выполнялась в одной транзакции; сдайте как Pull Request.

  4. Неделя 16

    Spring Security

    • Аутентификация и авторизация
    • Хеширование паролей
    • Роли и защищённые endpoint-ы
    • Сессии и JWT (базовый уровень)
    • Типичные ошибки, которых стоит избегать

    Лабораторная: Добавьте регистрацию и вход, хешируйте пароли и защитите endpoint-ы по ролям.

    Задание: Защитите API так, чтобы пользователи видели только разрешённое, и добавьте короткую заметку об угрозах с перечнем того, что дизайн не покрывает.

  5. Неделя 17

    Тестирование Spring-приложений и документация API

    • Slice-тесты
    • Интеграционные тесты с Testcontainers
    • Моки с Mockito там, где уместно
    • Документация OpenAPI

    Лабораторная: Напишите slice-тест контроллера и интеграционный тест репозитория с PostgreSQL в Testcontainers и сгенерируйте документ OpenAPI.

    Задание: Покройте тестами основные сценарии API и опубликуйте его описание OpenAPI; сдайте как Pull Request.

Контрольная точка: Защищённый REST API, прошедший ревью в виде Pull Request и защищённый перед ревьюером.

05 · Недели 18–21

Доставка и системы

Цель этапа: Запускать сервис так, как это делает команда, и понимать следующий слой систем.

  1. Неделя 18

    Docker и конфигурация

    • Образы и контейнеры
    • Dockerfile для API
    • docker compose для API и базы данных
    • Основы конфигурации и секретов

    Лабораторная: Упакуйте API в контейнер и запустите его вместе с PostgreSQL через docker compose, получая конфигурацию из окружения.

    Задание: Воспроизводимая локальная среда: одной командой запускаются API и база данных, описано в README, сдаётся как Pull Request.

  2. Неделя 19

    CI/CD и основы наблюдаемости

    • Pipeline, который собирает, тестирует и упаковывает
    • GitHub Actions
    • Структурированные логи
    • Health check и метрики через Actuator
    • Чтение логов для поиска проблемы

    Лабораторная: Создайте workflow GitHub Actions, который собирает и тестирует проект и собирает образ, и откройте endpoint-ы health и метрик.

    Задание: Добавьте в проект pipeline и endpoint-ы Actuator и исправьте намеренно сломанную сборку; сдайте как Pull Request.

  3. Неделя 20

    Redis, messaging и основы Kafka

    • Кеширование в Redis и TTL
    • Что не стоит кешировать
    • Зачем нужен асинхронный обмен сообщениями
    • Топики Kafka, producer и consumer
    • По одному практическому упражнению на каждый инструмент

    Лабораторная: Закешируйте в Redis один часто читаемый endpoint, затем опубликуйте событие в локальную Kafka и получите его во втором небольшом приложении.

    Задание: Короткая записка о том, где кеширование и messaging помогли бы вашему проекту, а где нет, и рабочие упражнения.

  4. Неделя 21

    Микросервисы и основы облака

    • Границы сервисов
    • Когда систему не стоит делить
    • Регионы и управляемые базы данных
    • Запуск контейнера в облаке

    Лабораторная: Набросайте, как мог бы делиться ваш проект, приведите аргументы против деления и пройдите шаги запуска его контейнера в облачной среде.

    Задание: Одностраничная архитектурная записка со сравнением единого приложения и разделённого дизайна для вашего проекта и вашей рекомендацией.

Контрольная точка: Демонстрация работающей системы (API, база данных, контейнер и pipeline) с коротким разбором.

06 · Недели 22–24

Итоговый проект и карьера

Цель этапа: Сдать и защитить законченный backend-проект и подготовиться к собеседованиям.

  1. Неделя 22

    Планирование итогового проекта и первые инкременты

    • Требования
    • Модель предметной области
    • Дизайн API
    • Записи о решениях (ADR)
    • Разработка через Pull Request

    Лабораторная: Напишите требования, модель предметной области и набросок API итогового проекта, зафиксируйте ключевые решения в ADR и откройте первые Pull Request.

    Задание: Спланированный и прошедший ревью backlog итогового проекта и влитый первый работающий вертикальный срез.

  2. Неделя 23

    Разработка итогового проекта, ревью и подготовка к собеседованию

    • Разработка и ревью через Pull Request
    • Вопросы по Java, SQL и Spring
    • Рассказ о собственном проекте
    • Ревью кода коллеги

    Лабораторная: Завершите основные функции с тестами и pipeline и потренируйтесь вслух объяснять одно проектное решение.

    Задание: Стабильная ветка итогового проекта с README, тестами и pipeline и письменные ответы на набор технических вопросов.

  3. Неделя 24

    Итоговая практическая оценка

    • Защита итогового проекта
    • Live-упражнение по code review
    • Симуляция собеседования
    • Личный план следующих шагов

    Лабораторная: Представьте и продемонстрируйте итоговый проект, проведите ревью незнакомого кода вживую и пройдите пробное техническое собеседование.

    Задание: Личный план следующих шагов по итогам оценки: сильные стороны, пробелы и что практиковать дальше.

Контрольная точка: Итоговая практическая оценка.

Как оценивается обучение

  • Еженедельное ревью Pull Request с письменной обратной связью по именованию, структуре, тестам и дизайну.
  • Контрольная точка в конце каждого этапа с короткой защитой ваших решений.
  • Практические задачи вместо заучивания: оценивается код, который вы написали и можете объяснить.
  • Итоговая практическая оценка: итоговый проект, live code review и симуляция собеседования.
  • Обратная связь — это рекомендация по следующим шагам; результат зависит от вашей собственной работы и регулярности.
  • Ни одна программа не может гарантировать трудоустройство, и эта тоже не гарантирует.

Инструменты, которые вы будете использовать

  • JDK 21
  • IntelliJ IDEA
  • Git и GitHub
  • Maven (с обзором Gradle)
  • JUnit 5
  • AssertJ
  • Mockito
  • PostgreSQL
  • Flyway
  • Spring Boot 3
  • Spring Security
  • Testcontainers
  • Docker и docker compose
  • HTTP-клиент (например, Postman или IntelliJ HTTP Client)
  • GitHub Actions
  • Redis
  • Kafka (локально)

Нагрузка

Недельная нагрузка и расписание объявляются вместе с группой. Кроме живых занятий, планируйте регулярную самостоятельную практику каждую неделю: основная часть обучения проходит в лабораторных работах и заданиях.

Подать заявкуВернуться на страницу программыЗадать вопрос о плане