Book · 2021 · Computer programs
A Philosophy of Software Design
- mentions
- 17
- people
- 3
- podcast
- 1
- episodes
- 5
- recommendations
- 7
A lot of people in the tech world who I talk with point to this book as one of the best books that that gives them specific actionable things, ways to think about software design.
What they say about it
- Recommends the book“can very much recommend it”3
- Discusses deep modules“concept of deep modules”2
- Mentions designing twice“design it twice”2
The best things said about it
And then as closing what are what is a book that you would recommend or multiple books I'll go with pragmatic programmer uh philosophy of software design by John Asterau and um I'd say the first like three chapters of DDD the Eric Evans book.
And another one was John Asterout's book philosophy of software design where I picked up tons of great stuff like deep modules is which is a massive one for me.
His suggestion was design it twice because the second time you'll get a better design than the first time.
And and it's it's interesting that you mentioned the two the two ways because in the book the book itself starts with you you're writing how design is all about managing complexity and then you bring these two approaches.
In the book you have a chapter titled defining errors out of existence and in this one you talk about error handling.
Why people recommend it
A Philosophy of Software Design by John K. Ousterhout offers actionable principles and strategic insights for managing complexity in programming. On The Pragmatic Engineer podcast, Matt Pocock recommended the book during a discussion on AI skills and strategic programming techniques. Matt noted that he picked up tons of great concepts from the text, highlighting deep modules as a massive takeaway that guided his work. Gergely Orosz also praised the publication, noting that many tech professionals consider it one of the best sources for specific, actionable ways to think about software design. During a dedicated episode, John Ousterhout joined Gergely Orosz to discuss core themes from the book, including the management of complexity and the advice to design systems twice. Gergely later recommended the book to listeners in the closing remarks of that conversation. Additionally, Matt Pocock emphasized the importance of reading such texts to build the vocabulary needed to distinguish between strategic and non-strategic programming techniques. Across multiple episodes, hosts and guests alike underscored how the book equips engineers to write cleaner, more modular code by confronting complexity head-on, making it a cornerstone recommendation for modern software developers seeking mastery.
Every mention
Gergely Orosz And a lot of people in the tech world who I talk with point to this book as one of the best books that that… 12
“It's one of the philosophy of software design. I just love this book. It's still to this day, the only book that actually compares architecture approaches between like groups of students and what we can learn from that.”
“I think it was John Alistster Sterhout who in in his book on software design a Philadelphia software design his suggestion was design it twice because the second time you'll get a better design than the first time.”
“And a lot of people in the tech world who I talk with point to this book as one of the best books that that gives them specific actionable things, ways to think about software design.”
“And and it's it's interesting that you mentioned the two the two ways because in the book the book itself starts with you you're writing how design is all about managing complexity and then you bring these two approaches.”
“One interesting idea that I it resonated with the book is is you wrote uh about how it's worth designing things twice. In fact, this is a whole chapter in the book, chapter 11.”
“Now in in the book, one idea that stuck with me is this concept of deep modules and shallow modules. And you introduce this concept that a deep module is something a piece of code”
“In the book you have a chapter titled defining errors out of existence and and in this one you talk about error handling.”
“One one thing that in your book you don't touch on. Uh, of course, you know, the book cannot touch on anything, but it's a practice that a lot of teams and and tech companies use is these things called design reviews and discussions.”
“One one thing I'd like to get into is is the writing of this book because again like like this book it it feels to me it has just a lot of really kind of practical insights.”
“And then the the book you this was first published in in 2018, so that's coming up seven seven years now. If if you were to write this book today, are there parts that you would add to it”
“I hope you enjoyed this conversation as much as I did. Thanks very much to John for sitting down with us. If you've not read his book, a Philadelphia software design, I can very much recommend it.”
“but uh I've been recently rereading a philosophy of software design by John osterhouse um and you know it's about sort of managing complexity in software and sort of like the tricks that you can use to sort of reframe some of your problems”
Matt Pocock And then as closing what are what is a book that you would recommend or multiple books I'll go with pragmat… 3
“And another one was John Asterout's book philosophy of software design where I picked up tons of great stuff like deep modules is which is a massive one for me.”
“And I would say reading these books as well because just having the language to explain that and understanding the difference between applying strategic techniques and not uh is the whole game.”
“And then as closing what are what is a book that you would recommend or multiple books I'll go with pragmatic programmer uh philosophy of software design by John Asterau and um I'd say the first like three chapters of DDD the Eric Evans book”
John Ousterhout So, unfortunately, there's not a lot of other stuff out there that I really like. Um, there are a couple of… 2
“The as I mentioned earlier, I think the um the part of the book that is most dangerous is this part of exception handling which as I mentioned is easy for people to misinterpret”
“So, unfortunately, there's not a lot of other stuff out there that I really like. Um, there are a couple of things. Unfortunately, I don't remember the names of them, but if people go to my homepage on the web”
Other mentions (3: passing, ad reads, own books)
“Instead, he went back to classic software engineering books. The pragmatic programmer, a philosophy of software design, and domain driven design.”
“Check out the show notes below for an interview with John Auster How, the author of a Philadelphia software design, a book I really love, and related deep dives for AI engineering and context engineering.”
“John also is the author of a philosophy of software design and currently a professor of computer science at Stanford.”