Conducts reviews of team algorithmic decisions in Scala projects, evaluates O-complexity of critical paths in Akka Streams and Spark pipelines. Defines performance standards for services and implements benchmarks through JMH to identify JVM-level bottlenecks.
Roles · Backend Developer (Scala) · Lead
What a Lead } should know
51 core skills, 67 in total. Expectations per skill, and what changes at the next level.
This page lists what a Lead } 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 Lead
Grouped by area. The label on the right is the expected depth: Awareness, Working, Advanced or Expert.
Programming Fundamentals · 12
Establishes asynchronous programming standards for the team: choosing between ZIO, Cats Effect and Akka for specific tasks. Reviews correctness of effect management, fibers and concurrent structures, ensures absence of blocking calls in the main execution thread.
Implements Scala code quality standards in the team: configuring Scalafix, WartRemover, Scalafmt. Defines code review rules emphasizing idiomatic Scala, correct implicits usage and for-comprehension. Integrates static analysis and coverage metrics into CI/CD pipeline through sbt.
Defines standards for using Scala immutable collections and persistent data structures in team projects. Reviews data structure choices considering GC pressure on JVM, optimizes Vector, HashMap and TreeMap usage in high-load services.
Implements functional design patterns in Scala team codebase: Tagless Final, Free Monad, Reader/Writer for dependency injection. Conducts architectural reviews emphasizing typeclass patterns from Cats and ZIO for ensuring code composability and testability.
Defines Functional Programming Principles usage standards at team/product level. Conducts architectural reviews. Creates best practices and training materials for the entire team.
Defines Generics and Parametric Polymorphism usage standards at team/product level. Conducts architectural reviews. Creates best practices and training materials for the entire team.
Defines immutability and functional programming standards for Scala backend systems across the organization. Establishes guidelines for immutable domain modeling, pure state management in distributed services, and safe interop boundaries with mutable Java libraries. Conducts architecture reviews ensuring immutability principles drive system correctness, testability, and maintainability at scale.
Defines Monads and Functors usage standards at team/product level. Conducts architectural reviews. Creates best practices and training materials for the entire team.
Defines thread pool management policies for Scala services: ExecutionContext configuration, blocking and compute pools for ZIO/Cats Effect. Conducts team concurrent code audits, identifies race conditions and deadlocks through fiber graph analysis and JVM thread dumps.
Shapes team standards for combining OOP and FP in Scala: using sealed trait hierarchies, case classes for domain models, trait mixins for composition. Reviews module architecture for SOLID compliance accounting for Scala specifics — ADT, implicits and type classes.
Establishes team standards for Scala type system usage: refined types for validation, phantom types for states, opaque types for domain primitives. Reviews type-level programming correctness, ensures balance between type safety and code readability.
Backend Development · 5
Defines event interaction architecture between Scala services through Kafka: Schema Registry standards with Avro/Protobuf, partitioning and retention strategies. Reviews team topic topology, implements Dead Letter Queue patterns and consumer lag monitoring through Prometheus.
Defines architectural decisions for Caching Strategies at product level. Establishes standards. Conducts design reviews and defines technical roadmap.
Standardizes messaging in Scala ecosystem: chooses between Alpakka, fs2-kafka and ZIO Kafka for different teams, designs event-driven architecture with CQRS through Akka Projection, implements schema registry integration with Avro/Protobuf for type-safe evolution.
Defines caching strategy for Scala microservices team: Redis Cluster usage standards, invalidation policies, distributed sessions. Reviews caching architecture considering data consistency, implements multi-layer caching with local Caffeine and distributed Redis.
Defines architectural decisions for Scala Frameworks at product level. Establishes standards. Conducts design reviews and defines technical roadmap.
Database Management · 8
Standardizes connection management in Scala ecosystem: defines when to use Slick vs doobie vs Quill with different pool strategies, creates abstractions for standardized pool setup. Designs connection governance for Akka Cluster and distributed Scala systems.
Defines data modeling standards for Scala team: schema design rules, table naming, JSONB vs normalization usage. Reviews domain models for bounded context alignment, implements Event Sourcing models with Akka Persistence for critical aggregates.
Defines indexing policy for Scala microservices team: naming standards, index creation rules in migrations, unused index monitoring. Reviews indexing plans considering write amplification and INSERT/UPDATE performance impact in OLTP scenarios.
Defines product-level data strategy. Establishes Database Migration standards. Conducts data schema and scaling strategy reviews.
Standardizes sharding in Scala ecosystem: defines when to use Akka Cluster Sharding vs database-native sharding, designs data placement strategy for distributed Scala systems. Creates abstractions for transparent sharding with type-safe shard key definitions.
Defines PostgreSQL standards for Scala team: choosing between Doobie, Slick and Quill, migration writing rules, table partitioning strategies. Reviews data architecture, implements read replicas for read scaling and configures logical replication for analytical tasks.
Establishes query optimization standards for Scala team: mandatory EXPLAIN analysis in code review, endpoint latency budgets, query caching rules. Reviews data access architecture, implements CQRS pattern for separating read/write workloads.
Defines product-level data strategy. Establishes Transactions and Concurrency standards. Conducts data schema and scaling strategy reviews.
API & Integration · 6
Defines API documentation standards for Scala team: mandatory sections, specification format, documentation review process. Implements contract-first approach through Tapir or Smithy, ensures documentation-code synchronization through automated checks in CI/CD pipeline.
Defines API versioning strategy for Scala team: choosing between URL-path, header-based and content negotiation approaches. Implements deprecation processes with grace period, automated backward compatibility checking through Tapir schema diff and old API version usage monitoring.
Standardizes gRPC development in Scala ecosystem: chooses between Akka gRPC, ZIO gRPC and fs2-grpc for different teams, creates sbt plugins for standardizing proto generation, designs patterns for functional error handling in gRPC. Defines testing strategy with akka-grpc-testkit.
Defines gRPC interaction standards for Scala team: .proto file design rules, backward compatibility strategy, mandatory metadata fields. Reviews Protobuf schemas, implements buf for linting and breaking change detection, configures gRPC health checks for Kubernetes readiness probes.
Standardizes rate limiting in Scala ecosystem: creates library with functional rate limiter API (tagless final), designs configuration-driven limiting through Lightbend Config, defines observability patterns. Trains teams on functional approaches to rate limiting.
Defines REST API standards for Scala team: endpoint design guidelines, mandatory Tapir usage for type-safe API description, versioning strategy. Reviews API contracts for domain model alignment, ensures consistency across microservices.
Cloud & Infrastructure · 3
Defines AWS architecture for Scala team: service usage standards, Landing Zone, security baseline. Reviews infrastructure decisions, implements GitOps through ArgoCD, configures multi-account strategy and FinOps practices with Cost Explorer for budget optimization.
Defines containerization standards for Scala team: base images, JVM configuration for different workloads, security hardening. Implements build automation through sbt plugins, configures image registry and tagging policies for GitOps deployment in Kubernetes.
Defines Scala service deployment standards in Kubernetes: Helm chart templates, resource policies, canary/blue-green strategies through ArgoCD. Reviews cluster configuration, implements namespace isolation for teams and configures NetworkPolicy for inter-service security.
DevOps & CI/CD · 1
Defines CI/CD standards for Scala team: mandatory pipeline stages, quality gates (coverage, lint), trunk-based development strategy. Implements reusable workflows for sbt projects, configures automated dependency updates through Scala Steward and integrates performance regression testing.
Testing & QA · 3
Defines integration testing standards for Scala team: mandatory contract tests between services, shared test fixtures. Reviews test infrastructure, implements consumer-driven contract testing through Pact, configures parallel integration test execution in CI with data isolation.
Defines property-based testing standards for Scala team: mandatory property tests for codecs and serialization, shared generator library. Reviews property quality, implements ZIO Test for effect-based property testing and integrates generators with inter-service contract tests.
Defines testing standards for Scala team: mandatory coverage, test naming rules, effectful code testing patterns. Reviews test architecture, implements TDD practices with ZIO Test, configures parallel test execution through sbt to shorten feedback loop.
Security · 3
Defines authentication standards for Scala team: unified auth middleware, signing key secret management strategy, key rotation procedures. Reviews authorization architecture, implements ABAC/RBAC through policy engine (OPA), configures centralized auth logging for auditing.
Defines OWASP security standards for Scala team: mandatory security checks in CI, code review checklist, vulnerability management. Implements SAST/DAST tools for sbt projects, conducts threat modeling for new services and defines CVE response process.
Defines secure coding standards for Scala team: secure code review checklists, mandatory type-safe patterns, unsafe API prohibition. Implements automated security linting through WartRemover with custom rules, conducts security training and builds safe utilities library.
Data Engineering · 1
Defines stream processing standards for Scala team: choosing between Kafka Streams, FS2-Kafka and Akka Streams for specific use cases. Reviews stream processor topologies, implements exactly-once processing patterns, configures consumer lag and stream processing latency monitoring.
AI-Assisted Development · 1
Defines AI tool usage standards for Scala team: guidelines for reviewing AI-generated code, custom rules for Copilot. Implements AI-assisted refactoring for legacy Scala code, trains team on effective prompting for functional patterns and effect systems.
Architecture & System Design · 3
Standardizes CQRS in Scala ecosystem: chooses between Akka Persistence and ZIO-based solutions (zio-entity), designs multi-bounded context architecture, creates abstractions for testable CQRS. Defines migration strategy from Akka Classic to Akka Typed for CQRS modules.
Defines high-load Scala service architecture for the team: scaling standards, capacity planning, degradation strategies. Reviews architecture for peak load handling capability, implements load testing through Gatling, configures auto-scaling policies and circuit breaker patterns.
Defines architectural standards for Scala team: Architecture Decision Records, service design patterns, migration strategies. Reviews system design for non-functional requirements compliance, conducts design review sessions and creates technical architecture documentation.
Observability & Monitoring · 3
Defines OpenTelemetry observability standards for Scala team: mandatory instrumentation, semantic conventions, sampling policies. Implements OpenTelemetry Collector pipeline, configures traces + metrics + logs integration, defines SLI based on trace data for key user journeys.
Defines monitoring standards for Scala team: mandatory metrics per service, SLO budgets, on-call procedures. Reviews dashboard and alert quality, implements SRE practices, configures automated runbooks and defines metrics for error budget policy.
Defines logging standards for Scala team: mandatory fields, message format, retention and rotation policies. Implements centralized logging through ELK/Loki, configures dashboards for error analysis, defines SLI based on log-based metrics for critical path services.
Version Control & Collaboration · 2
Defines code review standards for Scala team: review checklist, response time SLA, approval rules. Mentors reviewers, implements automated code review through Scalafix rules and Danger, ensures constructive review atmosphere and learning through feedback.
Defines Git strategy for Scala team: commit message standards (Conventional Commits), branch protection rules, merge strategy. Implements automated changelog through sbt-release, configures CODEOWNERS for critical file reviews and defines release branch management process.
Additional skills
Not assessed by the team, but part of the self-assessment and the development plan.
What changes at Principal
0 skills get a higher expectation or become core when moving from Lead to Principal. The biggest jumps first.
} in the open competency matrix: 67 skills across 5 levels. The matrix is free for individuals and stays free.