A Philosophy of Software Design
Rate it:
Open Preview
Read between September 2 - September 22, 2023
7%
Flag icon
The first approach is to eliminate complexity by making code simpler and more obvious.
7%
Flag icon
The second approach to complexity is to encapsulate it, so that programmers can work on a system without being exposed to all of its complexity at once. This approach is called modular design.
8%
Flag icon
Beautiful designs reflect a balance between competing ideas and approaches.
8%
Flag icon
Complexity is anything related to the structure of a software system that makes it hard to understand and modify the system.
9%
Flag icon
Complexity is more apparent to readers than writers.
9%
Flag icon
Change amplification: The first symptom of complexity is that a seemingly simple change requires code modifications in many different places.
9%
Flag icon
Cognitive load: The second symptom of complexity is cognitive load, which refers to how much a developer needs to know in order to complete a task.
10%
Flag icon
Unknown unknowns: The third symptom of complexity is that it is not obvious which pieces of code must be modified to complete a task, or what information a developer must have to carry out the task successfully.
17%
Flag icon
The best modules are deep: they have a lot of functionality hidden behind a simple interface.
88%
Flag icon
As mentioned in Section 19.2, the units of development should be abstractions, not features.