Recommended Books
The books that made the biggest difference — for coding interviews, system design, and software engineering in general. Affiliate links help keep this site running at no extra cost to you.
The definitive guide to coding interviews. 189 programming questions and solutions covering data structures, algorithms, and system design.
The book I recommend to anyone starting interview prep. Work through every problem type at least once.
Check price on AmazonStep-by-step framework for tackling system design questions. Covers URL shorteners, social feeds, chat systems, and more.
The clearest intro to system design interviews. Read this before any senior-level interview.
Deeper dives into proximity services, real-time gaming leaderboards, payment systems, and distributed message queues.
Follow-up to Vol. 1 with harder, more realistic designs. Worth it once you have the basics down.
The best book on distributed systems and databases. Covers replication, partitioning, consistency, and stream processing in depth.
DDIA is the single best book for understanding why systems are designed the way they are. Read it slowly.
300+ problems with detailed Java solutions. Harder than LeetCode on average — ideal for deep pattern practice.
Harder than Cracking the Coding Interview. Use it to push past easy-medium comfort zones.
The academic reference for algorithms. Not a prep book — but essential for understanding why algorithms work.
Not a prep book — a reference. Pick up specific chapters when you want to understand an algorithm deeply.
Career and craft fundamentals every senior engineer should have read. Timeless advice on writing maintainable, professional software.
Read early in your career, re-read every few years. The advice holds up.
How to write readable, maintainable code. Polarising but influential — worth reading and forming your own opinion on.
Polarising — some advice is dated, but the core principles on naming and functions are worth internalising.
A concise, opinionated guide to reducing complexity in software. One of the best modern takes on software design.
Short, dense, and more practical than Clean Code. One of the best books on design thinking.
Deep dive into how storage engines, B-trees, LSM trees, and distributed consensus protocols actually work.
For engineers who want to understand databases beyond 'it stores data'. Pairs well with DDIA.