Montag, Dezember 18, 2006

User

In den letzten zwei Wochen hatte ich den GAU jedes Programmierers: Menschen haben meine Software benutzt. Endlose Stunden Support und Fehlerberichte von Fehlern, die mir noch nie passiert waren, folgten. Hier ein paar Handlungsanweisungen für die Zukunft:

  • Fokussiere auf Fehlermeldungen. Stelle sicher, dass die möglichen Fehler mit größtmöglicher Präzision erklärt werden. Erstelle eine Liste aller möglichen Fehler. Erst wenn Dein Programm eine sinnvolle Antwort auf die Fehlerzustände Deines Programms hat, bist Du fertig.
  • Verwende die einfachst möglichen Abstraktionen. Jede komplexere Abstraktion kommt mit einem "oder" oder einem "wenn, dann" einher: Wenn A erscheint, dann X. Wenn B erscheint, dann Y. Lässt sich B auch als A sehen? Dann ist ein Bit Information eingespart. Und jedes in der Oberfläche versteckte Bit muss gelernt und dokumentiert werden.
  • Vermeide freie Texteingabe von Parametern wie der Teufel das Weihwasser. Freie Texteingabe erfordert Dokumentation. Dokumentation wird nicht gelesen, nicht verstanden, und wenn, dann kostet dies Zeit und Geld. Verwende Auswahlen, um den Benutzer zu führen. Ein rein menügesteuertes System braucht im besten Fall keine Dokumentation. Ein System mit freien Eingaben immer.
  • Aber: menügesteuerte Systeme sind langwieriger zu bedienen, je häufiger man sie benutzt, und eingeschränkter, da man nur Dinge eingeben kann, die das System vorsieht. Baue eine Hintertür für die Power User ein, damit diese produktiv bleiben. Beispiele: Eingabe eines Dateinamens per Textzeile vs. Auswahl über ein Dialogfeld. Abspeichern von Dialoginhalten als Textdatei statt in Binärform.
  • Vermeide implizite Annahmen, die sich aus einer Reihenfolge ergeben, etwa "das Feld an der zweiten Stelle enthält die Morphologie-Information".
  • Bleibe konsistent. Benütze die gleichen Begriffe, die gleiche Syntax, die gleichen Icons an verschiedenen Orten. Zeige Fehlermeldungen immer am gleichen Ort an. Sonst muss man lernen, das gleiche auf verschiedene Arten auszudrücken. Und das kostet wiederum Zeit und Lernaufwand.
  • Erstelle das Programm so, dass der Zugriff auf feinster Granularitätsstufe möglich bleibt, und ermögliche dem Nutzer, die Kontrolle zu behalten, auch wenn er meist auf gröberer Ebene arbeitet. Die feinste Stufe eines Malprogramms ist der Pixel. Die feinste Stufe eines Tools für Konfigurationsverarbeitung ist eine einzelne Konfigurationsdatei, oder sogar noch feiner, ein Teil davon.