Knows basic algorithms and complexity concepts for compiler engineering and can apply them in common tasks. Uses standard tools and follows established team practices. Understands when and why this approach is used.
Roles · Compiler Engineer · Junior
What a Junior } should know
12 core skills, 55 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, Version Control & Collaboration, Compilers & Languages.
Core skills for a Junior
Grouped by area. The label on the right is the expected depth: Awareness, Working, Advanced or Expert.
Programming Fundamentals · 3
Knows basic code quality concepts for compiler engineering and can apply them in common tasks. Uses standard tools and follows established team practices. Understands when and why this approach is used.
Knows basic data structure concepts for compiler engineering and can apply them in common tasks. Uses standard tools and follows established team practices. Understands when and why this approach is used.
Version Control & Collaboration · 1
Knows basic code review concepts for compiler engineering and can apply them in common tasks. Uses standard tools and follows established team practices. Understands when and why this approach is used.
Compilers & Languages · 8
Understands Abstract Syntax Tree structure and can recursively traverse trees. Applies visitor pattern for simple transformations. Knows main AST node types for popular languages.
Understands what code generation is and the difference between native code, bytecode and interpretation. Knows basic concepts of register allocation and instruction selection. Can read x86/ARM assembly.
Knows classic compiler optimizations: constant folding, DCE, CSE. Understands when optimizations are correct and safe. Can read and compare optimized IR.
Understands the difference between a compiler and an interpreter, knows the tree-walking interpreter pattern. Implements a simple interpreter for arithmetic expressions with variables.
Understands the difference between AOT and JIT compilation and when to use each. Knows concepts of hot path, execution profiling, deoptimization. Has studied JIT in JVM (HotSpot) or V8.
Knows lexical analysis basics: source code tokenization, regular grammars and finite automata. Can implement a simple lexer manually, understands the practical difference between lexer and parser.
Knows LLVM architecture: frontend, IR, backend, and the role of each component. Understands LLVM IR structure and basic instructions. Can compile C through clang and study generated IR.
Understands basic type inference algorithms: unification, Hindley-Milner inference. Knows the difference between structural and nominal type systems. Can work with simple generics.
Additional skills
Not assessed by the team, but part of the self-assessment and the development plan.
What changes at Mid-level
55 skills get a higher expectation or become core when moving from Junior to Mid-level. The biggest jumps first.
- Algorithms & Complexity: Awareness → Working
- AST & IR Manipulation: Awareness → Working
- Code Generation: Awareness → Working
- Code Quality & Refactoring: Awareness → Working
- Code Review: Awareness → Working
- Compiler Optimization Passes: Awareness → Working
- Data Structures: Awareness → Working
- Interpreter Design: Awareness → Working
- JIT Compilation: Awareness → Working
- Lexing & Parsing: Awareness → Working
} in the open competency matrix: 55 skills across 5 levels. The matrix is free for individuals and stays free.