Cargo Cult Programming: Wenn Entwickler blind dem Code-Mythos folgen

Die Ursprünge des Cargo-Kults

In den weiten Inselwelten Melanesiens, östlich von Australien, entfaltete sich ab Ende des 19. Jahrhunderts ein faszinierendes Phänomen, das als Cargo-Kult in die Geschichte einging. Diese bemerkenswerte kulturelle Reaktion auf den Kontakt mit der westlichen Zivilisation offenbart tiefe Einblicke in die menschliche Natur und die Komplexität kultureller Begegnungen. Das Phänomen beschränkt sich jedoch nicht auf die Naturvölker Melanesiens, sondern findet sich auch in der Modernen wieder. Was ist aber so faszinierend am Cargo-Kult und wie entstand dieses spezifische Phänomen?

Die Wurzeln des Cargo-Kults reichen zurück bis in die Zeit der ersten Kontakte zwischen den indigenen Völkern Melanesiens und europäischen Kolonisatoren. Doch seinen Höhepunkt erreichte das Phänomen während und nach dem Zweiten Weltkrieg, als verschiedene Nationen in der Region militärische Stützpunkte aufbauten. Die Einheimischen, die bis dahin weitgehend isoliert gelebt hatten, sahen sich plötzlich mit einer Flut westlicher Güter und Technologien konfrontiert. Amerikanische und alliierte Streitkräfte errichteten Militärbasen, legten Landebahnen an und brachten eine Fülle von Waren – das sogenannte "Cargo" – auf die Inseln. Für die Inselbewohner erschienen diese Güter wie Geschenke der Götter oder Ahnen. Sie beobachteten, wie Flugzeuge landeten und Schiffe ankamen, beladen mit einer scheinbar endlosen Menge an Nahrungsmitteln, Kleidung, Werkzeugen und anderen Gegenständen, die ihr bisheriges Verständnis von Reichtum und Macht überstiegen. Die Melanesier interpretierten diese Fülle an Gütern im Rahmen ihrer eigenen Weltanschauung. Sie glaubten, dass ihre Ahnen oder Götter diese Waren geschickt hatten, und dass die Fremden lediglich als Mittler fungierten.

 

Die Entstehung der Kulte

Als der Krieg endete und die ausländischen Truppen abzogen, versiegte der Strom der Güter. In dieser Situation entstanden die eigentlichen Cargo-Kulte. Charismatische Anführer traten auf und versprachen ihren Anhängern die Rückkehr des "Cargo". Sie entwickelten komplexe Rituale und Praktiken, die darauf abzielten, die Gunst der Ahnen oder Götter zu gewinnen und so den erneuten Zufluss der begehrten Güter zu bewirken. Diese Kulte zeichneten sich durch eine faszinierende Mischung aus traditionellen Glaubensvorstellungen und der Nachahmung westlicher Praktiken aus. Die Anhänger bauten Nachbildungen von Flugzeugen aus Stroh, errichteten hölzerne Kontrolltürme und führten militärische Drills durch – alles in der Hoffnung, dadurch die Rückkehr des "Cargo" zu bewirken.

Cargo Cult Programming

Was hat das nun mit Softwareentwicklung zu tun? Ähnlich wie die Inselbewohner, die versuchten, den Wohlstand durch Nachahmung äußerer Formen herbeizuführen, gibt es in der Softwareentwicklung ein Phänomen namens "Cargo Cult Programming". Dieses beschreibt eine Praxis, bei der Entwickler Code oder Programmiermuster kopieren und anwenden, ohne deren zugrundeliegende Prinzipien oder Zweck zu verstehen.

Anzeichen von Cargo Cult Programming

  1. Kopieren ohne Verständnis
    Entwickler übernehmen Code aus Foren, Dokumentationen, Stackoverflow und jüngst ChatGPT ohne je zu hinterfragen, warum er funktionieren könnte.
  2. Blinde Anwendung von Mustern
    Immer gleiche Frameworks oder Design-Patterns werden eingesetzt, nur weil sie anderswo erfolgreich waren oder erzählt wurde, warum sie so toll sind.
  3. Überflüssiger Code
    Es wird Code hinzugefügt, der für die eigentliche Problemlösung nicht notwendig ist.
    "The object-oriented version of spaghetti code is, of course, 'lasagna code'. Too many layers." - Roberto Waltman
  4. Umbenennung ohne Umdenken
    Bestehende Rollen und Regeln werden einfach umbenannt, ohne die zugrundeliegenden Prinzipien anzupassen.

Auswirkungen auf die Softwareentwicklung

Die Folgen von Cargo Cult Programming können erheblich sein:

  • Ineffizienter und fehlerhafter Code
    Durch mangelndes Verständnis entstehen oft ineffiziente oder sogar fehlerhafte Lösungen.
  • Wartungsprobleme
    Code, der nicht vollständig verstanden wird, erschwert die Fehlersuche enorm und ist dem entsprechend schwerer zu warten und zu erweitern.
  • Technische Schulden
    Anwendung unnötiger oder falscher Entwurfsmuster kann zum Aufbau technischer Schulden beitragen durch unnötige Abstraktionen und hierdurch schlechtere Lesbarkeit.
  • Kommunikationsschwierigkeiten
    Entwickler ohne Fachverständnis haben häufig Schwierigkeiten den Code anderen zu erklären oder im Team zu diskutieren.

Cargo Cult Programming ist mehr als nur eine schlechte Angewohnheit. Es ist ein Symptom für mangelndes Verständnis und kann die Qualität und Langlebigkeit von Softwareprojekten ernsthaft beeinträchtigen. Um diesem entgegenzuwirken, ist es wichtig, eine Kultur des tiefen Verständnisses und des kritischen Denkens in der Softwareentwicklung zu fördern.

Wie man Cargo Cult Programming vermeidet

Um Cargo Cult Programming zu vermeiden, sollten Sie sich die Zeit nehmen, den Code zu verstehen, den Sie verwenden. Fragen Sie sich immer: "Warum funktioniert dieser Code so?" und "Was passiert, wenn ich diesen Teil ändere?" Hier sind einige praktische Tipps:

  1. Hinterfragen Sie den Code
    Verstehen Sie, warum etwas funktioniert, bevor Sie es anwenden. Das erfordert ein gewissen Maß an Reflektion und selbstkritischem Denken.
  2. Lernen Sie die Grundlagen
    Ein solides Verständnis von Programmierkonzepten und Paradigmen kann helfen bessere Entscheidungen zu treffen. (vgl. KI beim Go-Spielen geschlagen)
  3. Kommunizieren Sie im Team
    Diskutieren Sie Lösungsansätze und teilen Sie Wissen, beispielsweise mit Code-Reviews. Auch wenig erfahrene Kollegen sollten Code-Reviews durchführen um von anderen Erfahrungen profitieren zu können.
  4. Bleiben Sie neugierig
    Erforschen Sie neue Technologien und Methoden, um Ihr Repertoire zu erweitern. Oder ändern Sie den Code und beobachten Sie, wie sich die Änderungen auswirken. (vgl. hierzu Mutation Testing)

Cargo Cult Programming zu vermeiden, bedeutet, ein tieferes Verständnis für die Softwareentwicklung zu entwickeln. Es geht darum, nicht nur zu wissen, wie man etwas macht, sondern auch warum man es macht. Nur so können wir wirklich effiziente, wartbare und innovative Software erstellen.

Am Ende des Tages unterscheidet uns genau das von ChatGPT & Co.: Wir als menschliche Entwickler können eine Intention haben, warum wir etwas tun, wie wir es tun. Eine AI wird niemals eine konkrete Intention entwickeln können, sondern nur Vorgaben von außen interpretieren können!

In diesem Sinne, happy Copy & Pasting von Stackoverflow oder ChatGPT! ;-)

In unserem Kurs .NET - Moderne Architekturen und Designprinzipien lernen Sie genau das:

  • Welche der 53 Entwurfsmuster und noch mehr Prinzipien sind wirklich wichtig?
  • Wie entwerfe ich solide Architekturen, die nicht dem bloßen Selbstzweck dienen?
  • Was steckt hinter Domain Driven Design wirklich?
Kommentare sind geschlossen