Welche Fehler machen Ihre Benutzer und wie können Sie Ihre Anwendung aktualisieren, um sie zu handhaben? [geschlossen]


12

In der Tat geht es bei dieser Frage um Vorsichtsmaßnahmen zur Verbesserung der Benutzerfreundlichkeit und zur Reduzierung vermeidbarer Supportanrufe.


2
Betrachten Sie diesen Titel: "Welche Fehler machen Ihre Benutzer und wie können Sie Ihre Anwendung aktualisieren, um mit ihnen umzugehen?"
Peter Boughton

Antworten:


25

Das Fehlen einer ordnungsgemäßen Eingabevalidierung ist eines der Dinge, die dazu führen, dass Benutzer "schlechte" Dinge mit Ihrer Anwendung tun, wenn diese wirklich vom Programmierer behandelt werden sollten.

Ich habe ältere Apps gesehen, für die Benutzer geschult wurden:

  • Geben Sie keine Apostrophe in Namen ein
  • Geben Sie kein anderes Symbol als ein a-z0-9,
  • Stellen Sie sicher, dass vor oder nach dem eingegebenen Text keine Leerzeichen stehen
  • Vergewissern Sie sich, dass eine korrekt formatierte E-Mail-Adresse in das emailFeld eingegeben wurde. Andernfalls verwenden nachfolgende E-Mail- Nachrichten an diesen Benutzer den Inhalt des Feldes und schlagen fehl
  • Stellen Sie sicher, dass " http://" vor den Webadressen steht

etc etc

Alle oben genannten Probleme sollten von einem Anwendungsentwickler behoben werden. Wenn Ihre Eingabevalidierung im Wesentlichen lautet: "Vergewissern Sie sich, dass der Benutzer weiß, in welchem ​​Format sich dieses Feld befinden soll, und vertrauen Sie auf die Richtigkeit der eingegebenen Daten." Abgesehen von den offensichtlichen Sicherheitsrisiken machen Benutzer Fehler. Als Programmierer produzieren wir oft unsere besten Produkte, indem wir uns nach hinten beugen, um sicherzustellen, dass der Benutzer nichts falsch machen kann, egal wie sehr er es versucht!


Das wird so oft übersehen ... Ich kann nicht glauben, dass wir heute noch auf diese Probleme
stoßen

2
+1 weil ich es gesehen habe. ABER: A „richtig formatierte E - Mail - Adresse“ ist bekanntlich schwer zu validieren fightingforalostcause.net/misc/2006/compare-email-regex.php stellen Sie sicher wissen , was du tust. Wenn Sie sich nur mit der Teilmenge der E-Mails befassen, die Ihr Unternehmen intern verwendet, sollte dies in Ordnung sein, da sonst die Komplexität höher ist als von den meisten erwartet. Gleiche Geschichte für den http://Validierungspunkt. Als Beispiel ASDFtut dies in einer naiven Art und Weise, und das Ergebnis ist , dass Sie nicht Host - Pakete auf Domänen , die Verwendung https://.
Inaimathi

Das funktioniert nicht ... es akzeptiert keine E - Mails mit Knall Pfade (ja ich weiß , wer sich interessiert, aber nach wie vor, E - Mails an die RFC - Validierung ist hart.)
Spudd86

7

Ich habe einmal einen Kundendienstanruf erhalten, weil meine App einfach verschwunden ist. Es stellte sich heraus, dass sie eine andere App darauf öffneten.

... Ich habe beschlossen, nicht dafür zu sorgen, dass dies nicht noch einmal passiert, da es der Computer-Analphabetismus des Benutzers war, der das Problem verursachte, nicht die App. Alles, was ich hätte tun können, um es zu beheben, hätte zu einer schlechten Benutzererfahrung für andere geführt.


1
Bitte leiten Sie diesen Beitrag an alle Entwickler weiter, die eine forcierte "Stay-on-Top" -Funktion in ihrer App implementieren. Selbst wenn der CEO danach fragt, sollten wir das Recht haben, "nein" zu sagen.

7

Fast jedes Programm, das ich schreibe, wird ausschließlich über die Befehlszeile aufgerufen. Ich habe auch einige schickere Dinge geschrieben, die als CLI-Benutzeroberflächen begannen und sich schnell zu einer Art Hülle entwickelten.

Ich kann also nur für das sprechen, was ich weiß. Im Folgenden sind einige häufige Probleme mit Befehlszeilenprogrammen aufgeführt:

Viel zu viele Möglichkeiten

Wenn Sie keinen Compiler oder Zeileneditor schreiben, versuchen Sie, die Optionen auf einen Bildschirm in einem 80 x 25-Bildpuffer zu beschränken, wenn --helpoder übergeben /?wird. Es ist vollkommen in Ordnung, mehr Optionen zu haben, aber sie in Unterkategorien zu unterteilen. Zum Beispiel

foo --help

foo --help option_name

Keine langen Möglichkeiten

Es ist viel einfacher sich zu erinnern foo --attach_to [argument] --volatile --verboseals sich zu erinnern foo -a [arg] -v +V. Dies ist nicht immer möglich, aber in den meisten Fällen auch.

Keine Eingabevalidierung

Fast jede Plattform verfügt über mehrere Bibliotheken, die sich beim Parsen und Validieren von Argumenten bewährt haben. Fast jede Plattform verfügt über einen bewährten und echten Lexer, der Eingaben von einer CLI überprüft. Verwenden Sie eine, die andere oder beide. Wenn Ihr Programm aufgrund eines von einem Benutzer angegebenen Wertes einen Fehler aufweist oder durch Null dividiert, ist dies nur peinlich.

Sie brauchen vielleicht nicht so vielschichtige Dinge wie ein Lexer. Vielleicht können Sie die Zeichenfolge einfach mit einem Token versehen, wenn Sie Dinge in einer bestimmten Reihenfolge mit bestimmten Dingen an bestimmten Stellen erwarten.

Ich habe tatsächlich einmal einen Fehlerbericht erhalten, in dem eine Ganzzahl erwartet und jemand f*** my lifeAnführungszeichen eingegeben hat . Ich habe dieses Programm nicht geschrieben, ich hatte das Pech, es geerbt zu haben.

Kein 'Verbocity'-Knopf

Ermöglichen Sie erfahrenen Benutzern, auf einfache Weise herauszufinden, wie Sie mehr Rauschen aus Ihrem Programm herausholen können, als die meisten Menschen tolerieren würden. Standardmäßig werden jedoch nur seriöse und kritische Dokumente gedruckt. Ich kann Ihnen nicht sagen, wie oft ich stracegezündet haben musste, um zu erkennen, dass ein Fehler aufgetreten ist, weil er mit einem NULL-Dateistream gearbeitet hat.

Sie können Zusicherungen auch so umbrechen, dass das Deaktivieren über NDEBUG oder auf andere Weise immer noch dazu führt, dass der Benutzer etwas findet, das gedruckt oder protokolliert wird.

Wenn Sie von Protokolldateien sprechen, versuchen Sie sicherzustellen, dass alles, was Sie in sie einfügen, für andere als Sie (zumindest ein wenig) Sinn ergibt. Wenn der Beginn eines jeden Eintrags ein Datum der UNIX-Epoche ist, wird dies zu Frustration bei jemandem führen, der Ihnen wirklich helfen möchte, den Fehler zu reproduzieren.

Kein Bug-Buddy im Debug-Modus

Viele Programme bieten eine Art "Debug" -Schalter, der zusätzliches Geschwätz darüber bietet, was mit dem Programm passiert, aber nur sehr wenige bieten Folgendes:

  • Eine Möglichkeit, automatisch einen Bericht über HTTP / HTTPS zu senden und eine Art Servicereferenznummer zu erhalten
  • Eine Art und Weise nützliche Informationen in eine Datei auszugeben, das könnte als Anhang an eine Support - Anfrage gesendet werden

Oder vielleicht hören Sie am Telefon gern, wie Leute Folgendes lesen:

Es heißt unerwarteter Zustand bei null eff oh vier null oh .... OK, lass dir das vorlesen ...

Zu komplexe Konfigurationsdateien

Begründen Sie nicht die Notwendigkeit, eine Konfiguration als Ausrede zu analysieren, um eine Menge syntaktischen Zuckers in den Bann zu ziehen. Versuchen Sie, ein Format zu verwenden, das die Leute tatsächlich kennen, auch wenn es zusätzliche Arbeit beim Parsen bedeutet. Ich versuche, wenn immer möglich, das INI-Format zu verwenden. Sie werden erstaunt sein, was Sie mit einem einfachen Schlüssel-> Wert-Wörterbuch erreichen können.

Keine Konfigurationsdateien

Lassen Sie niemanden Shell-Skripte oder Batch-Dateien schreiben, nur um Ihr Programm zu verwenden, es sei denn, es sollte ein Werkzeug für eine der beiden Aufgaben sein. Geben Sie mir die Möglichkeit, auf eine Datei zu verweisen, die meine üblichen Optionen enthält, und geben Sie nur einige zusätzliche Argumente an.

Keine "nassen Boden" Zeichen

Wenn eine Funktion den Benutzer in Schwierigkeiten bringen könnte (möglicherweise für fortgeschrittene Benutzer), kennzeichnen Sie sie eindeutig als solche. Zusätzlich, wenn jemand dicke Finger eingibt oder etwas vergisst, lassen Sie ein Programm einen sehr freundlichen Link zur Online-Dokumentation drucken. Möglicherweise haben Sie es mit jemandem zu tun, der Ihr Programm über KVM verwendet und nicht ausschneiden und einfügen kann.

Verwenden Sie nach Möglichkeit (dies fällt mit der Eingabevalidierung zusammen) den Google-Ansatz:

Meinten Sie foo --bar FILENME, Sie haben nur foo --bar eingegeben

Bieten Sie einen Ausweg aus destruktiven Anweisungen

Das Ziel ist es, dem Benutzer mitzuteilen, warum es nicht funktioniert hat, und ihn noch einige Male zu veranlassen, während sichergestellt wird, dass Sie nichts potenziell zerstörerisches tun, es sei denn, der Benutzer möchte, dass Sie dies wirklich tun. Lassen Sie einen Schalter zu, der zum Beispiel "Nörgeln" ausschaltet -Yoder auf /Yandere Weise einen Ausweg für jemanden zulässt, der einfach "fette Finger" hat.

Ich vergesse wahrscheinlich ein paar Hinweise. Ich beschäftige mich häufig damit, da es sehr, sehr schwierig ist, die "Low Level" -Schnittstelle für etwas so intuitiv zu gestalten, dass die meisten Menschen Fehler vermeiden können.


3

"Möchten Sie diese Datei / diesen Datensatz wirklich löschen? Ja / Nein". Ja geklickt und dann einen Anruf bekommen, dass es "aus Versehen" auf den roten Löschen-Button geklickt hat und es diese Daten zurück braucht :)


7
Warum die "Anführungszeichen". Schlagen Sie vor, dass sie absichtlich auf Ja geklickt haben, damit sie Sie anrufen können?
Peter Boughton

1
Leicht zu lösen durch "soft deletes", die rückgängig gemacht werden können.
Robert Harvey

1
Ja, sie können rückgängig gemacht werden, aber warum sollten sie überhaupt gelöscht werden? Deshalb habe ich diese Warnung dort platziert und sie gebeten, zweimal zu bestätigen, dass sie es löschen möchten :)
Quamis

2
@Quamis: Dialogfelder sind für viele Benutzer so ärgerlich geworden, dass sie einfach auf OK klicken. Ja, wie auch immer, nur um das Dialogfeld zu durchlaufen. Aus diesem Grund verwenden viele neue Systeme ein vorläufiges Löschen ohne Bestätigung und bieten dem Benutzer eine Möglichkeit zum Rückgängigmachen. Die meisten Mail-Systeme funktionieren zum Beispiel jetzt so.
Robert Harvey

1
@Robert Harvey - Ich verstehe, und ja, das ist der spezielle Grund, warum ein hartes Löschen implementiert werden musste. Dieses spezielle Beispiel könnte durch Nachverfolgen von Aufbewahrungsrichtlinien gelöst werden. Es gibt jedoch möglicherweise Fälle, in denen Benutzer mit "Entf" rechnen, dass die Konsequenz dieses Vorgangs eine echte Löschung ist. Ich bevorzuge die Soft-Delete-Route selbst, aber mein Punkt war, dass es manchmal keine Option ist.
Inaimathi

3

Ich bin nicht der Meinung, dass es so wichtig ist, konkrete Beispiele für Fehlerbehebungen zu erhalten, wie dies zu realisieren:

  • Benutzer lesen Ihr Handbuch nicht und sehen sich Ihre Tutorials nicht an. Sie lernen Ihre Software durch Erkundung.

Wenn sie durch diese Erkundung etwas kaputt machen, ist es Ihre Aufgabe als Programmierer, sie entweder vor der Gefahr zu warnen oder sie von vornherein davon abzuhalten. Ich kann mich nicht erinnern, wo ich es jetzt gesehen habe, aber im Hinterkopf versuche ich immer, es dem Benutzer meiner Software " leicht zu machen, das Richtige zu tun ".

Wenn Sie auf Beispielen bestehen:

  • Der Benutzer konnte einen Namen in Kleinbuchstaben eingeben, der den Integrationscode verletzt / durch Ausführen der Eingabevalidierung behoben hat
  • Der Benutzer konnte nach dem Ausführen einer Aktion / Korrektur auf die falsche Schaltfläche klicken, indem nur die richtigen Schaltflächen angezeigt wurden.
  • Der Benutzer konnte X versehentlich ausführen / korrigieren, indem er ihn gewarnt hat, dass er X ausführen wird.

Sehen Sie, wohin das führt? :)


2
Warnungen sollten nur für die zerstörerischsten Operationen reserviert werden, und Sie sollten vermeiden, dass eine dieser Aktionen durchgeführt wird. Rückgängig machen ist VIEL VIEL besser. Die Benutzer wurden jetzt darin geschult, auf "OK" zu klicken, ohne die Box zu lesen sie für jede Operation, die der Benutzer möglicherweise regelmäßig durchführt, um diesen Effekt zu vermeiden.
Spudd86

3

Hier ist eine, die ich diese Woche gehört habe. Ein Benutzer fragt nach einer Funktion "Senden Sie mir eine Benachrichtigung, wenn ein Ereignis eintritt". Einfach genug und der Entwickler setzt es um. Klar, die erste Frage hätte lauten sollen: "Was wollen Sie mit dieser Benachrichtigung ansprechen?". Ich werde nicht darauf eingehen. Wenige Tage später hält der Benutzer beim Entwickler an und fragt "Ich habe diese Benachrichtigung erhalten. Was soll ich damit machen?".

Ich erinnerte mich an diesen Dilbert-Comic und schlug dem Entwickler vor, "eine App zu schreiben, um herauszufinden, was der Benutzer mit dieser Benachrichtigung tun sollte".

Wie mpeterson sagte, ist der Benutzer in seinem Fachgebiet sehr wettbewerbsfähig. Sie denken einfach nicht wie ein Softwareentwickler oder Designer.


2

Ich denke nicht, dass Benutzer dumm sind. Sie wollen Ihr oder irgendein Programm überhaupt nicht benutzen. Alles, was sie wollen, ist, ihre Sachen zu erledigen. Helfen Sie ihnen und verhindern Sie, dass ihnen auf dem Weg etwas passiert.


1
Du verstehst die Frage nicht. Sie wiederholen, was ich mit anderen Worten geschrieben habe. Dies ist keine Antwort auf die Frage. Was können wir tun, um Schaden zu verhindern?
Maniero

1
Ich verstehe die Frage gut, danke. Die Frage enthält etwas, das nicht wahr ist: "Der Benutzer ist dumm".
LennyProgrammers

1
Nein, das hat es nicht. Es ist dein Missverständnis. Ihr Angebot existiert nicht!
Maniero

1
Ok, die Leute machen keine dummen Sachen, die Welt ist perfekt :-) Dies ist meine Schlussfolgerung über diese Meinungen.
Maniero

1
Keine harten Gefühle, okay? ;)
LennyProgrammers

1

Eine gute Benutzeroberfläche und eine angemessene Lernerfahrung tragen wesentlich dazu bei, dass Benutzer keine schlechten Dinge tun können.

  • Gute Benutzeroberflächen sollten reibungslos sein.

    Anstatt ein Dialogfeld aufzurufen (ein teurer Vorgang, den Benutzer nach einer Weile ignorieren), um einen Löschvorgang zu bestätigen, führen Sie den Löschvorgang aus und bieten Sie eine Möglichkeit zum Rückgängigmachen an.

  • Gute Benutzeroberflächen sollten erkennbar sein.

    Obwohl das Menüband in Microsoft Office eine Menge Flak bekommt, weil es alte Benutzer von Word dazu zwingt, ihre Methoden zu ändern, ist das Menüband ein hervorragendes Beispiel dafür, wie Sie eine Benutzeroberfläche erkennbar (dh einfach zu erkennen) machen können.

  • Gute Benutzeroberflächen sollten wie guter Code selbsterklärend sein.

    Niemand liest das Handbuch. Das einzige Handbuch, das ich jemals von meinen Benutzern gelesen habe, war eine PowerPoint-Präsentation mit schrittweisen Anleitungen der Software. Ich habe gesehen, dass dies mit Videotools wie Camtasia gemacht wurde, aber PowerPoints sind besser, weil Sie einfach zwischen den Schritten hin- und herschalten können.


-1

Benutzer machen keine Fehler. Die Fehler liegen beim Programmierer, der keine brauchbare Schnittstelle erstellt hat.

Machen Sie also mit jeder Veröffentlichung Usability-Tests!


2
Damals, als ich bei meinen Eltern lebte, fragte mich mein Vater, warum er bei jedem Abrufen seiner E-Mails vom Internet getrennt wurde (ja, dies war in der Steinzeit, als wir uns einwählen mussten - ich bin nur so alt ). Ich habe ihn gebeten, es mir zu zeigen - raten Sie mal, was ich gesehen habe? Beim Aufrufen des Outlook Express-Dialogfelds "Senden und Empfangen" wurde die Option zum Trennen der Verbindung nach dem Senden und Empfangen aktiviert. Ich denke, dass alles auf dem Benutzer ist ...
JohnL

3
Nicht wirklich John. Wenn die Outlook-Programmierer dies durchdacht hätten, hätten sie die CheckBox nicht dort platziert oder ihr ein aussagekräftigeres Etikett gegeben. Ihr Vater ist kein Idiot: Diese Funktion wurde nicht überlegt oder durchlaufen Usability-Tests. Software ist nicht dazu da, dass wir uns dumm fühlen! :)
Arcturus

1
-1: Benutzer tun machen Fehler, auch wenn sie mit Dingen wie eine bessere Kennzeichnung vermieden werden könnten. Der Punkt ist, diese Frage fragt nach bestimmten Problemen, die bestimmte Lösungen haben. Nur "test it" zu sagen, ist einfach eine schlechte Antwort.
Maxpm
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.