Hinweis zu Affiliate-Links: Alle Produkte werden von der Redaktion unabhängig ausgewählt. Im Falle eines Kaufs des Produkts nach Klick auf den Link erhalten wir ggf. eine Provision.

Machines of Loving Grace / Wir müssen lernen, Algorithmen besser zu lesen

von Jürgen Geuter
Algorithmen sind überall. Jeder hat ständig mit ihnen zu tun, viele fürchten sie, doch die wenigsten verstehen tatsächlich, wie sie funktionieren. In seiner WIRED-Kolumne durchleuchtet Jürgen Geuter die mathematischen Problemlöser, die unsere Welt zu lenken scheinen. Diesmal: Wie liest man eigentlich sinnvoll Algorithmen?

Seit einigen Jahren debattieren wir, die sich digitalisierende Gesellschaft, über Algorithmen und ihre Auswirkungen. Über die Art, wie Konzepte wie Privatsphäre neu gedacht werden müssen. Über die Frage, wie mit dem Wegfall von Arbeitsplätzen durch die Automatisierung umzugehen ist. Darüber, welchen (Stellen-)Wert menschliche Autonomie noch hat in einer Welt, in der unsere Wahrnehmungen und Informationskanäle zu großen Teilen von Algorithmen und Filtern geformt werden.

Doch um irgendwie zielführend über Algorithmen sprechen zu können, muss man sie erst mal „lesen“ können. Also: Wie liest man eigentlich sinnvoll Algorithmen?

Es gibt eine offensichtliche, einfache und auch teilweise richtige Antwort: Man liest einen Algorithmus über seinen technischen Programmcode oder seine formale Beschreibung. Wie ein Computer geht man die DNA des Algorithmus Schritt für Schritt durch und vollzieht seine Arbeitsweise langsam nach. Sieht, welche Werte von wo abgegriffen, wie sie im Detail weiterverarbeitet und wohin sie weitergeleitet werden.

Wie ein Computer geht man die DNA des Algorithmus Schritt für Schritt durch und vollzieht seine Arbeitsweise nach.

Auf diese Konzeption des Lesens geht die Forderung zurück, man müsse ein Schulfach Programmieren einführen, damit alle Menschen in der Lage sind, Algorithmen nachzuvollziehen. Denn das Lesen ihrer formalen Beschreibungen oder gar Implementierungen ist nicht immer so einfach wie man denkt: Die mathematischen Formalismen und Sprachkonstrukte der verwendeten Programmiersprache bilden das Vokabular und die Grammatik, in denen Algorithmen niedergeschrieben werden. Und oft sind sie weit entfernt von einfacher Verständlichkeit. Nehmen wir mal ein einfaches, hypothetisches Beispiel:

<code>
def sperreUngültigeProfile(Accounts):
    ungültigeAccounts = [Account for Account in Accounts if len(Account.Vorname)<3 or len(Account.Nachname)<3]
    for Account in ungültigeAccounts:
        Account.sperren()
</code>

Dieser kleine Algorithmus geht auf einer fiktiven Plattform eine Liste aus Accounts („Personen“) durch und testet für jeden Eintrag, ob die Länge des Vornamens („len(Account.Vorname)“) oder die des Nachnamens kleiner als 3 ist (zum Beispiel 0, wenn der jeweilige Eintrag leer ist). Alle Accounts, bei denen Vor- oder Nachname zu kurz sind, werden in eine Liste „ungültigeAccounts“ übernommen. Diese Liste wird dann einzeln abgearbeitet und jeder Account mit ungültigen Namen gesperrt. Das Ganze sieht zwar für Nicht-Programmierende vielleicht etwas komisch aufgeschrieben aus, ist aber mit ein wenig Mühe und Hilfestellung recht schnell zu verstehen. Aber ist diese Art, Algorithmen zu lesen, wirklich ausreichend?

Was bedeutet es denn für die User, wenn ihre Accounts gesperrt werden? Die Sperrung eines Wegwerf-Accounts bei einem sterbenden Social Network kann einem ja noch egal sein, aber das Haupt-E-Mail-Konto? Oder der Facebook-Zugang, an dem die eigene Firmenpage hängt? Die Konsequenzen eines solchen simplen Algorithmus lassen sich nicht wirklich über seinen technischen Inhalt bestimmen. „Account.sperren()“ kann bedeutungslos sein — oder verheerend.

Algorithmen müssen als potentielle Werkzeuge der Macht über ihre Auswirkungen gelesen werden.

Hier setzt eine Lesart von Algorithmen an, die vor allen aus den Gesellschaftswissenschaften kommt: Algorithmen als potentielle Werkzeuge der Macht müssen über ihre Wirkung und Auswirkungen gelesen werden. Ganz einfach gesagt: Es ist egal, wie Facebooks Filtersysteme funktionieren. Es ist aber potentiell problematisch, dass sie bestimmte Inhalte nicht zeigen und das den Nutzenden nicht kommunizieren. Diese Art, Algorithmen zu lesen, kommt fast völlig ohne die für viele ungewohnten Codes und Formalismen aus, die die technische Lesart vorraussetzt. Im Gegensatz dazu bleibt die interne Struktur der Algorithmen aber unsichtbar, was es manchmal schwer macht, zu sagen, ob ein Algorithmus grundsätzlich problematisch ist, oder nur seine konkrete Umsetzung.

Beide Lesarten, die technische wie auch die wirkungsorientierte, leisten einen wichtigen Beitrag zur gesellschaftlichen Debatte. Leider wird aber eine dritte, auf den beiden Anderenaufsetzende Lesart von Algorithmen meist vergessen. Eine, die die Lösung vieler Probleme überhaupt erst erlaubt: Wir müssen Algorithmen als Selbstbeschreibung der Entwickelnden lesen.

Wir müssen Algorithmen als Selbstbeschreibung der Entwickelnden lesen.

In der Anthropologie gibt es schon länger die Idee, von Jägern aufgestellte Fallen als „Text“ aufzufassen, der beschreibt, was die Jagenden über ihre Beute wissen und denken: Wenn ich Käse in meine Mausefalle packe, beschreibt das ziemlich genau, was ich glaube, dass eine Maus gern frisst. Genauso können wir Algorithmen lesen — als Beschreibung der Welt durch die Algorithmenschreibenden.

In unserem Codebeispiel oben hatten die Entwickelnden beispielsweise festgelegt, dass ein Nachname und ein Vorname immer mindestens drei Buchstaben lang ist. Das funktioniert bei sehr vielen Menschen auch ganz gut. Aber eben nicht für alle: Nur weil in Deutschland Vornamen zum allergrößten Teil drei Buchstaben oder mehr haben, ist das ja nicht überall auf der Welt so. Es haben nicht mal alle Menschen einen Vor- und Nachnamen.

Und auch der Prozess, den der Beispielalgorithmus wählt, ist problematisch: Es ist kein Einspruchsverfahren für Betroffene vorgesehen. Sie werden gesperrt und können sich dann damit rumschlagen, wieder Zugang zu ihrem Account zu bekommen. Die Rechte der Nutzenden als Person finden im Prozess genauso wenig Niederschlag wie die Idee, dass der entworfene Algorithmus zur schnellen Aufdeckung ungültiger Accounts ja auch fehlerhaft sein könnte.

Die öffentliche Kritik an Algorithmen beschränkt sich meist auf die ersten beiden Perspektiven, mit einem Schwerpunkt auf der technischen, und bleibt damit immer im Einzelfall gefangen: Facebooks Timeline-Filter ist irgendwie doof, Googles Suchalgorithmus auch, und so weiter. Wenn dann Google, Facebook, Apple oder sonstwer nächste Woche dann mit einem neuen Produkt um die Ecke kommen, geht das ganze Spiel wieder von vorne los.

Wir als Gesellschaft müssen lernen, Algorithmen besser zu lesen. Das bedeutet aber nicht, dass alle sich Programmiersprachen draufschaffen müssen. Und auch diffuse Texte über die „Macht“ von Algorithmen helfen nur bedingt dabei, nachhaltig die durch die Digitalisierung induzierten gesellschaftlichen Probleme anzugehen. Es ist wie bei jedem Gedicht: Es geht um mehr als nur die Worte. Es geht um den zeitlichen Kontext, um die Position und Ansichten des Autors oder der Autorin und um die Frage, welchen Fußabdruck der Text in unserer Gesellschaft hinterlassen hat.

Deshalb ist das Lesen von Algorithmen mehr als nur das Lesen von Code. Es muss auch ein Verstehen der Werte, Normen, sozialen Praktiken und Vorurteile derer sein, die sie entwerfen und implementieren. Denn es sind genau diese Werte, Normen, Praktiken und Vorurteile, die die Grundlage für die sich wiederholenden Probleme mit Algorithmen bilden.

Brauchen wir einen hypokratischen Eid des Codes?

Um also Algorithmen in der Welt zu lesen braucht es mindestens drei Schritte: Ein (grobes) Verständnis des technischen Ablaufs. Eine Betrachtung der gesellschaftlichen Auswirkung. Und schließlich darauf aufsetzend eine Analyse der im Code hinterlassenen Selbstoffenbarung der Programmierenden.

Vielleicht ist es an der Zeit, dass wir als Gesellschaft an die Menschen, die Code in die welt bringen ethische Forderungen stellen. Einen hypokratischen Eid des Codes vielleicht. Den können wir aber erst formulieren, wenn wir verstanden haben, auf welchen Grundlagen die programmierenden Menschen operieren.

In seiner vergangenen Kolumne fragte unser Autor: Sind Algorithmen gute Einkaufshilfen

GQ Empfiehlt