From e4662cbc27d04fb968220837633034420b7fb11a Mon Sep 17 00:00:00 2001 From: Dave Kerr Date: Fri, 10 Mar 2023 11:06:50 +0800 Subject: [PATCH] feat: principle of least astonishment --- README.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) 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.