The most recommended object-oriented programming books

Who picked these books? Meet our 13 experts.

13 authors created a book list connected to object-oriented programming, and here are their favorite object-oriented programming books.
When you buy books, we may earn a commission that helps keep our lights on (or join the rebellion as a member).

What type of object-oriented programming book?

Loading...

Book cover of Design Patterns: Elements of Reusable Object-Oriented Software

Federico Kereki Author Of Mastering JavaScript Functional Programming: Write clean, robust, and maintainable web and server code using functional JavaScript and TypeScript

From my list on the theory and practice of computer programming.

Why am I passionate about this?

I have been working with computers for decades now – having started with programmable handheld calculators and working my way up and down through mainframes, mini- and micro-computers. I always thought there is an art to writing software, and that good software can be read and admired. Maintainability, readability, and testability are some core needs for software, and after going through many programming paradigms, I feel that functional programming (FP) is the way to go – and several modern web frameworks agree. JavaScript (and now, TypeScript) are essential to web development, and I wanted to show how FP could be successfully used with those languages, and thus my book.

Federico's book list on the theory and practice of computer programming

Federico Kereki Why did Federico love this book?

Of all the books I recommend, this is practically a sort of personal bible, which I very frequently consult.

This book doesn't just show you how to code; with realistic patterns and real-world examples, it's like having experienced mentors guiding your every keystroke. These patterns aren't just snippets; they're blueprints for building robust, flexible software.

I think the book is practically mandatory for all developers, novice or seasoned. It transformed how I approach problems, teaching me techniques I use daily in systems design and development.

By Erich Gamma, Richard Helm, Ralph Johnson , John Vlissides

Why should I read it?

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

What is this book about?

Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.


The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the…


Book cover of Growing Object-Oriented Software, Guided by Tests

Jan Van Ryswyck Author Of Writing Maintainable Unit Tests: Mastering the Art of Loosely Coupled Unit Tests

From my list on starting your software developer journey.

Why am I passionate about this?

I’m a professional software developer for more than 22 years now. I’ve used many programming languages, platforms, frameworks, etc. throughout my career. However, the only constant for me personally was the practice of Test-Driven Development. I’ve never stopped learning about the principles and practices behind it, and it paid huge dividends throughout my career. I’m very humbled and grateful to be able to learn from all those amazing people over the years, that I decided to write a book on the topic. Giving back some of the knowledge that I gathered about TDD throughout 18+ years. 

Jan's book list on starting your software developer journey

Jan Van Ryswyck Why did Jan love this book?

I must admit that the first time I read this book, it completely didn’t resonate with me. Sure, I picked up a couple of very important concepts here and there. One of those concepts is the “Test Data Builder”. However, some of the techniques I completely rejected. It took me a couple of years to start opening up to the practices described in this book. After a second read, I came to the conclusion that this excellent work deserved more credit. That’s why I added it to this list. This book shaped my entire thinking around Outside-In TDD, which is a very important approach to guiding well-designed software systems.     

By Steve Freeman, Nat Pryce,

Why should I read it?

1 author picked Growing Object-Oriented Software, Guided by Tests as one of their favorite books, and they share why you should read it.

What is this book about?

Foreword by Kent Beck

"The authors of this book have led a revolution in the craft of programming by controlling the environment in which software grows." --Ward Cunningham

"At last, a book suffused with code that exposes the deep symbiosis between TDD and OOD. This one's a keeper." --Robert C. Martin

"If you want to be an expert in the state of the art in TDD, you need to understand the ideas in this book."--Michael Feathers

Test-Driven Development (TDD) is now an established technique for delivering better software faster. TDD is based on a simple idea: Write tests for your…


Book cover of Beyond the Basic Stuff with Python: Best Practices for Writing Clean Code

Naomi R. Ceder Author Of The Quick Python Book

From my list on to level up your Python skills.

Why am I passionate about this?

I’ve been teaching and writing Python code (and managing others while they write Python code) for over 20 years. After all that time Python is still my tool of choice, and many times Python is the key part of how I explore and think about problems. My experience as a teacher also has prompted me to dig in and look for the simplest way of understanding and explaining the elegant way that Python features fit together. 

Naomi's book list on to level up your Python skills

Naomi R. Ceder Why did Naomi love this book?

Al is one of the clearest writers on Python that I know. Here he distills his experience as both a working software engineer and a successful author to take coders from advanced beginner/intermediate level on to all of the “extra” knowledge one needs to write good code for practical use. When I read this book I find myself wishing I could write with such simplicity.

By Al Sweigart,

Why should I read it?

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

What is this book about?

You're a student who wants to jumpstart their career with practical skills, or you're a self-taught beginner who has learned all you can from beginner programmer books and coding bootcamps. Now you're looking for the next step to becoming a real-world professional programmer so you can create your own apps and get started with your career. If that fits, then this book is for you! This book is perfect for self-taught programmers looking for the stuff intro books don't teach you and students wanting to get practical information before getting started with applying their new programming skills.


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 Smalltalk Best Practice Patterns

Philipp Fehre Author Of JavaScript Domain-Driven Design

From my list on learning from programming classics.

Why am I passionate about this?

Computers have fascinated me since my childhood, having fond memories of my dad's ZX81, but even so I played around I was never truly captured by the programming until I recognized it as a way of writing rather than raw engineering. Through my studies of media sciences I found my fascination with how language can shape perception, and through my work in developer advocacy, I found how communities are shaped as well. Now I am fascinated with how different programming languages can shape thinking, having had the opportunity to solve problems at large companies in nonmainstream languages.

Philipp's book list on learning from programming classics

Philipp Fehre Why did Philipp love this book?

Smalltalk is not as common or popular as it once was, but the influence its design had on programming is hard to overstate.

Reading this book has changed how I think about object orientation, and how I design systems, learning the patterns of Smalltalk makes it clear what object oriented design is really intended to achieve.

By Kent Beck,

Why should I read it?

2 authors picked Smalltalk Best Practice Patterns as one of their favorite books, and they share why you should read it.

What is this book about?

This classic book is the definitive real-world style guide for better Smalltalk programming. This author presents a set of patterns that organize all the informal experience successful Smalltalk programmers have learned the hard way. When programmers understand these patterns, they can write much more effective code. The concept of Smalltalk patterns is introduced, and the book explains why they work. Next, the book introduces proven patterns for working with methods, messages, state, collections, classes and formatting. Finally, the book walks through a development example utilizing patterns. For programmers, project managers, teachers and students -- both new and experienced. This book…


Book cover of Head First C#

Jesse Liberty Author Of .NET MAUI for C# Developers: Build cross-platform mobile and desktop applications

From my list on C# programming from a C# expert.

Why am I passionate about this?

I've been a C# programmer for 23 years, and am passionate about the language. It is the perfect balance of power and ease of use, and each year it is extended by its amazing development team. I've used C# to build stand-alone applications, mobile applications, APIs, and database applications and I've never felt constrained. Finally, C# lends itself to best practices and design patterns, and continues to rise in popularity, especially with professional software developers.

Jesse's book list on C# programming from a C# expert

Jesse Liberty Why did Jesse love this book?

This book brings a unique perspective to learning C#. It is fun, easy to digest, and yet comprehensive and a serious contribution to books on C#.

You may well want to make this the first book you read on the language, as it is very approachable and covers all the essentials. O'Reilly has perfected the Head First series, and this book is an exemplary addition.

By Andrew Stellman, Jennifer Greene,

Why should I read it?

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

What is this book about?

Finally, there's a bright alternative to the legions of dull C# tutorials. "Head First C#" gives beginning programmers a way to learn Microsoft's popular object-oriented language without boring you with a pile of dry technical material. Through its visually rich format proven to stimulate both learning and retention, this unusual book takes you through C# fundamentals and how the language works to create user interfaces, databases, and more.You can forget about memorizing. "Head First C#" is strictly hands-on. From page one, you interact with the material through plenty of graphics, games, puzzles and more. Once you get the gist of…


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 Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F#

Enrico Buonanno Author Of Functional Programming in C#

From my list on to learn to think like a functional programmer.

Why am I passionate about this?

I'm a programmer with a desire to constantly learn and improve. I have many years of experience in writing mission-critical software in highly event-driven areas such as FinTech and online auctions. Through interesting and challenging projects, I've always been fascinated by trying to generalize and abstract what it is that makes good code; so things like design patterns and best practices were just up my street. As I expanded this personal research, I found that functional programming provided many interesting techniques, but that many professionals in the industry were unaware of them. This is why I decided to show these techniques and their benefits to a wider audience through my book Functional Programming in C#.

Enrico's book list on to learn to think like a functional programmer

Enrico Buonanno Why did Enrico love this book?

Many functional programming books concentrate on the detail of functional techniques (things like recursion or higher-order functions), often leaving open the gap between these techniques and their concrete application to solve everyday programming tasks.

This was one of the reasons I wrote my book, and one source of inspiration for me was the work of F# evangelist Scott Wlashin.

For many years, Scott has been showing how he applies functional thinking in his daily practice centered around e-commerce, through blog posts on his popular site and his talks at programming conferences. At popular request, he's organized these ideas into his book Domain Modelling Made Functional.

The examples are practical enough that every business application programmer will be able to relate to them, and his explanation of functional programming techniques and ideas is clear and rigorous. Although Scott encourages the adoption of F# (the functional-first language of the .NET family), these…

By Scott Wlaschin,

Why should I read it?

2 authors picked Domain Modeling Made Functional as one of their favorite books, and they share why you should read it.

What is this book about?

You want increased customer satisfaction, faster development cycles, and less wasted work. Domain-driven design (DDD) combined with functional programming is the innovative combo that will get you there. In this pragmatic, down-to-earth guide, you'll see how applying the core principles of functional programming can result in software designs that model real-world requirements both elegantly and concisely - often more so than an object-oriented approach. Practical examples in the open-source F# functional language, and examples from familiar business domains, show you how to apply these techniques to build software that is business-focused, flexible, and high quality. Domain-driven design is a well-established…


Book cover of Dream Again

Danyelle Scroggins Author Of Blame It On My Boots

From my list on for spiritual growth, healing, and hope.

Why am I passionate about this?

In every book that I have recommended, you’ll find the dynamics of family and love. I’ve been a pastor for over fifteen years and now work as an author of both Christian fiction and non-fiction books. I'm a Chaplain for a Trauma One leveled hospital, and I counsel people of all ages. My master's degree in Religious Education is also a much-used tool as I’ve used education to deepen my quest to obtain knowledge. My love of books about family and love began when I lived in Yokosuka, Japan. I was far away from my family, beginning a new chapter with my own family, but right on the verge of learning how friends can truly turn into family.

Danyelle's book list on for spiritual growth, healing, and hope

Danyelle Scroggins Why did Danyelle love this book?

There’s is nothing more calming than a book that brings hope. In this awesome book by Author Ann Marie, you’ll find such a mixture of life, struggles, and love. This book is definitely one of those second-chance books that will cause a reader to understand that your past was never meant to define your future. If you have never read a book by this author, you should definitely try one.

By Ann Marie Bryan,

Why should I read it?

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

What is this book about?

One random day. One burst of laughter. One perfect moment. That’s all it takes for Gianna Barrett to capture Carter McIntosh’s attention—and his heart. His whole life has been a series of miracles, so this falls right in line. If only it were that simple. The object of his desire refuses to give him the time of day. Not deterred, Carter is sure he’s ready to put his heart on the line for love. Big mistake. He isn’t quite prepared and finds himself wrestling a soul-deep hurt into submission.“There has been an accident....” That devastating revelation shattered Gianna’s life, and…


Book cover of Domain-Driven Design: Tackling Complexity in the Heart of Software

Alexander Granin Author Of Functional Design and Architecture

From my list on domain modeling.

Why am I passionate about this?

If someone had told me during my early professional years that I would become a strong advocate for functional programming and the author of a fundamental book on functional software engineering, I would have found it hard to believe. Was functional programming truly worth dedicating my life to? However, once I experienced the sheer beauty of functional programming, there was no turning back. I delved deep into Haskell and functional C++, and began writing articles, giving talks, and developing various technologies. I realized that I possessed a truly unique perspective on approaching software engineering in functional languages, and that there was a significant knowledge gap that needed to be filled for the benefit of all.

Alexander's book list on domain modeling

Alexander Granin Why did Alexander love this book?

My journey in the world of software development has been arduous and challenging.

One of the common struggles we all face is the overwhelming number of solutions available, making it impossible to fully grasp everything at a deep level.

Just when I thought I had mastered an approach and felt competent in it, a new shiny approach would emerge, demanding my immediate attention. It often felt like a never-ending race to keep up with the ever-evolving field.

This constant pursuit of staying relevant as a software engineer can be frustrating, as it feels like we are always lagging behind the rapidly advancing world. I discovered that knowledge of specific technologies, frameworks, or libraries does not easily transfer across different technology stacks. They are too specific and lack universality. It was then that I turned my focus to more general principles of software engineering.

I realized that there are fundamental engineering…

By Eric Evans,

Why should I read it?

2 authors picked Domain-Driven Design as one of their favorite books, and they share why you should read it.

What is this book about?

Incorporate effective domain modeling into the software development process

Software design thought leader and founder of Domain Language, Eric Evans, provides a systematic approach to domain-driven design, presenting an extensive set of design best practices, experience-based techniques, and fundamental principles that facilitate the development of software projects facing complex domains. Intertwining system design and development practice, this book incorporates numerous examples based on actual projects to illustrate the application of domain-driven design to real-world software modeling and development.

Domain Model: Part I outlines the goals of domain-driven development, defines terms, and gives an overview of the implications of using the…


Book cover of Design Patterns: Elements of Reusable Object-Oriented Software
Book cover of Growing Object-Oriented Software, Guided by Tests
Book cover of Beyond the Basic Stuff with Python: Best Practices for Writing Clean Code

Share your top 3 reads of 2024!

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

1,889

readers submitted
so far, will you?