Ich – Welt: Struktur und Kultur

Eine spannende Frage, welche mir sehr am Herzen liegt: Zeigt die produzierte Software die Struktur und Kultur einer Organisation?  Und wenn Ja, wie kann diese beeinflusst werden? Weniger Fehler, stabiler Code, bessere Adaptionsfähigkeit. Das Thema wurde von Melvin Conway als Erster bearbeitet.  Diese Studien wurden später von der Harvard Business School bestätigt. Hier das PDF dazu. Was konnte nachgewiesen werden:

Organisationen, die komplexe Systeme entwerfen, basieren auf Entwürfen, welche die Kommunikations- und Organisationsstrukturen dieser Organisationen abbilden.

Das Gesetz gilt auch für Webseiten, Prozesse und andere arbeitsteilige und wissen-zentrierte Aktivitäten. Ein Beispiel gefällig: Wir erinnern uns an den Absturz des Mars Climate Orbiters der NASA. Sie ging 1999 aufgrund eines Einheitenfehlers im Navigationssystem verloren. Während das Entwicklungsteam von Lockheed hat mit amerikanischen Massen gearbeitet, während das Team der NASA die internationalen Einheiten verwendet hat. Bekanntlich gehen Inch und Yard ganz schlecht mit Meter und Kilometer zusammen. Viel schlimmer aus meiner Sicht ist aber die Tatsache, dass die Operation den Kurs während fast 2 Jahren immer wieder korrigiert hat und sich niemand gefragt hat, warum das Teil nicht wirklich tut. Gemerkt, dass etwas nicht stimmt, hat man erst im Nachgang durch eine Untersuchung des Source Code.

Was bedeutet das nun für uns? In einer Welt, wo Interoperabilität einer der Pfeiler der Digitalisierung ist, wird es immer wichtiger die Software so “resilient” (unverwüstlich) wie möglich zu schreiben. Das heisst, alles was man nicht selber unter Kontrolle hat, kann Böse sein. Nichts ist gegeben, ausser, das was man selber gemacht hat.

Ich geben zu, dass ich auch mal nicht explizit erwähnt habe, dass eine Minute aus 60 Sekunden besteht. Als Herausforderung habe ich dann Code bekommen, der Minuten mit 00 Sekunden Optionen zulässt. Wer hätte das gedacht? Gemerkt hat es übrigens ein Datenbank Subsystem, dass sich entschieden hat, alles was nicht passt, nicht zu lesen. Und weil der Programmierer nicht weit genug gedacht hat und den Minutenzähler wenigsten nach 100 Iterationen um eins erhöht hat, hatten wir dann doppelte Einträge. Und dort hat das Subsystem dann abgebrochen.

Es gibt in jedem System solche Begrenzungen und Annahmen und diese bilden die Fantasie, Fähigkeiten und Entwicklung des Programmierers, seines Teams und seiner Umwelt ab. Und gerade dies macht die Systementwicklung so spannend. Es ist für mich noch immer ein Erlebnis, wenn aus einer (ungenauen) Idee ein präzises Stück Software wird. Es hilft eben nicht, wenn man ein

A sharp image of a fuzzy concept

hat. Weil wir denken, dass es wichtig ist unverwüstliche Software zu schreiben, versuchen wir immer wieder neue Menschen, mit neuen Ideen zu verstehen. Versuchen immer wieder das Motto: “Nichts was ich nicht selber kontrolliere ist gegeben” umzusetzen. Und wer mir jetzt die Lyrics von “Ich” von den Böhse Onkelz erzählen will. Und wenn jemand wissen will, was sonst noch in meinem Traumjob drin wäre: Bitte schön!