A Philosophy of Software Design – Book Summary and Notes
elvischidera.com
elvischidera.com
I'm currently a few chapters into a few other books which I chose to take notes on, but it's very slow going and my desire to read those books has decreased because it feels like a slog.
How do you combat the desire to note every little detail (how do you decide what's important)?
Also, do you take notes directly in a text editor, or do you take handwritten notes and then transcribe them later?
I try to focus on the general idea of each section in a book.
> Also, do you take notes directly in a text editor
Yes, in markdown.
https://www.businessstudynotes.com/personal-skills/precis-wr...
https://www.gutenberg.org/ebooks/53680
Take Notes by hand using Paper/Pen/Pencil, use text, diagrams whatever you need to enhance your comprehension; Transcribe later to Computer, if needed.
First line is already wrong. I mean I get the meaning but this is not technically true. Computing is bounded by the laws of physics. We have bottlenecks and limitations everywhere this is entirely due to physics.
It influences even the style of programming. There is much more parallelism in programming today due very much to physical limitations in raw speed.
> The constraints imposed in building large software systems are the limitations of the human mind; opposed to the physical systems' constraints in other kinds of engineering.
- MIT 6.001 Structure and Interpretation: https://youtube.com/playlist?list=PLE18841CABEA24090
> The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures. Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. It prints results, draws pictures, produces sounds, moves arms.
- Mythical man month
Of course, some people have to solve novel problems but 99% of us don't, we just solve the same problems again and again.
Of course 'executing code' and 'human minds' are bound by physics, that's a relatively uninteresting insight.
The point is: the process of human minds writing software is constrained by the understanding of single human minds. So the 'meta task' of software engineering becomes working around that constraint.
That's why decomposition is such a powerful tool for large software system development because it:
a. reduces the amount of working memory a single mind needs to make a change and
b. lets more human minds work on the solution in parallel without forcing every mind to understand everything about the overall system
Software is bounded by the human mind AND physics. Everything is actually bounded by the previous aforementioned things. It's just that the physical bounds are less apparent for programming. But it is only "less" apparent measured relative to other engineering fields... when viewed without comparison to other engineering fields, the physical limitations of software are still readily apparent.
When you replied to me, was the post created instantaneously or was there a delay? That delay is due to physical limitations. If you don't code taking into account physical limitations and Big Oh complexity, well those limitations become even MORE apparent. In fact the entire Big Oh complexity thing solely exists because of physical limitations.
I wasn’t going to repeat what the other comments already said: you are right but you are missing the point? Like you said:
> But it is only "less" apparent measured relative to other engineering fields... when viewed without comparison to other engineering fields
I don’t think any of the authors will disagree with what you just said.
As Ian Sommerville more or less said it the other day, we've got the philosophies, the textbooks, the smart people, the pragmatism, and the need, so why don't we get to build the quality of software we know in our hearts we can make and deserve? Is what we call "infrastructure" today a stagnation by which Capitalism ultimately eats its own means of innovation?
Comments chapters start from Page #91 to 142, totals to 52. Total pages - 175; not counting index and summary pages.
1/4 of 175 = 43.75
1/3 of 175 = 58.33
Not just me. I've heard, read - here at HN, in the industry, blogs, co-workers, other books - the code should be self-explanatory. If it needs comments to explain then either the code author can't write good code or they are overly complicating it. Besides that, over time, comments get obsolete. We've to fight to get capacity to address tech debt. I don't see that time getting used in refreshing the comments
Can you point me to a codebase that does not use comments, as a model of how that looks in practice?
Once we actively encourage “comments”, this is what we get. It was totally unnecessary -
https://github.com/nopSolutions/nopCommerce/blob/develop/src...
I welcome this type of comments which does not say the obvious and goes beyond what the code in front of you can’t state -
"// If every heap's gen2 or gen3 size is less than this threshold we will do a blocking GC."
https://raw.githubusercontent.com/dotnet/runtime/main/src/co...