100 books like Head First Design Patterns

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

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

Shepherd is reader supported. When you buy books, we may earn an affiliate commission.

Book cover of The Mythical Man-Month: Essays on Software Engineering

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?

In my consulting gigs, I come across plenty of clueless remarks. Here's a classic one: “We're falling behind schedule, so let's hire more coders.” Or a more recent gem: “We'll be ten times more productive if we generate code with AI.”

When I encounter such nonsense, I don't facepalm or cringe. Instead, I put on my poker face and drop a quote from The Mythical Man-Month.

In an industry where last year’s book is already outdated, Fred Brooks' collection of essays has been a guiding light for nearly half a century. His aphorisms have become legendary. “The bearing of a child takes nine months, no matter how many women are assigned.” “Adding manpower to a late software project makes it later.” “There is no silver bullet.” The list goes on and on.

John Carmack, one of the greatest programmers of our times, used to revisit this book every year or…

By Frederick P. Brooks Jr,

Why should I read it?

5 authors picked The Mythical Man-Month as one of their favorite books, and they share why you should read it.

What is this book about?

Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.



The added chapters…


Book cover of The Pragmatic Programmer: Your Journey to Mastery

Chris Zimmerman Author Of The Rules of Programming: How to Write Better Code

From my list on programming for people who want to be good at it.

Why am I passionate about this?

I’ve spent most of my life writing code—and too much of that life teaching new programmers how to write code like a professional. If it’s true that you only truly understand something after teaching it to someone else, then at this point I must really understand programming! Unfortunately, that understanding has not led to an endless stream of bug-free code, but it has led to some informed opinions on programming and books about programming.

Chris' book list on programming for people who want to be good at it

Chris Zimmerman Why did Chris love this book?

This book’s title is absolutely perfect! There’s no agenda here other than identifying things that will make you a more effective and productive programmer.

That leads to a book packed with solid advice, whether it’s about how to write code or how to think about your career. The authors are consultants, so there are plenty of clear and interesting examples drawn from many different problem domains. That’s super fun for someone like me who’s hyper-focused on a single kind of programming.

By David Thomas, Andrew Hunt,

Why should I read it?

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

What is this book about?

"One of the most significant books in my life." -Obie Fernandez, Author, The Rails Way

"Twenty years ago, the first edition of The Pragmatic Programmer completely changed the trajectory of my career. This new edition could do the same for yours." -Mike Cohn, Author of Succeeding with Agile , Agile Estimating and Planning , and User Stories Applied

". . . filled with practical advice, both technical and professional, that will serve you and your projects well for years to come." -Andrea Goulet, CEO, Corgibytes, Founder, LegacyCode.Rocks

". . . lightning does strike twice, and this book is proof." -VM…


Book cover of Patterns of Enterprise Application Architecture

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 one author influenced my way of thinking about software, that’s Martin Fowler. From planning to architectures, his insights are embedded in every line of code I write. I was certain that one of his books would make my list.

But which one? Let’s face it–many of Fowler's books feel dated today. Not because his ideas became obsolete, but because they're now taken for granted. Who needs to re-read a book like Refactoring, when we all have a refactoring menu at our fingertips?

So I settled on this book. It’s a catalog of patterns, but one of the best. And don’t be misled by the word “enterprise” in the title: even lightweight patterns such as Active Record were popularized by this book.

Whether or not you work in a large company, this is still an essential collection of knowledge, written in Fowler’s signature clean style.

By Martin Fowler,

Why should I read it?

1 author picked Patterns of Enterprise Application Architecture as one of their favorite books, and they share why you should read it.

What is this book about?

The practice of enterprise application development has benefited from the emergence of many new enabling technologies. Multi-tiered object-oriented platforms, such as Java and .NET, have become commonplace. These new tools and technologies are capable of building powerful applications, but they are not easily implemented. Common failures in enterprise applications often occur because their developers do not understand the architectural lessons that experienced object developers have learned.

Patterns of Enterprise Application Architecture is written in direct response to the stiff challenges that face enterprise application developers. The author, noted object-oriented designer Martin Fowler, noticed that despite changes in technology--from Smalltalk to…


Book cover of Practical Object-Oriented Design in Ruby: An Agile Primer

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?

Few people want to grow up like their parents. In the early 2010s, many programmers scoffed at the design principles of the ‘90s. Why should anyone care about the nuances of object-oriented design? That’s such a Java thing to bother with!

To seasoned developers, this rejection felt like a baby and bathwater situation. Then Sandy Metz came to the rescue. Her book persuaded younger developers (or at least, those in the Ruby community) that those old ideas were still valuable.

Practical Object-Oriented Design in Ruby traced a straight line from the pioneering times of Smalltalk, through the years of the software craftsmanship movement, directly to modern programming.

It’s a timeless book in the best sense of the word: it would have felt relevant back in the 90s, or when it was published, or today. Few people want to grow up like our parents–but as it turns out, we all do.

By Sandi Metz,

Why should I read it?

1 author picked Practical Object-Oriented Design in Ruby as one of their favorite books, and they share why you should read it.

What is this book about?

The Complete Guide to Writing More Maintainable, Manageable, Pleasing, and Powerful Ruby Applications

Ruby's widely admired ease of use has a downside: Too many Ruby and Rails applications have been created without concern for their long-term maintenance or evolution. The Web is awash in Ruby code that is now virtually impossible to change or extend. This text helps you solve that problem by using powerful real-world object-oriented design techniques, which it thoroughly explains using simple and practical Ruby examples.



Sandi Metz has distilled a lifetime of conversations and presentations about object-oriented design into a set of Ruby-focused practices for crafting…


Book cover of 97 Things Every Java Programmer Should Know: Collective Wisdom from the Experts

Jeanne Boyarsky Author Of OCP Oracle Certified Professional Java SE 17 Developer Study Guide: Exam 1Z0-829

From my list on becoming a better Java developer.

Why am I passionate about this?

I’ve always enjoyed mentoring folks whether new or experienced in programming. Whether it is teaching an intern or a high school robotics student, or onboarding an experienced Java developer, it brings me joy to see people learn. I also love to read. Being able to recommend some of my favorite books can help even more people absorb all of this information.

Jeanne's book list on becoming a better Java developer

Jeanne Boyarsky Why did Jeanne love this book?

When trying to become a better Java developer, there is so much to learn.

97 Things covers, well 97, of them in a series of brief essays. What’s cool is that the essays were written by different people so you get lots of points of view on what is important. Topics range from language (comments, fat jars) to the ecosystem (benchmarking, frequent releases) to the language-agnostic (definition of done and breaking down problems.)

Note that two of these are mine. The book is thin at just over 200 pieces. And since each “thing” is short, it’s easy to read on the go.

By Kevlin Henney, Trisha Gee,

Why should I read it?

1 author picked 97 Things Every Java Programmer Should Know as one of their favorite books, and they share why you should read it.

What is this book about?

If you want to push your Java skills to the next level, this book provides expert advice from Java leaders and practitioners. You'll be encouraged to look at problems in new ways, take broader responsibility for your work, stretch yourself by learning new techniques, and become as good at the entire craft of development as you possibly can

Edited by Kevlin Henney and Trisha Gee, 97 Things Every Java Programmer Should Know reflects lifetimes of experience writing Java software and living with the process of software development. Great programmers share their collected wisdom to help you rethink Java practices, whether…


Book cover of Practical Object-Oriented Design: An Agile Primer Using Ruby

Jeff Langr Author Of Modern C++ Programming with Test-Driven Development: Code Better, Sleep Better

From my list on doing it right in your programming language.

Why am I passionate about this?

I love computer programming books almost as much as I love computer programming. As a high school student in 1980 I remember typing in really frustrating source code from the book BASIC Computer Games. Was programming meant to be a black art? Was code supposed to be an impenetrable mess of buried intent? When I started getting paid to program, I was happy to see that the answer to both questions was "no." I began to seek and enjoy books that espoused the "right" way to code in a given language. Here is a handful of books that have helped me and countless others learn to produce correct, clear, and maintainable code.

Jeff's book list on doing it right in your programming language

Jeff Langr Why did Jeff love this book?

When learning a new language, you'll want to avoid the mistake of assuming that you can adapt your old way of doing things to your new language (like I first tried many years ago). Even though Java and Ruby are both object-oriented languages, the "right" approach to implementing things is dramatically different between the two. Practical Object-Oriented Design in Ruby makes it easy to learn how to apply object-oriented design and to implement the code properly in Ruby, making your system easier to change as it grows.

By Sandi Metz,

Why should I read it?

1 author picked Practical Object-Oriented Design as one of their favorite books, and they share why you should read it.

What is this book about?

The Complete Guide to Writing Maintainable, Manageable, Pleasing, and Powerful Object-Oriented Applications





Object-oriented programming languages exist to help you create beautiful, straightforward applications that are easy to change and simple to extend. Unfortunately, the world is awash with object-oriented (OO) applications that are difficult to understand and expensive to change. Practical Object-Oriented Design, Second Edition, immerses you in an OO mindset and teaches you powerful, real-world, object-oriented design techniques with simple and practical examples.



Sandi Metz demonstrates how to build new applications that can "survive success" and repair existing applications that have become impossible to change. Each technique is illustrated…


Book cover of Java Puzzlers: Traps, Pitfalls, and Corner Cases

Christian Clausen Author Of Five Lines of Code

From my list on reads with your hands on the keyboard.

Why am I passionate about this?

My life has been about programming for as long as I can remember. Learning to code was a way to connect with my dad and express my creativity at a young age. Since I grew up with code, it became the way I understood the world; often I could look at a process or program and immediately see its source code in my mind. I developed a very strong sense of aesthetics searching for “perfect code,” which for me was code that was not only error-free but resistant to errors. My studies, research, and career is about moving myself and all programmers closer to that goal: Software that never fails.

Christian's book list on reads with your hands on the keyboard

Christian Clausen Why did Christian love this book?

This tour of programming is a humorous reminder that we should always question our assumptions.

This book presents example after example of very simple Java programs all of which behave differently than you expect. It's both humbling and so provocative that you have to go into an editor and see if their claims are true.

By Joshua Bloch, Neal Gafter,

Why should I read it?

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

What is this book about?

"Every programming language has its quirks. This lively book reveals oddities of the Java programming language through entertaining and thought-provoking programming puzzles."

--Guy Steele, Sun Fellow and coauthor of The Java (TM) Language Specification

"I laughed, I cried, I threw up (my hands in admiration)."

--Tim Peierls, president, Prior Artisans LLC, and member of the JSR 166 Expert Group

How well do you really know Java? Are you a code sleuth? Have you ever spent days chasing a bug caused by a trap or pitfall in Java or its libraries? Do you like brainteasers? Then this is the book for…


Book cover of Effective Java

Jeff Langr Author Of Modern C++ Programming with Test-Driven Development: Code Better, Sleep Better

From my list on doing it right in your programming language.

Why am I passionate about this?

I love computer programming books almost as much as I love computer programming. As a high school student in 1980 I remember typing in really frustrating source code from the book BASIC Computer Games. Was programming meant to be a black art? Was code supposed to be an impenetrable mess of buried intent? When I started getting paid to program, I was happy to see that the answer to both questions was "no." I began to seek and enjoy books that espoused the "right" way to code in a given language. Here is a handful of books that have helped me and countless others learn to produce correct, clear, and maintainable code.

Jeff's book list on doing it right in your programming language

Jeff Langr Why did Jeff love this book?

When seeking a book on how to use a language effectively, getting one written by someone who helped design and implement the language is usually a great idea. With Effective Java, you get a book written by someone who contributed a significant amount to the language: Joshua Bloch had a lot to do with the design of the Java 5.0 features circa 2004, which is where Java moved for me from "inelegant" to "hey I can finally make things look good in this language." Bloch goes into considerable and passionate depth about each of the 90 items in the 2018 edition and will help you ensure you don't make the mistakes that can lead to defective or bad code.

By Joshua Bloch,

Why should I read it?

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

What is this book about?

Since this Jolt-award winning classic was last updated in 2008, the Java programming environment has changed dramatically. Java 7 and Java 8 introduced new features and functions including, forEach() method in Iterable interface, default and static methods in Interfaces, Functional Interfaces and Lambda Expressions, Java Stream API for Bulk Data Operations on Collections, Java Time API, Collection API improvements, Concurrency API improvements, and Java IO improvements.



In this new edition of Effective Java, Bloch explores new design patterns and language idioms that have been introduced since the second edition was released in 2008 shortly after Java SE6, including Lambda, streams,…


Book cover of Clojure Applied: From Practice to Practitioner

Dmitri Sotnikov Author Of Web Development with Clojure: Build Large, Maintainable Web Applications Interactively

From my list on essential Clojure resources.

Why am I passionate about this?

With over a decade of experience in web development using Clojure and active involvement in the Clojure open source community, I have gathered invaluable insights into effective use of the language. I am eager to share some of the experience and knowledge I have acquired with those new to the language.

Dmitri's book list on essential Clojure resources

Dmitri Sotnikov Why did Dmitri love this book?

The Clojure ecosystem presents a multifaceted landscape that can pose a significant challenge for novices, thereby rendering the language itself daunting to approach. However, this comprehensive book aims to alleviate these complexities by providing a guided pathway for readers to construct practical web applications using Clojure.

By following the structured framework within these pages, readers will not only gain a deeper understanding of the language's nuances but also acquire essential proficiency in employing it efficiently. Furthermore, this authoritative resource elucidates numerous best practices, empowering readers to cultivate a skillset that maximizes their effectiveness in utilizing Clojure to its fullest potential.

This book is a great choice for Clojure beginners because it takes the reader through pragmatic examples of using the language, and applying its features effective to solve real-world problems.

By Ben Vandgrift, Alex Miller,

Why should I read it?

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

What is this book about?

Think in the Clojure way! Once you're familiar with Clojure, take the next step with extended lessons on the best practices and most critical decisions you'll need to make while developing. Learn how to model your domain with data, transform it with pure functions, manage state, spread your work across cores, and structure apps with components. Discover how to use Clojure in the real world, and unlock the speed and power of this beautiful language on the Java Virtual Machine. Clojure Applied gives you the practical, realistic advice and depth of field that's been missing from your development practice. You…


Book cover of Microservice Patterns: With examples in Java

Laurentiu Spilca Author Of Spring Security in Action

From my list on a technical shelf of books for a Java Engineer.

Why am I passionate about this?

My passion for computer science started while spending my free time gaming in my young adult days, leading me to experiment with C++ and then dive into enterprise-level Java applications during high school. My enthusiasm for Java propelled me to teach and share my knowledge through Java and Spring tutorials on YouTube. I also frequent conferences where I exchange ideas on various software topics. My constant wish to contribute further to the community is filled by writing technical books. This mix of teaching, creating, and constant learning fuels me and pushes me further into the tech world. I really hope you will enjoy this selection of technical books! 

Laurentiu's book list on a technical shelf of books for a Java Engineer

Laurentiu Spilca Why did Laurentiu love this book?

To be honest, I did not expect to learn something new from this book, given the fact that I have been working on enterprise-level applications since high school, which mostly follow a microservice architecture. 

Still, I have to admit that in Richardson's discussion on decomposition strategies, inter-service communication, and managing distributed data, I still got some valuable insights into dealing with such an architecture. Particularly, the saga pattern for managing transactions was definitely a game-changer for me.

By Chris Richardson,

Why should I read it?

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


5 book lists we think you will like!

Interested in software, cognitive science, and object-oriented programming?

Software 61 books