L'on peut voir la relation entre utilisateur et l'interface comme un système de communication classique. L'interface n'est plus simplement une couche entre l'utilisateur et le programme:
ACTEUR A ←→ INTERFACE ←→ ACTEUR B
Mais devient dans bien des cas l'interlocuteur direct des acteurs:
ACTEUR A ←→ INTERFACE
ACTEUR B ←→ INTERFACE
Les utilisateurs (acteur) n'ont pas conscience de ce qui se passe “derrière” l'interface. L'interface DEVIENT la logique.
Un des exemples les plus fameux est que certaine personne croient que Internet Explorer (ou un autre navigateur… mais le cas est moins fréquent) EST internet (il faudrait mieux ici parler de “web”)… On arrive donc avec des questions du genre Avec Firefox je peux aller sur le “même internet” que avec Internet explorer?
L'interface renvoye de l'information sur les actions qu'elle permet. Cette information est uniquement compréhensible par l'utilisateur parce qu'il connais et comprend les symboles (texte, son, picto, animation, voir même néan: l'absence d'information étant aussi une information) que l'interface utilisent pour communiquer.
L'interface “s'auto-documente” en utilisant un langage commun avec l'utilisateur mais ne documente cependant pas ce langage. On trouve souvent l'utilisation de différent forme de “langage” au seins d'une même interface (le classique texte + îcone) pour avoir plus de chance de se faire comprendre.
Dans le cas ou l'interface n'est pas compréhensible pas l'utilisateur (on parlera de non-intuitive) on peut néamoins passer dans une phase “d'apprentissage” et trouver les fonctionnalités: