The best books for "doing it right" in your programming language

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.

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

The books I picked & why

Book cover of Effective C++: 55 Specific Ways to Improve Your Programs and Designs

Jeff Langr Why did I love this book?

C++ is a tricky, beastly language, and there are no end of ways to program either incorrectly or inefficiently with it. Meyer's 1991 book set the bar high for similar books to come, providing great, detailed explanations about the language's pitfalls and how to avoid them. After reading Effective C++, though, you might find yourself wondering why you are coding in C++: The tips reveal so many insidious ways to shoot yourself in the foot, and worse, sometimes in a way that you won't even notice that your little toe is missing.

Effective C++ and the two follow-ons are essential reading for anyone working in C++. Nowadays you can purchase a digital edition that provides 140 total ways—adding in 50 additional tips from More Effective C++ and 40 from Effective STL.

By Scott Meyers,

Why should I read it?

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

What is this book about?

"Every C++ professional needs a copy of Effective C++. It is an absolute must-read for anyone thinking of doing serious C++ development. If you've never read Effective C++ and you think you know everything about C++, think again."
- Steve Schirripa, Software Engineer, Google "C++ and the C++ community have grown up in the last fifteen years, and the third edition of Effective C++ reflects this. The clear and precise style of the book is evidence of Scott's deep insight and distinctive ability to impart knowledge."
- Gerhard Kreuzer, Research and Development Engineer, Siemens AG The first two editions of…


Book cover of Smalltalk Best Practice Patterns

Jeff Langr Why did I love this book?

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 worthwhile and enjoyable read over 25 years after its publication.

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 Effective Java

Jeff Langr Why did I 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 JavaScript: The Good Parts: The Good Parts

Jeff Langr Why did I love this book?

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

By Douglas Crockford,

Why should I read it?

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

What is this book about?

Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined. This authoritative book scrapes away these bad features to reveal a subset of JavaScript that's more reliable, readable, and maintainable than the language as a whole-a subset you can use to create truly extensible and efficient code. Considered the JavaScript expert by many people in the development community, author Douglas Crockford identifies the abundance of good ideas that make JavaScript an outstanding object-oriented programming language-ideas such as functions, loose…


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

Jeff Langr Why did I 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…


5 book lists we think you will like!

Interested in object-oriented programming, computer programming, and python?

10,000+ authors have recommended their favorite books and what they love about them. Browse their picks for the best books about object-oriented programming, computer programming, and python.

Object-Oriented Programming Explore 19 books about object-oriented programming
Computer Programming Explore 39 books about computer programming
Python Explore 28 books about python