Wie verhindert man, dass Benutzer fehlerhafte Eingabesätze erstellen, wenn es keine praktische Möglichkeit gibt, die Eingabe zu überprüfen?
Die Szene
Ich ändere ein kleines ERP-Paket, das in Visual FoxPro geschrieben wurde. Ein Teil des Pakets befasst sich mit dem Drucken von LKW-Manifesten und Rechnungen, die den Fahrern auf ihren Lieferwegen zugesandt werden sollen. Wenn die Druckroutine nichts als Eingabe eingibt, versucht sie, alles zu drucken, was dazu führt, dass Unmengen von Druckerpapier auf einem Hochgeschwindigkeitsdrucker verschwendet werden.
Ich bin nicht in der Lage, eines der GUI-Schnittstellenelemente neu zu schreiben, und ich kann auch keine Frameworks, Toolkits oder anderen externen Code anpassen, die in dieser Situation verwendet werden sollen. Die Gründe hängen mit der Büropolitik zusammen. Bitte schlagen Sie nicht vor, dass ich das vorhandene ERP-Framework überschreiben kann, da dies für mich keine Option ist.
Die Angelegenheit
Die Benutzer befinden sich in einer zeitkritischen Hochdruckumgebung. Jeder Prozess wird in Minuten oder sogar Sekunden gemessen, was bedeutet, dass ich die Verarbeitungszeit so weit wie möglich minimieren muss. Aufgrund dieser Umgebung und möglicher Ablenkungen ignorieren Benutzer die Dialoge häufig , indem sie die [Eingabetaste] drücken, wodurch sich der Fokus schnell durch das Formular bewegt und schließlich auf der Aktionsschaltfläche für den Eingabedialog landet, was dazu führt, dass sie einen automatischen Ausdruck auslösen .
Die Eingabe besteht aus einem Datumsbereich, einem Routenbereich und einem Kundenauftragsbereich.
Die Eingabe für den Datumsbereich kann nicht automatisch auf "heutiges Datum" eingestellt werden, da häufiges Zurückdrucken erforderlich ist. Außerdem arbeiten die Endbenutzer um Mitternacht, dh ein Datumswechsel macht dies unpraktisch, ohne eine Routine zu manipulieren, die die Änderung automatisch erkennt usw.
Die Eingabe für Routen kann weder fest codiert noch aus bereits versendeten Routen abgeleitet werden, da erneutes Drucken erforderlich ist (siehe oben).
Die Eingabe für Kundenaufträge hat nur beim Drucken einzelner Aufträge oder bestimmter Bereiche eine Bedeutung.
Ehrlich gesagt gibt es also keine praktische Möglichkeit, Eingaben zu validieren .
Die Aktionsschaltfläche, die den Druck auslöst, kann nicht blockiert werden. Vorschläge, einen Blockierungsdialog vor den Benutzer zu stellen, werden ignoriert. Es steht mir nicht frei zu diskutieren, warum dies keine Option ist, außer dass das Konzept bereits an anderer Stelle auf der Website (aus einem anderen Blickwinkel) diskutiert wurde und abgelehnt wurde.
Das Blockieren von Ausdrucken, wenn alle Eingaben leer sind, wurde als Entwurfsentscheidung abgelehnt, da die Software dies als Funktion berücksichtigen muss .
Die Benutzer
Die Benutzer wurden wiederholt aufgefordert, dies nicht zu tun. Sie ignorieren diesen Rat häufig. Das Auslösen dieses unglücklichen Ereignisses wird von ihren Vorarbeitern / Managern nicht angesprochen, daher besteht kein Druck, das Verhalten zu beenden.
Die Organisation
Ich habe kein Mitspracherecht im Workflow, nur die Änderung vorhandener Softwarekomponenten, die von diesem Workflow betroffen sind.
Der Verkäufer
Der Anbieter bezieht das Paket als benutzerdefinierte Installation vom ursprünglichen Softwareanbieter. Der Anbieter verlangt, dass alle Codeänderungen zur Integration in seine Codebasis an ihn zurückgesendet werden. Wesentliche Änderungen an der Architektur führen aufgrund der umfangreichen Anpassungen zu höheren zukünftigen Kosten bei Versionsmigrationen. In einigen Fällen haben mir die Programmierer sogar gesagt, dass sie so große Änderungen völlig ignorieren und tun werden, was sie wollen.
Die Software
Ich habe kein Mitspracherecht bei der Auswahl oder Installation der Software, daher kommt ein Plattformwechsel nicht in Frage.
In Bezug auf die Umgebung der Software ist jede gedruckte Rechnung ein einzelner Anruf. Es gibt keine Batch-Druckfunktion, und aufgrund der Integration der Druckfunktion in das System (und einiger sprachlicher Besonderheiten) ist es nicht möglich, einen Batch-Wrapper um diese API zu erstellen. Um dies abzurunden, ruft dieser Teil des Programms ein anderes Programm auf, das den Rechnungsdruck ausführt, der wiederum die API zum Drucken eines Berichts aufruft, die eine einzelne Rechnung druckt. Schreckliches Design, ich weiß.
Eingabeformulare sind eine seltsame Kombination eines Formularkopfs, der keine Eingabefelder enthält, aber andere GUI-Elemente enthalten kann. Eingabefelder werden zur Laufzeit definiert.
Das Ziel
Die Software verhindert, dass die Benutzer fälschlicherweise alle Unterlagen drucken.
Wie würden Sie dieses Problem lösen?
Antworten:
Dies ist einfach, wenn sie alles leer lassen, fordern Sie auf, dass dies alles druckt. Die STANDARD-Auswahl in dieser Eingabeaufforderung MUSS jedoch abgebrochen werden.
Wenn sie Werte eingeben, drucken Sie alles, was sie gewünscht haben.
Auf diese Weise blitzen sie nicht versehentlich durch das Formular und drucken alles. Sie werden durchflammen und nichts drucken. Sie müssten pausieren und drucken. Ändern Sie die Auswahl an der Eingabeaufforderung in OK, von Abbrechen, um alles zu drucken.
quelle
Es hört sich für mich so an, als müssten Sie etwas reparieren, aber jedes Mal, wenn Sie eine Lösung vorschlagen (und Ihre Liste enthält viele gute Ideen), wird sie abgeschossen.
Dies ist der Punkt, an dem Sie zurückschieben müssen. Sie brauchen keine vage Vorstellung davon, dass "das falsch ist; beheben Sie es". Was Sie brauchen, ist eine Spezifikation. Fragen Sie die Leute , die es fest genau wollen , was sie tun wollen getan, da bisher alles , was Sie haben, was sie nicht wollen. So viel ist einfach: Tu einfach nichts, und dann wirst du nichts tun, was sie nicht wollen. Sagen Sie ihnen, wenn sie Änderungen vornehmen möchten, müssen sie positive, konkrete Regeln aufstellen, und Sie werden sie umsetzen.
quelle
Ich werde versuchen, eine Antwort auf eine allgemeinere Frage zu geben: Wie kann vermieden werden, dass ein Benutzer einen Fehler macht, der zu einer Katastrophe führt oder etwas, das nicht abgebrochen oder rückgängig gemacht werden kann (z. B. Verschwendung von Papier durch Drucken mehrerer Seiten, die der Benutzer nicht erwartet hatte? gedruckt).
Wie in der ursprünglichen Frage gesagt:
Das bedeutet, dass:
Das Softwareprodukt muss sein Bestes geben, um die Produktivität der Mitarbeiter zu steigern. Wenn jede Sekunde zählt, sind Benutzererfahrung und Produktivität noch wichtiger als bei allgemeinen Produkten, bei denen ein Verlust von einigen Sekunden bei einigen Funktionen, die die Person nicht einmal zu oft verwendet, akzeptabel ist.
Die Benutzer sind zu beschäftigt, um auf das Softwareprodukt zu achten. Wenn ich in einer ruhigen Umgebung eine Funktion von Microsoft Word verwende, die ich vor einem Jahr das letzte Mal verwendet habe, kann ich es mir leisten, ein oder zwei Minuten zu lesen, wenn Microsoft Word mir eine Frage stellt und erklärt, welche Konsequenzen meine Wahl hätte die Frage, und vielleicht sogar die Dokumentation lesen. In Ihrem Fall können Sie sich das nicht leisten. Ihre Benutzer haben keine Zeit zum Lesen.
Meldungsfelder: nein, nein und ... nein!
Wie bereits in meiner anderen Antwort erläutert , sind Nachrichtenfelder in den meisten Fällen aus zwei Gründen böse (siehe About Face 3 von Alan Cooper für weitere Details):
Der Dialog, der "Wolf!" Das Prinzip veranlasst den Benutzer, einen Dialog wiederholt zu schließen, ohne darauf zu achten, wenn die Anwendung den gleichen Dialog zu oft anzeigt.
Der Dialog stört den Workflow: Der Benutzer kann sich nicht auf die Anwendung konzentrieren, da der Dialog diesen Fokus aufhebt und die Interaktion mit der Anwendung unterbrochen wird, bis der Dialog geschlossen wird¹.
Dies bedeutet, dass Dialogfelder in Ihrem Fall aus UX-Sicht ein absolutes Übel sind : Sie werden verworfen und verringern die Produktivität in einer Umgebung, in der jede Sekunde zählt.
Andere Mittel
Nach der Frage:
"Die Eingabe besteht aus einem Datumsbereich, einem Routenbereich und einem Kundenauftragsbereich."
Es gibt keine falschen Werte (z. B. kann der Benutzer im ersten Feld ein vorheriges Datum, ein zukünftiges Datum oder heute eingeben), sodass eine Validierung nicht möglich ist.
"Wenn die Druckroutine nichts als Eingabe eingibt, versucht sie, alles zu drucken, was dazu führt, dass Unmengen von Druckerpapier auf einem Hochgeschwindigkeitsdrucker verschwendet werden."
Es ist durchaus möglich, nach dem Drucken mit den verwendeten Standarddaten zu fragen.
Allgemeiner bedeutet dies:
Sie haben einen Standardwert, der tatsächlich gültig sein kann.
Sie möchten nicht, dass die Benutzer auf die Schaltfläche "Drucken" klicken, wobei die Standardwerte versehentlich beibehalten werden, während sie diese ändern möchten.
Hier sind einige Techniken, die Sie ausprobieren können:
1. Die Magie rückgängig machen
Ja, die Benutzer befinden sich in einer zeitkritischen Umgebung. Ja, sobald der Drucker mit dem Drucken beginnt, kann er nicht mehr gestoppt werden. Aber Sie können noch etwas tun.
Selbst in einer zeitkritischen Umgebung besteht die Möglichkeit, dass das Drucken im Moment und das Drucken in fünf Sekunden nichts ändert.
Wenn der Benutzer auf "Drucken" klickt, wird eine kleine Schaltfläche "Rückgängig" angezeigt , genau wie bei GMail, wenn Sie versehentlich alle Ihre E-Mails entfernen möchten. Warten Sie fünf Sekunden ². Blenden Sie das "Rückgängig" aus und drucken Sie erst danach.
Jetzt hat der Benutzer die Möglichkeit, den Fehler zu bemerken und abzubrechen, bevor der Schaden tatsächlich angerichtet wird, während das Material nur mit einer kleinen Verzögerung von fünf Sekunden gedruckt wird.
2. Der diskrete Hintergrund "Standardwert"
Sind Standardwerte verdächtig? ³ Bei einem Wert ist dies selten verdächtig. Bei drei besteht die Möglichkeit, dass die Fälle, in denen der Benutzer standardmäßig alle drei Werte beibehalten muss, recht selten sind.
In diesem Fall können Sie:
Markieren Sie den Wert, wenn er seinen Standardwert hat. Nicht in rot: rot steht für ungültige Werte. Stellen Sie es auf Gelb-Orange und wieder auf Weiß ein, wenn der Benutzer den Standardwert ändert.
Oder deaktivieren Sie die Schaltfläche "Drucken", bis ein Wert geändert wird. Fügen Sie in der Nähe ein Kontrollkästchen hinzu, mit dem der Benutzer bestätigen kann, dass er beabsichtigt, mit Standardwerten zu drucken.
3. Erweitern Sie die Benutzeroberfläche Ihrer Steuerelemente
Wir sind Freitag, 6. th Januar 2012 heute. Was ist der Termin am nächsten Donnerstag? Schnell, schnell, Sie stehen unter Druck, Sie haben nur eine Sekunde Zeit für Ihre Antwort. Außerdem bist du müde und es gibt überall viel Lärm. Nicht leicht zu beantworten, nicht wahr?
Menschen können Daten nicht einfach manipulieren, wenn sie als geschrieben sind
1/8/1012
.Saturday, 7th of January (tomorrow)
ist ein bisschen einfacher. Eine grafische Ansicht, die Samstag und Sonntag hervorhebt, zeigt heute und der Versatz ist noch besser.Nichts ist so hässlich wie "Location: NYC". Diese drei Buchstaben sind bedeutungslos, wenn Sie müde sind und in einer stressigen Umgebung arbeiten. Fehler sind einfach. Stattdessen ist eine grafische Karte der Vereinigten Staaten mit einem roten Punkt für New York City viel ansprechender, und der Benutzer hat viel mehr Chancen zu bemerken, dass der rote Punkt an einer falschen Stelle zu erscheinen scheint, während er San Francisco auswählen wollte .
Würde es Ihnen gefallen, wenn Ihr GPS Ihnen sagt, dass Sie sich von 38.90403, -77.04878 auf 38.90568, -77.04665 bewegen müssen, dann rechts abbiegen und auf 38.90565, -77.04345, dann um 90 ° nach links und auf 38.90660, -77.04345? Könnten Sie sich auf Ihre Arbeit (die Straße) konzentrieren? Das Anzeigen von 08.01.2012 und NYC für vielbeschäftigte Benutzer ist so benutzerfreundlich wie ein GPS, das Rohkoordinaten anstelle einer 3D-Ansicht einer Karte voller Farben ausgibt.
Durch umfassendere Steuerelemente und eine umfassendere Visualisierung von Daten können Sie die Fehlerquote Ihrer Benutzer in einer stressigen Umgebung verringern.
¹ Dies gilt übrigens auch für andere Varianten von Dialogfeldern. Sie haben zuvor eine Frage zu den Dialogfeldern gestellt, in denen die Schaltflächen zufällig sind und die das Löschen erschweren. Leider hilft ein solcher Ansatz nicht, sondern schadet nur: Die Benutzer werden das, was im Dialog gesagt wird, immer noch ablehnen, aber mehr Zeit damit verschwenden, ihn zu schließen, um wieder an die Arbeit zu gehen.
² Ich sage als Beispiel fünf Sekunden. Sie müssen die Aktivität der Benutzer einige Monate lang überwachen, um zu sehen, wie schnell sie auf "Rückgängig" klicken. Die Chancen stehen gut, dass es unter einer Sekunde liegt. Wenn Sie sehen, dass die Verzögerung zwischen 0,6 und 1,8 s liegt. Mit einem Durchschnitt von 1,1 s können Sie das "Rückgängig" zwei Sekunden lang anzeigen und dann drucken.
³ Bitte, bitte, bitte, sag nein! Wenn dies der Fall ist, bedeutet dies, dass mit Ihren Standardwerten etwas nicht stimmt. Wenn der Standardwert für das Datum beispielsweise heute ist, während die Benutzer ihn in 75% der Fälle auf morgen, in 10% auf gestern und in 10% auf übermorgen einstellen müssen, sollten Sie lieber den Standardwert festlegen Wert bis morgen.
quelle
Können Sie vor dem Drucken bestimmen, wie viele Seiten gedruckt werden sollen, oder auf andere Weise die Größe der Ausgabe messen? Wenn dies der Fall ist, legen Sie eine maximale Größe für den normalen Gebrauch fest. Wenn diese größer ist, verwenden Sie ein Bestätigungsdialogfeld, in dem die Ausgabegröße angegeben ist. Damit sie nicht ohne Lesen gelöscht werden kann, muss der Benutzer die Ausgabegröße zur Bestätigung zurückgeben.
quelle
Trennen Sie die Anwendungsfälle klar voneinander. Es gibt einen Fall "Jetzt etwas drucken", der zu endlosen Ausgaben führen kann. Korrigieren Sie dies, um alle richtigen Standardeinstellungen bereitzustellen.
Es gibt einen „etwas Voriges nachdrucken“ Fall , dass eine speziellen (Nicht-Standard) Anforderung ist , wo Eingänge können sorgfältig geprüft werden.
Falsch.
Die Eingabe kann heute automatisch eingestellt werden, ohne dass sich dies auf häufige Rückdruckanforderungen auswirkt.
Welche möglichen Auswirkungen hätte eine automatische Einstellung auf "heutiges Datum" auf Rückdruckanfragen? Bitte zählen Sie sie in der Frage auf.
Falsch.
Nachdrucke und Rückdrucke sind ein Sonderfall. Sie haben niemals Standardfelder und sind die Ausnahme, nicht die Regel.
quelle
Gestatten Sie mir, das Problem noch einmal zu wiederholen.
Derzeitiger Zustand: Durch blindes Drücken werden EnterUnmengen von Papier gedruckt.
Gewünschter Zustand: Durch blindes Drücken werden Enterkeine Unmengen von Papier gedruckt.
Lösung: so die Software ändern , dass blind drücken Entertut etwas, irgendetwas , außer Unmengen von Papier verursacht gedruckt werden.
Das lässt Sie so ziemlich das Problem, was es stattdessen tun sollte. Persönlich würde ich die Betreiber fragen, was sie wollen. Meine Vermutung ist so etwas wie das Drucken der dringendsten Rechnungen, die noch nicht gedruckt wurden. Lassen Sie die Möglichkeit, alle zu drucken, aber erfordern Sie eine bewusste Entscheidung, um dies zu tun.
quelle
Sie haben eine Situation, in der der aktuelle Prozessstandard Verschwendung verursacht und Zeit für Ihre Benutzer kostet.
Deaktivieren Sie die Möglichkeit, nur die Eingabetaste zu drücken, indem Sie sich auf die Schaltfläche "Parameter zurücksetzen" konzentrieren (bei Bedarf eine erstellen). Wenn Sie also die Eingabetaste drücken, bleibt diese auf diesem Bildschirm, führt jedoch nichts aus. Ich würde eine Art Hot-Buttons für die gängigsten Auswahlen erstellen, um das Formular automatisch mit diesen Parametern auszufüllen und den Benutzern zu helfen. Dies sollte Ihr Problem jedoch auch ohne die Hot Buttons lösen.
quelle