 
    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
I wish all technical books were this good.
 
    Designing Data-Intensive Applications by Martin Kleppmann
The one book to read to understand software development.
 
    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
The must-read for software engineers.