Books
Technical books, programming guides, and software development literature that provide valuable knowledge and insights for developers at all levels.

Test-Driven Development: By Example
By Kent Beck
Kent Beck's foundational work on TDD that introduced the methodology of writing tests before code. This seminal book demonstrates TDD through practical examples including a multi-currency system and building a testing framework from scratch.
The foundational work on TDD that introduced the methodology of writing tests before code. Essential reading for understanding how tests drive design and reduce fear in programming. Read full review.

97 Things Every Programmer Should Know: Collective Wisdom from the Experts
By Kevlin Henney
Edited by Kevlin Henney, a curated set of timeless, page-length lessons from industry legends. Each item is a standalone insight you can read in five minutes.
Timeless, page-length lessons from industry legends. Perfect for busy developers—read one item in five minutes, learn something useful, put it down. Read full review.

Algorithms to Live By: The Computer Science of Human Decisions
By Brian Christian, Tom Griffiths
Brian Christian and Tom Griffiths' exploration of computer science explained through everyday life. Surprisingly useful for developers who want to understand algorithms through real-world applications.
Made me see computer science everywhere. The chapter on caching helped me understand slow database queries, and the scheduling insights improved our task queues. Read full review.

Clean Architecture: A Craftsman's Guide to Software Structure and Design
By Robert C. Martin
Robert C. Martin's practical framework for building systems that stay flexible as they grow. Learn dependency rules, boundary design, and architectural patterns that keep codebases maintainable at scale.
The dependency rule and boundary design patterns gave me the vocabulary to fix a monolith that had grown into a dependency nightmare. Essential reading for anyone designing systems that need to scale. Read full review.

Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software Bugs
By David Agans
David Agans' short, tactical guide to debugging. One of the best practical engineering books ever written—unforgettable rules for finding bugs that seem impossible to track down.
The shortest book on my shelf and one of the most useful. Agans' nine rules—make it fail, divide and conquer, quit thinking and look—have saved me hours of debugging frustration. Read full review.

Designing for Scalability with Erlang/OTP: Implement Robust, Fault-Tolerant Systems
By Francesco Césarini, Steve Vinoski
Césarini and Vinoski's guide to building fault-tolerant systems with Erlang/OTP. Even if you never write Erlang, the mental models for fault-tolerance and concurrency are outstanding.
Changed how I think about fault tolerance. Even if you never write Erlang, the mental models for supervision trees and process isolation apply to any resilient system. Read full review.

Domain-Driven Design: Tackling Complexity in the Heart of Software
By Eric Evans
Eric Evans' classic for understanding and taming business complexity. Learn how to model domains, design bounded contexts, and build software that reflects how the business actually works.
Evans' concept of the ubiquitous language and bounded contexts transformed how I approach requirements. Essential for anyone building software that models business domains. Read full review.

Effective JavaScript: 68 Specific Ways to Harness the Power of JavaScript
By David Herman
David Herman's sharp, practical book full of gotchas and deep insights into the language. Learn JavaScript's quirks, best practices, and how to write code that actually works.
The book I wish I'd read before debugging subtle type coercion bugs. Herman's 68 items explain JavaScript's quirks in a way that sticks—essential for anyone writing serious JavaScript. Read full review.

JavaScript: The Good Parts (Updated Edition)
By Douglas Crockford
Douglas Crockford's short, opinionated guide to JavaScript's best features. Still deeply useful despite being written for an older version of the language—the principles remain timeless.
Crockford's short, opinionated guide shows how to ignore JavaScript's bad parts and use the good ones. The chapter on functions and closures is worth the price alone. Read full review.

Release It! Design and Deploy Production-Ready Software (2nd Edition)
By Michael Nygard
Michael Nygard's definitive guide for production hardening, resilience, and real-world failures. Learn how to design systems that survive in production, not just work in development.
The book I read after my first production incident. Nygard's stability patterns and capacity planning framework helped me understand why code that works in dev fails in production. Read full review.

Software Engineering at Google: Lessons Learned from Programming Over Time
By Titus Winters, Tom Manshreck, Hyrum Wright
Titus Winters, Tom Manshreck, and Hyrum Wright's practical lessons in scale, culture, testing, and long-term maintainability. Learn how Google builds software that lasts decades.
Lessons from maintaining codebases for decades. The chapters on testing, code review culture, and documentation gave me frameworks that work at any scale. Read full review.

Team Topologies: Organizing Business and Technology Teams for Fast Flow
By Matthew Skelton, Manuel Pais
Matthew Skelton and Manuel Pais' modern framework for designing software teams and reducing cognitive load. Learn how team structure affects software architecture and delivery speed.
Explained why our microservices weren't working. The framework that team structure and software architecture are inseparable changed how I think about system design. Read full review.

The Art of Unit Testing: with Examples in JavaScript (3rd Edition)
By Roy Osherove
Roy Osherove's concrete patterns and habits for writing useful tests, not just more tests. Learn how to write tests that actually help you, not just satisfy coverage metrics.
Taught me the difference between tests that help and tests that just exist. Osherove's focus on test quality over quantity—and when to use mocks vs. stubs—is essential. Read full review.

The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change
By Camille Fournier
Camille Fournier's roadmap for senior ICs, tech leads, and managers. Even individual contributors benefit from understanding team dynamics, career progression, and the transition from coding to leadership.
Essential reading for senior ICs considering tech lead work. Fournier's breakdown of each level from senior IC to VP helped me understand what I was signing up for. Read full review.

The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win
By Gene Kim, George Spafford, Kevin Behr
Gene Kim, George Spafford, and Kevin Behr's DevOps novel that teaches operations, bottlenecks, and flow. Learn the principles of continuous delivery through a story about saving a failing IT project.
The DevOps novel that teaches operations and flow through story. I hand this to executives who don't understand why deployments break—it makes the concepts stick. Read full review.

The Rust Programming Language (2nd Edition)
By Steve Klabnik, Carol Nichols
Clear, modern introduction to one of the fastest-growing systems languages. Learn Rust's ownership model, memory safety, and how to write fast, reliable systems code.
The book that finally made Rust's ownership model click. The second edition's updated examples and async/await coverage make it the best introduction to modern Rust. Read full review.

The Self-Taught Programmer: The Definitive Guide to Programming Professionally
By Cory Althoff
Cory Althoff's foundational book for rounding out any autodidact's core skills. Learn programming fundamentals, best practices, and how to think like a professional developer.
The book I recommend to developers who learned from tutorials but never learned fundamentals. Covers version control, testing, and working on a team—essential for professional work. Read full review.

The Staff Engineer's Path: A Guide for Individual Contributors Navigating Growth and Change
By Tanya Reilly
Tanya Reilly's guide to thinking and operating at staff-plus levels. Learn how to have impact without direct reports, influence architecture decisions, and navigate the transition from senior to staff engineer.
The book I wish existed when figuring out what staff engineers do. Reilly's breakdown of scope, technical leadership, and having impact without authority is essential reading. Read full review.