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.
Shepherd is reader supported. When you buy books, we may earn an affiliate commission.

What type of object-oriented programming book?

Loading...

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 Refactoring: Improving the Design of Existing Code

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?

This book is different from the others I recommended, because its focus is not really on creating algorithms, but rather on how to improve code with a systematic process, keeping functionality but enhancing quality.

The author shows several practical techniques that he applies to real-world problems and empower you to elevate your code's quality and adapt it seamlessly to changing needs. It's not just about writing code; it's about becoming a more effective and confident developer.

I consider this book a companion on the journey to mastering the craft of coding. With it, you’ll always be able to achieve higher-quality code, no matter the original version of the code.

By Martin Fowler,

Why should I read it?

2 authors picked Refactoring as one of their favorite books, and they share why you should read it.

What is this book about?

Refactoring is about improving the design of existing code. It is the process of changing a software system in such a way that it does not alter the external behavior of the code, yet improves its internal structure. With refactoring you can even take a bad design and rework it into a good one. This book offers a thorough discussion of the principles of refactoring, including where to spot opportunities for refactoring, and how to set up the required tests. There is also a catalog of more than 40 proven refactorings with details as to when and why to use…


Book cover of Head First Git: A Learner's Guide to Understanding Git from the Inside Out

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?

Head First books are always fun. They know how to engage your brain and have cartoons/puzzles.

I recommend this book whether you are first learning git or have used it for some time. Understanding git is a big deal so you can work efficiently. Without having to keep deleting the repository and starting over!

By Raju Ghandi,

Why should I read it?

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

What is this book about?

What will you learn from this book?

Many people who use Git rely on "recipes"--copying and pasting commands they find on the internet without really understanding how Git actually works. But what do you do if you find yourself in a tight spot? You can't simply wing it. With this unique hands-on guide, you'll learn the ways of Git and have fun while doing it. Raju Gandhi peels back the layers to reveal the simple yet powerful engine that powers Git, so you'll understand not just the how but the why. You'll master branches, merges, commit messages, search, utilities, and…


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 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 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 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 Function and Reactive Domain Modeling

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?

I'm a devoted advocate of functional programming and a passionate Haskell enthusiast.

Ironically, there was a time in my life when I was a student and held the belief that functional programming was merely an impractical academic pursuit.

However, I soon had a revelation that the techniques I employed in C++ to mitigate the inherent unsafety of the language actually aligned with the core principles of functional programming: immutability, purity, and composability.

This realization left a profound impression on me, prompting me to delve into learning Haskell. It proved to be a pivotal moment that significantly shaped my entire career trajectory.

As I delved deeper into functional programming, I discovered a significant void in terms of software engineering practices that were prevalent in the realm of object-oriented programming.

Drawing from my experiences in C++ and C#, I noticed numerous gaps in our understanding of how to build robust applications using…

By Debasish Ghosh,

Why should I read it?

1 author picked Function and Reactive Domain Modeling as one of their favorite books, and they share why you should read it.

What is this book about?

Functional and Reactive Domain Modeling teaches readers how to think of the domain model in terms of pure functions and how to compose them to build larger abstractions. It begins with the basics of functional

programming and gradually progresses to the advanced concepts and patterns needed to implement complex domain models. The book demonstrates how advanced FP patterns like algebraic data types,

typeclass based design, and isolation of side-effects can make models compose for readability and verifiability.



On the subject of reactive modeling, the book focuses on higher order

concurrency patterns like actors and futures. It uses the Akka framework…


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 Get Programming: Learn to Code with Python

Daniel Zingaro Author Of Learn to Code by Solving Problems: A Python Programming Primer

From my list on for a rock solid python programming foundation.

Why am I passionate about this?

Some programmers learn through online articles, videos, and blog posts. Not me. I need a throughline—a consistent, expert distillation of the material to take me from where I am to where I want to be. I am not good at patching together information from disparate sources. I need a great book. I have a PhD in computer science education, and I want to know what helps people learn. More importantly, I want to know how we can use such discoveries to write more effective books. The books I appreciate most are those that demonstrate not only mastery of the subject matter but also mastery of teaching.

Daniel's book list on for a rock solid python programming foundation

Daniel Zingaro Why did Daniel love this book?

Bell is an expert teacher. I like the order of topics; the breakdown of topics into units; the short, targeted lessons in each unit; the varied capstone projects to tie things together; the explicit learning goals; the structured approach to solving problems. The first bit of code that you’ll write is on page 30. Your first complete program is on page 60. What’s up with those first 59 pages, then? Motivation, comparisons to daily life, setup, and building blocks. Things that other authors tend to skip but that may be important for some learners. Bonus feature: “I try not to forget what it’s like to start learning to program from scratch, no matter how many times I teach the course.”

By Ana Bell,

Why should I read it?

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

What is this book about?

Whether readers want to become a professional software developer,
create web sites, analyze scientific data, or just automate tedious
business tasks, learning to program is the first step. Fortunately,
learning to program doesn't have to be difficult.


Get Programming: Learn to code with Python introduces you to the
world of writing computer programs without drowning you in
confusing jargon or theory that make getting started harder than it
should be. By working through the examples and exercises in 39 bitesize
lessons, you'll learn how to code step-by-step by creating your
own programs with the beginner-friendly Python language! With
crystal-clear illustrations,…