Fans pick 100 books like A Philosophy of Software Design

By John K. Ousterhout,

Here are 100 books that A Philosophy of Software Design fans have personally recommended if you like A Philosophy of Software Design. Shepherd is a community of 12,000+ authors and super readers sharing their favorite books with the world.

When you buy books, we may earn a commission that helps keep our lights on (or join the rebellion as a member).

Book cover of Automate the Boring Stuff with Python: Practical Programming for Total Beginners

Christopher Trudeau Author Of Django in Action

From my list on books for coders shelf.

Why am I passionate about this?

My first computer was an early IBM PC back when all my friends had Commodores they used for gaming. Not being able to share their games meant I had to do something else, so I read the Introduction to Basic book that came in the box. I’ve been coding, reading about coding, writing about coding, teaching about coding, and talking about coding ever since. The world of technology moves so fast that it is hard to keep up. If you’ve taken one of my courses or listened to The Real Python Podcast, I hope you’ve heard about my passion for the topic. 

Christopher's book list on books for coders shelf

Christopher Trudeau Why did Christopher love this book?

When I work with students new to programming I often find they struggle with translating the toy problems in exercises to actually doing something in the real world.

I love this book and frequently recommend it to new programmers because it is centered around problems. Coding should be about making your life easier. At the beginning, the problems are small, but by the end, you’re learning about email, PDFs, and GUIs.

Sweigart has a great voice, and reading this feels like being guided by a friend rather than yet another coding textbook.

By Al Sweigart,

Why should I read it?

1 author picked Automate the Boring Stuff with Python as one of their favorite books, and they share why you should read it.

What is this book about?

In this second edition of Automate the Boring Stuff with Python, you'll learn the basics of programming in Python, the fastest growing programming language today, before moving on to create Python programs that effortlessly perform useful and impressive feats of automation. This updated edition is full of step-by-step instructions that walk through each programme. Practice projects at the end of each chapter challenge you to improve those programmes and use your newfound skills to automate similar tasks.


Book cover of Refactoring Databases: Evolutionary Database Design

Christopher Trudeau Author Of Django in Action

From my list on books for coders shelf.

Why am I passionate about this?

My first computer was an early IBM PC back when all my friends had Commodores they used for gaming. Not being able to share their games meant I had to do something else, so I read the Introduction to Basic book that came in the box. I’ve been coding, reading about coding, writing about coding, teaching about coding, and talking about coding ever since. The world of technology moves so fast that it is hard to keep up. If you’ve taken one of my courses or listened to The Real Python Podcast, I hope you’ve heard about my passion for the topic. 

Christopher's book list on books for coders shelf

Christopher Trudeau Why did Christopher love this book?

When helping software organizations be nimbler, I tend to stress two things: release more frequently and automate everything. Over the years, I’ve frequently got pushback from the database folks. Most DBAs and Data Architects are taught a very top-down approach and want all information upfront before creating a single table.

This book teaches how to apply abstraction layers that are common in programming but not as common in database design. The book showed me how to use versioned views to control the coding interface and upended my overall approach to designing databases.

By Scott W. Ambler, Pramod J. Sadalage,

Why should I read it?

1 author picked Refactoring Databases as one of their favorite books, and they share why you should read it.

What is this book about?

Refactoring has proven its value in a wide range of development projects-helping software professionals improve system designs, maintainability, extensibility, and performance. Now, for the first time, leading agile methodologist Scott Ambler and renowned consultant Pramodkumar Sadalage introduce powerful refactoring techniques specifically designed for database systems.

Ambler and Sadalage demonstrate how small changes to table structures, data, stored procedures, and triggers can significantly enhance virtually any database design-without changing semantics. You'll learn how to evolve database schemas in step with source code-and become far more effective in projects relying on iterative, agile methodologies.

This comprehensive guide and reference helps you overcome…


Book cover of Open Source Licensing: Software Freedom and Intellectual Property Law

Christopher Trudeau Author Of Django in Action

From my list on books for coders shelf.

Why am I passionate about this?

My first computer was an early IBM PC back when all my friends had Commodores they used for gaming. Not being able to share their games meant I had to do something else, so I read the Introduction to Basic book that came in the box. I’ve been coding, reading about coding, writing about coding, teaching about coding, and talking about coding ever since. The world of technology moves so fast that it is hard to keep up. If you’ve taken one of my courses or listened to The Real Python Podcast, I hope you’ve heard about my passion for the topic. 

Christopher's book list on books for coders shelf

Christopher Trudeau Why did Christopher love this book?

Most of the code I write and use is open source. As a programmer, it is easy to think “open source means free.” I didn’t think much about it until one of the companies I worked at got acquired, and we had to audit our licenses.

The big company that bought us was very particular about which licenses were compatible with their needs. That was when I realized I needed to understand this stuff better. Rosen does a great job of teaching what is otherwise legalese in plain-spoken, easy-to-understand language. This book taught me why I choose the licenses I do rather than picking blindly.

By Lawrence Rosen,

Why should I read it?

1 author picked Open Source Licensing as one of their favorite books, and they share why you should read it.

What is this book about?

"I have studied Rosen's book in detail and am impressed with its scope and content. I strongly recommend it to anybody interested in the current controversies surrounding open source licensing."
-John Terpstra, Samba.org; cofounder, Samba-Team"Linux and open source software have forever altered the computing landscape. The important conversations no longer revolve around the technology but rather the business and legal issues. Rosen's book is must reading for anyone using or providing open source solutions."
-Stuart Open Source Development LabsA Complete Guide to the Law of Open Source for Developers, Managers, and Lawyers

Now that open source software is blossoming around…


Book cover of The C Programming Language

Christopher Trudeau Author Of Django in Action

From my list on books for coders shelf.

Why am I passionate about this?

My first computer was an early IBM PC back when all my friends had Commodores they used for gaming. Not being able to share their games meant I had to do something else, so I read the Introduction to Basic book that came in the box. I’ve been coding, reading about coding, writing about coding, teaching about coding, and talking about coding ever since. The world of technology moves so fast that it is hard to keep up. If you’ve taken one of my courses or listened to The Real Python Podcast, I hope you’ve heard about my passion for the topic. 

Christopher's book list on books for coders shelf

Christopher Trudeau Why did Christopher love this book?

I learned my first programming language as a kid, and Basic always felt like a beginner’s language. It wasn’t until I started writing C that I felt in control of the machine. This book is a classic and was on every C-programmer’s shelf in the 80s and 90s. It isn’t the easiest read but is remarkably comprehensive for a relatively thin volume. The fact that it has been in print for over 30 years tells you something about its staying power.

Nowadays, I tend to code in higher level languages, but every once and a while I dip down, getting closer to the bare metal, and brush this baby off. It is probably one of my most well-worn books.

By Brian W. Kernighan, Dennis M. Ritchie,

Why should I read it?

4 authors picked The C Programming Language as one of their favorite books, and they share why you should read it.

What is this book about?

Known as the bible of C, this classic bestseller introduces the C programming language and illustrates algorithms, data structures, and programming techniques.


Book cover of Head First Design Patterns: A Brain-Friendly Guide

Paolo Perrotta Author Of Programming Machine Learning: From Coding to Deep Learning

From my list on classic software that are still worth reading.

Why am I passionate about this?

You know what ages like milk? Programming books. I always cringe when someone glances at my programming bookshelf. Some of those books are so dated, they make me appear out of touch by association. Sometimes, I feel compelled to justify myself. “Yes, that's the first edition of Thinking in Java I keep it for nostalgic reasons, you know!” Yesterday’s software book is today’s fish and chip wrapper. However, there are exceptions. A few classics stay relevant for years, or even decades. This is a shortlist of software books that might be older than you, but are still very much worth reading.

Paolo's book list on classic software that are still worth reading

Paolo Perrotta Why did Paolo love this book?

If you check out Amazon’s best selling books on object-oriented design, you might see a relic from 1995 still hanging near the top: "Design Patterns". That book transformed software design. Its four authors will forever be known to my generation as the “Gang of Four".

Some of the original patterns may feel outdated today, but others remain essential. Pity that the book itself is such a tough read. Good thing that another "gang of four”, spearheaded by the excellent Kathy Sierra, gave us this lighthearted take on the original patterns.

The Design Patterns book was a densely packed truck of ideas. By comparison, Head First Design Patterns is a whimsical bumper car. It’s quirky and accessible, which some serious programmers found off-putting: “It’s a book for teenagers!“, they griped.

Yes, it’s not for everybody. But it’s fun, unassuming, and it teaches important concepts. So it makes my list.

By Eric Freeman, Elisabeth Robson, Kathy Sierra , Bert Bates

Why should I read it?

1 author picked Head First Design Patterns as one of their favorite books, and they share why you should read it.

What is this book about?

You're not alone. At any given moment, somewhere in the world someone struggles with the same software design problems you have. You know you don't want to reinvent the wheel (or worse, a flat tire), so you look to Design Patterns--the lessons learned by those who've faced the same problems. With Design Patterns, you get to take advantage of the best practices and experience of others, so that you can spend your time on...something else. Something more challenging. Something more complex. Something more fun. You want to learn about the patterns that matter--why to use them, when to use them,…


Book cover of Why Software Sucks...and What You Can Do About It

Jesse Liberty Author Of Git for Programmers: Master Git for effective implementation of version control for your programming projects

From my list on for creating great software.

Why am I passionate about this?

I have been coding for over 30 years. I’ve seen some miserable interfaces, and some large programs that collapse under their own weight. Software was, at one point, notorious for being late, over budget, and unreliable. These books have helped turn the corner on these failings, and I have found each of them very valuable in my day-to-day programming. While you can learn technique and even languages online, the kind of insight found in these books is rare and worth spending time and money on.

Jesse's book list on for creating great software

Jesse Liberty Why did Jesse love this book?

This book changed my entire perspective on writing the UI and UX of great software. Even the revised edition is a bit old but still has many valuable lessons to teach. Platt established many of the fundamental principles of writing usable and transparent software, and his book should be read not only by designers, but perhaps especially by programmers.

By David S. Platt,

Why should I read it?

1 author picked Why Software Sucks...and What You Can Do About It as one of their favorite books, and they share why you should read it.

What is this book about?

This non-technical book discusses the annoyances and dangers we encounter every day when using computers. Written with delightful wit and humor, as well as the insight of an experienced insider, it rips into the design of software much as Atul Gawande's Complications exposed the practice of medicine. Its basic message to ordinary people having problems learning or using their software is this: It's not your fault! It's not because you're dumb! Aimed primarily at casual users of software, the book tells readers what they should expect from their software and how to make their voices heard so that they receive…


Book cover of User Stories Applied: For Agile Software Development

Karl Wiegers Author Of Software Requirements

From my list on defining software requirements.

Why am I passionate about this?

Defining and managing the requirements for a software system is hard! I’ve been interested in improving how projects handle their requirements for more than 35 years. I realized how important this was when I saw how many projects—including my own—struggled and failed when they neglected to build a solid foundation of well-understood and clearly communicated requirements. I’ve personally used nearly all of the techniques described in my book Software Requirements, and I got always better results when I applied those techniques. My books, articles, training courses, presentations, and videos on requirements have been helpful to thousands of business analysts worldwide for many years.

Karl's book list on defining software requirements

Karl Wiegers Why did Karl love this book?

Many agile projects employ user stories as a way to represent requirements rather than a more traditional approach combining use cases and functional requirements. I favor the latter approach for several reasons. Nonetheless, user stories are well established in the agile development world, and if you wish to learn about them, there’s no better author to read than Mike Cohn. Cohn describes how to craft user stories well and how they fit into the agile development process.

By Mike Cohn,

Why should I read it?

1 author picked User Stories Applied as one of their favorite books, and they share why you should read it.

What is this book about?

Thoroughly reviewed and eagerly anticipated by the agile community, User Stories Applied offers a requirements process that saves time, eliminates rework, and leads directly to better software.

The best way to build software that meets users' needs is to begin with "user stories": simple, clear, brief descriptions of functionality that will be valuable to real users. In User Stories Applied, Mike Cohn provides you with a front-to-back blueprint for writing these user stories and weaving them into your development lifecycle.

You'll learn what makes a great user story, and what makes a bad one. You'll discover practical ways to gather…


Book cover of Code Complete: A Practical Handbook of Software Construction

Rod Stephens Author Of Beginning Software Engineering

From my list on making you a better software developer.

Why am I passionate about this?

During my career, I’ve worked on projects large and small (1 - 60+ people) in a wide variety of fields (like repair dispatch, ticket sales, and professional football coaching--the NFL kind not the FIFA kind). All of them, and particularly the big ones, were like antique clocks: they had lots of moving pieces and if any piece broke, the whole thing wouldn’t work. (Unfortunately, failed software projects don’t look nice on your mantelpiece.) In this list, I’ve tried to pick some books that you might not discover if you look only for programming books. Read those, too, but don’t ignore the more human-oriented dimensions of software development. Hopefully you’ll find these choices interesting and useful.

Rod's book list on making you a better software developer

Rod Stephens Why did Rod love this book?

Software engineering involves several phases such as requirements gathering, design, programming, testing, and deployment.

This book explains techniques that allow you to build quality and robustness into every phase of the process. It discusses design, classes, defensive programming, collaboration, refactoring, and more.

The book uses many examples in an assortment of languages but the concepts apply to any programming language. In fact, the main themes like building error detection into every step of the process generalize to even non-programming parts of the development process.

If you’re an experienced developer, you may have discovered some of this book’s ideas elsewhere or even on your own, but you only need to pick up one or two new tidbits to make the book worthwhile.

By Steve McConnell,

Why should I read it?

1 author picked Code Complete as one of their favorite books, and they share why you should read it.

What is this book about?

Widely considered one of the best practical guides to programming, Steve McConnell's original CODE COMPLETE has been helping developers write better software for more than a decade. Now this classic book has been fully updated and revised with leading-edge practices-and hundreds of new code samples-illustrating the art and science of software construction. Capturing the body of knowledge available from research, academia, and everyday commercial practice, McConnell synthesizes the most effective techniques and must-know principles into clear, pragmatic guidance. No matter what your experience level, development environment, or project size, this book will inform and stimulate your thinking-and help you build…


Book cover of Microsoft Secrets: How the World's Most Powerful Software Company Creates Technology, Shapes Markets and Manages People

Michael K. Levine Author Of People Over Process: Leadership for Agility

From my list on if you want to lead great software delivery teams.

Why am I passionate about this?

I’ve been doing large-scale software development at great US businesses from the introduction of the PC to the cloud explosion. From my earliest successes (online banking at US Bank in 1985!) to my biggest failures (Wells Fargo “Core” disaster in 2006), I’ve always sought better ways of doing things. These five books all were important to my learning and remain highly relevant, and I hope you find them useful as well. 

Michael's book list on if you want to lead great software delivery teams

Michael K. Levine Why did Michael love this book?

This book helped me set my initial approach to software development and I still periodically return to it for grounding.

An MIT project theorized that new-fangled PC software developers knew something mainframe and mini-computer makers didn’t. MIT’s research revealed something else entirely: Microsoft had uniquely effective ideas on how to build complex products in rapidly evolving competitive markets. Here is “agile” before it was put into the Manifesto in 2001, in a more complete form. Ever wonder where the idea of a team comprising functional specialists with overlapping roles, united by a common goal, came from? Or incremental feature evolution with periodic synchronization and constant testing? Early brilliance still of foundational relevance, in a coherent and engaging form.

By Michael A. Cusumano, Richard W. Selby,

Why should I read it?

1 author picked Microsoft Secrets as one of their favorite books, and they share why you should read it.

What is this book about?

Drawing on observation, interviews, and confidential data, the authors reveal Microsoft's product development, marketing, and organizational strategies.


Book cover of 201 Principles of Software Development

Karl Wiegers Author Of Software Development Pearls: Lessons from Fifty Years of Software Experience

From my list on lessons about software development.

Why am I passionate about this?

I first learned to program in college in 1970. Since then I’ve spent much time as a software developer, manager, tester, process improvement leader, consultant, trainer, author, and, of course, a user. I quickly learned that I didn’t have time to make all the mistakes that every software developer before me had already made. My training and writing career has involved sharing what I and others have learned with audiences to help them quickly become more effective software development team members, regardless of their project role. This book distills insights and observations both from my own experience and from what I’ve heard from thousands of students and consulting clients.

Karl's book list on lessons about software development

Karl Wiegers Why did Karl love this book?

Many of the most significant principles of effective software development are timeless. They’re independent of the development life cycle or model, programming language, application type, and so forth. Although this book is quite a few years old now, nearly all of its contents are still valid. The 201 principles cover the full spectrum of software engineering: general principles, requirements engineering, design, coding, testing, management, product assurance, and evolution. The descriptions of each principle are concise, whereas my 60 lessons in Software Development Pearls go into a great deal more detail and offer many practical techniques.

There’s an unfortunate tendency among young software people to disregard knowledge from the past as irrelevant to them. That’s not correct. This book can help close significant gaps in any practicing software developer’s knowledge.

By Alan M. Davis,

Why should I read it?

1 author picked 201 Principles of Software Development as one of their favorite books, and they share why you should read it.

What is this book about?

This text defines governing principles for software development, assumptions that work regardless of tools used, to keep software projects from costing too much, taking too long and disappointing users.


Book cover of Automate the Boring Stuff with Python: Practical Programming for Total Beginners
Book cover of Refactoring Databases: Evolutionary Database Design
Book cover of Open Source Licensing: Software Freedom and Intellectual Property Law

Share your top 3 reads of 2024!

And get a beautiful page showing off your 3 favorite reads.

1,593

readers submitted
so far, will you?

5 book lists we think you will like!

Interested in software, philosophy, and presidential biography?

Software 61 books
Philosophy 1,790 books