Tales about Aviation, Coaching, Farming, Software Development

Kurze Geschichte der Software-Entwicklung

Die Geschichte der Software-Entwickung beginnt naturgemäß mit der Entwicklung des Computers an sich. Konrad Zuse baute 1941 den ersten funktionsfähigen Computer und entwickelte auch die erste Programmiersprache: Plankalkül.

1968 und 1969 fanden mit Unterstützung der NATO die ersten beiden Konferenzen zu Software-Entwicklung statt. Leider wurden in der zweiten Konferenz die als Software-Entwickler tätigen Menschen als Ursache der immer steigenden Komplexität und dadurch schwer kalkulierbaren Projekte ausgemacht. Man fragte sich warum die Leitung und Planung von Hardware-Projekten, also physische Dinge, so viel einfacher und vorhersagbarer wäre. Statt sich weiterhin mit Methoden zur Verbesserung der Art und Weise wie Software entwickelt werden kann zu beschäftigen verschob sich der Fokus auf Mittel und Wege, um die Komplexität durch Reduzierung der Abhängigkeit zu Software-Entwicklern zu reduzieren.

Möglicherweise gibt es eine ursächliche Verbindung zur Sozialtechnologie Management, wie sie um 1911 von Frederick Winslow Taylor vorgestellt wurde. Eine Grundannahme von Taylor war, daß Arbeiter nicht in der Lage seien die eigene Tätigkeit sinnvoll zu organisieren und es daher einer besonderen Gruppe - Manager - bedarf, um eine effizient arbeitende Organisation zu erschaffen.

Auch in 2024 sind viele Unternehmen weiterhin nach den Prinzipien von Taylor organisiert. In der Aufbauorganisation existiert weiterhin eine klare Trennung der Leitungsebene von den diversen ausführenden Funktionen.

Bereits 1957 gab es Vorschläge (siehe D.D. McCracken in Digital Computer Programming) zur testgetriebenen Entwicklung, deren moderne Varianten erstaunlicherweise auch heute noch immer kontrovers diskutieren werden.

Und auch das Wasserfallmodell, welches Winston W. Royce zugeschrieben wird, ist weiterhin in den Köpfen präsent und wird gern als logisch sinnvoll betrachtet und insgeheim bevorzugt. Dabei hat Royce diese Vorgehensweise als verbesserungswürdig beschrieben und schlug eine mehr iterative Form vor.

Ideen wie Lean und die Arbeiten von William Edwards Deming können als Grundlagen agiler Software-Entwicklung - es sollte ursprünglich adaptive Software-Entwicklung heißen - angesehen werden. Statt einem groß angelegten statischen Plan bis zur Fertigstellung zu folgen wird eine inkrementell-iterative Vorgehensweise bevorzugt. Ein wesentliches Element ist die Selbstorganisation der Ausführenden. Dies ist ein krasser Widerspruch zu und die Abkehr vom bisher bevorzugten taylorischtischem Management mit der strikten Trennung zwischen Ausführung und Leitung. Es geht einher mit dem Wegfall der Aufgaben vieler Führungskräfte, weil hoch ausgebildete und intelligente Software-Entwickler weder Vorarbeiter noch Manager benötigen. Die Beschreibung einer Fragestellung ist ausreichend.

Und tatsächlich gibt es mit Skunk Works seit 1943 (!) ein Beispiel im Bereich der Entwicklung neuartiger Flugzeuge, welches seit langer Zeit und erfolgreich zeigt wie hinderlich tayloristisches Management für die Bewältigung komplexer Aufgabenstellung ist und wie man es besser machen kann. Innerhalb des Lockheed Unternehmens wurde eine spezielle Entwicklungsabteilung geschaffen, die sich gerade nicht an die sonst üblichen Regeln des Großunternehmens halten sollte und mußte. Man war überzeugt, daß dies der schnellen Entwicklung von speziellen Flugzeugen förderlich sein würde.

Man kann sich nun durchaus die Frage stellen warum auch nach über 80 Jahren die überwiegende Mehrheit der Unternehmen nicht dem Beispiel Skunk Works folgt, sondern stattdessen weiterhin fachfremde Personen wesentliche Entscheidungen in der Software-Entwicklung treffen und kleinteilig Aufgaben vorgegeben werden?

This article has been posted to social media sites. There might be comments. Just follow the links: