Phillip G. Armour beschreibt in seinem Buch „The Laws of Software Process“ fünf Arten von Nichtwissen (5 Orders of Ignorance).

0th Order of Ignorance: Lack of Ignorance

Die erste Stufe, das Nichtwissen nullter Odnung (Informatiker beginnen gerne mit Null) ist also die Abwesenheit von Nichtwissen. Wir wissen also etwas.

Wir wissen, was wir machen müssen, und wir wissen auch, wie wir es machen müssen. Ein Bild aufhängen etwa gehört vermutlich in diese Kategorie. Sogar als Nicht-Experte kann man diese Aufgabe erfolgreich bewältigen, wobei allerdings nach meiner Erfahrung auch hier häufiges Üben die Verletzungsgefahr reduziert. Ein treffendes Beispiel aus dem Bereich Softwareentwicklung läßt sich für diesen Bereich nur schwer finden.

1st Order of Ignorance: Lack of Knowledge

Das Nichtwissen erster Ordnung ist die Abwesenheit von Wissen. Wir wissen etwas Bestimmtes nicht, wir wissen aber, wie wir die fehlende Information bekommen können.

Wir wissen zwar, dass wir bestimmte Daten für einen gesetzlich vorgeschriebenen Zeitraum persistieren müssen, wir wissen aber nicht, wie lange dieser Zeitraum genau ist. Aber wir wissen, in welchem Gesetz wir nachschauen müssen, um das herauszufinden.

2nd Order of Ignorance: Lack of Awareness

Das Nichtwissen zweiter Ordnung wird Abwesenheit von Bewusstheit genannt. Uns ist nicht bewusst, dass wir etwas nicht wissen. Wir wissen also gar nicht, was wir nicht wissen. Hier sind wir im Bereich der unbekannten Unbekannten, im komplexen Feld von Cynefin (Cynefin).

Uns fehlen also nicht nur Informationen oder Antworten auf bestimmte Fragen, wir wussten vorher noch nicht einmal, dass wir überhaupt hätten fragen sollen. Wir wussten z.B. nicht, dass die Schnittstelle inkompatibel ist. Wir wussten nicht, dass die neue Library einen Bug hat.

Was wir aber wissen, ist: je schneller wir auf diese Fragen (von denen wir gar nicht wussten, dass wir sie hätten stellen sollen) stoßen, desto besser ist es. Cynefin schlägt für das komplexe Umfeld vor: probieren, erkennen, reagieren.

3rd Order of Ignorance: Lack of Process

Das Nichtwissen dritter Ordnung ist die Abwesenheit eines Prozesses. Das ist nochmal ein Stück herausfordernder. Wir wissen nicht einmal, wie wir herausfinden können, was wir nicht wissen, bzw. ob es überhaupt etwas gibt, von dem wir nicht wissen, dass wir es nicht wissen.

Der Kunde weiss erst dann, was er will, wenn er sieht, was er bekommt. Ja eben: wie werden die zukünftigen Kundenwünsche unmittelbar vor der nächsten Auslieferung aussehen?

Wir kommen also in der Softwareentwicklung um den gefürchteten Scope Creep (das sind die Anforderungen, von denen die Nutzer vorher nicht wissen, dass sie sie hinterher haben werden) gar nicht herum.

4th Order of Ignorance: Meta Ignorance

Und jetzt wird es eklig. Es gibt auch so etwas wie ein Meta-Nichtwissen. Wir wissen vielleicht nicht einmal, dass es verschiedene Ebenen von Wissen und Nichtwissen gibt.

Fazit

Ist das vielleicht unser Hauptproblem? Wir gehen gerne davon aus, dass es nur Wissen und Nichtwissen erster Ordnung gibt, d.h. wenn wir alle “richtigen” Fragen stellen, dann wissen wir auch alles Notwendige und können nach Plan vorgehen.

In einem komplexen Umfeld (und das geht beim Nichtwissen zweiter Ordnung los) ist dies aber nicht so. Hier ist nur im nachhinein ein Zusammenhang zwischen Ursache und Wirkung erkennbar. Diese Zusammenhänge sind nicht vorhersagbar, eine Wiederholung kann zwar passieren, muss aber nicht.

Ab der zweiten Ordnung helfen offensichtlich nur emergente Praktiken (Cynefin: probieren, erkennen, reagieren). Das sind Praktiken wie Test First Ansätze, Pair Programming, Collective Code Ownership, etc. Also Praktiken, von denen wir wissen, dass sie in der Mehrzahl der Fälle bessere Ergebnisse liefern, aber eben auch nicht immer und überall.