I just lately completed studying A Philosophy of Software program Design by John Ousterhout and I believed that it might be helpful to share my opinion about it with the group.
My motivation for selecting up this e-book was that I noticed that it is likely one of the greatest sellers in Amazon and it had loads of good evaluations.
Concerning the creator #
The creator of the e-book is John Ousterhout. He’s a professor of pc science at Stanford College. He was a professor of pc science on the College of California, Berkeley the place he created the Tcl scripting language and the Tk platform-independent widget toolkit and proposed the concept of co-scheduling. John Ousterhout has carried out some important contributions to the sphere of pc science and has been awarded a Grace Murray Hopper Award and an ACM Software program System Award.
Concerning the contents #
This e-book was written by John Ousterhout for use as the principle studying materials of one of many topics within the pc science program at Stanford College. Regardless of the highly-academic background of the creator and being a part of the content material of the pc science program at Stanford College, the e-book is written in a really colloquial fashion that may be adopted with simple by non-academics and newbie pc science college students.
I’m an skilled developer and I’ve heard about most of the concepts within the e-book earlier than. Nevertheless, I nonetheless loved this e-book as a result of I believe the creator has carried out an excellent job extracting the essence of some ideas and placing it down in phrases. I significantly loved the sections about complexity, interfaces, and abstractions.
I additionally loved that the creator dares to problem some frequent greatest practices comparable to “capabilities ought to be small” or “courses ought to solely do one factor” as a result of it encourages experimentation and being open-minded.
The e-book is split into the next 21 chapters:
- The character of complexity
- Working code isn’t sufficient
- Modules ought to be deep
- Data hiding (and Leakage)
- Common-purpose modules are deeper
- Totally different layers, totally different abstractions
- Pull complexity downwards
- Higher collectively or higher aside?
10 Outline errors out of existence
- Design it twice
- Why write feedback? The 4 excuses
- Feedback ought to describe issues that aren’t apparent from the code
- Selecting names
- Write feedback first
- Modifying present code
- Code ought to be apparent
- Software program traits
- Designing for efficiency
I actually loved the primary half of the e-book. The primary chapters talk about the character and the principle causes of complexity in software program. The next chapters discover some frequent design issues in modules, interfaces, abstractions, coupling, and error dealing with. The e-book highlights the principle issues as an inventory of crimson flags that we must always keep away from. I disliked that a few of the concepts felt in some way opinionated and probably not goal. Nevertheless, I didn’t have a giant drawback with it as a result of I truly agree with many of the factors of view of the creator. Additionally, he wouldn’t be capable of problem some frequent greatest practices with out being opinionated.
After chapter 11 the content material was much less interesting to me as a result of I felt that I wasn’t studying as a lot as I used to be studying through the first half of the e-book. Nevertheless, that is most likely my case as a result of I’ve learn different books (e.g. Clear Code) on related subjects.
I might suggest the e-book for each senior and junior builders as a result of I actually loved the primary half of the e-book and I assume that some much less skilled builders will discover the second half of the e-book extra fascinating than I did.
I might additionally like to say that this e-book is fairly low-cost. Many tech books have a worth mark of 40 to 60 USD and this books accessible for 17.27 USD in its paperback version. Sadly, the e-book isn’t accessible in digital codecs.
I hope you might have discovered this evaluate helpful. I’ve plans to attempt to evaluate all of the tech books that I learn from now personal. So please comply with me if you wish to learn extra e-book evaluations sooner or later.