Roles · Backend Developer (Elixir) · Junior

What a Junior } should know

26 core skills, 66 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.

26core skills
40additional skills
4skill 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 the fundamentals of Algorithms & Complexity at a basic level. Applies simple concepts in work tasks using Elixir. Follows recommendations from senior developers when solving problems.

Async Programming Awareness

Understands the fundamentals of Async Programming at a basic level. Applies simple concepts in work tasks using Elixir. 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 Elixir. Follows recommendations from senior developers when solving problems.

Data Structures Awareness

Understands the fundamentals of Data Structures at a basic level. Applies simple concepts in work tasks using Elixir. Follows recommendations from senior developers when solving problems.

Design Patterns Awareness

Understands the fundamentals of Design Patterns at a basic level. Applies simple concepts in work tasks using Elixir. 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 Elixir. Follows recommendations from senior developers when solving problems.

Understands basic immutability principles in Elixir — all data structures are immutable by default. Follows team patterns for working with immutable maps, lists, and structs without attempting mutation. Recognizes how pattern matching and function composition replace traditional mutable state manipulation in Elixir codebases.

Monads & Functors Awareness

Understands the fundamentals of Monads & Functors at a basic level. Applies simple concepts in work tasks using Elixir. Follows recommendations from senior developers when solving problems.

Multithreading Awareness

Understands the fundamentals of Multithreading at a basic level. Applies simple concepts in work tasks using Elixir. Follows recommendations from senior developers when solving problems.

Backend Development · 6

Apache Kafka Awareness

Uses Apache Kafka at a basic level. Performs simple tasks using established templates. Understands basic concepts and follows team practices.

Caching Strategies Awareness

Uses caching strategies at a basic level. Performs simple tasks using established templates. Understands basic concepts and follows team practices.

Elixir Phoenix Awareness

Uses Elixir Phoenix at a basic level. Performs simple tasks using established templates. Understands basic concepts and follows team practices.

Uses NATS / NATS JetStream at a basic level. Performs simple tasks using established templates. Understands basic concepts and follows team practices.

RabbitMQ Awareness

Uses RabbitMQ at a basic level. Performs simple tasks using established templates. Understands basic concepts and follows team practices.

Redis Awareness

Uses Redis at a basic level in Elixir applications — connecting with Redix, executing simple GET/SET commands for session and response caching. Understands basic Redis data types and follows team practices for cache key structure and TTL management in Phoenix applications.

Database Management · 6

Creates basic Ecto schemas with field types and validations through changeset in Elixir projects. Defines has_many, belongs_to and many_to_many associations. Uses embedded_schema for nested structures and cast_assoc for validating associated data.

Database Indexing Awareness

Creates basic indexes in Ecto migrations for PostgreSQL: single-column, unique and composite. Understands index impact on SELECT query speed in Elixir applications. Uses create index and create unique_index in mix ecto.gen.migration migrations.

Creates basic Ecto migrations through mix ecto.gen.migration in Elixir projects. Adds tables, columns and indexes with proper data types. Understands migration execution order and uses mix ecto.migrate and mix ecto.rollback for schema management.

PostgreSQL Awareness

Performs basic SQL queries to PostgreSQL through Ecto in Elixir projects. Creates simple schemas with fields, types and associations (has_many, belongs_to). Uses Ecto.Query for selections, filtering and sorting data in Phoenix applications.

Query Optimization Awareness

Writes efficient Ecto queries for PostgreSQL in Elixir applications. Avoids N+1 problems through Ecto.Query.preload, uses select for fetching needed fields. Understands the difference between preload, join and subquery in the context of performance.

Uses basic transactions in Elixir through Ecto.Repo.transaction/1 for atomic operations. Understands ACID concepts in the context of PostgreSQL and Ecto. Handles transaction errors through pattern matching on {:ok, result} and {:error, reason}.

API & Integration · 5

API Documentation Awareness

Documents Elixir modules and functions through @moduledoc and @doc attributes. Generates documentation through ExDoc with mix docs. Describes Phoenix API endpoints with request and response examples, maintains typespecs for auto-documenting types in ExDoc.

Understands the need for API versioning in Phoenix applications. Implements basic versioning through URL prefixes (/api/v1, /api/v2) using scope in Phoenix Router. Maintains backward compatibility when adding new fields to JSON responses.

GraphQL Design Awareness

Creates basic GraphQL schemas in Elixir using Absinthe. Defines types, queries and mutations through Absinthe DSL. Connects resolvers to Phoenix Ecto contexts, returns data with basic error handling through {:ok, data} and {:error, message}.

REST API Design Awareness

Creates basic REST endpoints in Phoenix Framework using controllers and router. Defines resource routes through resources/4, implements CRUD operations with Ecto schemas. Returns JSON responses through Phoenix.Controller.json/2 with proper HTTP status codes.

Implements basic WebSocket connections in Phoenix through Channels. Creates channels with join, handle_in and handle_out handling. Connects JavaScript client through phoenix.js, sends and receives messages with basic real-time event handling.

Additional skills

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

AWSChatGPT / ClaudeCode ReviewConnection PoolingCPU ProfilingCQRSCursor IDEDatabase ShardingDockerE2E TestingEvent-Driven ArchitectureGit AdvancedGitHub Actions / GitLab CIGitHub CopilotgRPC & Protocol BuffersgRPC & Protocol BuffersHigh Load ArchitectureIntegration TestingJWT / OAuth2 / OIDCKubernetes CoreLatency OptimizationMemory ManagementMessage Broker PatternsNetwork FundamentalsOOP & SOLID PrinciplesOpenTelemetryOWASP & Application SecurityPrometheus & GrafanaPrompt Engineering for CodeProperty-Based TestingPython Web FrameworksRate Limiting & ThrottlingSecure Coding PracticesSLI / SLO / SLAStructured LoggingSystem Design FundamentalsTDD & BDDTerraformType Safety & Type SystemsUnit Testing

What changes at Mid-level

66 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: 66 skills across 5 levels. The matrix is free for individuals and stays free.