Roles · Backend Developer (Java/Kotlin) · Junior

What a Junior } should know

27 core skills, 72 in total. Expectations per skill, and what changes at the next level.

This page lists what a Junior } is expected to know and do, skill by skill. Core skills are the ones a manager and peers assess in a review cycle; the rest count only in self-assessment. Main areas: Programming Fundamentals, Backend Development, Database Management.

27core skills
45additional skills
5skill areas
0%at Advanced or Expert
Assess myself as Junior Full role matrix

Core skills for a Junior

Grouped by area. The label on the right is the expected depth: Awareness, Working, Advanced or Expert.

Programming Fundamentals · 9

Understands basic algorithmic concepts in Java: simple Stream operations, basic sorting and searching in collections, loop-based algorithms for data processing. Follows team guidance on algorithm selection and applies standard Java Collections Framework operations.

Async Programming Awareness

Understands basic async programming in Java: CompletableFuture basics, @Async annotations in Spring, simple callback patterns. Follows team conventions for async method design and understands basic Future composition.

Understands basic code quality principles for Java/Spring development. Follows team coding standards and Checkstyle/PMD rules. Writes simple, clean methods following Java naming conventions and Spring patterns. Accepts code review feedback and applies SOLID principles in basic implementations.

Data Structures Awareness

Understands basic Java collection types: ArrayList, HashMap, HashSet for common operations. Follows team conventions for entity classes and DTO structures. Applies simple data structures for CRUD operations and Spring controller request/response handling.

Design Patterns Awareness

Understands basic design patterns in Java: Singleton, Factory Method, Builder pattern, Observer in event handling, dependency injection with Spring IoC container. Follows team conventions for pattern usage in Spring Boot applications.

Understands Java generics fundamentals: declares generic classes and methods with type parameters, uses bounded type parameters (extends/super). Aware of type erasure and its implications — cannot instantiate T or use instanceof with generic types. Correctly applies generic collections (List<String>, Map<K,V>) and avoids raw types in new code.

Multithreading Awareness

Understands basic multithreading in Java: Thread and Runnable basics, synchronized keyword and basic locking, ExecutorService for thread pool management, understanding of volatile and happens-before guarantees. Follows team conventions for concurrent code in Spring applications.

Understands basic OOP concepts in Java: classes, interfaces, abstract classes, encapsulation. Applies simple SOLID principles following Spring project structure. Follows team patterns for service/controller/repository class design and Spring DI annotations.

Understands basics of Java type system — generics, bounded type parameters, and Optional for null safety. Follows team conventions for type-safe collections, enum patterns, and interface-based dependency injection with proper type hierarchies.

Backend Development · 6

Apache Kafka Awareness

Understands Kafka fundamentals for Java services: Spring Kafka producer/consumer setup, topic/partition concepts, and message serialization with Avro/JSON. Follows team practices for consumer group configuration and basic error handling in message processing.

Caching Strategies Awareness

Understands why caching is needed in Java applications. Applies Spring Cache abstraction: @Cacheable for read-heavy operations. Invalidates cache on data updates. Knows the difference between local and distributed cache.

Uses Elasticsearch / OpenSearch at basic level. Performs simple tasks using ready templates. Understands basic concepts and follows team practices.

Uses Java Spring Ecosystem at basic level. Performs simple tasks using ready templates. Understands basic concepts and follows team practices.

RabbitMQ Awareness

Works with RabbitMQ via Spring AMQP: sends messages to exchange, listens to queues via @RabbitListener. Understands exchange types (direct, topic, fanout). Handles errors through retry and DLQ.

Redis Awareness

Uses Redis via Spring Data Redis for caching: @Cacheable, @CacheEvict, @CachePut. Works with strings, hashes, lists. Understands TTL and eviction policies. Configures RedisTemplate with Jackson serializer.

Database Management · 7

Designs simple data schemas with JPA: Entity, @OneToMany/@ManyToMany relationships, embedded types. Understands normalization. Uses @Enumerated, @Temporal for column typing.

Database Indexing Awareness

Creates indexes to speed up frequent queries. Understands the difference between B-tree, hash, and GIN indexes. Uses EXPLAIN to verify index usage. Knows about index impact on write speed.

Writes migrations via Flyway/Liquibase: CREATE TABLE, ALTER TABLE, adding indexes and constraints. Understands migration versioning and rollback. Tests migrations on dev environment.

MySQL / MariaDB Awareness

Writes SQL queries for CRUD operations via JPA/Hibernate. Creates tables, indexes, foreign keys. Understands normalization up to 3NF. Uses MySQL Workbench for data analysis.

PostgreSQL Awareness

Works with PostgreSQL via JPA/Hibernate: entity mapping, JPQL queries, native queries. Uses pgAdmin for data and schema analysis. Understands PostgreSQL data types: UUID, JSONB, arrays.

Query Optimization Awareness

Understands N+1 problem in JPA and solves via fetch join / @EntityGraph. Uses EXPLAIN ANALYZE for query analysis. Avoids SELECT * and loading unnecessary associations.

Understands ACID properties and isolation levels. Uses @Transactional in Spring for transaction management. Handles deadlocks and optimistic locking via @Version. Knows the difference between read committed and repeatable read.

API & Integration · 4

API Documentation Awareness

Documents API via SpringDoc/OpenAPI annotations: @Operation, @ApiResponse, @Schema. Describes parameters, request bodies, and response examples. Keeps Swagger UI up to date.

Understands why API versioning is needed. Works with different versions via URL path (/v1, /v2). Maintains backward compatibility when adding new fields. Knows semantic versioning.

GraphQL Design Awareness

Creates simple GraphQL schemas via Spring for GraphQL: types, queries, mutations. Implements resolvers with @QueryMapping/@MutationMapping. Understands the difference between REST and GraphQL. Tests via GraphiQL.

REST API Design Awareness

Creates REST endpoints via Spring MVC: @RestController, @GetMapping/@PostMapping, @RequestBody/@PathVariable. Returns proper HTTP statuses. Validates input via @Valid and Bean Validation.

Cloud & Infrastructure · 1

Understands TCP/IP, DNS, HTTP/HTTPS in Java application context. Configures Spring Boot: server.port, ssl, compression. Diagnoses connection issues. Understands CORS and configures via WebMvcConfigurer.

Additional skills

Not assessed by the team, but part of the self-assessment and the development plan.

AWSChatGPT / ClaudeClean ArchitectureCode ReviewConnection PoolingContainer Security ScanningCPU ProfilingCQRSCursor IDEDatabase ShardingDockerDocumentation as CodeE2E TestingELK StackEvent-Driven ArchitectureGit AdvancedGitHub Actions / GitLab CIGitHub CopilotgRPC & Protocol BuffersgRPC & Protocol BuffersIntegration TestingJWT / OAuth2 / OIDCKubernetes CoreLatency OptimizationMemory ManagementMemory ProfilingMessage Broker PatternsOn-Call ManagementOpenTelemetryOWASP & Application SecurityPerformance BudgetsPrometheus & GrafanaPrompt Engineering for CodePython Web FrameworksRate Limiting & ThrottlingSecrets ManagementSecure Coding PracticesSLI / SLO / SLAStructured LoggingSystem Design FundamentalsTDD & BDDTerraformTestContainersUnit TestingWebSocket API Design

What changes at Mid-level

74 skills get a higher expectation or become core when moving from Junior to Mid-level. The biggest jumps first.

See the Mid-level page →
Run this with your whole team
Self-assessment plus manager and peer reviews against the same matrix, gap analysis and next-level readiness for every engineer. Team Pro is free for 14 days; individual tools stay free forever.
Start a team trial (14 days free) Send to my manager

} in the open competency matrix: 72 skills across 5 levels. The matrix is free for individuals and stays free.