Learning paths
Structured sequences of courses that take you from zero to job-ready. Pick a path, follow it in order.
Embedded / Firmware Engineer
Tight memory budgets, no GC, direct hardware access. C and Rust for the firmware itself; assembly for the CPU layer; then build the kernels and emulators that run on bare metal.
Database Engineer
What's actually inside Postgres, RocksDB, ClickHouse, and Neo4j. SQL deep; Rust for performance; then build a KV store, LSM tree, columnar store, time-series and graph databases.
Distributed Systems Engineer
The hard problems: consensus, gossip, partitioning, ordering, fault tolerance. Go and Erlang are the languages; Raft, Kafka, and blockchain are the proving grounds.
Game Developer
C++ and Lua — the canonical pair for game engines and scripting. Plus the rendering, physics, and engine projects that prove you understand the math.
Compiler Engineer
Build the tools that turn source into something the CPU can run. Rust and Haskell for the type theory that powers modern compilers; OCaml for ML lineage; then implement progressively harder compilers and interpreters yourself.
Security Engineer
Build the cryptography you'll later audit. Hash functions, symmetric and public-key crypto, certificate authorities, TLS, the Signal protocol. Plus the auth primitives every backend needs.
Systems Engineer
The metal layer: C, Rust, and assembly. Then build the things underneath your usual abstractions — memory allocators, CPU emulators, file systems, OS kernels.
Mobile Developer
Native iOS and Android — Swift and Kotlin (with Objective-C for legacy iOS code). Plus the frameworks and patterns mobile apps lean on.
Machine Learning Engineer
Implement ML from first principles. Python deep, then build a neural network and a GPT-style transformer from scratch. Plus the linear algebra that makes everything work (Octave / Fortran).
Data Scientist
Python, R, and SQL — the canonical trio of data analysis. Plus the data structures that underlie efficient queries (bloom filters, tries, search engines).
DevOps / SRE
Operate the systems other engineers build. Bash + Go for tooling; Docker, CI runners, package managers, log aggregators, load balancers, service discovery for the platform.
Full-Stack Developer
Both ends of the wire: JavaScript/TypeScript on the client, plus a backend language and the protocols that connect them.