Goodreads helps you keep track of books you want to read.
Start by marking “99 Bottles of OOP” as Want to Read:
99 Bottles of OOP
Enlarge cover
Rate this book
Clear rating
Open Preview

99 Bottles of OOP

4.57  ·  Rating details ·  379 ratings  ·  51 reviews
"Everybody complains about the weather but nobody does anything about it." Likewise, everyone has an opinion about what good code looks like, but those opinions don't help you create it. This book fills that gap. It explains the process of writing good code, and teaches you to achieve beautifully programmed ends by way of extremely practical means.
What It's About

99 Bottle
ebook, 225 pages
Published 2016

Friend Reviews

To see what your friends thought of this book, please sign up.

Community Reviews

Showing 1-30
Average rating 4.57  · 
Rating details
 ·  379 ratings  ·  51 reviews

More filters
Sort order
Start your review of 99 Bottles of OOP
Giuseppe D
May 13, 2017 rated it it was amazing
This is not just a book on OOP, it’s basically a full blown OOP course you can follow along at your own pace wherever you are. The domain is so simple that anybody can grasp it in a very short time, no need to know anything about bikes - looking at you, POODR… :D

The whole thing is quite ambitious, as Sandi and Katrina say in the preface “it turns out that everything you need to know about Object-Oriented Design (OOD) can be learned from the 99 Bottles of Beer song. Well, perhaps not everything,
Steve Fenton
Jul 08, 2017 rated it it was amazing
Much like Kent Beck's TDD book, 99 Bottles is a chance to pair program with Sandi and Katrina. During the programming, you'll discover at least four fundamental techniques for refactoring, each of which justifies the purchase, along with concrete examples of how to apply the concepts to real code. I recommend this book to all object-oriented programmers, whether you are using Ruby (as per the specific examples in the book) or C#, Java, TypeScript, PHP, et al.
Apr 22, 2017 rated it it was amazing
This is an astonishing book about OOP and good coding in general. It's great both for people that want to bring back memories but also for newcomers that just learnt coding (although they should certainly read the references that the book provides as well).
Alessandro Baffa
Jul 24, 2016 rated it it was amazing
Really great book, I devoured it in 3 days. The style is very similar to Kent Beck's "Test Driven Development by Example": it describes concepts of object oriented, refactoring and good design working iteratively on a very simple exercise over several chapters (the 99 bottles of beers). I would have never thought that such a simple code could be source of so many challenges and inspiration ("horizontal refactoring" and "Flocking rules" are very interesting practices as well as kind of mindsets). ...more
Jun 10, 2019 rated it it was amazing
A whole course within a book. Written in a friendly, accessible tone, it tells a story and walks you through every single code decision. There's also some good general life lessons subtly sprinkled throughout.

I wish ALL technical books were written like this.

I did a podcast that discussed this book (so this was a re-read of Chapters 1-5). When we were discussing it, Chapter 6 hadn't yet been released —we were on the bleeding edge! ;-) — hence why we stopped! Check it out if you want a study com
Aug 13, 2019 rated it liked it
Shelves: programming
I honestly don't get the average 4.6 rating.

I believe this book gives the illusion of understanding what to do with code that doesn't seem right, but that in a realistic situation it would not be helpful.

One of the more frustrating things about programming is that some people "get it" and others don't. This book follows Fowler's Refactoring: Improving the Design of Existing Code closely and is a proponent of its idea of using "code smells," which are a catalog of potentially bad coding practices
Bruno Sapienza
Sep 04, 2017 rated it it was amazing
Read it again after the last two chapters had been published. Fantastic book! as mentioned in previous comments this is a full blown OOP course! you may see familiar techniques in case you've been doing OOP for a while however, it totally worth reading. It's perfect to be read after the Practical Object-Oriented Design in Ruby (also from Sandy).
Jul 26, 2019 rated it really liked it
Shelves: read-tech
99 Bottles of OOP is a good book that shows us how to write OOP code through an example. I like the fact that it focuses on a single problem - printing the entire "99 bottles of beer" song. This problem is simple, yet complex enough to showcase the principles and practices that can get us to clean code. It emphasizes the importance of simplicity in code and how to get to an Open design by removing one code smell at a time. I think the book's highlight are the Flocking Rules: selecting things tha ...more
Jonathan Camenisch
Sep 24, 2017 rated it it was amazing
If there’s any fault with little book on object-oriented programming, it’s that it sometimes feels slow—especially if you already know where’s it’s headed. But that’s exactly what makes it great. It goes through the logic of every step in the thought process—even parts that are “easier done than said.” There’s nothing left to mysterious hand-waving here.

I’m going to go on record and predict that this will be a classic. It brings clarity to many of the misunderstandings that continue to surround
Nov 28, 2016 rated it it was amazing
Shelves: programming
Very clear writing and step-by-step walkthrough of refactoring, with explanations for why to make certain choices. If you get a chance to take her in-person workshop, definitely do that, but this is a good companion resource if you don't have that opportunity or need a refresher.
Jun 23, 2019 rated it really liked it
First two-thirds of book seems useful and relevant to most programmers. Having a great test suite that you can lean on while refactoring is essential to slowly evolving your code. The care taken to explicitly edit one line at a time is an important one, particularly for a real-world, larger problem.

The latter third seemed less relevant for functional programmers (FP) and in particular Clojure users. With FP, you get a lot of the simplicity and performance since most everything is a pure function
Nov 29, 2019 rated it it was ok
Don't get me wrong, the book is good but come on. How much can you optimise a very simplistic problem? At some point it become ridiculous and more confusing.

For example, at some point in chapter 4 there is a function that supposed to represent a noun and is coded like:

def pronoun(number)
if number == 1

This is very confusing. What it means if number is 1 return "it" and anything else return "one"? Really?. That would not pass a code review.

And then the author continu
Jun 18, 2017 rated it it was amazing
The book describes a program that prints the 99 bottles song, and more importantly the detailed steps of refactoring the program. The task seems to be pretty simple, but in fact the average, basic code for the solution is far from ideal, and the book explains how to improve it. From this point of view, it's a perfect fit. I'm impressed by the detailed explanations of the refactoring process.
It's also interesting to compare it with this article: , which de
Oct 29, 2018 rated it it was amazing
This is my second read through of this book. It's phenomenally dense, yet easy to read. I think Software Engineers focus too often on technologies, and not enough on techniques. 99 Bottles takes the reader through the solution of a kata and demonstrates techniques of how to evaluate and improve the design. The engineering processes are robust and thorough.

I think this book replaces my recommendation to read Clean Code and Work effectively with Legacy Code. It's not that these books don't have va
Alexander Shagov
Feb 04, 2018 rated it really liked it
This book has written for a pretty wide audience (TBH I think that this audience is too wide). I'm not sure that it's worth reading for experienced software engineers, there are no things that will blow your mind, but I'll definitely recommend this book for junior/middle-level devs.
Please, guys, don't ignore practice! Try to write your own solution of 99 bottles and then see, how it differs from Sandi's solution. Even better if you'll be repeating refactoring step by step, as shown in the book.
Mar 17, 2018 rated it really liked it
Sandi Metz's prior book Practical Object Oriented Design in Ruby (POODR) sets the bar very high, so I had higher expectations for this one, but it is still absolutely worth reading. It focuses on different strategies and tradeoffs when implementing a ruby program that spits out 99 Bottles of Beer song. It covers topics like naming, extendability, developer speed, changing requirements, abstraction etc.. ...more
Tramaine Gillus
Jan 27, 2019 rated it it was amazing
Without a doubt this is one of the best programming books that I've read. It's a masterclass in refactoring and object-oriented design. The reason it's so effective is that it focuses on solving one problem over the course of the entire book, improving the solution's design progressively each chapter. The authors have an uncanny sense of the common stumbling blocks that programmers encounter when designing systems, and they provide very detailed, prescriptive techniques that every programmer wil ...more
Jun 25, 2019 rated it it was amazing
This was a great approach to framing some of the concepts around object-oriented programming. It's insightful without being dogmatic and does a great job diving into every decision behind writing a program without glossing over any of the details.

Those detailed insights not only provide context for the arc of the refactoring process, but they serve as endless tips that are applicable in numerous contexts. I definitely walked away with some new ideas and ways to approach both writing and refactor
Robert Hernandez
Dec 09, 2019 rated it it was amazing
Shelves: computer-science
A wonderful book that goes step by step in how to think in the world of OOP when you are in a dynamic language. Provides references to books which i wished would first explain the points together and then expand from them instead of inter-weaving them in. Overall however, its a must read for ruby-ist and people interested in OOP to provide a foundation of how to not only refactor code, but refactor code in an OOP mindset.
Juraci Vieira
Jan 31, 2018 rated it it was amazing
This book is definitely among the top 3 best books about programming of all time. Sendi Metz and Katrina Owen lead you to the solution of a well know problem. Not too complex and not too shallow, just at the right level that allow them to exemplify how to make decisions about code design at every step of the way, all guided by tests. Can't recommend this enough, I will most certainly read multiple times.
Jul 31, 2019 rated it it was amazing
I've heard a lot of positive comments about sandi metz books, and since I've read this book I can attest that those positive comments have solid fundamentals, in that book the author not just discuss about why your code should follow the solid principles but she also give to the reader techniques to be used when the reader is refactoring some code and with that discover the abstractions that better fit into the code
Mar 21, 2020 rated it it was amazing
This book is an absolute must for anyone starting out in learning to program using the Object Oriented paradigm. Sandy Metz takes you through a seemingly trivial problem and manages to teach you some of the most important aspects of Test Driven Development and Object Oriented Programming. For the more experience programmer the book could act is a good refresher but they may not find any novel insights.
Otavio Valadares
Dec 30, 2018 rated it it was amazing
I don't have how to not give a five star to Sandi Metz when talking about OOP. This book is a complete book of OOP and if you make the exercise at the beginning of the book it will blow your mind and increase your experience with the book. It's a good sequel of Practical Object-Oriented Design in Ruby.
Mike Gunderloy
Sep 03, 2017 rated it it was amazing
TDD and refactoring seem so obvious and straightforward when Sandi Metz walks you through them. This book almost convinces me to mend my evil habits and TDD everything. Almost, but not quite. Very much worth reading, but in the end I consider it another in a suite of useful techniques for developing good code, not the only way to do it.
May 26, 2018 rated it it was amazing
A very detailed book on how to use different practical techniques in TDD and refactoring to approach a seemingly simple problem but containing different level of abstraction. It would be great if the book can give an example of "Replace conditional with state/strategy" as in appendix.
Leandro López
Jun 07, 2017 rated it it was amazing
Fun and enlightening read. If you're a developer, regardless of your experience, this is a great book to have in your bookshelf. It certainly made me want to review my code and see where can I apply all these new knowledge.
Lindsey Maddox
Feb 11, 2018 rated it really liked it
Great practical guide on refactoring by coding the 99 bottles problem. The explanations given for design choices are detailed enough for a relatively novice developer to understand. Reader is left with a number of easy to remember strategies for methodical refactoring.
Ismail Mayat
Jan 25, 2019 rated it it was amazing
Whether you are starting out in OO or a seasoned developer this is a must read. Concepts explained really well and in simple language picked up some really nice hints and tips.

The examples are in Ruby so if like me you don't program in Ruby it does not matter, its all about the concepts.
Brian Lindawson
Mar 16, 2020 rated it liked it
Shelves: nonfiction, business
Useful insight into code development. Using the 99 Bottles of Beer song as a framing device worked very well. Test Driven Development is not something I'm very familiar with and I could use more instruction on that piece of the framework.
Mar 15, 2018 rated it really liked it
If you're into Refactoring, this book is for you: really amenable and easy to follow, well written, focused and practice driven. The only bad thing I can say about it is that the same code snippets are repeated to much times, instead of just referencing it.
« previous 1 next »
There are no discussion topics on this book yet. Be the first to start one »

Readers also enjoyed

  • Refactoring: Improving the Design of Existing Code
  • The Pragmatic Programmer: From Journeyman to Master
  • Clean Code: A Handbook of Agile Software Craftsmanship
  • Designing Data-Intensive Applications
  • Understanding the Four Rules of Simple Design
  • Design Patterns: Elements of Reusable Object-Oriented Software
  • JavaScript: The Good Parts
  • Radical Focus: Achieving Your Most Important Goals with Objectives and Key Results
  • Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers)
  • Clean Architecture
  • Head First Design Patterns
  • Shape Up: Stop Running in Circles and Ship Work that Matters
  • Everyday Rails Testing with RSpec
  • Domain-Driven Design: Tackling Complexity in the Heart of Software
  • Building Microservices: Designing Fine-Grained Systems
  • The Passionate Programmer
  • The Rust Programming Language
  • Working Effectively with Legacy Code
See similar books…

Goodreads is hiring!

If you like books and love to build cool products, we may be looking for you.
Learn more »

News & Interviews

Need another excuse to treat yourself to a new book this week? We've got you covered with the buzziest new releases of the day. To create our l...
30 likes · 15 comments