Skip to content
Go back

A Philosophy of Software Design

Published:

A Philosophy of Software Design - APOSD, is a book originally released in 2018. It’s not nearly as popular as Clean Code (2008), but it is slowly gaining popularity. I think it’s a refreshing update for all the Clean Coders out there.

John Ousterhout tries to change software development from a craft/talent to more of an engineering discipline. Where a set of repeatable techniques and tools exist that anyone can learn. So he comes up with a course on it, and this book summarizes the learnings.

Complexity

Is the core issue and consideration. If code is not obvious to the reader, it’s not the readers fault - it’s the writers shortcoming.

The book mainly lists the causes of complexity, and how to handle them. In my opinion it’s a bit less clear-cut than Clean Code. Sometimes the optimal solution appears somewhere in the middle, and its up to the developer to figure it out case by case. Sounds like real life.

Some notes

APOSD VS Clean Code

John Ousterhout and Robert C. Martin have been civil enough to discuss the differences and publish the outcome. Generally they agree, but APOSD does differ in 3 ways:

Conclusion

Recommended - I find this book very helpful and believable, mostly as it aligns with my experience. I’ve read codebases where I’m not sure what’s going on, I’ve seen innocent changes in one area blow up another. Good to confirm it might be the design itself that still causes problems.



Previous Post
AI vs Programming as Theory Building
Next Post
Basic Docker notes