A Philosophy of Software Design
Rate it:
Started reading October 24, 2019
7%
Flag icon
simpler designs allow us to build larger and more powerful systems before complexity becomes overwhelming.
7%
Flag icon
eliminate complexity by making code simpler and more obvious.
7%
Flag icon
The second approach to complexity is to encapsulate it,
7%
Flag icon
modular design.
7%
Flag icon
software design is a continuous process that spans the entire lifecycle of a software system;
8%
Flag icon
an incremental approach such as agile development,
8%
Flag icon
Incremental development means that software design is never done.
9%
Flag icon
One of the best ways to improve your design skills is to learn to recognize red flags:
9%
Flag icon
it’s important to use moderation and discretion.
9%
Flag icon
Beautiful designs reflect a balance between competing ideas and approaches.
9%
Flag icon
The ability to recognize complexity is a crucial design skill. It allows you to identify problems before you invest a lot of effort in them,
9%
Flag icon
Complexity is anything related to the structure of a software system that makes it hard to understand and modify the system.
10%
Flag icon
10%
Flag icon
The overall complexity of a system (C) is determined by the complexity of each part p (cp) weighted by the fraction of time developers spend working on that part (tp).
10%
Flag icon
Change amplification: