Principle of least astonishment

related topics
{system, computer, user}
{math, number, function}
{album, band, music}
{theory, work, human}
{law, state, case}

The Principle of Least Astonishment (POLA/PLA) applies to user interface design, software design, and ergonomics. It is also known as the rule or law of least astonishment, or the rule or principle of least surprise (POLS).

The POLA states that, when two elements of an interface conflict, or are ambiguous, the behaviour 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.[1]

This practice also involves the application of sensible defaults.



  • A user interface may have the behaviour that pressing Ctrl+Q causes the program to quit. The same user interface may have a facility for recording macros, a sequence of keystrokes to be played back later, intended to be able to control all aspects of the program. The user may want to record a keystroke sequence that includes Ctrl+Q as part (most likely the last part) of the macro. The principle says that pressing Ctrl+Q while recording a macro should not quit the program (which would surprise the user), but rather should record the keystroke.
  • It has been suggested that the Ruby programming language adheres to the 'principle of least surprise'. Yukihiro Matsumoto, the creator of Ruby, has said he did not initially make this suggestion but believes Ruby does adhere to that principle.[2]

See also


External links

Full article ▸

related documents
Lattice C
Turbo C
Communications in the Marshall Islands
COMSEC equipment
Communications in Anguilla
Communications in Slovakia
Progeny Linux Systems
Paul Vixie
Communications in Malta
Communications in Malaysia
Communications in Cuba
Elm (e-mail client)
Communications in Jersey
Communications in the Republic of Ireland
Communications in Venezuela
Communications in Azerbaijan
IBM EasyWriter
Communications in Greenland
Archie search engine
Communications in the Solomon Islands
Slash (software)
Adobe RoboHelp
Kyoto Common Lisp
Gosling Emacs