1. Английский язык
Почему это важно:
- Вся документация пишется на английском языке.
- Работая в международной компании, все митинги, созвоны будут проводиться на английском языке. Поэтому вам необходимо иметь уровень хотя бы elementary или beginner. Во многих компаниях есть курсы английского языка, но эти курсы предназначены для увеличения вашего скила, а не для старта с нуля.
2. Git
Что нужно знать:
- git clone
- git pull
- git commit
- git push
- gist stash
3. Операционная система
Определитесь, с какой ОС вам предстоит работать. Для автоматизации действий вам придется писать скрипты: в случае Linux — bash-скрипты, а на Windows — bat-скрипты.
4. Алгоритмы и структуры данных
Что нужно знать:
- Алгоритмы сортировки.
- Как работать с деревьями.
- Понимать списки, очередь и стек.
- Сортировки: сортировка пузырьком, сортировка слиянием и так далее.
- Алгоритмы поиска.
- Математика: как считать среднее арифметическое, среднее геометрическое и т. д.
5. Java Core
Java Core — база языка программирования, в которую включены структуры данных, синтаксис и все прочее.
Java Basic
- Базовый синтаксис.
- ООП.
- Дженерики – шаблонные классы, которые подстраиваются под то, что вам необходимо; хранят и обрабатывают любые типы данных, которые вы укажите при их объявлении.
- Строки. Понимать, как делать сверку по шаблону, производить поиск в строках и т. д.
- Коллекции для хранения данных: Map, List, Array, Set (часто спрашивают на собеседованиях).
Потоки (Concurrency)
- Thread.
- Thread Pool.
- Паттерны многопоточных приложений.
Java 8 Features
- Lambda-функции (анонимные функции).
- Stream.
- Класс Optional.
- Функциональное программирование и прочее.
IO
- Понимать, как работать с файлами.
- Networking (Socket).
- Java NIO/NIO2 (часто встречается в вакансиях).
6. Tools
В совершенстве владеть своей IDE (Eclipse, IDEA, VSCode, vim) и понимать, как создавать приложения с нуля, как собирать приложения, какие плагины установить, пользоваться быстрыми клавишами и т. д.
Build (сборщики)
- Maven — использует xml для описания проекта.
- Gradle — использует язык программирования groovy для описания проекта.
Docker
- Docker Compose.
- Docker swarm.
- Kubernetes.
Jenkins
Jenkins позволяет настроить непрерывную интеграцию, тестирование, публикацию ваших приложений.
7. Фреймворки и библиотеки
Для бэкенда
- Spring: Spring Core (основа для создания сервисов), Spring Data (работа с БД), Spring cloud (работа с микросервисами), Spring Security (защита приложений).
- Hibernate — для работы с базой данных.
- Quarkus и Micronaut — позволяют быстро писать реактивные приложения.
- Vert.x — асинхронный веб-фреймворк.
Для десктопа
- JavaFX, Swing, AWT — для создания графического интерфейса в считаные часы.
Web basic (для фулстек-разработки)
- JavaScript: Angular, Vue.js или React.
- HTML5.
- Bootstrap.
8. Тестирование
Unit Testing — тестирование функционала вашей программы. Когда вы знаете, что должно быть на выходе, вы подаете метод и тесты сравнивают, удалось ли выполнить метод или нет, получили ожидаемый результат или нет.
- Библиотеки Junit, Mockito для тестирования действий при работе с базой данных.
- Auto Testing — Selenium позволяет создавать окна браузеров, заходить на веб-страницу, тестировать клики, поля ввода и т. д.
- Integration Test тестирует, как приложение встраивается в инфраструктуру и как оно в ней работает. Используемые библиотеки для написания сценариев: Selenium, Robot.
9. Utils
Углубиться в оптимизацию процесса работы и разработки:
- Log4j, SLF4j (логирование) — отслеживают действия клиентов.
- JavaDoc — описывает классы и в дальнейшем генерирует из этого документацию в формате .html или .pdf.
Java Analyze
Утилиты, которые помогают понять, где произошла ошибка:
- Heap Analyzer.
- Thread Dump Analyzer.
Java Analyze
- Jira для трекинга задач.
- GitLab, GitHub, BitBucked — необходимо уметь использовать сервисы для хранения исходного кода.
- AWS — важно знать, что такое микросервисы, как микросервисы разворачиваются и т. д.
- HTTP — приложение Postman, генерирующая запросы к серверам.
10. Базы данных
- SQL — DML (язык манипуляции с данными), DCL (язык дает доступ к определенным базам данных и таблицам), TCL (работа с транзакциями), DDL (язык определения данных).
- Как происходит подключение к БД с помощью драйвера JBDC.
- Hibernate.
- NOSQL.
- MySQL.
- MSSQL.
- PostgreSQL.
- MongoDB.
- ClickHouse.
11. Оптимизация приложений
- JMH.
- JIT.
- warmup.
- JVM (OpenJDK, AdoptOpenJDK, Zulu, GraalVm).
12. Куда расти
- Менеджер — работа с людьми.
- Архитектор — продумывать схемы работы приложений.
- Product Owner — совмещать разработку и менеджмент.
Скачать дорожную карту
Диаграмма в формате .pdf.
Комментарии