
The Goal: A Business Graphic Novel
Eliyahu M. Goldratt , Dwight Jon Zimmerman , et al.
4.5 on Amazon
14 HN comments

The Three-Body Problem
Cixin Liu, Luke Daniels, et al.
4.3 on Amazon
14 HN comments

How to Read a Book: The Classic Guide to Intelligent Reading
Mortimer J. Adler and Charles Van Doren
4.5 on Amazon
14 HN comments

Harry Potter: Hogwarts Hardcover Journal and Elder Wand Pen Set
Insight Editions
4.8 on Amazon
14 HN comments

The Selfish Gene
Richard Dawkins, Lalla Ward, et al.
4.6 on Amazon
14 HN comments

The Ministry for the Future: A Novel
Kim Stanley Robinson, Jennifer Fitzgerald, et al.
4.3 on Amazon
13 HN comments

The Millionaire Next Door: The Surprising Secrets of America's Wealthy
Thomas J. Stanley and William D. Danko
4.6 on Amazon
12 HN comments

Cryptonomicon
Neal Stephenson, William Dufris, et al.
4.4 on Amazon
12 HN comments

A Philosophy of Software Design
John Ousterhout
4.4 on Amazon
12 HN comments

Stranger in a Strange Land
Robert A. Heinlein, Christopher Hurt, et al.
4.4 on Amazon
11 HN comments

The Very Hungry Caterpillar
Eric Carle
4.9 on Amazon
11 HN comments

Zero to One: Notes on Startups, or How to Build the Future
Peter Thiel, Blake Masters, et al.
4.6 on Amazon
11 HN comments

The Real Book: Sixth Edition
Hal Leonard Corporation
4.7 on Amazon
11 HN comments

Children of Time
Adrian Tchaikovsky, Mel Hudson, et al.
4.5 on Amazon
11 HN comments

Sapiens: A Brief History of Humankind
Yuval Noah Harari, Derek Perkins, et al.
4.6 on Amazon
11 HN comments
grammarnazzzionMay 25, 2021
devnonymousonJuly 24, 2021
[1] https://hn.algolia.com/?q=a+philosophy+of+software+design
girishsoonApr 16, 2021
noir_lordonJune 26, 2021
In "A Philosophy of Software Design" Ousterhout talks about the difference between tactical and strategic programming (great book mostly because it codifies a lot of what I think is the "One True Way" so I'm biased) and it's really easy to bang out a fix for variant 98 of the bug vs rethinking it so variants 0 through 97 which haven't been reported yet but exist can't happen.
gregfjohnsononMay 12, 2021
John Osterhout wrote what may be the best elaboration of this perspective in his wonderful book "A Philosophy of Software Design."
A couple of related thoughts from an old grizzled programmer (moi ;-), gregfjohnson.com):
Rule number one: All code must follow the Porthole Principle. The fundamental issue in programming is that we each look out at the world through a mental "porthole" that limits our field of view. We are limited in how much we can see and understand at any one time. Therefore, systems must be structured so that they can be understood completely, at all levels, even though we are only allowed to investigate them piecemeal, through our own limited and finite cognitive windows.
Abstraction is the essential tool that allows us to create systems of arbitrary size and complexity. A beautifully designed abstraction is easy to understand and use. It is so trustworthy that you don't feel any need to worry about how it is implemented. Finally, and most importantly, it enables you to reason with rigor and precision about the correctness of the code you are writing that makes use of it.
lstamouronMay 12, 2021
If you like this post, you might also like reading the relatively short book, A Philosophy of Software Design by John Ousterhout, or the talk you'll find on YouTube by the same name, which covers roughly half the topics in the book.
JtsummersonMay 25, 2021
dgb23onAug 9, 2021
Code doesn't magically become less complex by hacking it into pieces.
JtsummersonApr 16, 2021
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 while I wasn't paying attention).
bwh2onApr 16, 2021
In those last 70 pages, the author advocates strongly for lengthy comments which felt excessive and often unnecessary to me. Here's an example from page 124:
dgb23onJuly 19, 2021
- Coders at Work (Seibel)
- Working in Public (Eghbal)
The first one is very entertaining. Read it a couple years ago and found it gives some valuable perspective. The second one is on my reading list, it was recommended around these boards.
Related to software design, there are many. The two that are on my recent list are:
- Software Design for Flexibility (Sussman, Hanson)
- A Philosophy of Software Design (Ousterhout)
I can't comment personally on their content yet, still have to work through those two, but I have zero doubts to learn something valuable. Certainly consider them.
praptakonApr 12, 2021
The width is defined as the size of the interface (the cost) and the depth as the functionality that it buys you or maybe the complexity it hides (I'm recalling from memory, don't have the book at hand).
A file system that exposes the file interface (as in Unix) is given as a positive example. It has few functions and buys you, well, everything a file system offers.