Zu den Sherlock-Holmes-Geschichten habe ich ein gespaltenes Verhältnis. Ich mag die Charaktere, die Rätsel, den Sieg der Vernunft. Und mit Vernunft hängt zusammen, was ich nicht mag: Nur Holmes kennt _alle_ Zusammenhänge – das macht es dem Leser unmöglich, selbst hinter das Geheimnis zu kommen. Im Laufe der Geschichte offenbaren sich immer mehr Details, und das letzte Puzzelteilchen setzt der Superdetektiv persönlich ein. Der Leser kann nur “zuschauen”.
Wartungsprogrammierung ist anders. Alle Fakten liegen vor. Kann sein, dass der Quelltext schwierig zu lesen ist. Kann sein, dass es sehr viel Quelltext ist. Kann sein, dass ich lange brauche, um alle relevanten Fakten zu kennen. Aber so seltsam das Verhalten einer Software auch anmuten mag: Es beruht auf Vernunft, es folgt den Regeln der Logik. Das ist beruhigend, weil unumstößlich fair. Es gibt da keinen Deus ex machina, keinen, der Dir hilft, und keinen, der Dich behindert.
Ich habe lange in einem Büro gearbeitet, an der Wand ein grosses Bild von Dr. House’s Kopf mit dem Spruch “Menschen lügen. Code nicht.” Kommentare im Quelltext sind manchmal offensichtlich falsch, ein anderes Mal führen sie Dich unbemerkt auf eine falsche Fährte. Die Namen von Funktionen-Methoden-wie-immer-Du-es-nennst-Du-weisst-was-ich-meine können in die Irre führen. Variablennamen können Fehlverstehen fördern.
Wartungsprogrammierung bedeutet zuerst, sich zum Kern dessen vorzuarbeiten, was im Programm geschieht, ohne sich von den Worten ablenken zu lassen. Das ist wie im wirklichen Leben: Ich kann begreifen, was ein anderer mir mitteilen möchte, auch dann, wenn er unpassende Worte nutzt. Wenn man beispielsweise versucht, mit Fremdworten zu imprägnieren, dann kann das erfolglos bleiben – beim Imprägnieren. Auf der Sachebene aber kann die richtige Botschaft ankommen. Wartungsprogrammierung endet damit, dass Veränderungen vorgenommen werden. Syntaktisch-semantische Objektivierung folgt intentionaler Digital-Hermeneutik ;)