More on this book
Community
Kindle Notes & Highlights
simpler designs allow us to build larger and more powerful systems before complexity becomes overwhelming.
eliminate complexity by making code simpler and more obvious.
The second approach to complexity is to encapsulate it,
modular design.
software design is a continuous process that spans the entire lifecycle of a software system;
an incremental approach such as agile development,
Incremental development means that software design is never done.
One of the best ways to improve your design skills is to learn to recognize red flags:
it’s important to use moderation and discretion.
Beautiful designs reflect a balance between competing ideas and approaches.
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,
Complexity is anything related to the structure of a software system that makes it hard to understand and modify the system.
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).
Change amplification: