Posts

Showing posts from March, 2024

My learnings from the book "A Philosophy of Software Design"

Image
Table Of Content Solid recommendations I agree with Implementation comments: what and why, not how A philosophy of software design - John Ousterhout Chapter 5 — Information Hiding (and Leakage) Define Errors Out of Existence How can social robot use cases in healthcare be pushed - with an interoperable programming interface Chapter 14 — Choosing Names Pass-through variables add complexity because they force intermediate methods tobe aware of their existence, even though the methods have no use for thevariables. Below are the notes I made on takeaways from the book and my thoughts on acouple of the ideas (minus some fun references to real code that I've workedon). I'm publishing the notes as it's a nice way for me to re-read them andretain the information. This doesn't cover all the content in the book, and it'spossible that I misrepresent the author in some of my paraphrasing. If you'reinterested in the content I definitely recommend buying a copy - it's

A Philosophy of Software Design Book Summary and Top Ideas

Image
Table Of Content Large-scale programming styles Define Errors Out of Existence And the answer to the question what is the most complex problem in Computer Sciences. Comments Chapter 8 — Pull Complexity Downwards Separate special purpose and general purpose  code List of software development philosophies To add to this, we haven't completely identified all of the issues we will confront. In essence, we still have to discover the Unknown Unknowns as we cautiously proceed. There are also a few weaker chapters towards the end of the book, for example Code Should Be Obvious and Software Trends. Code Complete has a lot more to say about names, and does it better. However, I really liked the story of how a too generic variable name (block) caused a bug that took six months to find. In a lot of places, the author uses comments and documentation interchangeably. Large-scale programming styles We need more resources to remind us not overcomplicate software architecture. It will bec