Princip minimálního překvapení

Princip minimálního překvapení (anglicky principle of least astonishment) se vztahuje na návrh uživatelských rozhraní, design a ergonomii software. Někdy je označován také jako pravidlo/princip nejmenšího překvapení.

Princip minimálního překvapení souvisí s použitelností, přístupností, uživatelskou přívětivostí.

Princip vychází z tvrzení, že uživatel je součástí systému. Uživatelské rozhraní má proto respektovat jeho zkušenosti, očekávání a mentalitu. To co je méně překvapující často záleží na konkrétním koncovém uživateli daného systému. Uživatelské rozhraní programu by mělo být nastaveno tak, aby ve výchozím stavu uspokojilo potřeby a komfort většiny cílových uživatelů.

Jinak řečeno se tento princip snaží využít existující očekávané znalosti uživatele k minimalizaci doby učení se ovládání nového programu, například tím, že při návrhu uživatelského rozhraní využijeme prvky podobných, uživateli známých programů. V tomto ohledu může být očekávání uživatele úzce spojeno s konkrétním systémem nebo platformou, na kterou je uživatel zvyklý. Například u programů obsahujících ovládací prvek podobný Unixové příkazové řádce je uživatelem očekávána i podobná syntaxe příkazů. Stejně tak programy systému Windows by měly respektovat obvyklé klávesové zkratky.

V abstraktnější rovině, jako je programové API nebo zdrojový kód programu, se očekává logické pojmenovávání funkcí a metod, kde již z názvu má být patrná funkcionalita. Složitější funkce u kterých to tak není by měli být doplněny o vysvětlující komentáře.

V případě, kdy je prvek uživatelského rozhraní nejednoznačný, mělo by jeho chování uživatele co nejméně překvapit (dle principu nejmenšího zla). Konkrétně by se měl programátor pokusit vžít do role budoucího uživatele systému a chování navrhnout pochopitelně i pro uživatele bez znalosti vnitřního fungování programu.

Obecná pravidla a firemní kultura

Pro návrh uživatelských rozhraní existují obecná pravidla pro jednotlivé operační systémy a platformy. Pro vývojáře je vydává například firma Apple (Mac OS X Human Interface Guidelines) nebo Microsoft.

Stejně tak pro psaní zdrojových kódů jednotlivých programovacích jazyků existují konvence, jak psát kód co nejlépe čitelný a srozumitelný. Navíc, jelikož mnoho programovacích jazyků nabízí pro stejné funkce různé programové konstrukce a syntaxe, vyvíjí mnoho firem další iniciativu aby usnadnili práci svým zaměstnancům a zavádějí vlastní konvence, jak psát zdrojové kódy tak, aby jim snadno rozuměli všichni zaměstnanci, kterých se to týká.

Jednotlivé programovací jazyky mají také své vlastní nástroje a způsoby jak komentovat zdrojové kódy programu, aby se v nich budoucí programátoři vyznali. Například pro programovací jazyk JAVA je známý systém Javadoc.

Příklady

  • Představme si situaci, kdy se uživatel chystá vyplnit své jméno a heslo (či jiná citlivá data) do jednoho programu a je vyrušen příchozí zprávou z chatovacího programu. Některé chatovací programy po příchozí zprávě automaticky přejdou do popředí a kurzor nastaví do pole pro odpověď, protože předpokládají, že uživatel bude chtít na zprávu odpovědět. Uživatelé, kteří při psaní sledují klávesnici a nikoli monitor mohou pak nečekaně zjistit, že do chatu odeslali své jméno a heslo.
  • Klávesa F1 je ve většině programů využita k otevření nápovědy. Uživatelé očekávající okno s nápovědou bude nemile překvapen, pokud ve chvíli kdy hledá nápovědu programu jí nenajde.
  • Dva způsoby zápisu stejného forcyklu v jazyku java mohou zmást především začínající programátory.
  int[] cisla = {1,2,3,4,5,6,7,8,9,10};
  for (int cislo : cisla) {
      System.out.println("Cislo je: " + cislo);
  }
  int[] cisla = {1,2,3,4,5,6,7,8,9,10};
  int cislo;
  for(int i=0; i<cisla.length(); i++) {
      cislo = cisla[i];
      System.out.println("Cislo je: " + cislo);
  }