Applies algorithmic expertise in Scala development: parallel collection algorithms for multi-core processing, functional stream processing with Akka Streams/fs2, recursive algorithm optimization with trampolining. Designs distributed computation algorithms for Spark workloads with proper partition strategies.
Roles · Backend Developer (Scala) · Senior
What a Senior } should know
51 core skills, 67 in total. Expectations per skill, and what changes at the next level.
This page lists what a Senior } 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 Senior
Grouped by area. The label on the right is the expected depth: Awareness, Working, Advanced or Expert.
Programming Fundamentals · 12
Designs async architectures in Scala: ZIO/Cats Effect-based service composition, fiber-based concurrency patterns, effect system resource management. Mentors team on functional concurrency patterns and effect system best practices.
Designs code quality standards for Scala projects: Scalafix rules, Wartremover configurations, effect system patterns (ZIO/Cats Effect). Refactors imperative code to functional style with proper type-level programming. Establishes review practices for implicits usage, type class patterns, and build organization.
Selects optimal data structures for Scala applications: immutable persistent collections for functional patterns, TrieMap for concurrent access, Vector for balanced append/prepend performance. Optimizes data structure choices in Spark RDD/Dataset operations. Designs type-safe custom collections using Scala's collection framework with proper implicit evidence.
Has deep expertise in design patterns for Scala: designs effect-based architectures with ZIO/Cats Effect, implements type-level programming patterns for compile-time safety, optimizes functional patterns for JVM performance. Mentors team on FP design patterns for production Scala systems.
Designs production Scala systems using advanced FP: effect systems with Cats Effect or ZIO, tagless final encoding, and type-level programming. Architects services with pure core and thin I/O boundary. Mentors team on monad transformers, free monads, and functional error handling at scale.
Architects type-level computations in Scala: implements higher-kinded types (F[_]) for tagless final and free monad patterns. Designs generic type class hierarchies (Functor, Monad, Traverse) with lawful instances and automatic derivation. Applies path-dependent types and type projections for advanced generic abstractions, uses match types (Scala 3) and type lambdas for compile-time type transformations. Mentors team on variance rules and type inference debugging.
Designs Scala application architectures that leverage immutability for type-safe, concurrent, and testable systems. Implements advanced patterns including optics libraries (Monocle) for deep immutable updates, tagless final with immutable state, and event-sourced architectures using immutable event streams. Optimizes immutable data structures for high-throughput scenarios with structural sharing, specialized persistent collections, and strategic use of local mutability behind pure interfaces.
Designs effect systems using monad transformers (EitherT, OptionT, ReaderT) and tagless final encoding for production Scala services. Architects domain layers with free monads or ZIO/Cats Effect for testable, composable business logic. Mentors developers on monad laws, stack-safe recursion with Eval, and pragmatic FP trade-offs.
Has deep expertise in Scala concurrency: designs effect-based concurrent systems with ZIO/Cats Effect fibers, implements actor-based distributed processing with Akka Cluster, optimizes JVM concurrency for Scala-specific patterns. Mentors team on functional concurrency patterns for production Scala systems.
Applies OOP/SOLID combined with functional design in Scala: type class pattern for ad-hoc polymorphism, cake pattern/ZIO layers for dependency injection, sealed trait hierarchies for exhaustive pattern matching. Designs architectures balancing OOP encapsulation with functional purity using effect systems.
Has deep expertise in Scala type system — designs type-safe DSLs with dependent types, match types, and opaque type aliases. Architects effect-based systems using ZIO/Cats Effect with type-level error handling and resource safety. Mentors team on advanced type class derivation, implicit resolution, and balancing type-level sophistication with codebase accessibility.
Backend Development · 5
Designs reliable Kafka integrations in Scala services through Alpakka Kafka or FS2-Kafka: configures partitioning, exactly-once semantics and error handling. Implements Transactional Outbox and idempotent consumer patterns for message delivery guarantees in distributed Akka systems.
Designs caching architecture for Scala services: Caffeine with functional wrappers, distributed caching with Cats Effect/ZIO integration. Implements cache coherence strategies for actor-based systems and event-driven invalidation patterns.
Designs messaging architecture for Scala: implements exactly-once processing through Kafka transactions with Alpakka, designs event sourcing with Akka Persistence or EventStoreDB, configures stream processing with Flink/Kafka Streams through Scala API. Optimizes backpressure and parallelism.
Implements advanced caching patterns in Scala services through Redis4Cats or Lettuce: cache-aside, write-through, distributed locks. Configures TTL strategies, serialization through Circe/Protobuf and hit rate monitoring for optimizing Akka HTTP and Play Framework endpoint performance.
Designs solutions based on Scala Frameworks for production systems. Optimizes performance and scalability. Chooses between alternative approaches. Mentors the team.
Database Management · 8
Designs connection management for Scala microservices: implements functional connection routing (Reader monad for database selection), configures Akka Streams integration with database pool for backpressure-aware data access. Optimizes pool for reactive streaming workloads.
Designs domain data models for Scala services: applies DDD approach with sealed trait ADTs for states, JSONB for flexible structures, temporal tables for auditing. Optimizes schemas considering access patterns, implements efficient serialization through Circe and Doobie codecs.
Designs indexing strategy for Scala services: composite indexes, partial indexes, GIN for JSONB fields, GiST for geodata. Analyzes query plans considering Doobie/Slick query access patterns, optimizes indexes for reducing latency of high-load endpoints.
Designs database migration architecture for Scala applications: implements expand-contract pattern for zero-downtime migrations, designs type-safe migration frameworks with Flyway callbacks and Slick code generation, and automates migration testing in CI/CD pipelines. Mentors team on safe schema evolution.
Designs sharding for Scala microservices: integrates Akka Cluster Sharding with persistent storage, implements cross-shard queries through Akka Streams, configures Cassandra data modeling with partition key design for natural sharding. Optimizes data locality for co-located processing.
Optimizes PostgreSQL usage in Scala services: HikariCP connection pool configuration, JSONB fields, window functions and CTEs. Designs schemas with partitioning, implements efficient batch operations through Doobie Transactor and monitors slow queries.
Optimizes complex queries in Scala services: rewrites Slick/Doobie queries to minimize round-trips, uses batch fetching, window functions and materialized views. Profiles queries through pg_stat_statements, eliminates bottlenecks in critical service paths.
Designs transaction architectures for high-load Scala systems using advanced patterns like saga, outbox, and event sourcing for distributed consistency. Implements STM for in-memory concurrency alongside database transactions. Optimizes transaction throughput with connection pool tuning and batch processing. Mentors team on concurrency.
API & Integration · 6
Designs API documentation system for Scala microservices: auto-generation through Tapir/Smithy, CI integration for freshness validation. Creates developer portal with interactive examples, documents inter-service interaction patterns and error handling strategies.
Designs API architecture with API Versioning Strategies for production systems. Defines versioning standards, error handling, pagination. Optimizes performance.
Designs gRPC architecture for Scala microservices: integrates with Akka Cluster for distributed gRPC services, implements service discovery through Akka Discovery, configures gRPC with Kamon/OpenTelemetry for observability. Optimizes production gRPC server configuration on Akka HTTP.
Designs gRPC API for Scala microservices: bidirectional streaming through Akka gRPC/FS2-gRPC, retry policies, load balancing. Implements Schema Registry for Protobuf, builds gRPC-Web for browser clients and optimizes performance through connection multiplexing and compression.
Designs rate limiting for Scala microservices: implements functional rate limiter through Ref[IO] with cats-effect, configures Akka Cluster-aware rate limiting with distributed data, designs adaptive throttling through Akka Streams dynamic MergeHub.
Designs evolvable REST APIs for Scala microservices: versioning strategies, backwards compatibility, rate limiting through Akka HTTP. Implements OpenAPI specifications through Tapir, applies circuit breaker patterns and optimizes serialization for high-load endpoints.
Cloud & Infrastructure · 3
Designs AWS infrastructure for Scala services: EKS with Karpenter for autoscaling, Aurora PostgreSQL for databases, MSK for Kafka. Implements Infrastructure as Code through Terraform/CDK, configures VPC architecture, WAF for API protection and optimizes costs through Reserved Instances and Spot.
Designs containerization strategy for Scala services: JVM optimization in containers (memory limits, GC tuning), health check configuration through Akka Management. Implements sbt-native-packager with GraalVM, builds slim images and configures vulnerability scanning through Trivy/Snyk in CI.
Designs Kubernetes deployment for Scala microservices: rolling updates with graceful shutdown through Akka coordinated shutdown, pod disruption budgets, topology spread. Configures Akka Cluster Bootstrap for discovery through Kubernetes API, optimizes resources considering JVM warm-up and GC pauses.
DevOps & CI/CD · 1
Designs CI/CD pipelines for Scala microservices: multi-stage pipeline with unit/integration/e2e tests, security scanning through Snyk, automatic deployment through ArgoCD. Optimizes sbt build time through incremental compilation and remote caching, configures release workflow with semantic versioning.
Testing & QA · 3
Designs integration testing strategy for Scala microservices: contract testing through Pact, end-to-end tests with Testcontainers for full stack. Implements Akka Cluster testing with multi-node-test-kit, configures isolated test environments with embedded Kafka and PostgreSQL.
Designs property-based testing strategy for Scala services: custom generators for domain types, stateful property testing for Akka Actors. Implements combinatorial generators through ScalaCheck or ZIO Test Gen, tests business logic invariants and Protobuf message serialization/deserialization.
Designs test architecture for Scala services: Tagless Final for dependency substitution without mocks, test containers for PostgreSQL and Kafka integration. Implements test DSLs in Scala for improved readability, introduces snapshot testing for API contracts and Golden testing for serialization.
Security · 3
Designs authentication system for Scala microservices: Keycloak/Auth0 integration, token refresh strategies, scope-based authorization. Implements service-to-service authentication through mTLS and JWT, configures token introspection for API Gateway and protection against token replay attacks.
Conducts security review of Scala services against OWASP Top 10: dependency analysis through sbt-dependency-check, code scanning through Snyk/SonarQube. Implements protection against SSRF, ReDoS and deserialization attacks, configures Content Security Policy and designs secure APIs with rate limiting.
Designs secure Scala systems: encryption at rest and in transit through Bouncy Castle, secure secret storage through Vault integration. Implements audit logging, secure session management in Play Framework, applies compile-time security checks through Scala macros and refined types.
Data Engineering · 1
Designs distributed stream processing architectures with Kafka Streams for Scala microservices. Implements custom SerDes, interactive queries for state store access, and partition-level parallelism strategies.
AI-Assisted Development · 1
Optimizes AI tool usage for Scala projects: configuring Copilot/Cursor for ZIO/Cats Effect, custom instructions for project conventions. Reviews AI-generated code for security, evaluates generation quality for complex type-level Scala constructs.
Architecture & System Design · 3
Designs CQRS architecture for Scala microservices: configures Akka Cluster Sharding for distributed aggregates, implements multiple projections (Slick, Elasticsearch, Cassandra), optimizes event journal through snapshot strategy and event deletion. Integrates with Kafka for cross-service event propagation.
Designs high-load Scala systems: Akka Cluster for distributed computing, sharding for actor scaling, CQRS for load separation. Optimizes JVM for high-throughput scenarios: GC tuning, off-heap memory, profiling through async-profiler and JFR.
Designs Scala systems end-to-end: distributed systems on Akka Cluster, Event Sourcing with Akka Persistence, CQRS for scaling. Makes trade-off decisions on consistency vs availability, designs fault-tolerant architectures with graceful degradation and self-healing.
Observability & Monitoring · 3
Designs distributed tracing for Scala microservices: end-to-end instrumentation through otel4s with ZIO/Cats Effect, W3C Trace Context propagation through gRPC and Kafka. Configures tail-based sampling, custom SpanProcessors for data enrichment and trace-log correlation through OpenTelemetry Collector.
Designs metrics system for Scala microservices: SLI/SLO monitoring through Prometheus, USE metrics for infrastructure, custom business KPIs. Configures multi-dimensional metrics considering cardinality, builds Grafana dashboards for troubleshooting and capacity planning, integrates with alerting through PagerDuty.
Designs logging strategy for Scala microservices: JSON log field standards, distributed tracing context propagation, log sampling. Integrates logging with ZIO Logging or Odin, implements correlation ID propagation through Akka HTTP and gRPC interceptors, configures anomaly alerts.
Version Control & Collaboration · 2
Conducts deep architectural code reviews in Scala projects: evaluates type-safety, effect management correctness, performance. Reviews API design, typeclass pattern usage, Akka Actor hierarchy and suggests refactorings for improving composability and testability.
Designs Git strategy for Scala microservices: monorepo vs multirepo, branching strategy, release management. Configures automated versioning through sbt-dynver, implements trunk-based development with feature flags, manages inter-service dependencies through dependency graph.
Additional skills
Not assessed by the team, but part of the self-assessment and the development plan.
What changes at Lead
67 skills get a higher expectation or become core when moving from Senior to Lead. The biggest jumps first.
- Algorithms & Complexity: Advanced → Expert
- Apache Kafka: Advanced → Expert
- API Documentation: Advanced → Expert
- API Versioning Strategies: Advanced → Expert
- Async Programming: Advanced → Expert
- AWS: Advanced → Expert
- Caching Strategies: Advanced → Expert
- Code Quality & Refactoring: Advanced → Expert
- Code Review: Advanced → Expert
- Connection Pooling: Advanced → Expert
} in the open competency matrix: 67 skills across 5 levels. The matrix is free for individuals and stays free.