The best object-oriented programming books

1 authors have picked their favorite books about object-oriented programming and why they recommend each book.

Soon, you will be able to filter by genre, age group, and more. Sign up here to follow our story as we build a better way to explore books.

Shepherd is reader supported. When you buy through links on our website, we may earn an affiliate commission (learn more).

Practical Object-Oriented Design

By Sandi Metz,

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

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.


Who am I?

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.


I wrote...

Modern C++ Programming with Test-Driven Development: Code Better, Sleep Better

By Jeff Langr,

Book cover of Modern C++ Programming with Test-Driven Development: Code Better, Sleep Better

What is my book about?

Test-driven development is but a simple concept: write a small amount of test code to describe a desired outcome; craft just enough code to reach that outcome; and use the resulting tests to your advantage, and by ensuring that the code is as clear and concise as possible before moving on.

I strove to create a book that captured the best possible way to grow a system incrementally and to provide the most comprehensive treatment of TDD to that point in time. It shows how to "do TDD right" and sustainably, as well as how to enjoy it. It also demonstrates to C++ developers that there's no reason they too can't practice TDD.

Dream Again

By Ann Marie Bryan,

Book cover of Dream Again

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.


Who am I?

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.


I wrote...

Blame It On My Boots: Smith Family Cowgirls & Christian Romance

By Danyelle Scroggins,

Book cover of Blame It On My Boots: Smith Family Cowgirls & Christian Romance

What is my book about?

Shelly Shanay Smith is sassy and a little tom-boyish but she always thought she had the perfect man to love her, until he left home and never returns. So she did what any woman would… Shelly moved on. Chace loved Shelly and he still does. The thought of her being with another man was too much for his heart to bear. So when he finds out from a little birdie that she’s back on the market, he sees the second chance he’s prayed for and vows to win Shelly back.

But Shelly’s no fool and refuses to release her heart to the man who abandoned her once. It will take more than his killer smile, a chiseled body, and the memory of a perfect kiss to get her back. Will this country cowgirl have faith in her perfect boots, bringing the perfect man? Or will she allow her bruised heart to block her from her happily ever after?

Beyond the Basic Stuff with Python

By Al Sweigart,

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

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.


Who am I?

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. 


I wrote...

The Quick Python Book

By Naomi R. Ceder,

Book cover of The Quick Python Book

What is my book about?

This third revision of Manning's popular The Quick Python Book offers a clear, crisp updated introduction to the elegant Python programming language and its famously easy-to-read syntax. Written for programmers new to Python, this latest edition includes new exercises throughout. It covers features common to other languages concisely, while introducing Python's comprehensive standard functions library and unique features in detail.

Smalltalk Best Practice Patterns

By Kent Beck,

Book cover of Smalltalk Best Practice Patterns

While Smalltalk has been relegated to a tiny niche in the field of currently-used programming languages, I loved the opportunity to work with it many years ago. Smalltalk, an object-oriented language, is powerful but conceptually simple – you can learn the syntax in about 15 minutes. You can also produce highly expressive, clearly-stated yet compact code in Smalltalk.

In Smalltalk Best Practice Patterns, Kent Beck took the approach of expressing each recommendation in the form of an "implementation pattern:" a named technique that provides a recipe for addressing coding problems. Each pattern is short and sweet – you can read a page or three describing the problem's constraints and context, then see a succinct example of how to apply the right technique (and perhaps an example of how not to do things).

Even if you don't program in Smalltalk, or don't plan to, Smalltalk Best Practice Patterns remains a…


Who am I?

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.


I wrote...

Modern C++ Programming with Test-Driven Development: Code Better, Sleep Better

By Jeff Langr,

Book cover of Modern C++ Programming with Test-Driven Development: Code Better, Sleep Better

What is my book about?

Test-driven development is but a simple concept: write a small amount of test code to describe a desired outcome; craft just enough code to reach that outcome; and use the resulting tests to your advantage, and by ensuring that the code is as clear and concise as possible before moving on.

I strove to create a book that captured the best possible way to grow a system incrementally and to provide the most comprehensive treatment of TDD to that point in time. It shows how to "do TDD right" and sustainably, as well as how to enjoy it. It also demonstrates to C++ developers that there's no reason they too can't practice TDD.

JavaScript

By Douglas Crockford,

Book cover of JavaScript: The Good Parts: The Good Parts

During my first few weeks of JavaScript coding, I encountered what seemed to be an endless number of head-scratching moments: "I'm slowly reading the few lines of code I just wrote, it seems fine, so why isn't it doing what it looks like it should be doing?" Even more insidious at times than C++, JavaScript contains a number of fairly clever constructs, including things like hoisting, duck typing, and a loosey-goosey argument passing mechanism. This concise tome of fewer than 175 pages helped get me past those first few months, and as an author-stated goal, it helped me "learn to think in JavaScript."


Who am I?

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.


I wrote...

Modern C++ Programming with Test-Driven Development: Code Better, Sleep Better

By Jeff Langr,

Book cover of Modern C++ Programming with Test-Driven Development: Code Better, Sleep Better

What is my book about?

Test-driven development is but a simple concept: write a small amount of test code to describe a desired outcome; craft just enough code to reach that outcome; and use the resulting tests to your advantage, and by ensuring that the code is as clear and concise as possible before moving on.

I strove to create a book that captured the best possible way to grow a system incrementally and to provide the most comprehensive treatment of TDD to that point in time. It shows how to "do TDD right" and sustainably, as well as how to enjoy it. It also demonstrates to C++ developers that there's no reason they too can't practice TDD.

Get Programming

By Ana Bell,

Book cover of Get Programming: Learn to Code with Python

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.”


Who am I?

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.


I wrote...

Learn to Code by Solving Problems: A Python Programming Primer

By Daniel Zingaro,

Book cover of Learn to Code by Solving Problems: A Python Programming Primer

What is my book about?

You want your slippers to be fuzzy – not your grasp of Python programming. Build a rock solid Python programming foundation from an author who has built their career studying how students learn. Solve problems all the way through. Check your progress with Test Your Understanding questions. Practice solving new problems with full sample solutions. Wanna master Python power features like lists, dictionaries, and sets? Wanna know how to write code that’s fast? Wanna develop the skills that will help you become not only a Python expert but an expert in whatever programming language you want to learn next? It’s all here. Let’s roll!

Algorithms

By Robert Sedgewick, Kevin Wayne,

Book cover of Algorithms

Many of my favourite algorithms books give short shrift to designing APIs for the algorithms and data structures that they present. The Sedgewick and Wayne book, by contrast, goes all in on an object-oriented API design. This is my book choice for Java programmers and those interested in larger program design considerations. Clear your calendar: each chapter here is massive, but I think the time investment is worth it. I especially like the chapter that shows how to tune classic algorithms for realizing speedups when working with strings.


Who am I?

I love pulling back the curtain on how computers work. I want to go from thinking "that's magic" to "that's unbelievably clever but now I understand how it works." Each time I am able to do this feels like a hard-won but therefore meaningful step toward understanding. I want others to experience this empowering shift. 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.


I wrote...

Algorithmic Thinking: A Problem-Based Introduction

By Daniel Zingaro,

Book cover of Algorithmic Thinking: A Problem-Based Introduction

What is my book about?

Knowing how to design algorithms will take you from being a good programmer to being a great programmer. Algorithmic Thinking will teach you how to design your own rocket-fast, correct algorithms. Not interested in wading through proofs and math? Not interested in pseudocode that you can’t run? Not interested in seeing the same examples that you’ve seen in all of the other books? Good—there’s none of that here. You’ll rigorously learn all of the heavyweights that you need to know: hash tables, recursion, dynamic programming, trees, graphs, heaps, union-find, and more. You’ll learn it all in the context of solving programming puzzles. You’ll learn it all from someone who has dedicated their career to helping students learn. It is time for you to finally and truly learn this stuff.

New book lists related to object-oriented programming

All book lists related to object-oriented programming

Bookshelves related to object-oriented programming