Algorithms & Data Structures 2
▼
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.
Independently applies algorithmic thinking in Scala: selects functional collection algorithms for data transformation, understands lazy evaluation impact on memory, evaluates parallel collection performance trade-offs. Analyzes complexity of Spark operations and distributed computation patterns.
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.
Shapes algorithm optimization strategy at platform level, makes architectural decisions on data structure selection for high-load Scala systems. Defines acceptable complexity thresholds for distributed computing in Spark and stream processing in Kafka Streams.
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.
Independently selects appropriate data structures in Scala: immutable List vs Vector for sequential data, LazyList for deferred evaluation, case classes for domain modeling. Understands trade-offs between Scala's persistent data structures and Java interop collections.
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.
Makes strategic decisions on data structure selection for platform components: off-heap storage, specialized collections for Spark RDD and Dataset API. Evaluates trade-offs between immutability and performance at the overall system architecture level.
API Management 2
▼
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.
Creates complete API documentation for Scala services through Tapir with OpenAPI specification auto-generation: describes all endpoints, error schemas, examples. Documents Protobuf contracts, writes ADR (Architecture Decision Records) for key architectural decisions.
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.
Shapes API documentation strategy at organizational level: unified developer portal for all Scala services, API changelog standards, API Governance integration. Defines cross-team API contract review processes, introduces API catalogue for service discoverability.
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.
Designs and implements API versioning strategies using content negotiation, custom media types, or path-based versioning in Scala microservices. Writes migration guides and automated contract tests for version transitions.
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.
Shapes API versioning policy for the entire Scala platform: semantic versioning standards for gRPC and REST, multi-version support strategy, sunset processes. Defines API Gateway architecture for version routing, integration with consumer-driven contract testing through Pact.
Caching 2
▼
Uses Caching Strategies at a basic level in Play/http4s. Performs simple tasks using established templates. Understands basic concepts and follows team practices.
Independently implements tasks with Caching Strategies in Play/http4s. Understands internals and optimizes performance. Writes tests with ScalaTest/MUnit.
Defines architectural decisions for Caching Strategies at product level. Establishes standards. Conducts design reviews and defines technical roadmap.
Defines Caching Strategies strategy at company level. Evaluates new technologies and approaches. Establishes enterprise standards and reference architectures.
Uses Redis at a basic level in Play/http4s. Performs simple tasks using established templates. Understands basic concepts and follows team practices.
Independently implements tasks with Redis in Play/http4s. Understands internals and optimizes performance. Writes tests with ScalaTest/MUnit.
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.
Makes strategic decisions on caching infrastructure for the entire platform: choosing between Redis Cluster and Redis Sentinel, sharding policies, cost evaluation through FinOps. Defines edge caching architecture for globally distributed Scala services with sub-millisecond latency requirements.
Clean Code & Refactoring 1
▼
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.
Independently applies code quality practices in Scala development. Writes clean functional code with appropriate use of effect systems and type classes. Understands trade-offs between expressive type-level programming and code readability. Reviews code for proper error handling, implicits scope, and build dependency management.
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.
Shapes code quality culture at organizational level: standards for Scala projects, technical debt metrics, legacy codebase refactoring strategy. Defines balance between type system strictness and development velocity, introduces architectural fitness functions for system evolution control.
Concurrency & Parallelism 2
▼
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.
Independently applies async programming in Scala: ZIO/Cats Effect fibers, Future composition, effect system-based concurrency. Understands trade-offs between Future-based and effect system-based async patterns in Scala applications.
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.
Makes strategic decisions on Scala platform concurrency model: ZIO Runtime vs Cats Effect IO vs Akka Actor Model. Defines backpressure handling architecture in streaming systems, designs fault tolerance strategies across the entire distributed infrastructure.
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.
Independently applies multithreading in Scala: Akka actors for message-passing concurrency, Cats Effect/ZIO fibers for lightweight concurrency, Future composition for async workflows. Explains trade-offs between actor model and effect-based concurrency in code review.
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.
Designs concurrency management strategy for the entire Scala platform: JVM thread scheduling configuration, choosing between green threads (Project Loom) and fiber-based model of ZIO/Cats Effect. Makes decisions on scaling multithreaded systems at cluster and infrastructure level.
Data Modeling 2
▼
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.
Independently designs schemas and optimizes queries with Data Modeling and Schema Design. Understands indexing and query execution plans. Uses Slick/Doobie effectively.
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.
Makes strategic decisions on platform data architecture: choosing between relational and event-driven models, Schema Registry standards for inter-service communication. Defines Data Mesh approach for Scala microservices, designs data models considering scalability, compliance and analytics requirements.
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.
Independently designs schemas and optimizes queries with Database Migrations. Understands indexing and query execution plans. Uses Slick/Doobie effectively.
Defines product-level data strategy. Establishes Database Migration standards. Conducts data schema and scaling strategy reviews.
Shapes database schema management strategy for the entire Scala platform: zero-downtime migration standards through Flyway, backward compatibility policies, emergency rollback processes. Defines schema evolution approaches in multi-service environments — shared database vs database-per-service for Scala microservices.
Database Optimization 3
▼
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.
Independently designs schemas and optimizes queries with Database Indexing. Understands indexing and query execution plans. Uses Slick/Doobie effectively.
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.
Shapes indexing strategy at platform level: balancing read speed and write cost across all Scala services. Makes decisions on covering indexes, BRIN for time-series data, defines index analysis automation through pg_stat_user_indexes.
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.
Independently designs schemas and optimizes queries with Query Optimization. Understands indexing and query execution plans. Uses Slick/Doobie effectively.
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 database performance strategy for the entire platform: query performance standards, latency SLA, automated query regression testing. Makes decisions on data architecture — sharding, CQRS, full-text search through Elasticsearch integration with Scala services.
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.
Independently designs schemas and optimizes queries with Transactions and Concurrency. Understands indexing and query execution plans. Uses Slick/Doobie effectively.
Defines product-level data strategy. Establishes Transactions and Concurrency standards. Conducts data schema and scaling strategy reviews.
Defines transaction management strategy at Scala platform level: Saga pattern standards for distributed transactions in Akka clusters, isolation policies for OLTP/OLAP workloads. Makes decisions on eventual consistency vs strong consistency for different domains, designs compensation mechanisms.
Functional Programming 3
▼
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.
Confidently uses Scala FP idioms: case classes for immutable data, Option/Either for error handling, pattern matching, and for-comprehensions. Understands the trade-offs between OOP and FP styles in Scala. Applies FP principles in code review and explains monadic composition to colleagues.
Defines Functional Programming Principles usage standards at team/product level. Conducts architectural reviews. Creates best practices and training materials for the entire team.
Defines organizational FP strategy for Scala: selects effect systems (Cats Effect vs ZIO), establishes standards for functional domain modeling, drives adoption of property-based testing. Shapes technical vision for migrating legacy OOP codebases toward functional architectures.
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.
Independently applies immutability patterns in Scala services using persistent collections, lenses for nested updates, and algebraic data types for state modeling. Writes transformation pipelines with immutable data flow using for-comprehensions, monadic composition, and functional effect systems. Understands performance trade-offs between immutable and mutable structures for hot paths and chooses appropriate strategies.
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.
Shapes the organization's functional programming and immutability strategy across Scala and JVM ecosystems. Drives innovation in immutable architecture patterns for distributed systems including CRDT-based state synchronization, append-only data architectures, and zero-copy serialization of immutable structures. Influences the Scala community through contributions to typelevel ecosystem and functional programming best practices.
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.
Independently uses monads (Option, Either, Future, IO) for effect management in Scala applications. Understands trade-offs between Cats Effect and ZIO for referential transparency. Explains functor laws and for-comprehension desugaring to colleagues in code reviews.
Defines Monads and Functors usage standards at team/product level. Conducts architectural reviews. Creates best practices and training materials for the entire team.
Defines Monads and Functors strategy at organizational level. Makes decisions on approaches and tools. Mentors lead developers and shapes technical vision.
gRPC 1
▼
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 gRPC services in Scala through ScalaPB and Akka gRPC: unary and server-streaming RPC, error handling through Status, deadline propagation. Designs Protobuf schemas with evolution in mind, uses oneof for polymorphism and configures interceptors for logging and authentication.
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.
Shapes inter-service communication strategy for Scala platform: gRPC as internal communication standard, Service Mesh integration through Envoy/Istio. Defines API Gateway architecture for gRPC/REST translation, Protobuf schema evolution policies and RPC call observability standards.
Message Queues & Event Streaming 1
▼
Uses Apache Kafka at a basic level in Play/http4s. Performs simple tasks using established templates. Understands basic concepts and follows team practices.
Independently implements tasks with Apache Kafka in Play/http4s. Understands internals and optimizes performance. Writes tests with ScalaTest/MUnit.
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.
Shapes event architecture strategy for the entire Scala platform: Event Sourcing standards through Kafka, schema evolution policies, multi-datacenter replication. Makes Kafka cluster scaling decisions, evaluates alternatives (Pulsar, Redpanda) and defines SLA for stream data processing.
Relational Databases 1
▼
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.
Independently designs schemas and optimizes queries with PostgreSQL. Understands indexing and query execution plans. Uses Slick/Doobie effectively.
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.
Makes strategic data storage architecture decisions: PostgreSQL as primary OLTP database for Scala platform, Citus integration for horizontal scaling, multi-region deployment strategy. Defines backup policies, DR plans and evaluates transition to managed solutions (RDS, Cloud SQL).
REST API 1
▼
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.
Designs REST API in Scala services following best practices: HATEOAS links, pagination, filtering through query parameters. Implements content negotiation, proper error handling through ADT and middleware for logging in Play Framework or Akka HTTP Directives.
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.
Shapes API strategy for the entire Scala platform: REST vs gRPC vs GraphQL standards for different scenarios, API Gateway architecture, API-first development approach. Defines backward compatibility policies, deprecation lifecycle and SLA for public and internal organizational APIs.
System Design 1
▼
Understands basic High Load Architecture concepts. Follows team architectural decisions. Understands main patterns.
Designs components of high-load Scala services: non-blocking processing through ZIO/Cats Effect, connection pooling through HikariCP, basic caching. Understands horizontal scaling principles, implements async request processing through Akka HTTP and applies backpressure in Akka Streams.
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.
Shapes scaling strategy for Scala platform: architecture for millions of RPS, multi-region deployment with geo-routing, global load balancing. Makes decisions on Akka Cluster vs serverless architecture for different workloads, defines SLA/SLO and infrastructure budgets through FinOps.
Type Systems 2
▼
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.
Applies Scala's advanced type parameter system: upper/lower type bounds ([A <: B], [A >: B]), variance annotations (covariant +A, contravariant -A). Implements type classes via implicit parameters and context bounds ([T: Ordering]). Uses existential types and type members for abstraction, understands type inference limitations in complex generic chains.
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 organization-wide generic programming standards in Scala: establishes type class encoding conventions (Scala 2 implicits vs Scala 3 given/using), designs generic effect system abstractions (Cats Effect, ZIO) with principled type parameter hierarchies. Drives adoption of compile-time type-level programming (singleton types, type-level natural numbers, compile-time proofs) for domain invariant enforcement. Evaluates and shapes Scala language evolution proposals related to type system expressiveness — opaque types, match types, polymorphic function types.
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.
Independently applies Scala's type system for backend services — using sealed traits for ADTs, type class patterns with implicits/givens, and higher-kinded types for effect abstractions. Understands trade-offs between type-level encoding complexity and runtime safety. Explains variance annotations and type inference to colleagues.
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.
Defines type safety strategy for Scala platform: leveraging Scala 3 match types, inline/given, compile-time type-level checks. Designs domain DSLs with correctness guarantees through the type system, makes decisions on applying dependent types and type-level computations.
Web Frameworks 1
▼
Uses Scala Frameworks at a basic level in Play/http4s. Performs simple tasks using established templates. Understands basic concepts and follows team practices.
Independently implements tasks with Scala Frameworks in Play/http4s. Understands internals and optimizes performance. Writes tests with ScalaTest/MUnit.
Defines architectural decisions for Scala Frameworks at product level. Establishes standards. Conducts design reviews and defines technical roadmap.
Defines Scala Frameworks strategy at company level. Evaluates new technologies and approaches. Establishes enterprise standards and reference architectures.