Skip to content

Instantly share code, notes, and snippets.

@sunary
Last active October 6, 2021 00:44
Show Gist options
  • Save sunary/31df9065deebaf0e5311337ffada4ad1 to your computer and use it in GitHub Desktop.
Save sunary/31df9065deebaf0e5311337ffada4ad1 to your computer and use it in GitHub Desktop.
Design Principles

Design principles applicable to many areas of computer systems:

Adopt sweeping simplifications

So you can see what you are doing.

Avoid excessive generality

If it is good for everything, it is good for nothing.

Avoid rarely used components

Deterioration and corruption accumulate unnoticed—until the next use.

Be explicit

Get all of the assumptions out on the table.

Decouple modules with indirection

Indirection supports replaceability.

Design for iteration

You won't get it right the first time, so make it easy to change.

End-to-end argument

The application knows best.

Escalating complexity principle

Adding a feature increases complexity out of proportion.

Incommensurate scaling rule

Changing a parameter by a factor of ten requires a new design.

Keep digging principle

Complex systems fail for complex reasons.

Law of diminishing returns

The more one improves some measure of goodness, the more effort the next improvement will require.

Open design principle

Let anyone comment on the design; you need all the help you can get.

Principle of least astonishment

People are part of the system. Choose interfaces that match the user’s experience, expectations, and mental models.

Robustness principle

Be tolerant of inputs, strict on outputs.

Safety margin principle

Keep track of the distance to the edge of the cliff or you may fall over the edge.

Unyielding foundations rule

It is easier to change a module than to change the modularity.

source: https://ocw.mit.edu/resources/res-6-004-principles-of-computer-system-design-an-introduction-spring-2009/online-textbook/principles_open_5_0.pdf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment