summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Kerr <dwmkerr@gmail.com>2023-03-10 11:06:50 +0800
committerDave Kerr <dwmkerr@gmail.com>2023-03-10 11:06:50 +0800
commite4662cbc27d04fb968220837633034420b7fb11a (patch)
treeb0d568b10e64c653fe293e52d50167f01a188903
parent80bea4040f476e348f680fd01ec43798ce3f00ac (diff)
feat: principle of least astonishment
-rw-r--r--README.md18
1 files changed, 17 insertions, 1 deletions
diff --git a/README.md b/README.md
index f9f23d5..bfb91db 100644
--- a/README.md
+++ b/README.md
@@ -71,6 +71,7 @@ Like this project? Please considering [sponsoring me](https://github.com/sponsor
* [The KISS principle](#the-kiss-principle)
* [YAGNI](#yagni)
* [The Fallacies of Distributed Computing](#the-fallacies-of-distributed-computing)
+ * [The Principle of Least Astonishment](#the-principle-of-least-astonishment)
* [Reading List](#reading-list)
* [Online Resources](#online-resources)
* [PDF eBook](#pdf-ebook)
@@ -844,7 +845,6 @@ See Also:
- [Hyrum's Law](#hyrums-law-the-law-of-implicit-interfaces)
-
### SOLID
This is an acronym, which refers to:
@@ -1018,6 +1018,22 @@ See also:
- [Foraging for the Fallacies of Distributed Computing (Part 1) - Vaidehi Joshi
on Medium](https://medium.com/baseds/foraging-for-the-fallacies-of-distributed-computing-part-1-1b35c3b85b53)
+### The Principle of Least Astonishment
+
+[The Principle of Least Astonishment on Wikipedia](https://en.wikipedia.org/wiki/Principle_of_least_astonishment)
+
+> People are part of the system. The design should match the user's experience, expectations, and mental models.
+>
+> Frans Kaashoek
+
+This principle proposes that systems and interfaces should be designed in a way that features and functionality is intuitive and matches users expectations. Features that 'surprise' users should be discouraged, and features that can be intuitively reasoned about based on existing common patterns and practices should be encouraged.
+
+Examples are common in user interfaces, where a number of paradigms are common, such as a 'pull down' on a mobile app page to reload. Another example would be command line tools - where standard Unix and Linux tools have created a set of common expectations on how CLI tools can be expected to work, such as how command line flags are named.
+
+See also:
+
+- [Convention Over Configuration](#todo)
+
## Reading List
If you have found these concepts interesting, you may enjoy the following books.