Hofstadter's Law
Bild: Wikimedia Commons / Roland Dobbins - CC BY-SA 2.0 |
Unter den vielen verschiedenen "Gesetzen", die mit der Zeit geschrieben wurden, um regelmässig auftretende Phänomene der Softwareentwicklung zu beschreiben, ist ein besonders schönes. Es handelt sich um Hofstadter's Law (also Hofstadters Gesetz), ist benannt nach dem amerikanischen Physiker, Informatiker und Kognitionswissenschaftler Douglas Hofstadter, und wurde von ihm erstmals 1979 beschrieben. Es lautet:
Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.
Ins Deutsche übersetzt: Hofstadters Gesetz: es dauert immer länger als man es erwarten würde, selbst wenn man dabei Hofstadters Gesetz berücksichtigt. Das klingt erstmal wie ein Scherz, es steckt aber durchaus mehr dahinter. Um dieses Gesetz zu verstehen muss man zuerst kurz das Buch erklären, in dem Hofstadter es veröffentlichte - es hat den Namen Gödel, Escher, Bach: an Eternal Golden Braid und es handelt (unter anderem) von Rekursionen.
Eine Rekursion (von lateinisch recurrere, ‚zurücklaufen‘) wird ein prinzipiell unendlicher Vorgang bezeichnet, der sich selbst als Teil enthält oder sich selbst immer wieder neu startet. Bei einem derartigen Vorgang kann es sich um ein Computerprogramm handeln (das man anhalten muss, wenn es nicht ewig weiterlaufen soll), es kann aber auch ein Denkvorgang (oder eine Verkettung von Denkvorgängen) sein, und genau darauf wollte Hofstadter hinaus.
Den Ausgangspunkt bildet eine bei der Planung komplexer Vorhaben häufige kognitive Verzerrung, der Optimism Bias, der dafür sorgt, dass man den für die Umsetzung nötigen Aufwand unrealistisch niedrig einschätzt. Wie alle derartigen Verzerrungen ist er dem Menschen, in dessen Kopf er stattfindet, aber in der Regel nicht bewusst - im Moment der unrealistisch niedrigen Aufwandsschätzung ist ihm daher nicht klar, dass sie unrealistisch niedrig ist.
Selbst wenn ein vom Optimism Bias betroffener Mensch versucht, den Erfahrungswert, dass er immer zu optimistisch geplant hat, in seine Aufwandsschätzungen einzubeziehen, löst dieser Gedankengang trotzdem erneut den Optimism Bias aus, wodurch die erwähnte Rekursion entsteht. Douglas Hofstadter versuchte diesen Teufelskreis offensichtlich zu machen, indem er in sein nach sich selbst benanntes Gesetz ebenfalls eine Rekursion einbaute: Hofstadters Gesetz löst sich selbst aus.
Die Parallelen zu rekursiven Computerprogrammen sind bis hierhin einleuchtend, an einer Stelle unterscheiden sich die durch Hofstadter's Law beschriebenen Denkvorgänge aber entscheidend von ihnen - mit der Zeit schwächt sich das Ausmass der Verzerrung ab. Das Beispiel an dem Hofstadter sein Gesetz erklärte, war die Entwicklung eines Schachcomputers, der einen Menschen schlagen kann. Und obwohl die Entwicklungzeit mehrfach falsch eingeschätzt wurde - irgendwann war er fertig.
Und damit kommen wir zu einer unerwarteten Verbindung zu einer in vielen agilen Teams verbreiteten Praktik: den Aufwandsschätzungen anhand von Fibonacci-Sequenzen. Dieser exponentielle Wachstums-Verlauf (0, 1, 2, 3, 5, 8, 13, 21, etc) war für Hofstadter beispielhaft für durch Rekursionen bedingte grösser werdende Schätzfehler. Umgekehrt wird in agilen Teams implizit davon ausgeggangen, dass es bei geringer Ungewissheit zu weniger Schätzungs-Rekursionen kommt und die Schätzungen genauer sind.1
In den meisten Fällen dürfte den die Fibonacci-Sequenzen benutzenden agilen Teams dieser gedankliche Unterbau gar nicht klar sein (was auch nicht weiter schlimm ist). Für alle, die sich an geisteswissenschaftlichen Ausschweifungen erfreuen können, dürfte der Gedanke aber eine gewisse Faszination haben: immer dann, wenn die Scrum- und XP-Teams dieser Welt Planning Poker-Karten hochhalten arbeiten sie an der Widerlegung von Hochstädters Gesetz. Was der wohl dazu gesagt hätte?