Понимает базовые алгоритмические концепции в Java: простые Stream-операции, базовая сортировка и поиск в коллекциях, алгоритмы на основе циклов для обработки данных. Следует руководству команды по выбору алгоритмов и применяет стандартные операции Java Collections Framework.
Роли · Backend Developer (Java/Kotlin) · Junior
Что должен уметь Junior }
27 ключевых навыков, всего 72. Ожидания по каждому навыку и что меняется на следующем уровне.
На этой странице — что ожидается от Junior }, навык за навыком. Ключевые навыки оценивают руководитель и коллеги в цикле ревью; остальные учитываются только в самооценке. Основные области: Основы программирования, Backend Development, Базы данных.
Ключевые навыки для Junior
Сгруппированы по областям. Метка справа — ожидаемая глубина: Осведомлённость, Применение, Продвинутый или Эксперт.
Основы программирования · 9
Понимает основы асинхронного программирования в Java: основы CompletableFuture, аннотации @Async в Spring, простые паттерны callback. Следует командным конвенциям дизайна async-методов и понимает базовую композицию Future.
Понимает основы дженериков Java: объявляет generic-классы и методы с type-параметрами, использует bounded type parameters (extends/super). Знает о type erasure и его последствиях — нельзя создать экземпляр T или использовать instanceof с generic-типами. Корректно применяет generic-коллекции (List<String>, Map<K,V>) и избегает raw types в новом коде.
Понимает базовые принципы качества кода для Java/Spring-разработки. Следует командным стандартам кодирования и правилам Checkstyle/PMD. Пишет простые, чистые методы по конвенциям именования Java и паттернам Spring. Принимает обратную связь на код-ревью и применяет принципы SOLID в базовых реализациях.
Понимает основы многопоточности в Java: основы Thread и Runnable, ключевое слово synchronized и базовая блокировка, ExecutorService для управления пулами потоков, понимание volatile и гарантий happens-before. Следует командным конвенциям конкурентного кода в Spring-приложениях.
Понимает базовые паттерны проектирования в Java: Singleton, Factory Method, Builder, Observer в обработке событий, внедрение зависимостей со Spring IoC-контейнером. Следует командным конвенциям использования паттернов в Spring Boot приложениях.
Понимает базовые концепции ООП в Java: классы, интерфейсы, абстрактные классы, инкапсуляция. Применяет простые принципы SOLID, следуя структуре Spring-проекта. Следует командным паттернам дизайна классов сервисов/контроллеров/репозиториев и аннотаций Spring DI.
Понимает базовые типы коллекций Java: ArrayList, HashMap, HashSet для типичных операций. Следует командным конвенциям для классов сущностей и структур DTO. Применяет простые структуры данных для CRUD-операций и обработки запросов/ответов контроллеров Spring.
Понимает основы системы типов Java — дженерики, ограниченные параметры типов и Optional для null safety. Следует принятым в команде соглашениям по типобезопасным коллекциям, паттернам enum и dependency injection на основе интерфейсов с правильными иерархиями типов.
Backend Development · 6
Понимает зачем нужно кеширование в Java-приложениях. Применяет Spring Cache abstraction: @Cacheable для read-heavy операций. Инвалидирует кеш при обновлении данных. Знает разницу между local и distributed cache.
Понимает основы Kafka для Java-сервисов: настройка Spring Kafka producer/consumer, концепции topic/partition и сериализация сообщений с Avro/JSON. Следует командным практикам конфигурации consumer groups и базовой обработки ошибок при обработке сообщений.
Использует Elasticsearch / OpenSearch на базовом уровне. Выполняет простые задачи по готовым шаблонам. Понимает базовые концепции и следует принятым в команде практикам.
Использует Java Spring Ecosystem на базовом уровне. Выполняет простые задачи по готовым шаблонам. Понимает базовые концепции и следует принятым в команде практикам.
Работает с RabbitMQ через Spring AMQP: отправляет сообщения в exchange, слушает очереди через @RabbitListener. Понимает exchange types (direct, topic, fanout). Обрабатывает ошибки через retry и DLQ.
Использует Redis через Spring Data Redis для кеширования: @Cacheable, @CacheEvict, @CachePut. Работает со строками, хешами, списками. Понимает TTL и eviction policies. Настраивает RedisTemplate с Jackson serializer.
Базы данных · 7
Создаёт индексы для ускорения частых запросов. Понимает разницу между B-tree, hash и GIN индексами. Использует EXPLAIN для проверки использования индексов. Знает о влиянии индексов на скорость записи.
Пишет миграции через Flyway/Liquibase: CREATE TABLE, ALTER TABLE, добавление индексов и constraints. Понимает версионирование миграций и rollback. Тестирует миграции на dev-среде.
Понимает N+1 проблему в JPA и решает через fetch join / @EntityGraph. Использует EXPLAIN ANALYZE для анализа запросов. Избегает SELECT * и загрузки ненужных связей.
Проектирует простые схемы данных с JPA: Entity, связи @OneToMany/@ManyToMany, embedded types. Понимает нормализацию. Использует @Enumerated, @Temporal для типизации колонок.
Понимает ACID-свойства и уровни изоляции. Использует @Transactional в Spring для управления транзакциями. Обрабатывает deadlocks и optimistic locking через @Version. Знает разницу между read committed и repeatable read.
Пишет SQL-запросы для CRUD-операций через JPA/Hibernate. Создаёт таблицы, индексы, foreign keys. Понимает нормализацию до 3NF. Работает с MySQL Workbench для анализа данных.
Работает с PostgreSQL через JPA/Hibernate: маппинг сущностей, JPQL-запросы, native queries. Использует pgAdmin для анализа данных и схем. Понимает типы данных PostgreSQL: UUID, JSONB, arrays.
API и интеграции · 4
Документирует API через SpringDoc/OpenAPI аннотации: @Operation, @ApiResponse, @Schema. Описывает параметры, тела запросов и примеры ответов. Поддерживает Swagger UI в актуальном состоянии.
Понимает зачем нужно версионирование API. Работает с разными версиями через URL path (/v1, /v2). Поддерживает backward compatibility при добавлении новых полей. Знает семантическое версионирование.
Создаёт простые GraphQL-схемы через Spring for GraphQL: типы, queries, mutations. Реализует resolvers с @QueryMapping/@MutationMapping. Понимает разницу между REST и GraphQL. Тестирует через GraphiQL.
Создаёт REST endpoints через Spring MVC: @RestController, @GetMapping/@PostMapping, @RequestBody/@PathVariable. Возвращает правильные HTTP-статусы. Валидирует input через @Valid и Bean Validation.
Облако и инфраструктура · 1
Понимает TCP/IP, DNS, HTTP/HTTPS в контексте Java-приложений. Настраивает Spring Boot: server.port, ssl, compression. Диагностирует проблемы соединения. Понимает CORS и настраивает через WebMvcConfigurer.
Дополнительные навыки
Команда их не оценивает, но они входят в самооценку и план развития.
Что меняется на Middle
74 навыков получают более высокое ожидание или становятся ключевыми при переходе с Junior на Middle. Сначала самые большие скачки.
- Паттерны Message Brokers: Осведомлённость → Применение · становится ключевым
- Шардирование БД: Осведомлённость → Применение · становится ключевым
- Connection Pooling: Осведомлённость → Применение · становится ключевым
- CQRS: Осведомлённость → Применение · становится ключевым
- gRPC и Protocol Buffers: Осведомлённость → Применение · становится ключевым
- Rate Limiting и Throttling: Осведомлённость → Применение · становится ключевым
- SLI / SLO / SLA: Осведомлённость → Применение · становится ключевым
- Terraform: Осведомлённость → Применение · становится ключевым
- Алгоритмы и сложность: Осведомлённость → Применение
- Асинхронное программирование: Осведомлённость → Применение
} в открытой матрице компетенций: 72 навыков на 5 уровнях. Матрица бесплатна для специалистов и останется бесплатной.