I just finished reading John Ousterhout’s A Philosophy of Software Design. I found it to be a deeply engaging read that challenged many concepts that I’d previously accepted regarding good software design.
While the examples in the book are in Java and C++, the concepts are independent of language and paradigm. His design philosophy is just as applicable to object-oriented programming as it is to functional or even declarative languages.
Because the book challenges much of the “conventional wisdom” I’ve built up as a long-time Rubyist, I’ve decided to write a series of articles outlining what the Ruby community might stand to learn from Ousterhout’s design philosophy over on the Super Good website. Expect the first post next week!