Quali sono gli errori gli utenti fanno, e come è possibile aggiornare l'applicazione per gestirli? [chiuso]

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/1752

Domanda

In realtà questa domanda è circa le precauzioni da adottare per migliorare l'esperienza utente di qualità e ridurre le chiamate al supporto evitabili.

È stato utile?

Soluzione

La mancanza di una corretta convalida dell'input è una di quelle cose che tende a portare abbastanza rapidamente per gli utenti che fanno cose "cattive" con l'applicazione, quando in realtà dovrebbe essere gestita dal programmatore.

Ho visto le applicazioni legacy in cui gli utenti sono stati addestrati a:

  • Non immettere apostrofi nei nomi
  • non entra alcun simbolo diverso da a-z0-9,
  • assicurarsi che non vi siano spazi prima o dopo il testo che hanno entrati
  • di controllo che viene inserito un indirizzo e-mail correttamente formattata al campo email, mailing altrimenti successive a tale utente utilizzerà tutto quello che è nel campo e non riuscirà
  • assicurarsi "http://" viene messo prima di indirizzi web

ecc ecc

Tutte le questioni di cui sopra sono quelle che dovrebbe essere gestito da uno sviluppatore di applicazioni. Quando la convalida di ingresso è essenzialmente "assicurarsi che l'utente sa cosa formattare questo campo deve essere in e fiducia quello che hanno immesso è giusto", allora le cose inaspettate sono destinate a trovare la loro strada per l'applicazione. A parte le ovvie implicazioni di sicurezza, gli utenti commettono errori. Mentre i programmatori spesso produciamo i nostri migliori prodotti da farsi in quattro per assicurarsi che l'utente non possono sbagliare, non importa quanto duramente si cerca!

Altri suggerimenti

Una volta ho ricevuto una chiamata di assistenza clienti, perché il mio app appena scomparso. Si è rivelato hanno aperto un'altra applicazione su di esso.

... ho deciso di non garantire che non accada di nuovo, dato che era l'analfabetismo informatico degli utenti che ha causato il problema, non l'applicazione. Tutto ciò che avrebbe potuto fare per risolvere il problema avrebbe dovuto portare ad una scarsa esperienza utente per gli altri.

Quasi tutti i programmi che scrivo viene richiamato rigorosamente dalla riga di comando. Ho anche scritto alcune cose amatore che ha iniziato come interfacce CLI e crebbe rapidamente in qualcosa di più simile guscio di ogni altra cosa.

Quindi, posso solo parlare per quello che so. Ecco alcuni problemi comuni con i programmi da linea di comando:

troppe opzioni

A meno che non si sta scrivendo un compilatore o un editor di linea, cercare di mantenere le opzioni limitate ad uno schermo intero su un buffer di 80x25 fotogramma quando viene passato --help o /?. E 'perfettamente bene per avere più opzioni di questo, ma li rompere in sottocategorie. Per esempio

foo --help

foo --help option_name

Non ci sono lunghe le opzioni

E 'molto più facile da ricordare foo --attach_to [argument] --volatile --verbose di quello che è da ricordare foo -a [arg] -v +V. Questo non è sempre possibile, ma nella maggior parte dei casi, si tratta.

Nessun ingresso convalida

Quasi ogni piattaforma ha più librerie che sono provati, testati e vero quando si tratta di analisi e validazione argomenti. Quasi ogni piattaforma ha un provato, testato e vero lexer che convalida input da un CLI. Utilizzare uno, l'altro o entrambi. Se i vostri segfaults programma o divide per zero a causa di qualcosa di un utente a condizione, che è appena in imbarazzo.

Si potrebbe non avere bisogno di qualcosa di così complesso come un lexer, forse si può solo tokenize la stringa se vi aspettate cose in un certo ordine con certe cose in certi luoghi.

effetti, ho fatto una segnalazione di bug una volta in cui un intero era atteso e qualcuno digitato f*** my life tra virgolette. Non ho scritto quel programma, ho avuto la sfortuna di ereditare esso.

No 'verbocity' manopola

Consenti agli utenti esperti di scoprire facilmente come ottenere modo più rumore dal vostro programma di maggior parte delle persone avrebbero tollerato, ma di default per la stampa solo roba seria e critica. Non posso dirvi quante volte ho dovuto accendere strace solo per rendersi conto che qualcosa segfaulted perché ha operato su un flusso di file NULL.

Si può anche avvolgere le asserzioni in modo che disattivandoli tramite NDEBUG o con altri mezzi si traduce ancora in qualcosa di stampato o registrato per l'utente a trovare.

A proposito di file di log, cercare di assicurarsi che qualsiasi cosa si posiziona in loro fa (almeno un po ') senso per qualcuno diverso da te. Se all'inizio di ogni voce è una data epoca UNIX, si sta andando a frustrazione composto in una persona che vuole davvero aiutare a riprodurre il bug.

No 'bug amico' in modalità debug

Un sacco di programmi offrono una sorta di interruttore 'debug' che offre chiacchiere in più riguardo a ciò che sta succedendo con il programma, ma pochi offrono i seguenti:

  • Un modo per inviare automaticamente un report tramite HTTP / HTTPS e ottenere una sorta di numero di riferimento del servizio
  • Un modo per scaricare informazioni utili per un file che potrebbero essere inviato come allegato a una richiesta di supporto

O, forse ti piace udenti leggono le seguenti al telefono:

Si dice condizione imprevista a zero eff oh quattro zero oh .... lemme OK letto che a te ...

file di configurazione eccessivamente complesso

non giustificano la necessità di analizzare una configurazione come una scusa per ottenere un buzz su un sacco di zucchero sintattico. Provare a utilizzare un formato che la gente realmente sa, anche se questo significa lavoro supplementare durante l'analisi. Io cerco di utilizzare il formato stile INI, quando possibile. Sareste sorpresi quello che si può tirare fuori con un semplice a chiave> dizionario valore.

Non ci sono file di configurazione

Non rendono le persone scrivere shell script o file batch solo per utilizzare il vostro programma, a meno che non era destinato ad essere uno strumento per entrambi compito. Dammi un mezzo per puntare a un file che contiene le mie solite opzioni e di fornire solo un annuncio di alcuniargomenti zionali.

'pavimento bagnato' segni

Se qualche caratteristica potrebbe ottenere l'utente in difficoltà (forse è lì per utenti avanzati), chiaramente contrassegnare come tale. Inoltre, se il grasso delle dita qualcuno ingresso o dimentica qualcosa, avete programma di stampa un collegamento molto amichevole alla documentazione on-line. Si potrebbe avere a che fare con qualcuno che sta usando il vostro programma tramite KVM e non può tagliare e incollare.

Quando possibile, (questo coincide con la convalida di ingresso) utilizzano il suddetto approccio di Google:

Ti è foo media --bar FILENME, è digitato solo foo --bar

Offrire un modo per uscire da istruzioni distruttive

L'obiettivo è quello di informare l'utente perché non ha funzionato e hanno loro provare un paio di volte, garantendo nel contempo che non fate niente potenzialmente distruttivo meno che non risulti che l'utente vuole davvero che tu lo faccia. Lasciare un interruttore che spegne 'fastidioso', per esempio -Y o /Y ma altrimenti permettere una via d'uscita per chi ha semplicemente 'le dita grasse'.

Probabilmente sto dimenticando alcune indicazioni. Mi occupo di questo frequente in quanto è molto, molto difficile per rendere l'interfaccia 'basso livello' per qualcosa di abbastanza intuitivo per la maggior parte le persone a evitare di commettere errori.

"Sei sicuro di voler eliminare questo file / disco? Sì / No". Cliccato sì e poi ricevuto una telefonata che "erroneamente" cliccato il pulsante rosso di eliminazione e ha bisogno che i dati indietro:)

Non mi sento come ottenere esempi rottura specifico / fix è importante quanto realizzare questo:

  • Gli utenti non leggono il manuale, o guardare i vostri tutorial. Essi imparano il software attraverso l'esplorazione.

Se per l'esplorazione che si rompono qualcosa, come programmatore è il vostro lavoro a uno avvertirli del pericolo o di impedire che accada, in primo luogo. Non ricordo dove ho visto ora, ma nella parte posteriore della mia mente ho sempre cercare di " fare facendo la cosa giusta facile " per l'utente del mio software .

Se ti ostini a esempi:

  • l'utente è stato in grado di inserire un nome minuscolo che ha rotto il codice di integrazione / fisso eseguendo ingresso convalida
  • l'utente è stato in grado di fare clic sul pulsante sbagliato dopo l'esecuzione di un'azione / fissato dalla mostrando solo i tasti corretti.
  • l'utente è stato in grado di fare X accidentalmente / fissato dalla avvertendoli che stanno per fare X.

vedere dove questo sta andando? :)

Ecco quello che ho sentito questa settimana. Un utente chiede una funzione "mi inviare una notifica quando si verifica un evento". Abbastanza semplice e lo sviluppatore va avanti e implementa. Certo, la prima domanda avrebbe dovuto essere "ciò che stanno cercando di indirizzo da questo notifica?". Non voglio entrare in quello. Pochi giorni dopo, l'utente smette dallo sviluppatore e chiede "Ho ricevuto questa notifica. Cosa dovrei fare con esso?".

Mi sono ricordato questo Dilbert comico e suggerito allo sviluppatore "scrivere un app per capire ciò che l'utente deve fare con tale notifica".

Come mpeterson detto, l'utente è molto competitivo nella loro area di competenza. Solo che non la pensa come uno sviluppatore di software o designer.

Non credo che gli utenti sono stupidi. Essi non vogliono utilizzare il o qualsiasi programma a tutti. Tutto ciò che vogliono è quello di ottenere le loro cose fatte. Aiuto loro e prevenire danni accada a loro lungo la strada.

Avere una buona interfaccia utente e di fornire una adeguata esperienza di apprendimento va un lungo cammino verso la prevenzione agli utenti di fare cose cattive.

  • Le buone interfacce utente dovrebbe essere attrito.

    Invece di gettare una finestra di dialogo (un'operazione costosa, e uno che gli utenti ignorano dopo un po ') per confermare la cancellazione, eseguire la cancellazione, e offrono un modo per annullare.

  • Le buone interfacce utente dovrebbe essere rilevabile.

    Anche se il nastro in Microsoft Office ottiene un sacco di critiche perché costringe vecchi utenti di Word per modificare le proprie abitudini, il nastro è un brillante esempio di come si può fare un rilevabile interfaccia (cioè facile scoprire).

  • Le buone interfacce utente, come il buon codice, dovrebbe essere auto-esplicativo.

    Nessuno legge il manuale. L'Ho solo manuale abbia mai avuto i miei utenti di leggere era una presentazione di PowerPoint contenente step-by-step procedure dettagliate del software. Ho visto questi fatti con strumenti video come Camtasia, ma PowerPoint sono meglio perché si può facilmente capovolgere all'indietro e in avanti attraverso i passi.

Utente non commettere errori. Gli errori si trovano con il programmatore che è riuscito a creare un'interfaccia utilizzabile.

Quindi, fare test di usabilità con ogni versione!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top