[A Philosophy of Software Design](https://www.amazon.com/Philosophy-Software-Design-John-Ousterhout/dp/1732102201/) _by John Ousterhout_ is a great, short read of software design philosophy. I thought it was very to the point and didn't try to cover too much. It even changed my perspective on comments in code! Definately a good read.
A Philosophy of Software Design by John Ousterhout is a great, short read of software design philosophy. I thought it was very to the point and didn't try to cover too much. It even changed my perspective on comments in code! Definately a good read. A few concepts I liked, deep modules, design exceptions out, and the value of comments.
Deep modules is the idea that modules should generally abstract something away from the implementor in a way that makes sense for the layer being worked on. There are a some good examples of this, both for things that work and things that don't.
Design exceptions out
This kinda stuck out because of my recent Erlan/Elixir exposure, where this is really part of the languange and the X of the communit. Golang also follows this idea. And while it takes a while to get used to this idea while coding, it generally does make things simpler and makes you think about the less happy path soon in the development cycle.
Here was where I disagreed with the author. I've found comments to be so useless over and over again that I decided they where usless, except in the case of a library or framework that would be released to others outside the organization. I've changed my perspective on comments and I'm trying to write better ones in my code. I'm not to the point of commententing all public interfaces, but I can see the potential value in doing that.
I wish more books where this consise, clear, and packed with good ideas and views.