Understands the fundamentals of Algorithms & Complexity at a basic level. Applies simple concepts in work tasks using Scala 3. Follows recommendations from senior developers when solving problems.
Roles · Backend Developer (Scala) · Junior
What a Junior } should know
26 core skills, 67 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.
Core skills for a Junior
Grouped by area. The label on the right is the expected depth: Awareness, Working, Advanced or Expert.
Programming Fundamentals · 12
Understands the fundamentals of Async Programming at a basic level. Applies simple concepts in work tasks using Scala 3. Follows recommendations from senior developers when solving problems.
Understands the fundamentals of Code Quality & Refactoring at a basic level. Applies simple concepts in work tasks using Scala 3. Follows recommendations from senior developers when solving problems.
Understands the fundamentals of Data Structures at a basic level. Applies simple concepts in work tasks using Scala 3. Follows recommendations from senior developers when solving problems.
Understands the fundamentals of Design Patterns at a basic level. Applies simple concepts in work tasks using Scala 3. Follows recommendations from senior developers when solving problems.
Understands the fundamentals of Functional Programming Principles at a basic level. Applies simple concepts in work tasks using Scala 3. Follows recommendations from senior developers when solving problems.
Understands the fundamentals of Generics & Parametric Polymorphism at a basic level. Applies simple concepts in work tasks using Scala 3. Follows recommendations from senior developers when solving problems.
Understands basic immutability principles in Scala — val vs var, immutable collections from scala.collection.immutable, and case class benefits. Follows team conventions for using immutable data structures and avoids mutable state in business logic. Recognizes how immutability enables safer concurrent programming and easier reasoning about code behavior.
Understands the fundamentals of Monads & Functors at a basic level. Applies simple concepts in work tasks using Scala 3. Follows recommendations from senior developers when solving problems.
Understands the fundamentals of Multithreading at a basic level. Applies simple concepts in work tasks using Scala 3. Follows recommendations from senior developers when solving problems.
Understands the fundamentals of OOP & SOLID Principles at a basic level. Applies simple concepts in work tasks using Scala 3. Follows recommendations from senior developers when solving problems.
Understands the fundamentals of Type Safety & Type Systems at a basic level. Applies simple concepts in work tasks using Scala 3. Follows recommendations from senior developers when solving problems.
Backend Development · 4
Uses Apache Kafka at a basic level in Play/http4s. Performs simple tasks using established templates. Understands basic concepts and follows team practices.
Uses Caching Strategies at a basic level in Play/http4s. Performs simple tasks using established templates. Understands basic concepts and follows team practices.
Uses Redis at a basic level in Play/http4s. Performs simple tasks using established templates. Understands basic concepts and follows team practices.
Uses Scala Frameworks at a basic level in Play/http4s. Performs simple tasks using established templates. Understands basic concepts and follows team practices.
Database Management · 6
Creates basic data models for Scala applications: defines case classes for domain entities, maps them to PostgreSQL tables through Doobie or Slick. Understands normalization to 3NF, designs simple table relationships and uses Scala types to express model constraints.
Understands basic PostgreSQL indexing principles: creating B-tree indexes, reading EXPLAIN ANALYZE for simple queries from Scala applications. Knows the difference between primary key and regular index, can identify index needs from slow query logs.
Understands database migration fundamentals in Scala: Flyway/Liquibase integration with sbt, versioned SQL migrations, and basic schema changes with type-safe libraries like Slick or Doobie. Follows team patterns for migration scripts and rollback procedures.
Performs basic SQL queries to PostgreSQL from Scala applications through Doobie or Slick: SELECT, INSERT, UPDATE with parameterized queries. Understands PostgreSQL data types, works with migrations through Flyway and can read simple query execution plans.
Performs basic SQL query optimization in Scala applications: avoids N+1 problems in Doobie/Slick, uses JOIN instead of subqueries. Can read PostgreSQL EXPLAIN output and understands missing index impact on query performance.
Understands fundamentals of database transactions and ACID properties in Scala applications. Uses basic transaction management with Slick, Doobie, or JDBC. Follows team conventions for transaction boundaries, proper resource cleanup, and handling concurrent access with appropriate isolation levels.
API & Integration · 4
Documents Scala API endpoints using Swagger/OpenAPI annotations: describes request/response models, request examples. Writes Scaladoc comments for public methods, maintains up-to-date README with service launch instructions and available endpoints.
Studies API versioning strategies including URI versioning and content negotiation in Scala services. Follows established patterns for version management in Akka HTTP or Play Framework endpoints.
Uses existing gRPC services from Scala code through ScalaPB: calls unary RPC methods, understands .proto file structure. Can generate Scala classes from Protobuf definitions through sbt plugin, works with basic message types and enums.
Implements simple REST endpoints in Scala through Play Framework or Akka HTTP: CRUD operations with JSON serialization through Circe, basic input validation. Understands HTTP methods, response codes and RESTful URL structure, follows existing patterns in the project codebase.
Additional skills
Not assessed by the team, but part of the self-assessment and the development plan.
What changes at Mid-level
67 skills get a higher expectation or become core when moving from Junior to Mid-level. The biggest jumps first.
- Connection Pooling: Awareness → Working · becomes core
- CQRS: Awareness → Working · becomes core
- Database Sharding: Awareness → Working · becomes core
- gRPC & Protocol Buffers: Awareness → Working · becomes core
- Message Broker Patterns: Awareness → Working · becomes core
- Rate Limiting & Throttling: Awareness → Working · becomes core
- Algorithms & Complexity: Awareness → Working
- Apache Kafka: Awareness → Working
- API Documentation: Awareness → Working
- API Versioning Strategies: Awareness → Working
} in the open competency matrix: 67 skills across 5 levels. The matrix is free for individuals and stays free.