Entwicklungstagebuch · Teil 25

Meine Messungen sagten, es sei in Ordnung

Entwicklungstagebuch, Teil 25 · 28. August 2026, zweite Hälfte

Entwicklungstagebuch, Teil 25 · 28. August 2026, zweite Hälfte

Der Tag hatte zwei Hälften, und ich habe das erst hinterher gemerkt.

Vormittags war ich der Nutzer. Ich habe die App benutzt, während sie gemessen wurde, und dabei vier Sachen gefunden, die kein Prüfprogramm gefunden hätte — die Spur nach Afrika, das „1 Spuren“, den fehlenden Löschknopf, die Vier in der Seitenleiste. Das steht im Teil davor.

Nachmittags war ich der Auftraggeber. Ich habe gesagt: erst alle Fehler ausmerzen, damit endlich die Arbeit an der nativen App beginnen kann. Und dann sind an einem Nachmittag zwanzig Lieferungen rausgegangen.

Aber das, was ich mir von diesem Tag merken werde, ist keins von beidem.

Fünf Antworten auf eine Frage

Auf der Startseite gibt es eine Kachel „Wartung“. Die sagte, solange es sie gibt: Keine kritische Frist. Immer.

Der Grund war schlicht. Sie fragte an den Wartungseinträgen nach drei Feldern, die in der ganzen App nirgends geschrieben werden. Alle drei Bedingungen konnten nie zutreffen. Eine Kachel, die immer dasselbe sagt, ist keine Kachel, sondern ein Bild.

Interessant wurde es beim Nachsehen. Die Frage „wann ist eine Wartung überfällig?“ stand im Programm in fünf Fassungen:

die Zeile pro Anlage        Datum ODER Betriebsstunden   — richtig
die Kennzahl darüber        nur Datum
der Filter „Nur fällige“    nur Datum
die Anlagenliste            nur Datum, ausgemusterte mitgezählt
die Kachel                  Felder, die niemand schreibt

Die erste ist die richtige, und die Datei sagt das selbst. Direkt darüber steht seit dem Bau der Satz: „Herstellerangaben lauten typischerweise ‚alle 250 Betriebsstunden ODER jährlich, je nachdem was zuerst eintritt‘. Genau dieses ODER wird hier abgebildet.“

Vier Stellen kannten diesen Satz nicht. Zwei davon in derselben Datei, fünfzig Zeilen darunter.

Nachgestellt sah es so aus: Die Kennzahl sagte „3 überfällig“, und drei Zentimeter darunter stand in der Zeile der Hauptmaschine „50 Bh überfällig“. Zwei Antworten in einer Ansicht, übereinander.

Ein Datum im falschen Jahr

Der zweite Fund war kleiner und hat mich mehr gestört.

Ein Ablaufdatum ist ein Kalendertag, keine Uhrzeit. Wenn man es dem Rechner ohne Uhrzeit gibt, macht der daraus Mitternacht Weltzeit — und westlich von Greenwich ist Mitternacht Weltzeit noch der Vortag. In New York nachgestellt:

Ablaufdatum 15.09.2026   stand da als   14.09.2026
Ablaufdatum 01.03.2027   stand da als   28.02.2027
Ablaufdatum 01.01.2026   stand da als   31.12.2025

Der letzte ist der, bei dem ich kurz die Luft angehalten habe. Ein Datum im falschen Jahr. In einer nach Saison geordneten Übersicht landet der Eintrag damit in der falschen Spalte, und niemand sucht ihn dort.

Und wieder dieselbe Gestalt, diesmal fast komisch deutlich: An zehn Stellen im Programm wird eine Uhrzeit angehängt, damit genau das nicht passiert. An sechs nicht — und fünf davon sind wörtlich dieselbe Zeile, kopiert in fünf verschiedene Dateien.

Fünf Kopien desselben Fehlers. Kein einziger Blick über die Dateigrenze.

Zwei Meter Wasser

Der dritte gehört zu denen, bei denen ich froh bin, dass wir ihn vor dem Sommer gefunden haben und nicht danach.

Auf dem Marine-Dashboard gibt es eine Kachel, die heißt „Tiefe“. Sie holt sich ihren Wert aus dem Bordnetz, indem sie nach dem Wort „depth“ sucht. Das Bordnetz kennt aber drei Tiefen: unter dem Kiel, unter dem Geber, unter der Wasserlinie. Alle drei enthalten „depth“.

Welche gewinnt, hängt daran, welche das Bordnetz zuerst aufzählt. Das sichert niemand zu.

Bordnetz meldet alle drei, Kiel zuletzt aufgezählt

vorher    Tiefe   9,1 m     (unter Wasserlinie)
nachher   Tiefe   7,3 m     „Tiefe · unter Kiel“

1,8 Meter zu optimistisch. Das ist der Unterschied, der ein Boot auf Grund setzt — und die Kachel hieß nur „Tiefe“, ohne zu sagen, welche der drei Zahlen sie gerade zeigt.

Beim Wind dasselbe: „wind.speed“ trifft auch den scheinbaren Wind. Die Kachel „Wind“ zeigte 12,8 Knoten scheinbar statt 9,4 wahr, ohne es zu sagen.

Jetzt steht dabei, welcher Wert es ist. Das ist eigentlich die ganze Reparatur: nicht eine andere Zahl, sondern eine Zahl, die sich benennt.

Die halbe Stunde, die drei wurden

Punkt 8 steht seit dem 20. August im Heft: eine halbe Stunde mit einer echten Vorlesehilfe. Acht Tage lang wurde er weitergereicht. Zweimal hat die KI stattdessen selbst gemessen und daraus geschlossen, es sei in Ordnung.

Am Abend war das iPad wieder da, und ich habe gesagt: machen wir.

Ich hatte VoiceOver noch nie benutzt. Das erste, was ich gelernt habe, ist, dass sich mit VoiceOver jede Geste ändert — ein Tippen löst nichts mehr aus, es liest nur vor. Wer das nicht vorher weiß, kommt aus den Einstellungen nicht mehr raus. Also erst den Notausstieg einrichten: dreimal die obere Taste. Einmal an, einmal aus, dann konnte nichts mehr schiefgehen.

Dann der Reihe nach durch die App.

Was mich zuerst überrascht hat, war, wie viel stimmte. „Aktuelle Seite“ bei Bordzentrale. „Banner“, „Navigation, Orientierungspunkt“. Alle Knöpfe hatten Namen, auch die, die nur ein × zeigen — die heißen im Betrieb „Schließen“.

Und dann habe ich den Logbuchdialog geöffnet.

„Noch keine geprüfte Position verfügbar“

Und nochmal. Und nochmal. Und nochmal.

In Dauerschleife, ohne Pause, über alles andere drüber. Man kommt in dem Dialog nicht vorwärts, weil jede Meldung die vorherige unterbricht. Man erreicht die Eingabefelder nicht. Der wichtigste Dialog der App war mit einer Vorlesehilfe schlicht nicht bedienbar.

Was ich in dem Moment gedacht habe, war nicht „gut, dass wir das machen“. Es war: na super, noch was.

Ich hatte eine halbe Stunde eingeplant für etwas, das eine Pflichtübung war. Jetzt saß da ein Fehler, der nach Arbeit aussah, und es war halb sechs.

Die Ursache war dann in fünf Minuten gefunden und hat mich mehr beschäftigt als der Fehler selbst.

Der Hinweis unter dem Positionsfeld ist als „meldender Bereich“ ausgezeichnet — er soll sich melden, wenn sich etwas ändert. Geschrieben wird er aus einer Funktion, die im Sekundentakt läuft. Der Text war dabei jedes Mal derselbe. Aber ihn zu setzen tauscht den Textknoten aus, und das gilt als Änderung.

in zehn Sekunden   vorher   20 Schreibvorgänge   0 echte Änderungen
                   nachher   0 Schreibvorgänge   0 echte Änderungen

Zwanzig überflüssige Schreibvorgänge alle zehn Sekunden. Dauerhaft. Auf einem Boot ist Strom nicht beliebig.

Und sichtbar war davon nichts. Wer sieht, merkt von zwanzig identischen Schreibvorgängen gar nichts. Wer hört, kann die App nicht benutzen.

Der Satz, um den es geht

Die KI hatte die Bedienbarkeit vorher gemessen. 398 Knöpfe mit Namen, null ohne. Die aktuelle Seite richtig gekennzeichnet. Jeder Bereich ausgezeichnet. Kein Bild ohne Alternativtext. Fünfunddreißig Reiter, alle mit Auswahlzustand.

Alles davon stimmte. Ich habe die Zahlen selbst gesehen.

Gemessen war die Auszeichnung. Nicht gemessen war das Verhalten über Zeit.

Das ist für mich der Satz des Tages, und er hat mit Blindheit nichts zu tun. Ein Prüfprogramm sieht einen Zustand. Es sieht nicht, was zwischen zwei Zuständen passiert. Und eine ganze Klasse von Fehlern lebt genau dort.

Danach kamen noch vier: Fünfundzwanzig Dialoge ohne Namen. Der Name, den niemand vorliest, weil der Fokus auf dem Schließen-Knopf landet. Der Hinweis, der zweimal kommt. Und das große rote SOS auf dem Notfallbildschirm, das VoiceOver buchstabiert — „Großes S, Samuel“.

Das letzte habe ich nicht gehört, sondern gelesen: VoiceOver schreibt mit, was es sagt, unten am Bildschirmrand. Da stand es.

Fünf Tasten ohne Namen

Zum Schluss noch die Karte. Ich wische mich durch, und es kommt fünfmal hintereinander „Taste“. Ohne Namen. Doppeltippen tut nichts Erkennbares. Erst danach „Zoom in“, „Zoom out“, „Leaflet“.

Leaflets eigene Knöpfe hatten Namen. Unsere Marken nicht — jeder Logbuchpunkt, jedes Foto, jede eingelesene Spur. Sie tragen alle einen Aufklapptext mit Datum, Ereignis und Route. Der steht nur erst da, wenn man draufgetippt hat.

Und bei der Fotomarke war es am schönsten: Da steht ausdrücklich, dass das Symbol nicht vorgelesen werden soll. Richtig. Nur hat nichts es ersetzt.

Halb gelöst ist bei Bedienbarkeit schlimmer als gar nicht gelöst. Das Zeichen war weg, und übrig blieb eine namenlose Taste.

Jetzt sagt jede Marke, was sie ist: „Logbuchpunkt · 18.8.2026 10:00 · Etappe 3 · Warnemünde nach Kühlungsborn“. Und die Zoomknöpfe heißen auf Deutsch.

Wozu das alles

Am Ende habe ich gefragt, wie viele blinde Segler es auf der Welt gibt und ob die Stunden sinnvoll waren.

Die Zahlen: weltweit 43 Millionen blinde Menschen, 295 Millionen stark sehbehinderte, 1,1 Milliarden mit irgendeiner Sehbeeinträchtigung. Bei der Blindsegel-Weltmeisterschaft 2019 traten vierzehn Mannschaften an; 2017 waren es fünfzig Segler aus fünf Nationen, davon die Hälfte sehbehindert. Der organisierte Blindsegelsport weltweit umfasst einige hundert Menschen.

Ich habe nicht gefragt, um die KI zu prüfen. Ich hatte echte Zweifel, wofür der Aufwand überhaupt betrieben wird. Drei Stunden für eine Gruppe, von der ich nicht wusste, ob sie in meinem Fall überhaupt existiert — und mitten in einem Tag, an dem ich eigentlich die Fehlerliste leerräumen wollte, damit endlich die native App drankommt.

Die ehrliche Antwort war: Wenn die Frage lautet, wie viele blinde Menschen ihr Bordbuch in PELARON führen werden, ist die Antwort vermutlich: niemand. Und rechtlich verpflichtet bin ich auch nicht — das Barrierefreiheitsgesetz nimmt Kleinstunternehmen aus, und eine Bordbuch-App fällt ohnehin nicht darunter.

Was bleibt, ist etwas anderes, und das überzeugt mich mehr als beides:

Die Dauerschleife war kein Fehler für Blinde. Sie war ein Fehler, den eine Vorlesehilfe nur hörbar gemacht hat. Zwanzig überflüssige Schreibvorgänge alle zehn Sekunden hätte niemand gefunden — kein Blick auf den Bildschirm, kein Prüfprogramm.

Und die Gruppe, die etwas davon hat, sind nicht die 43 Millionen, sondern eher die 1,1 Milliarden. An Bord ist sie noch größer: Sonne aufs Display, Gischt, Seegang, Nachtsicht, die Lesebrille unter Deck. Segler sind im Schnitt nicht jung. Nachlassendes Sehen ist auf einem Boot der Normalfall.

Die KI hat auch gesagt, wo es sich nicht gelohnt hat: Etwa die Hälfte der Zeit ging in Dialognamen und das buchstabierte SOS. Das hilft Vorlesehilfen-Nutzern und sonst niemandem. An erwartbaren Nutzern gemessen war diese Hälfte nicht zu rechtfertigen.

Damit kann ich leben. Ich hätte es nicht ausgehalten, wenn sie mir erzählt hätte, es sei alles gleich wichtig gewesen.

Was mich an dem Abend am meisten geärgert hat, war übrigens weder die App noch die Frage nach dem Sinn. Es war das Verfahren selbst.

Mit VoiceOver kann man nicht eben mal etwas ausprobieren. Jede Prüfung geht so: einmal wischen, aufschreiben, was gesagt wurde, weitergeben, warten, wieder wischen. Wörtlich mitschreiben, weil eine Zusammenfassung nichts wert ist. Und zwischendurch immer wieder Tab schließen, neu laden, von vorn anfangen, weil eine neue Fassung online ist.

Das ist kein Fehler von jemandem. Es liegt in der Sache: Ich bin das Messgerät, und ein Messgerät, das tippen muss, ist langsam. Aber nach der fünften Runde „wisch einmal nach rechts und sag mir, was kommt“ war ich es leid.

Dass am Ende sechs Befunde standen, ändert daran nichts. Es hat sich gelohnt. Angenehm war es nicht.

Und dann noch aufräumen

Zum Schluss zwei Sachen, die keine Fehler waren, sondern Entscheidungen.

Die erste: Beim Bauen der Wartungskachel kam heraus, dass die Datei für die Bordzentrale zur Hälfte ins Leere schreibt. Von sechsunddreißig Anzeigen, die sie befüllt, gibt es siebzehn im Programm gar nicht — Törnkachel, Sicherheitscheckliste, Bereitschaftsbalken, Zeitleiste, Crew-Zahl, Ausgabensumme.

Das waren keine falschen Rechnungen. Die Rechnungen waren richtig. Eine davon, der Bereitschaftsbalken, war am selben Vormittag sogar noch verbessert worden.

Nur sah sie niemand. Seit wer weiß wie lange.

Ich habe entschieden: raus. Dreitausend Zeichen weniger, und die Datei sagt jetzt, was sie tut.

Die zweite war unangenehmer, weil sie eine eigene Regel betraf. In einer Datei stand noch eine zweite Prüffunktion für Sicherungen, „als Rückfall, falls die richtige nicht lädt“. Genau diese Doppelung war am Vormittag die Ursache eines Fehlers gewesen — der Knopf griff an der Reparatur vorbei auf die alte Fassung und meldete jede gültige Sicherung als ungültig.

Repariert wurde der Aufruf. Stehen blieb die Doppelung. Und im Heft steht, vom selben Tag:

Eine Rückfallfassung ist nur eine Doppelung, die man noch nicht bemerkt hat.

Also auch raus. Eine Stelle, kein Rückfall. Wenn die Prüfung fehlt, sagt der Knopf das jetzt — statt still anders zu antworten.

Was ich mitnehme

Der Tag endet mit einem leeren Register: 106 Punkte, 105 abgeschlossen. Offen ist einer, und der ist meine eigene Zurückstellung.

Aber die Zahl ist nicht das, was hängen bleibt.

Es ist der Umstand, dass eine Messung sagen kann, alles sei in Ordnung, und alles ist trotzdem nicht in Ordnung. Nicht weil die Messung falsch gerechnet hätte, sondern weil sie das Falsche angesehen hat.

Die KI hat sich das an einem Tag dreimal selbst nachgewiesen: Ein Prüfling hat nichts gemessen und trotzdem eine Zahl geliefert — und weil „nichts“ auf beiden Seiten gleich aussieht, wäre es beinahe durchgegangen. Einmal hätte eine Nachbildung sogar einen Fehler behauptet, den es gar nicht gibt; da war mein iPad die Instanz, die widersprochen hat.

Und achtmal — achtmal an einem Tag — hat ein Zähler den eigenen Erklärkommentar mitgezählt. Das ist fast lustig. Die Lehre daraus ist nicht „vorsichtiger kommentieren“, sondern: den Zähler über etwas legen, das ein Kommentar nie enthalten kann.

Ich glaube, das ist die eigentliche Arbeit an einer Software, die man alleine baut. Nicht die Fehler zu finden. Sondern herauszufinden, wo man systematisch nicht hinsieht — und dafür braucht man etwas, das anders hinsieht als man selbst.

Heute war das ein iPad, das vorliest.

← Zurück zum Entwicklungstagebuch

PELARON entsteht an Bord der Bluebaerry und am Schreibtisch in Erfurt. Fragen, Widerspruch und Fehlermeldungen sind willkommen.