Выберите текущую позицию
Укажите роль и уровень — система покажет путь развития, навыки и gap-анализ.
Путь развития
Junior
0-2 года
Ответственность: Разработка REST endpoints с Spring Boot. Написание unit-тестов (JUnit/Mockito). Работа с JPA/Hibernate. Исправление багов. Изучение Spring экосистемы.
Ключевые навыки:
Middle
2-5 лет
Ответственность: Проектирование и разработка микросервисов. Настройка Spring Security. Оптимизация JPA-запросов. Работа с message brokers. Code review. Миграция с Java на Kotlin.
Ключевые навыки:
- Самостоятельно реализовал 3+ проекта
- Провёл успешные код-ревью
- Участвовал в разрешении production инцидентов
Senior
5-8 лет
Ответственность: Проектирование distributed-систем. Тюнинг JVM (GC, memory). Reactive programming (WebFlux). Разработка библиотек и стартеров. Архитектура event-driven систем.
Ключевые навыки:
- Самостоятельно реализовал 3+ проекта
- Провёл успешные код-ревью
- Участвовал в разрешении production инцидентов
Lead / Staff
7-12 лет
Ответственность: Системная архитектура домена. Spring Cloud microservices. Стандарты для Java/Kotlin разработки. Координация с DevOps/Platform. Миграция legacy-монолитов.
Ключевые навыки:
- Самостоятельно реализовал 3+ проекта
- Провёл успешные код-ревью
- Участвовал в разрешении production инцидентов
Principal
10+ лет
Ответственность: Enterprise архитектура. Выбор JVM vs non-JVM для новых систем. Стратегия модернизации. Стандарты компании. Работа с вендорами.
Ключевые навыки:
- Самостоятельно реализовал 3+ проекта
- Провёл успешные код-ревью
- Участвовал в разрешении production инцидентов
Gap-анализ: навыки для развития
Для перехода на следующий уровень необходимо развить:
Проектирует Kafka-потоки для Java-сервисов: выбор partition key для ordering, настройка consumer concurrency, exactly-once semantics через transactional producer. Обрабатывает poison pills через DLT. Настраивает Schema Registry для Avro/Protobuf.
Оптимизирует connection pooling в Java: настраивает HikariCP для production (leak detection, connection test, validation timeout), использует Spring Boot Actuator для мониторинга pool metrics. Разбирается в statement caching и prepared statement pooling через JDBC driver settings.
Реализует CQRS в Java-проектах: использует Axon Framework для command/query separation, настраивает event handlers для обновления read models, применяет Spring Data для read-optimized repositories. Настраивает saga для координации распределённых команд.
Самостоятельно реализует интеграцию Elasticsearch в Java через Spring Data Elasticsearch/RestHighLevelClient. Проектирует маппинги индексов, строит сложные запросы с QueryBuilders и реализует bulk-индексацию со стратегиями refresh.
Проектирует GraphQL API для Java-сервисов: custom scalars, input types, enum mapping. Реализует DataLoader для решения N+1. Настраивает pagination через Relay Connection spec. Обрабатывает ошибки через GraphQL error extensions.
Разрабатывает gRPC-сервисы на Java/Kotlin: реализует streaming RPC, настраивает ServerInterceptor для аутентификации и трейсинга, интегрирует с Spring Boot через grpc-spring-boot-starter. Использует async stub с ListenableFuture для неблокирующих вызовов.
Самостоятельно реализует задачи с Java Spring Ecosystem. Понимает внутреннее устройство и оптимизирует производительность. Пишет тесты.
Самостоятельно проектирует схемы и оптимизирует запросы с MySQL / MariaDB. Понимает индексирование и планы выполнения запросов. Использует Hibernate/JPA эффективно.
Самостоятельно проектирует схемы и оптимизирует запросы с PostgreSQL. Понимает индексирование и планы выполнения запросов. Использует Hibernate/JPA эффективно.
Проектирует RabbitMQ-топологию для Java-сервисов: exchange-queue bindings, routing keys, priority queues. Настраивает publisher confirms и consumer acknowledgment. Реализует retry с exponential backoff. Мониторит через Management Plugin.
Реализует rate limiting в Java-сервисах: использует Bucket4j с Hazelcast/Redis для distributed limiting, настраивает Resilience4j RateLimiter с custom configuration per endpoint. Реализует tiered rate limiting через Spring interceptors с extraction key из JWT claims.
Проектирует стратегии кеширования для Java-сервисов: cache-aside, write-through, cache stampede protection через Redisson locks. Использует Redis Pub/Sub для инвалидации. Настраивает Lettuce connection pool и sentinel для HA.
Проектирует RESTful API по best practices: HATEOAS, content negotiation, pagination через Pageable. Реализует версионирование через URL path или headers. Документирует через SpringDoc/Swagger. Обрабатывает ошибки через @ControllerAdvice.
Определяет SLI для Java-сервисов — p99 задержку из метрик Micrometer, частоту ошибок из трекинга исключений и индикаторы здоровья JVM (паузы GC, утилизация heap). Настраивает мониторинг SLI с Spring Boot Actuator и Prometheus. Понимает error budgets и участвует в ротации дежурств для надёжности Java-сервисов.
Пишет Terraform-конфигурации для инфраструктуры Java-сервисов: EC2/ECS, RDS, ElastiCache, SQS/SNS. Использует модули для консистентности окружений dev/staging/prod. Работает с remote state (S3 бэкенд) и блокировкой state. Управляет переменными окружений через tfvars. Импортирует существующие AWS-ресурсы под управление Terraform.
Самостоятельно применяет алгоритмическое мышление в Java: выбирает эффективные Stream-операции для обработки данных, понимает паттерны параллельных алгоритмов с ForkJoinPool, оценивает компромиссы алгоритмов коллекций. Анализирует вычислительную сложность горячих путей кода в Spring-сервисах.
Самостоятельно применяет асинхронное программирование в Java: композиция CompletableFuture, реактивные потоки с Project Reactor/RxJava, виртуальные потоки (Loom). Понимает компромиссы между моделями thread-per-request, реактивной и виртуальных потоков.
Применяет продвинутые дженерики Java: использует wildcard-типы (? extends T, ? super T) по принципу PECS (Producer Extends, Consumer Super). Реализует generic utility-методы с рекурсивными type bounds (<T extends Comparable<T>>). Понимает bridge-методы, генерируемые type erasure, обрабатывает ограничения создания generic-массивов, применяет @SafeVarargs для предотвращения heap pollution в вариативных generic-методах.
Проектирует документацию API в Java-проектах: spec-first через OpenAPI YAML, code generation через openapi-generator. Документирует error codes, authentication flows, rate limits. Автоматизирует проверку актуальности через Spring REST Docs.
Самостоятельно проектирует схемы и оптимизирует запросы с Индексирование БД. Понимает индексирование и планы выполнения запросов. Использует Hibernate/JPA эффективно.
Самостоятельно применяет практики качества кода в Java/Spring-разработке. Пишет чистый код по конвенциям Spring с правильным dependency injection и scoping бинов. Понимает компромиссы между использованием паттернов проектирования и простотой кода. Ревьюит код на паттерны обработки исключений, управление транзакциями и консистентность дизайна API.
Самостоятельно проектирует схемы и оптимизирует запросы с Миграции БД. Понимает индексирование и планы выполнения запросов. Использует Hibernate/JPA эффективно.
Самостоятельно применяет многопоточность в Java: CompletableFuture для async-композиции, конкурентные коллекции и атомарные операции, ReentrantLock и Condition для продвинутой синхронизации, виртуальные потоки (Project Loom) для легковесной конкурентности. Решает типовые задачи конкурентного программирования самостоятельно.
Самостоятельно проектирует схемы и оптимизирует запросы с Оптимизация запросов. Понимает индексирование и планы выполнения запросов. Использует Hibernate/JPA эффективно.
Проектирует сетевую архитектуру для Java-сервисов: load balancing, reverse proxy (nginx/Envoy), service discovery (Eureka/Consul). Настраивает HTTP client timeouts и connection pooling в RestTemplate/WebClient.
Работает с messaging в Java-экосистеме: использует Spring Kafka для Kafka-интеграции, Spring Cloud Stream для абстракции от брокера, настраивает consumer groups и partition assignment. Применяет @KafkaListener с concurrency для параллельной обработки и настраивает error handler с retry.
Самостоятельно применяет паттерны проектирования в Java: стратегия со Spring profiles, шаблонный метод для воркфлоу сервисов, декоратор для потоковой обработки, observer со Spring Events. Понимает компромиссы между паттернами и конвенциями фреймворка в Spring Boot.
Самостоятельно применяет ООП/SOLID в Java/Spring: правильные контракты сервисов на основе интерфейсов, Spring DI для инверсии зависимостей, абстрактные классы для общего доменного поведения. Понимает компромиссы между иерархиями наследования и паттернами композиции в корпоративной Java-архитектуре.
Самостоятельно проектирует схемы и оптимизирует запросы с Проектирование схем данных. Понимает индексирование и планы выполнения запросов. Использует Hibernate/JPA эффективно.
Реализует версионирование API в Spring: URL-based, header-based, media type versioning. Поддерживает несколько версий одновременно через абстракции. Планирует deprecation lifecycle. Автоматизирует compatibility checks.
Проектирует многоуровневое кеширование: Caffeine (L1) + Redis (L2) через Spring Cache. Реализует cache-aside pattern с fallback на БД. Предотвращает cache stampede через distributed locks. Мониторит cache hit ratio.
Самостоятельно выбирает подходящие структуры данных в Java: ArrayList vs LinkedList для последовательных данных, HashMap vs TreeMap для поиска по ключу, concurrent-коллекции для многопоточных сценариев. Понимает компромиссы между реализациями коллекций для различных паттернов доступа и мутации.
Самостоятельно применяет возможности системы типов Java — wildcard generics, sealed classes для ADT и типобезопасные паттерны builder. Понимает компромиссы между стиранием типов и reified generics, raw types vs параметрический полиморфизм. Применяет типобезопасные паттерны с records, pattern matching и обработкой аннотаций при ревью кода.
Самостоятельно проектирует схемы и оптимизирует запросы с Транзакции и конкурентность. Понимает индексирование и планы выполнения запросов. Использует Hibernate/JPA эффективно.
Работает с шардированием в Java: реализует AbstractRoutingDataSource для multi-database routing, использует ShardingSphere для transparent sharding, настраивает HikariCP connection pools per shard. Применяет thread-local context для shard selection в Spring transactions.