Domain
Compilers & Languages
Skill Profile
Code generation: machine code emission, register allocation, instruction selection
Roles
3
where this skill appears
Levels
5
structured growth path
Mandatory requirements
11
the other 4 optional
Compilers & Languages
Compiler Tools
3/17/2026
Choose your current level and compare expectations. The items below show what to cover to advance to the next level.
The table shows how skill depth grows from Junior to Principal. Click a row to see details.
| Role | Required | Description |
|---|---|---|
| Compiler Engineer | Required | 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. |
| Language Tooling Engineer | Generates simple code output from IR using template-based emitters. Understands the mapping from AST nodes to target language constructs. Writes basic tests verifying generated code correctness. | |
| Systems Programmer (C/C++) | Reads generated assembly or machine code output from compiler backends. Understands basic instruction selection and register allocation concepts. Traces code generation paths to debug simple output issues. |
| Role | Required | Description |
|---|---|---|
| Compiler Engineer | Required | Implements code generation for stack-based or register-based bytecode. Uses LLVM or QBE for native code generation. Generates optimized code for function call patterns. |
| Language Tooling Engineer | Implements code generators targeting multiple output formats (source code, bytecode). Builds peephole optimizations and handles platform-specific code emission. Writes property-based tests for generated output validation. | |
| Systems Programmer (C/C++) | Implements instruction selection and scheduling passes for target architectures. Works with register allocators and handles calling convention compliance. Writes extensive tests ensuring generated binary correctness across platforms. |
| Role | Required | Description |
|---|---|---|
| Compiler Engineer | Required | Designs instruction selection and register allocation for a new target. Implements calling convention for custom ABI. Optimizes codegen for specific CPU architectures (x86/ARM/RISC-V). |
| Language Tooling Engineer | Required | Designs code generation pipelines with pluggable backends for multiple target platforms. Architects JIT compilation and incremental code generation strategies. Mentors the team on compiler backend design and optimization trade-offs. |
| Systems Programmer (C/C++) | Required | Designs code generation backends targeting custom hardware and specialized ISAs. Architects auto-vectorization and SIMD code emission strategies. Mentors engineers on low-level optimization and hardware-software co-design. |
| Role | Required | Description |
|---|---|---|
| Compiler Engineer | Required | Architects compiler backend and codegen pipeline. Makes decisions about instruction scheduling and peephole optimization. Manages the backend engineering team. |
| Language Tooling Engineer | Required | Defines compiler architecture. Establishes development standards. Coordinates compiler team. |
| Systems Programmer (C/C++) | Required | Defines compiler architecture. Establishes development standards. Coordinates the compiler team. |
| Role | Required | Description |
|---|---|---|
| Compiler Engineer | Required | Defines code generation strategy for new ISAs (RISC-V, WebAssembly). Researches superoptimization and stochastic codegen techniques. Participates in ABI standardization for the platform. |
| Language Tooling Engineer | Required | Defines compiler/language development strategy. Designs core language features. Shapes technology vision. |
| Systems Programmer (C/C++) | Required | Defines compiler/language development strategy. Designs core language features. Establishes technology vision. |