Books

Most programming books teach you frameworks and abstractions. These teach you how computers actually work.

“The C Programming Language” - Kernighan & Ritchie (2nd edition)
Not just a language manual. Shows you how to think about problems without layers of abstraction getting in the way. Every serious systems programmer needs this foundation.

“Computer Systems: A Programmer’s Perspective” - Bryant & O’Hallaron (3rd edition)
Bridges the gap between high-level code and what the machine actually does. Assembly, memory, linking, optimization - everything your compiler abstracts away but you need to understand.

“Operating Systems: Design and Implementation” - Tanenbaum
Theory backed by real code. Shows you how MINIX works line by line. Understanding OS internals makes you write better user-space code.

“Advanced Programming in the UNIX Environment” - Stevens & Rago (3rd edition)
The definitive guide to POSIX programming. Every system call, every gotcha, every portable way to do things. Essential for anyone writing serious Unix software.

“The Art of Computer Programming, Volume 1” - Knuth
Mathematics of computer science. Dense, mathematical, but teaches you to think algorithmically. Keep it as a reference, work through problems slowly.

Real learning happens by reading code, breaking things, and fixing them. Books just give you the theoretical foundation you need to understand what you’re looking at.