summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Kerr <dwmkerr@gmail.com>2023-03-10 11:10:41 +0800
committerGitHub <noreply@github.com>2023-03-10 11:10:41 +0800
commit4be482731b6a6009453af7d303d3cd2470a2e73e (patch)
treee9a4242d003410a615dfaf939cc245e974d33c5b
parent80bea4040f476e348f680fd01ec43798ce3f00ac (diff)
parent9bd03d834554311e938e880f5c99c5ecc409a13f (diff)
Merge pull request #404 from dwmkerr/feat/principle-of-least-astonishment
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..173eb38 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 easily discovered and matches users expectations. Features that 'surprise' users should be discouraged in favour of features that can be intuitively reasoned about based on existing patterns and practices.
+
+Many examples are present in user interfaces, such as a 'pull down' gesture on a mobile appliation to refresh content. Another example would be command line tools, where many standards exist for how parameters are named, common parameters that should be available and so on.
+
+See also:
+
+- [Convention Over Configuration](#todo)
+
## Reading List
If you have found these concepts interesting, you may enjoy the following books.