Resources

Some links on this page are affiliate links. If you purchase through them, I may earn a small commission at no extra cost to you. This helps keep the site running.

Algorithms & Data Structures

Grokking Algorithms cover

Grokking Algorithms

by Aditya Bhargava

A beautifully illustrated, beginner-friendly introduction to algorithms. Great first book before diving into more formal texts.

Introduction to Algorithms (CLRS) cover

Introduction to Algorithms (CLRS)

by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein

The definitive algorithms textbook. Dense but comprehensive — best used as a reference alongside lighter introductions.

Interview Preparation

Cracking the Coding Interview cover

Cracking the Coding Interview

by Gayle Laakmann McDowell

The classic interview prep book. Covers data structures, algorithms, and behavioral questions with 189 practice problems.

Elements of Programming Interviews cover

Elements of Programming Interviews

by Adnan Aziz, Tsung-Hsien Lee, Amit Prakash

A problem-driven approach to interview prep with 300 problems and detailed solutions. More advanced than CTCI.

Software Engineering

The Pragmatic Programmer cover

The Pragmatic Programmer

by David Thomas, Andrew Hunt

Timeless advice on the craft of software development. Covers everything from code quality to career growth.

Clean Code cover

Clean Code

by Robert C. Martin

Practical guide to writing readable, maintainable code. The examples are in Java but the principles are universal.

A Philosophy of Software Design cover

A Philosophy of Software Design

by John Ousterhout

A concise, opinionated take on software complexity and how to fight it. Excellent complement to Clean Code.

System Design

Designing Data-Intensive Applications cover

Designing Data-Intensive Applications

by Martin Kleppmann

Deep dive into the architecture of modern data systems — replication, partitioning, consistency, and beyond. Essential for backend engineers.

System Design Interview cover

System Design Interview

by Alex Xu

Step-by-step framework for tackling system design questions with real-world examples like designing a chat system or news feed.

Go

The Go Programming Language cover

The Go Programming Language

by Alan A. A. Donovan, Brian W. Kernighan

The authoritative introduction to Go by one of the original Unix pioneers. Thorough and well-structured.

Learning Go cover

Learning Go

by Jon Bodner

A practical, modern guide to Go for developers coming from other languages. Covers idioms, tooling, and best practices.