Realizzare un dialogo semplice e naturale. Il sistema deve presentare un modello che l'utente sia facilmente in grado di capire, apprendere e utilizzare. Il dialogo semplice e naturale è ovviamente basato sulla considerazione delle caratteristiche dell'utente, dei suoi compiti, della necessità di fornire un feedback soprattutto in relazione agli errori. Il linguaggio utilizzato a livello di interfaccia deve essere semplice e familiare per l'utente e rispecchiare i concetti e la terminologia a lui noti. Vanno evitati il più possibile un linguaggio tecnico e orientato al sistema che utenti non esperti di informatica possono non comprendere.
Semplificare la struttura dei compiti. I compiti o le attività che l'utente deve svolgere in interazione con il sistema devono avere una struttura semplice o devono essere semplificati. Donald Norman suggerisce quattro diversi approcci per semplificare i compiti: mantenere il compito invariato, ma offrire sussidi mentali; usare la tecnologia per rendere visibile quello che altrimenti sarebbe invisibile; automatizzare, mantenendo il compito sostanzialmente inviariato; cambiare la natura del compito. I primi tre approcci prevedono di non cambiare sostanzialmente il compito che l'utente deve affrontare. Nel primo e nel secondo caso, il suggerimento è quello di offrire sussidi esterni (che supportano le capacità cognitive dell'utente per non costringerlo a ricordare tutto a mente) e feedback (che consentono all'utente di controllare le componenti non visibili del sistema, al fine di verificarne l'adeguato funzionamento). Nel terzo caso, pur mantenendo invariata la struttura del compito, alcune sue parti (quelle più rischiose o complicate) vengono eseguite dalla tecnologia e non più dall'utente. L'ultimo approccio, quando il compito è intrinsecamente complesso per le abilità richieste, prevede una riprogettazione sostanziale del compito: l'obiettivo rimane lo stesso ma il modo in cui l'obiettivo viene raggiunto è totalmente diverso.
Favorire il riconoscimento piuttosto che il ricordo. Osservando l'interfaccia, l'utente deve poter capire cosa deve fare, come può farlo e, una volta eseguita una azione, deve poter capire cosa è successo e quali sono stati i risultati. Dal momento che è più facile riconoscere e ricordare una cosa vedendola direttamente, piuttosto che recuperare l'informazione dalla memoria, il modo più semplice per agevolare l'utente è quello di rendergli visibili le cose sull'interfaccia, ovvero fornirgli dei sussidi esterni che gli agevolano il ricordo. Un modo ulteriore (e forse il fondamentale), per facilitare il ricordo è dato dalla reale comprensione da parte dell'utente del modello concettuale del prodotto e della sua interazione.
Rendere visibile lo stato del sistema attraverso un feedback.
Prevenire e limitare gli errori di interazione. Commettere errori nell'interazione con un prodotto è naturale. Ogni azione dell'utente va concepita come un tentativo verso una giusta direzione. Si tratta di una componente naturale del dialogo utente-sistema che va tollerata, garantendo la giusta flessibilità di utilizzo che consente agli utenti di navigare liberamente senza entrare in vicoli ciechi e in situazioni critiche. Il contributo fondamentale alla prevenzione degli errori d'interazione deriva dal rispetto dei principi sul dialogo, i compiti, il riconoscimento, il feedback sulla cui base è consentito agli utenti di individuare, riconoscere e adeguare le proprie azioni alle possibilità offerte attraverso l'interfaccia. Altri modi di prevenire gli errori prevedono l'utilizzo di funzioni bloccanti, che impediscono la continuazione di azioni sbagliate o che possono portare a risultati distruttivi. Tuttavia, poiché gli errori sono sempre possibili, è importante che il sistema sia progettato in modo da diagnosticarli quando occorrono e facilitarne la correzione.
Essere coerenti. La coerenza permette all'utente di trasferire agevolmente la conoscenza da un'applicazione all'altra, aumenta la predicibilità delle azioni e dei comportamenti del sistema e ne favorisce l'apprendibilità. La coerenza in generale deve essere garantita a diversi livelli. Architettura informativa: disposizione e naming delle informazioni; coerenza del linguaggio e della grafica: la stessa parola, la stessa icona, lo stesso colore devono identificare lo stesso tipo di informazione o lo stesso tipo di azione entro tutto il prodotto; coerenza degli effetti: gli stessi comandi, le stesse azioni, gli stessi oggetti devono avere lo stesso comportamento e produrre gli stessi effetti in situazioni equivalenti; non devono essere associati agli stessi comandi, azioni e oggetti comportamenti diversi; coerenza nella presentazione: gli stessi oggetti o lo stesso tipo di informazioni devono essere collocati tendenzialmente nella stessa posizione, avere la stessa forma e lo stesso ordine; coerenza tra ambienti applicativi: un'applicazione, un sito non sono mondi isolati.
Facilitare la flessibilità d'utilizzo e l'efficienza dell'utente. Nella definizione degli strumenti in grado di agevolare la flessibilità e l'efficienza, va considerato che le esigenze degli utenti variano in relazione al loro livello di esperienza rispetto al compito e alle tecnologie informatiche. Ne consegue che, in relazione a questi due aspetti, il livello di supporto richiesto, gli strumenti utilizzati e le strategie di interazione messe in atto dagli utenti possono essere diverse. Si può agevolare la flessibilità e l'efficienza d'uso fornendo, ad esempio: assistenza intelligente (l'anticipazione da parte del sistema nell'inserimento di un termine) e shortcut (una combinazione di tasti, come ad esempio, CTRL+C per il comando Copia); salti nella navigazione che evitano di passare in punti intermedi; funzioni di personalizzazione dell'interfaccia, ovvero la possibilità di modificare alcuni aspetti del sistema in base alle esigenze del compito, alle caratteristiche dell'utente e sue preferenze personali. Da notare che, una volta personalizzato, il sistema deve mantenere, alle successive riaperture, le impostazioni date dall'utente. Alcuni esempi di aspetti dell'interfaccia che dovrebbero essere personalizzabili sono: la lingua, la dimensione dei caratteri, le impostazioni di default, il formato dei dati presentati e livello di dettaglio, la disposizione di alcuni oggetti grafici. Un altro aspetto dell'efficienza è anche il tempo di risposta del sistema alle azioni dell'utente, che rappresenta uno dei problemi più critici nelle applicazioni per il Web.
Fornire help e manuali.