Cover of A Philosophy of Software Design

A Philosophy of Software Design

by John K. Ousterhout · first published 2018

342mentions
163recommended by
232HN commenters
2018–2026first – last mentioned

70% recommend28% neutral2% critical

Why HN recommends it

Fundamental, principle-driven guidance on fighting complexity: deep vs shallow modules, interface complexity, and commenting practice. Suits developers who want to improve design and code review skills.

Summarised by Claude from recommending comments

Affiliate links. As an Amazon Associate I earn from qualifying purchases.

Mentions per year

530 2007: 0 mentions2008: 0 mentions2009: 0 mentions2010: 0 mentions2011: 0 mentions2012: 0 mentions2013: 0 mentions2014: 0 mentions2015: 0 mentions2016: 0 mentions2017: 0 mentions2018: 16 mentions2019: 19 mentions2020: 20 mentions2021: 24 mentions2022: 41 mentions2023: 53 mentions2024: 47 mentions2025: 39 mentions2026: 23 mentions200720172026

What Hacker News says

  • afarrell · May 30, 2020 · Recommends

    A Philosophy of Software Design. Very well-written. At 190 pages, quite likely finish-able in a weekend. But if you get 70% of the way through it, that is still very valuable. It makes sense as an underlying set of principles that…

    on “Ask HN: Best books under 200 pages for developers?” ↗
  • quaunaut · Nov 14, 2022 · Recommends

    I'm a software engineer, but these have been instrumental in my success in a way no coding book can compare to(though John Ousterhout's "A Philosophy of Software Design" would have, if it came out earlier in my life). Personal time/task management- The classic, Getting Things Done(https://www.amazon.com/Getting-Things-Done-Stress-Free-Produ...). The power this has on…

    on “Ask HN: Do you recall any book or course that made a topic finally click?” ↗
  • mdaniel · Feb 6, 2022 · Recommends

    I enjoyed "A philosophy of software design" by John K Ousterhout https://www.worldcat.org/title/philosophy-of-software-design... just be forewarned that at 180 pages, it's a lot more aspirational than instructive. It depends on what kind of organizational…

    on “Ask HN: Best books on managing software complexity?” ↗
  • noir_lord · Feb 22, 2019 · Recommends

    "A Philosophy of Software Design" by Ousterhout is my favourite of the last few years. It's a shortish book but there is stuff in it I'm still unpacking on the third read through and a lot of stuff I sorta instinctively knew but it's…

    on “Programming Books You Wish You Read Earlier” ↗
  • achou · Jun 21, 2019 · Recommends

    I think the best single observation about cognitive load is in Ousterhout's book A Philosophy of Software Design[1]. In the book he promotes the idea that classes should be "deep", such that their top-level surface API is small relative to the complexity they hide underneath. This applies to the microservice/monolith…

    on “Forget monoliths vs. microservices: cognitive load is what matters” ↗
  • Jtsummers · Apr 16, 2021 · Recommends

    The Psychology of Computer Programming by Gerald Weinberg. Some dated language (which he calls out himself in the 25th anniversary edition), but overall very good. A Philosophy of Software Design by John Ousterhout, short book, quick read. I'll be rereading it once I figure out which bookshelf my wife hid it on (she doesn't like my bookstack approach to "organizing" and moved many things to shelves…

    on “Ask HN: Best book for software engineers (besides the well-known ones)?” ↗
  • sriku · Nov 28, 2021 · Recommends

    …summarized in a page or so. Instead they choose to labor on and on around the same point(s) without adding much. A book that definitely wasn't in the category I described above (for me) was John Ousterhout's Philosophy of Software Design - https://www.amazon.com/Philosophy-Software-Design-John-Ouste... . I haven't run into software design/tech books like that very often.

    on “Books that changed my career as a software engineer” ↗
  • hodgesrm · Aug 15, 2018 · Recommends

    …structure I found it challenging to develop a good reviewing style that picked up the important stuff without getting bogged down in silly details that lead to arguments. Reading John Ousterhout's "A Philosophy of Software Design" was really helpful. He focuses on module decomposition, quality of public interfaces, and documentation among other things.

    on “Code review review is the manager’s job” ↗
  • lboasso · Aug 30, 2018 · Recommends

    Another excellent resource is "A Philosophy of Software Design" [0], from John Ousterhout (known for Tcl/Tk, Raft, RAMCloud, Log-Structured File System). Like Niklaus Wirth, he is striving for designs that fight complexities and yield simple and powerful abstractions.…

    on “A plea for lean software (1995) [pdf]” ↗
  • dvirsky · Dec 23, 2018 · Recommends

    A Philosophy Of Software Design by John Ousterhout. Pretty short, but interesting and does a nice job at dissecting the mistakes we make that lead to software complexity. https://www.goodreads.com/book/show/39996759-a-philosophy-of...

    on “Ask HN: Favorite nonfiction books of 2018?” ↗
  • tmaly · Mar 21, 2019 · Recommends

    Getting Things Done (2001) by David Allen - great method to organize all your tasks and stay on top of things Clean Coder by Bob Martin - good ideas on being a professional programmer A Philosophy of Software Design by John Ousterhout - big picture ideas on design Test Driven Development by Kent Beck - good basis for thinking about design and testing Legacy Code by Michael Feathers - understanding the issues of…

    on “Book Recommendation for Interns” ↗
  • brian_spiering · May 29, 2019 · Recommends

    John Ousterhout's "A Philosophy of Software Design" is a good book on the subject. He has worked with Google.

    on “Ask HN: Resources on how Google/Facebook etc. approach software design?” ↗
  • cliffcrosland · Aug 24, 2019 · Recommends

    Reading an enumeration of architecture options can be helpful, but I've probably found more value in works like Ousterhout's "A Philosophy of Software Design" that cover fundamental design principles. Such principles seem to be applicable no matter the project. I appreciate that Ousterhout tries to support these principles with some data from his own experience…

    on “Software Architecture Guide” ↗
  • MeteorMarc · Nov 10, 2019 · Recommends

    The book "A Philosophy of Software Design" should interest you then: https://www.amazon.com/t/dp/1732102201 It argues, among other things, that deep interfaces matter more than code complexity inside a module.

    on “An Experiment on Code Structure” ↗
  • bch · Jan 30, 2020 · Recommends

    …object system, native database framework, Miguel Sopher’s(RIP) work on the stackless non-recursive engine (NRE) and coroutines that fell out of that work... Back to Ousterhout though, you might dig his “Philosophy of Software Design”[0] book, or talks associated with it[1]. Lots to like in this space... [0] https://www.amazon.com/Philosophy-Software-Design-John-Ouste... [1] https://youtu.be/bmSAYlu0NcY

    on “Who Says Tcl Rules?” ↗

Keyboard shortcuts

/
Focus search
j / k
Next / previous book
Enter
Open focused book
Esc
Close / go back
g h
Go to Home
g t
Go to Top all-time
g m
Go to Most recommended
g r
Go to Rising
g f
Go to For You
?
Show this help