Skill Profile

Type Inference & Type Checking

Type inference: Hindley-Milner, unification, type checking, generics, variance

Compilers & Languages Compiler Theory

Roles

3

where this skill appears

Levels

5

structured growth path

Mandatory requirements

11

the other 4 optional

Domain

Compilers & Languages

Group

Compiler Theory

Last updated

3/17/2026

How to Use

Choose your current level and compare expectations. The items below show what to cover to advance to the next level.

What is Expected at Each 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 basic type inference algorithms: unification, Hindley-Milner inference. Knows the difference between structural and nominal type systems. Can work with simple generics.
Language Tooling Engineer Learns basics of type inference algorithms such as Hindley-Milner and unification. Reads compiler source code to understand how type checking passes work in practice.
Systems Programmer (C/C++) Studies how type inference and type checking affect memory layout and safety guarantees. Understands basic type system rules enforced by the compiler in languages like Rust or C++.
Role Required Description
Compiler Engineer Required Implements bidirectional type checking for languages with type annotations. Understands constraint-based type inference. Writes a type checker for a language with generics and simple subtyping.
Language Tooling Engineer Implements type inference passes and integrates them with IR transformations. Writes comprehensive test suites for type checker correctness including edge cases with generics and variance.
Systems Programmer (C/C++) Applies type inference knowledge to write safer low-level code with minimal explicit annotations. Leverages compiler type checking to catch memory safety issues and undefined behavior at compile time.
Role Required Description
Compiler Engineer Required Designs type system for a new language: variance, higher-kinded types, existential types. Implements incremental type checking for language server. Optimizes type checker performance.
Language Tooling Engineer Required Designs advanced type system features including dependent types, GADTs, and type-level computation. Architects compiler optimization passes that leverage type information for better code generation. Mentors the team on type theory.
Systems Programmer (C/C++) Required Designs type-safe abstractions for system-level APIs that enforce correctness at compile time. Evaluates and influences type system design decisions in languages like Rust, contributing to safer systems programming patterns.
Role Required Description
Compiler Engineer Required Architects type system evolution for the language with backward compatibility in mind. Makes decisions about breaking changes. Manages the type system 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 long-term type system strategy for the platform language. Researches dependent types, linear types, effect systems. Publishes academic papers on type systems.
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.

Community

👁 Watch ✏️ Suggest Change Sign in to suggest changes
📋 Proposals
No proposals yet for Type Inference & Type Checking
Loading comments...