The Nature of Code by Daniel Shiffman

The Nature of Code by Daniel Shiffman

It is, by far, the best book I have read on software engineering for beginners.

Crafting Interpreters by Robert Nystrom

Crafting Interpreters by Robert Nystrom

I wish all technical books were this good.

Designing Data-Intensive Applications by Martin Kleppmann

Designing Data-Intensive Applications by Martin Kleppmann

The one book to read to understand software development.

Systems desigh interview by Alex Xu

Systems desigh interview by Alex Xu

The high-level design of different systems, from URL shorteners to YouTube.

A Philosophy of Software Design by John Ousterhout

A Philosophy of Software Design by John Ousterhout

The must-read for software engineers.