Nguyên tắc bất ngờ nhỏ nhất

Nguyên tắc bất ngờ nhỏ nhất (tiếng Anh: Principle of least astonishment) áp dụng cho thiết kế giao diện, thiết kế phần mềm và khoa học lao động. Nguyên tắc phát biểu rằng khi hai thành phần giao diện xung đột hoặc nhập nhằng, hành vi của chúng phải gây bất ngờ ít nhất cho người sử dụng. Đặc biệt, một lập trình viên nên nghĩ về hành vi gây ít bất ngờ nhất cho người sử dụng chương trình chứ không phải suy ra từ hiểu biết về hành vi nội tại của chương trình.

Quy tắc này bao gồm việc áp dụng các giá trị mặc định hợp lý.

Ví dụ 
 Một người sử dụng chuẩn bị nhập tên và mật khẩu vào một chương trình hoặc trang web thì nhận được tin nhắn. Một vài chương trình tin nhắn tức thời ngay lập tức giành quyền đọc bàn phím và chuyển đến trường trả lời của nó, do giả định rằng người dùng sẽ trả lời tin nhắn mới ngay lập tức. Thực tế, người dùng có thể bất ngờ nhận ra vừa gõ mật khẩu vào trình nhắn tin và gửi nó cho người bạn của mình. Nguyên nhân của sự xung đột này là hai chương trình không biết về sự tồn tại của nhau và không thể dễ đang xác định lúc nào có thể can thiệp. Để tránh những xung đột như thế này, hệ điều hành có thẻ hạn chế sự tương tác giữa các chương trình, chẳng hạn bằng cách không cho phép trình nhắn tin cướp quyền đọc bàn phím.
 Một giao diện người dùng có thể quy định rằng khi nhấn Ctrl+Q chương trình sẽ thoát. Cùng giao diện đó có thể có chức năng ghi vĩ lệnh, một chuyển các phím tắt có thể lặp lại sau đó, có thể điều khiển mọi khía cạnh của chương trình. Người sử dụng muốn ghi một vĩ lệnh trong đó có chứa tổ hợp Ctrl+Q (thường là lệnh cuối). Nguyên tắc yêu cầu rằng nhấn Ctrl+Q khi ghi vĩ lệnh không được tắt chương trình (điều sẽ gây ngạc nhiên cho người sử dụng), thay vào đó ghi lại tổ hợp phím (giả sử rằng người sử dụng thực sự muốn ghi tổ hợp phím chứ không phải dừng ghi và đóng chương trình, trong trường hợp đó người dùng sẽ không hiểu sao không có gì xảy ra khi anh ta nhấn Ctrl+Q).

Xem thêm 
 DWIM (Do What I Mean)
 Occam's razor
 Law of Demeter  (còn gọi là "nguyên tắc tri thức tối thiểu")

Tham khảo

Liên kết ngoài 
 "Applying the Rule of Least Surprise"  from The Art of Unix Programming by E.S. Raymond
 Principle of Least Astonishment at Portland Pattern Repository
 Principle of least astonishment on UXPassion.com 
 Law of Least Astonishment from The Tao of Programming by Geoffrey James

Heuristics
Khoa học lao động
Tương tác người máy
Nguyên tắc lập trình
Tương tác người-máy tính
Heuristic