A Philosophy of Software Design
A book on designing your software as a software engineer from a high-level perspective. And lots of examples around it.
A book on designing your software as a software engineer from a high-level perspective. And lots of examples around it.
Author: John Ousterhout
Personal Rating: 4.7/5
Personal Review: I found this book amazing. Normally software-related books are tough to chew or read. but I found it refreshing, and very easy to read. As an engineer, I found lots of things resonated with me.
I feel like the author is dumping all of his experiences into some nuggets of wisdom. I recommend this book. You may not like all of the suggestions but still, those suggestions are worth exploring. A must-read for senior+ engineers.
Quote from the book:
Complexity is more apparent to the reader than writer
Inconsistency is also major contributor to obscurity
Almost every software development organization has at least one developer who takes tactical programming to the extreme a tactical tornado. ...... When it comes to implementing a quick feature nobody gets it done faster than the tactical tornado. ..... However tactical tornadoes leave behind a wake of destruction in the future.
The best way to lower development costs is to hire great engineers: they don't cost much more than mediocre engineers but have tremendously higher productivity.
Information leakage is one of the most important red flags in software designs.
When developing a module, look for opportunities to take a little bit of extra suffering upon yourself in order to reduce the suffering of your users.
Even if you are certain that there is only one reasonable approach, consider a second design anyway, no matter how bad you think it will be. It will be instructive to think about the weaknesses of that design and contrast them with the features of other designs.
Link: https://amzn.to/3UY8tqK