A learning roadmap · in progress
Building engineering judgment
Follow along with what I'm doing and the resources I'm using to become better at decision making & problem solving as a Software Engineer. Building everything out in the open for anyone to see.
Build — CodeCrafters
One milestone per course, taken to (pragmatic) completion, in order. Sub-checkpoints are the CodeCrafters stage-groups; each milestone ends in a capstone decision log.
M1 Redis
Build a Redis server from raw sockets to replication — defend choosing an in-memory store over disk, and name exactly when that choice breaks.
0% +
“RESP vs JSON for a wire protocol: what Redis traded away, and the workload where I’d make the opposite call.” not started
“RDB vs AOF: the durability/latency/recovery trade I’d default to, and the workload that flips it.” not started
“Single-leader vs multi-leader: where I draw the line, and what each costs.” not started
M2 SQLite
Read a real SQLite database by hand — page headers, the B-tree, an indexed query — and predict which storage engine wins a query pattern before benchmarking.
0% +
“B-tree vs LSM for this workload: which I’d reach for, and the read/write ratio that flips the call.” not started
M3 HTTP server
Build an HTTP/1.1 server — requests, responses, headers, compression, keep-alive — and reason about encoding and evolution on the wire.
0% +
“Versioning an API without breaking last year’s clients — the migration I’d never ship.” not started
M4 DNS server
Build a DNS server — construct and parse the binary packet format, handle name compression, forward queries — and appreciate compact wire encoding.
0% +
“Compact binary protocols: where DNS’s choices (name compression, UDP) pay off and where they bite.” not started
M5 Kafka
Build a Kafka broker — the partitioned log, offsets, fetch and produce — and name the consistency model a system needs versus the one it secretly relies on.
0% +
“Which consistency model a feature needs — and the one it’s secretly relying on.” not started
“Capstone: a published system-design writeup distilled from these decision logs.” not started
Reading — interleaved
Read ~1–2 chapters/week, interleaved with the builds: one "anchor" chapter (DDIA / Database Internals) plus one "light" read (A Philosophy of Software Design, then OSTEP). DDIA + APoSD finish within the build; the rest carries past it.
Database Internals
0/14 +
0/7 +
A Philosophy of Software Design
0/5 +
Foundations — NeetCode
Course-first, then problems: finish the courses, then work NeetCode 150 pattern by pattern. The patterns line up with the builds (shown as ↔ hints).
Courses
NeetCode 150 — patterns
Retention — spaced review
The other tracks ask "have I done it?" This one asks "do I still know it?" A card enters rotation once its milestone is checked off, then resurfaces on an SM-2 schedule. The count is public; the schedule is private.
Complete a milestone to put its cards in rotation.
Complete a milestone to put its cards in rotation.
All caught up.
Progress is shared — what you see is the live, saved state. The owner can unlock edit mode to check items off.