Principle of least astonishment
The principle of least astonishment (POLA), sometimes also referred to as Principle of Least Surprise, applies to user interface and software design, from the ergonomics standpoint. It is alternatively referred to as the law or rule of least astonishment, or of least surprise. The principle can be stated as "if a necessary feature has a high astonishment factor, it may be necessary to redesign the feature." In general engineering design contexts, the principle may be taken to mean that a component of a system should behave in a manner consistent with how users of that component are likely to expect it to behave, i.e., users should not be astonished at the way it behaves.
A textbook formulation is "People are part of the system. The design should match the user's experience, expectations, and mental models." The choice of "least surprising" behavior may depend on the expected audience, e.g. end users, programmers or system administrators.
In more practical terms, the principle aims to exploit users' pre-existing knowledge to minimize the learning curve, for instance by designing interfaces that borrow heavily from "functionally similar or analogous programs with which your users are likely to be familiar." User expectations in this respect may be closely related to a particular computing platform or tradition. For example, Unix command line programs are expected to follow certain conventions with respect to switches, and widgets of Microsoft Windows programs are expected to follow certain conventions with respect to key bindings. In more abstract settings like an API, the expectation that function or method names intuitively match their behavior is another example. This practice also involves the application of sensible defaults.
When two elements of an interface conflict, or are ambiguous, the behavior should be that which will least surprise the user; in particular a programmer should try to think of the behavior that will least surprise someone who uses the program, rather than that behavior that is natural from knowing the inner workings of the program.
A website may declare an input that should autofocus when the page is loaded, such as a search field (e.g. Google.com), or the username field of a login form. Sites offering keyboard shortcuts often allow pressing ? to see the available shortcuts. Examples include Gmail and JIRA.
The F1 Function key in Windows operating systems is almost always for opening a help program associated with an application, and similarly for some of the Linux desktop environments. The corresponding key combination in Mac OS X is ⌘ Command+⇧ Shift+?. Users expect a help screen or similar help services popup when they press this key. Software binding this key to some other feature is likely to cause astonishment if no help appears. Malicious programs are known to exploit users' familiarity with regular shortcut keys.
In programming, a good example of this principle is the common
- DWIM (Do What I Mean)
- Convention over configuration
- Human interface guidelines
- Look and feel
- Occam's razor
- List of software development philosophies
- Peter Seebach (2001-08-01). "The Principle of Least Astonishment". The cranky user. IBM DeveloperWorks. Retrieved 2014-01-23.
- Eric Steven Raymond (2003). "Applying the Rule of Least Surprise". The Art of Unix Programming. faqs.org. p. 20. ISBN 978-0-13-142901-7. Retrieved 2014-01-23.
- Geoffrey James (1987). "Law of Least Astonishment". The Tao of Programming. 4.1. ISBN 0-931137-07-1. Retrieved 2014-02-05.
- M. F. Cowlishaw (1984). "The design of the REXX language" (PDF). IBM Systems Journal, VOL 23. NO 4, 1984 (PDF). IBM Research. p. 333. doi:10.1147/sj.234.0326. Retrieved 2014-01-23.
Could there be a high astonishment factor associated with the new feature? If a feature is accidentally misapplied by the user and causes what appears to him to be an unpredictable result, that feature has a high astonishment factor and is therefore undesirable. If a necessary feature has a high astonishment factor, it may be necessary to redesign the feature.
- Saltzer, J. H.; Kaashoek, Frans (2009). Principles of computer system design: an introduction. Morgan Kaufmann. p. 85. ISBN 978-0-12-374957-4.
- Petroutsos, Evangelos (2010). Mastering Microsoft Visual Basic 2010. John Wiley and Sons. p. 133. ISBN 978-0-470-53287-4.
- Bloch, Joshua (2006), How to design a good API and why it matters, Association for Computing Machinery, pp. 506–507
- "Forms in HTML". Mozilla Developers Network. Mozilla. Retrieved 27 July 2013.
- "Keyboard shortcuts". Google. 21 Jun 2013. Retrieved 27 July 2013.
- "Using Keyboard Shortcuts". Atlassian. Retrieved 27 July 2013.
- Microsoft: Don't press F1 key in Windows XP - Computerworld