Core curriculum¶
This is the default path for a generalist software engineer. It is ordered by dependency, not by the numbering of the reference chapters. Expect to spend more time building than reading.
1. Programming and debugging¶
Outcome: Write a small program, inspect its state, handle failures, and use tests to change it safely.
The guided modules use Python. You can adapt them to Rust when systems programming is the goal, but keep the same observable outcomes and evidence.
- Read selectively: Python or Rust, Testing, Version control
- Guided module: build and debug a file-backed command-line program.
- Exit criteria: tests cover success and failure paths; another person can clone and run it from the README.
2. How programs run¶
Outcome: Explain what happens between starting a process and executing an instruction, and diagnose basic CPU, memory, disk, and process problems.
- Read selectively: Computer architecture, Operating systems, Linux and shell
- Guided module: inspect how a running program uses processes, memory, files, and system calls.
- Exit criteria: distinguish stack, heap, virtual and resident memory, process, thread, and system call using observations from a running program.
3. Data structures and algorithms¶
Outcome: Choose structures from access patterns and constraints instead of habit.
- Read selectively: Algorithms overview, Searching, Sorting, Graphs
- Guided module: implement and measure lookup structures, binary search, stable sorting, and BFS.
- Exit criteria: state time and space costs, relevant assumptions, and the point where a simpler solution is preferable.
Dynamic programming and greedy algorithms are optional until a real problem requires them.
4. Networks, APIs, and storage¶
Outcome: Trace a request across name resolution, network transport, HTTP, application code, and a database.
- Read selectively: Network fundamentals, Databases, API design
- Guided module: expose the project through a measured HTTP and relational-storage path.
- Exit criteria: define the API contract, constraints, indexes, transactions, timeouts, and error responses; inspect the query plan for a non-trivial query.
5. Security and correctness¶
Outcome: Define trust boundaries and defend common application flows without inventing cryptography.
- Read selectively: Authentication and security, Testing
- Guided module: add authentication, owner authorization, boundary validation, and an audit trail.
- Exit criteria: demonstrate denied access, expired credentials, malformed input, duplicate requests, and safe failure behavior.
Use current primary guidance—such as OWASP and vendor documentation—for security-sensitive implementation details.
6. Design and delivery¶
Outcome: Organize a service so that it can be changed, reviewed, built, and deployed predictably.
- Read selectively: Software architecture, Design patterns, SDLC, CI/CD
- Guided module: refine justified boundaries and deliver one tested, versioned artifact.
- Exit criteria: one command runs local checks, and the delivery pipeline repeatably produces a versioned artifact traceable to its source and dependencies.
7. Production and reliability¶
Outcome: Operate the service, observe its behavior, and respond to failure.
- Read selectively: Containerization, Monitoring, SRE, Performance engineering
- Guided module: operate one release image, define reliability, and find its measured limit.
- Exit criteria: define an SLO, find a deliberately introduced fault using telemetry, and identify the actual bottleneck from measurements.
8. Distributed systems¶
Outcome: Recognize when distribution is necessary and reason about partial failure, consistency, retries, and duplicate work.
- Read selectively: Distributed systems, Message queues, System design
- Guided module: evaluate and, only if justified, add one durable asynchronous workflow.
- Exit criteria: document delivery semantics, idempotency, ordering, timeout, retry, and recovery behavior.
Finish with evidence¶
Complete the production service project. Keep a short decision log containing the problem, options, evidence, choice, and conditions that would cause you to revisit it.