Hintergrundprozesse
In der Arbeit benutze ich Jetbrains IntelliJ, um zu entwickeln. Diese Entwicklungsumgebung bietet die nützliche Funktion, eindeutige Imports automatisch hinzuzufügen. Der Editor sucht ständig im Hintergrund nach unbekannten Symbolen und fügt, wenn möglich, die Imports automatisch hinzu. Ist das Symbol nicht eindeutig, weil es in verschiedenen Paketen vorkommt, dann bietet mir der Editor an, die richtige Version auszuwählen. Dabei ist IntelliJ zurückhaltend, die Frage verschwindet einfach, wenn ich normal weitertippe. Die Welt könnte perfekt sein.
Drängler
Mir das Suchen nach dem richtigen Import abzunehmen, ist ein feiner Zug. Mich zu fragen, wenn nicht klar ist, welcher Import der richtige ist, ist auch in Ordnung, vor allem, weil die Frage wirklich so unaufdringlich ist, wie nur möglich: Es erscheint ein Popup unter dem Symbol, auf das ich mit Alt-Return reagieren kann. Drücke ich eine andere Taste, dann verschwindet das Popup wieder, um später neu zu erscheinen. Hartnäckig, aber nicht störend. Was also stört mich an der Funktion?
Kurz gesagt: Sie drängelt sich gelegentlich in den Vordergrund. Nicht in ihrem normalen Verhalten, das ist, wie ein guter Kellner, zurückhaltend aber immer erreichbar. Nein, gelegentlich braucht die Funktion zu viel Rechenzeit und in dieser Zeit kann ich nicht arbeiten. Die Unterbrechungen sind nicht lange, zwischen einer und vielleicht zehn Sekunden, trotzdem nerven sie, wenn man gerade in dem Moment für eine Sekunde auf eine andere Datei umschalten wollte. Zehn Sekunden: nicht viel; Zehnmal so lange für eine Aufgabe zu brauchen: sehr viel.
Es kommt noch schlimmer: Drücke ich während einer dieser Pausen – und die Symbolsuche ist beileibe nicht die einzige Quelle für solche Pausen – eine Taste, dann wird dieser Tastendruck gelegentlich verschluckt. Als besonders schlimm empfinde ich das, wenn ich just in dem Moment eine Tastenkombination drücken wollte. Control-N zum Beispiel öffnet normalerweise eine kleine Eingabebox, in der ich nach einem Klassennamen suchen kann. Natürlich warte ich nicht, bis die Eingabebox endlich am Bildschirm zu sehen ist, ich tippe sofort drauf los: „Control-N, SimDaFo“ zum Beispiel, wenn ich kurz einen Blick auf SimpleDateFormat
werfen will. Erst jetzt warte ich auf den Rechner, bis er mir eine Liste mit Klassen anzeigen, die zu „SimDaFo“ passen. Hat der Rechner das Control-N verschluckt, dann landet „SimDaFo“ nicht in der Eingabebox sondern im Code (gerne auch als „NSimDaFo“). Mit etwas Glück an einer Stelle, an der es der Compiler merkt. Mit weniger Glück an einer Stelle, an der ich es selbst bemerken muss.
Störer
Zu IntelliJs Ehrrettung muss ich sagen, dass das Problem mit den verschluckten Zeichen vielleicht nicht IntelliJs Schuld ist. Über das Problem ärgere ich mich auch in anderen Windows-Programmen, allerdings nicht so oft. Verhalten wie ich es erwarte, sieht jedenfalls anders aus:
- Nur Prozesse, die der Anwender aktiv gestartet hat, dürfen den Anwender in dessen Arbeit unterbrechen.
- Wenn eine Unterbrechung nicht zu vermeiden ist, dann darf diese Unterbrechung unter keinen Umständen zu Datenverlust führen.
Daniels erstes und zweites Gesetz zur Nebenläufigkeit.
Nehmen wir das Speichern einer Datei als Beispiel. Wenn ich als Anwender aktiv angefordert habe, dass gespeichert werden soll, zum Beispiel indem ich Befehl-S gedrückt habe, dann ist es völlig legitim, dass der Computer die Eingabe für einige Sekunden sperrt, bis die Datei auf der Platte ist. Wird die Datei dagegen im Hintergrund gespeichert, damit ein Stromausfall keine zu schlimmen Folgen hat, dann ist es nicht akzeptabel, dass dadurch der Arbeitsfluss des Anwenders unterbrochen wird – trotz hehrem Ziel.
Dem gegenüber stehen Unterbrechungen, die nicht zu vermeiden sind: Irgendwann sind auch die besten Batterien leer und der Laptop wird ohne Strom da stehen. Der Computer muss in diesem Fall den Arbeitfluss unterbrechen, die Frage ist lediglich: Wie und mit welchen Folgen?
- Nichts zu tun und den Anwender vor einem sich plötzlich ausschaltenden Rechner sitzen zu lassen wäre fatal. (Datenverlust!)
- Kurz vor dem Ausschalten zu sichern und herunterzufahren, wäre besser, lässt den Benutzer aber vermutlich den aktuellen Gedanken nicht zu Ende führen und ihn wahrscheinlich verlieren.
- Bleibt also nur, den Anwender rechtzeitig vorzuwarnen und erst im letzten Moment hart zu unterbrechen.
Wer am Mac arbeitet, kennt dieses Verhalten vermutlich. Wäre es noch zu verbessern? Sicherlich. Die Vorwarnung kommt am Mac bei zehn Minuten Restlaufzeit. Dabei ist egal, ob man gerade mitten in einem Satz ist oder nicht. Die Meldung poppt auf und schluckt die Tastendrücke, ja verschwindet sogar wohlmöglich ungesehen, wenn man Return drückt. Besser wäre, wenn die Meldung erst bei acht Minuten Restlaufzeit erzwungen würde, in den zwei Minuten davor dagegen nur käme, wenn einige Sekunden lang weder getippt noch die Maus bewegt wurde.
Freunde
Hintergrundprozesse können eine wunderbare Hilfe sein, aber schlecht implementiert können sie ebenso schaden, wie nutzen. Früher war die Rechenleistung der Prozessoren zu gering, um Prozesse überhaupt im Hintergrund laufen zu lassen. Diese Probleme lassen sich bei heutigen Computern in den Griff bekommen. Aber bei aller Rechenleistung gilt zu bedenken: Es ist besser, die Nutzer in einem günstigen Moment zehn Sekunden warten zu lassen, als zur falschen Zeit auch nur eine Sekunde zu unterbrechen.