Skip to content
HomeVideosBooks
AllTopicsTrends
BlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    99 Bottles of OOPSandi Metz

    99 Bottles of OOP

    Sandi Metz, Katrina Owen, T. J. Stankus · 2016

    Software EngineeringProgrammingComputer Science
    Open LibraryAmazon
    Stats for nerds
    9recommend
    16mentions
    14people
    2016–2026years
    69% recommend31% neutral

    Mentions per year

    201620182020202220242026

    What Hacker News says

    1. williadcJun 2026
      The "99 Bottles of OOP" book mentioned at the bottom was an excellent introduction to refactoring. I highly recommend it if you struggle with finding the right data models for the problems you work on.
      thread
    2. dcreMay 2025
      I took a version of this away from Sandi Metz’s 99 Bottles of OOP. It’s not really my style overall, but the point about moving logic forks up the call stack was very well taken when I was working on a codebase where we had added a ton of flags that got passed down through many layers.

      https://sandimetz.com/99bottles

      thread
    3. graypeggJun 2024
      Yes! I really like "99 Bottles of OOP" by Sandi Metz. I feel like it's a version of "Clean Code" that my brain actually aligns with.

      In a chapter, talking about different ways you could write a class that generates verses for the song 99 bottles of beer, we end up at:

      https://sandimetz.com/99bottles-sample-ruby#_shameless_green

          The Shameless Green solution is disturbing because, although the code is easy to understand, it makes no provision for change. In this particular case, the song is so unlikely to change that betting that the code is "good enough" should pay off. However, if you pretend that this problem is a proxy for a real, production application, the proper course of action is not so clear.
      
          When you DRY out duplication or create a method to name a bit of code, you add levels of indirection that make it more abstract. In theory these abstractions make code easier to understand and change, but in practice they often achieve the opposite. One of the biggest challenges of design is knowing when to stop, and deciding well requires making judgments about code.
      thread
    4. lastofusJun 2021
      "99 Bottles of OOP" by Sandi Metz does a fantastic job IMO of answering the first 3 questions listed.

      > Can I write a serious program without OO...

      Absolutely! See any program written in a functional only language, or C.

      > Should I look into another paradigm?

      Eventually... I'm personally a huge fan of Clojure. That said, don't give up on OOP. It's pretty unavoidable in industry.

      thread
    5. lastofusApr 2021
      Check out “99 bottles of OOP” by Sandi Metz for a fantastic beginner friendly book on OOP concepts.

      It does a great job of starting you from first principles and showing you not just the how, but the why of applying OOP to solve problems.

      thread
    6. donwJun 2020
      The short answer is: don't design for future use-cases.

      Period.

      Instead, only build what you need to solve the problems you have in-hand, but do so in such a way that your software and your systems are as easy to change as possible in the future.

      Because you very, very rarely know what your future use-cases really are. Markets change over time, and your understanding of the market will also shift, both because some of your assumptions were wrong, and because you can never really have a total understanding of such a complex phenomenon.

      Your business needs will change as well; your top priority from 2019 is likely very different than it is today.

      That is why you build to embrace change, rather than barricade against it.

      As to how, I'd start with Sandi Metz's 99 Bottles of OOP: https://www.sandimetz.com/99bottles

      Learning to write readable code is also pretty important; Clean Code is a good starting point (https://amzn.to/3168z3A), but I'd be keen to know of any shorter books that cover the same materials.

      Growing Object-Oriented Software Guided By Tests (GOOSGT) is a good read as well: https://amzn.to/3du1sEL

      thread

    Related

    Cover of Practical Object Oriented Design In Ruby
    2012–2025

    Practical Object Oriented Design In Ruby

    Sandi Metz
    46 recommend · 72
    Practical Object-Oriented DesignSandi Metz
    2012–2026

    Practical Object-Oriented Design

    Sandi Metz
    14 recommend · 17
    Cover of The architecture of open source applications
    2011–2026

    The architecture of open source applications

    Amy Brown
    204 recommend · 257
    Cover of Beautiful Code
    2007–2025

    Beautiful Code

    Andy Oram
    48 recommend · 109
    Cover of Accelerate
    2018–2026

    Accelerate

    Nicole Forsgren
    31 recommend · 41
    Cover of The Rust Programming Language
    2015–2026

    The Rust Programming Language

    Steve Klabnik
    170 recommend · 257
    Cover of Making Software
    2012–2024

    Making Software

    Andy Oram
    recommend · 30
    12
    Cover of Open sources
    2008–2017

    Open sources

    Chris DiBona
    4 recommend · 10