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.56  ·  Rating details ·  476 ratings  ·  59 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
More Details... Edit Details

Friend Reviews

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

Reader Q&A

To ask other readers questions about 99 Bottles of OOP, please sign up.
Popular Answered Questions

Community Reviews

Showing 1-30
Average rating 4.56  · 
Rating details
 ·  476 ratings  ·  59 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. ...more
Jun 26, 2020 rated it it was amazing
Sandy Metz already had one of the best books in Object-Oriented with the Practical Object-Oriented Design book. Now she has 2 books.

This is one of the few books that don't push testing to an Appendix. TDD is the part of the book that enables all the subsequent refactorings. It may seem as a lot of work to follow each small step but I suggest you read the book with the editor at your side and try them after each chapter and without looking them up. The Flocking Rules seem too simple to work albei
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). ...more
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
Arun Sasidharan
Feb 12, 2021 rated it really liked it
Shelves: tech, bookclub
You go through a series of refactorings with the author learning several trips, tricks and rules - flocking rules, SOLID, Law of Demeter, testing, etc. I found the first half of the book quite refreshing but the second half gave me some mixed feelings. There were many ups and downs and at times I couldn't understand the reasoning behind certain decisions. The last 2 chapters seem quite rushed and don't do justice to concepts like Dependency Inversion Principle.

As a fairly "experienced" programm
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). ...more
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. ...more
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
Theofanis Despoudis
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
Dmitry Davydov
Nov 02, 2020 rated it it was amazing
This book is my favorite of all the books on programming that I've read at the moment. It has tremendous concentration of useful advices and wisdom. I like the way it is structured and the detailed explanations of thoughts that stay behind each decision that the author takes while it studies the "99 bottles" song problem. Now I have understanding of why OOP matters and how properly applied SOLID (not only) principles lead to beautifully designed code that is easy to read and understand.
Thank yo
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. ...more
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.
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.
Viraj Bhosle
Apr 24, 2021 rated it it was amazing
Shelves: design
It's a book with practical value. I could work with JavaScript book even though I am a Java developer (I knew plenty of JavaScript though I don't work on it daily). You can pick any version there is not much fancy language specific code. Sandi has put it very well. At times it is bit verbose, but pushed through it. If you want to get test of what is in it. Try out the OO kata with her .
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. ...more
Apr 26, 2021 rated it it was amazing
It very valuable book about good programming habits. It concise, comprehensible and example clean.

Inside book you can find ridiculously small code example that reveal so much about TDD, refactoring, naming. Maybe all ideas a familiar to experienced programmers, but I must recognize the way all this ideas are applied in this book. The way author reveal new techniques are brilliant.
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. ...more
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.
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. ...more
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. ...more
« previous 1 next »
There are no discussion topics on this book yet. Be the first to start one »

Readers also enjoyed

  • Designing Data-Intensive Applications
  • Refactoring: Improving the Design of Existing Code
  • Clean Code: A Handbook of Agile Software Craftsmanship
  • Eloquent Ruby
  • Head First Design Patterns
  • The Clean Coder: A Code of Conduct for Professional Programmers
  • A Philosophy of Software Design
  • The Pragmatic Programmer: From Journeyman to Master
  • Domain-Driven Design: Tackling Complexity in the Heart of Software
  • Programming TypeScript: Making Your JavaScript Applications Scale
  • Accelerate: Building and Scaling High-Performing Technology Organizations
  • Domain-Driven Design Distilled
  • Grokking Algorithms An Illustrated Guide For Programmers and Other Curious People
  • The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change
  • It Doesn't Have to Be Crazy at Work
  • Effective Testing with Rspec 3: Build Ruby Apps with Confidence
  • Clean Architecture
  • Growing Object-Oriented Software, Guided by Tests
See similar books…

Goodreads is hiring!

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

Related Articles

San Francisco is a gold rush town. There aren’t many books about people in their 20s who move to Silicon Valley with dreams of earning a living...
34 likes · 1 comments