Skip to main content
CodeFlow

30 books · curated reading list

Library

The books we'd hand to a learner sitting next to us. Algorithms, interview prep, language deep-dives, and the engineering classics. Filter by tier or family, search by title or author. Press / anywhere on the page to focus the search.

Some links on this page are affiliate links — see the disclosure.

30 books

Top picks

10 books
Cover of Clean Code

Clean Code

Engineering practiceTop pick

by Robert C. Martin

A handbook of agile software craftsmanship — naming, functions, comments, error handling.

Every team has at least one engineer who quotes this book. Read it once early, re-read it once you have a year of code under your belt.

Cover of Cracking the Coding Interview

Cracking the Coding Interview

Interview prepTop pick

by Gayle Laakmann McDowell

189 programming questions and solutions plus the meta-skills of how tech interviews actually work.

The default prep book for FAANG-style interviews. Sixth edition; still the highest-recommended title in the genre.

Cover of Eloquent JavaScript (3rd Edition)

Eloquent JavaScript (3rd Edition)

Language-specificTop pick

by Marijn Haverbeke

Free online; the print edition still sells because the pacing is unmatched.

Pairs with the JavaScript / HTML+CSS tabs in our Playground. Builds up a tiny computer simulator in pure JS by the end.

Cover of Grokking Algorithms

Grokking Algorithms

AlgorithmsTop pick

by Aditya Y. Bhargava

Hand-drawn illustrations + 400+ pages of friendly walkthroughs of the algorithms that matter.

The closest book to CodeFlow in spirit. Second edition (2024) doubles the illustrations and adds a chapter on probabilistic data structures.

Cover of Head First Design Patterns

Head First Design Patterns

PatternsTop pick

by Eric Freeman · Elisabeth Robson

Twenty-three patterns explained the way your brain actually wants to learn them.

Once you've internalised classes, this teaches you how grown-up codebases stay flexible. Updated for Java 8+ — the patterns themselves are language-agnostic.

Cover of Head First Java

Head First Java

Language-specificTop pick

by Kathy Sierra · Bert Bates · Trisha Gee

Pictures, stories, puzzles — the original Head First book and still the gentlest path into Java.

CodeFlow's pedagogy IS Head First. If you like the lessons here, this is the book those lessons descend from. Third edition (2022) covers modern Java.

Cover of Head First Python

Head First Python

Language-specificTop pick

by Paul Barry

Pictures and projects all the way down — Python from the syntax up to a working web app.

Pairs perfectly with the Pyodide tab in our Playground. Same brain-friendly format you already like.

Cover of Python Crash Course (3rd Edition)

Python Crash Course (3rd Edition)

Language-specificTop pick

by Eric Matthes

Two halves: the language, then three projects (a game, a data viz, a web app).

Highest-selling Python beginner book on Amazon for a reason. The project half is what makes it stick.

Cover of The Pragmatic Programmer (20th Anniversary Edition)

The Pragmatic Programmer (20th Anniversary Edition)

Engineering practiceTop pick

by David Thomas · Andrew Hunt

The career-shaping advice book — DRY, orthogonality, plain text, fixing broken windows.

Updated 20 years after the first edition with modern examples. Less tactical than Clean Code, more about how to think about your craft.

Catalog

13 books
Cover of Designing Data-Intensive Applications

Designing Data-Intensive Applications

SystemsCatalog

by Martin Kleppmann

Replication, partitioning, transactions, consistency — every distributed-systems decision explained without the marketing.

The book every senior backend engineer recommends to mids. Kleppmann's clarity on consistency models alone is worth it.

Cover of Effective Java (3rd Edition)

Effective Java (3rd Edition)

Language-specificCatalog

by Joshua Bloch

90 specific items: best practices, idioms, design choices.

Required reading for anyone shipping Java. Bloch wrote the standard Collections API; he knows the corners.

Cover of Effective Modern C++

Effective Modern C++

Language-specificCatalog

by Scott Meyers

42 specific ways to use C++11 and C++14 well — auto, smart pointers, lambdas, move semantics.

The book that turned modern C++ from "what does this even mean" into a working mental model.

Cover of Introduction to Algorithms (4th Edition)

Introduction to Algorithms (4th Edition)

AlgorithmsCatalog

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

CLRS — the algorithms textbook. Comprehensive, mathematical, the reference that every other reference cites.

When you outgrow Grokking Algorithms and need rigour, CLRS is where you go. 4th edition (2022) adds machine learning and online algorithms chapters.

Cover of Refactoring (2nd Edition)

Refactoring (2nd Edition)

Engineering practiceCatalog

by Martin Fowler

A catalog of small, named, mechanical transformations that keep behavior the same while improving design.

The 2nd edition rewrites all examples in JavaScript. The point of the book isn't the catalog — it's the discipline of taking small steps you can undo.

Cover of Structure and Interpretation of Computer Programs

Structure and Interpretation of Computer Programs

FoundationsCatalog

by Harold Abelson · Gerald Jay Sussman · Julie Sussman

The MIT intro book, in Scheme. Builds an interpreter, a compiler, a register machine — from primitives.

Ages well because it's about thinking, not syntax. Working through it changes how you read code afterwards.

Cover of The Algorithm Design Manual (3rd Edition)

The Algorithm Design Manual (3rd Edition)

AlgorithmsCatalog

by Steven S. Skiena

A practitioner counterweight to CLRS — half techniques, half a catalog of problems and which algorithm solves each.

When CLRS feels too dense, Skiena reads like a smart friend. The "war stories" chapters are worth the cover price alone.

Cover of The C Programming Language (2nd Edition)

The C Programming Language (2nd Edition)

Language-specificCatalog

by Brian W. Kernighan · Dennis M. Ritchie

K&R — the original tutorial for C, written by the language's designer.

40 years old and still the most readable introduction to C. Tight, beautiful prose; every page earns its keep.

Cover of The Go Programming Language

The Go Programming Language

Language-specificCatalog

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

The K&R for Go — co-authored by Kernighan again, decades later.

Concise, beautifully edited, and covers concurrency the way Go expects you to think about it.

Cover of The Mythical Man-Month

The Mythical Man-Month

Engineering practiceCatalog

by Frederick P. Brooks Jr.

Essays on software project management from 1975, mostly still right.

"Adding people to a late project makes it later." Read it for the prose; keep it for the recurring vindication.

Cover of The Rust Programming Language (2nd Edition)

The Rust Programming Language (2nd Edition)

Language-specificCatalog

by Steve Klabnik · Carol Nichols

The official book — free online ("The Book"), better in print.

Walks you through ownership, borrowing, and lifetimes the way they should be taught. The print edition is updated against the latest stable Rust.

Cover of You Don't Know JS Yet (Books 1 & 2)

You Don't Know JS Yet (Books 1 & 2)

Language-specificCatalog

by Kyle Simpson

Deep-dive series on JavaScript's actual semantics — closures, this, prototypes, types.

After Eloquent JavaScript, this is where you stop guessing about JS edge cases. Simpson is famously precise.

Deep dives

7 books
Cover of Crafting Interpreters

Crafting Interpreters

SpecialtyDeep dive

by Robert Nystrom

Build two complete interpreters for a small language — first in Java (tree-walking), then in C (bytecode VM).

Free online; the print edition is gorgeously typeset. Nystrom wrote it across six years and you can feel it.

Cover of Database Internals

Database Internals

SystemsDeep dive

by Alex Petrov

How databases actually store and retrieve data — B-trees, LSM trees, replication, consensus.

After Designing Data-Intensive Applications, this is the implementation-level layer. Worth it if you've ever wondered why Postgres and Cassandra make different trade-offs.

Cover of Designing Machine Learning Systems

Designing Machine Learning Systems

SpecialtyDeep dive

by Chip Huyen

How to build production ML systems — data, models, deployment, monitoring, the messy parts.

Most ML books teach algorithms. This teaches you how to ship them. Huyen has shipped real systems at Snorkel, Stitch Fix, NVIDIA.

Cover of Hacking: The Art of Exploitation (2nd Edition)

Hacking: The Art of Exploitation (2nd Edition)

SpecialtyDeep dive

by Jon Erickson

Network attacks, shellcode, buffer overflows — explained at the bytes-and-registers level.

Comes with a Linux LiveCD so you can try every exploit safely. Stays relevant because the underlying assumptions of C and the CPU haven't changed.

Cover of Introduction to Reliable and Secure Distributed Programming

Introduction to Reliable and Secure Distributed Programming

SpecialtyDeep dive

by Christian Cachin · Rachid Guerraoui · Luís Rodrigues

The textbook on distributed-system primitives — failure detectors, consensus, broadcast, shared memory.

When you've absorbed the practical side from DDIA, this is the formal layer. Used in graduate distributed-systems courses.

Cover of Operating Systems: Three Easy Pieces

Operating Systems: Three Easy Pieces

SystemsDeep dive

by Remzi H. Arpaci-Dusseau · Andrea C. Arpaci-Dusseau

Free online; print exists. Three pieces: virtualization, concurrency, persistence. The clearest OS textbook in print.

The Arpaci-Dusseaus write the way you wish your professors did. Every chapter is short and focused.