home

Die unendliche Software‑Krise: Einflüsse von KI und Komplexität

Schlüssel­schlussfolgerung

Die unendliche Software‑Krise entsteht, weil Entwickler „einfach“ (leicht zugänglich) mit KI‑generiertem Code auf Kosten von „simpel“ (verständlicher und strukturiert) vorgehen. Dadurch wächst die Komplexität, die letztlich die Wartung und Weiterentwicklung des Systems behindert.

Zusammenfassung

Historischer Kontext

  • 1968 prägte der Begriff „Software‑Krise“ die Angst, dass Software immer unüberschaubarer wird.
  • Jede Generation („C“, persönliche Computer, OO‑Programmierung, Agile, Cloud, AI) hat den scheinbaren Fortschritt gebracht, aber gleichzeitig die Komplexität erhöht.

Konzept der Einfachheit vs. Einfachheit

  • Rich Hickey unterscheidet „simple“ (einfach strukturiert, keine Entanglements) von „easy“ (lokal, schnell zugänglich).
  • Entwickler wählen oft die „easy“-Lösung, weil sie unmittelbar nutzbar ist, während „simple“ mehr Entwurf erfordert.

KI‑generierter Code

  • KI‑Tools (Copilot, Cursor, Claude, Gemini, etc.) liefern sofort Code, fördern den „easy“-Pfad.
  • Der erzeugte Code behandelt jeden Code‑Abschnitt gleich und bewahrt alle Muster – auch alte, veraltete.
  • Technical Debt wird nicht als Schuld erkannt, sondern als weiteres Muster.

Komplexität

  • Komplexität ist das Gegenteil von Einfachheit – alles ist verflochten.
  • Fred Brooks’ Unterscheidung:
    • Essential Complexity: Grundlegende, notwendige Problem‑Komplexität.
    • Accidental Complexity: Zusätzliche Komplexität, die durch Work‑ARounds, Frameworks etc. entsteht.
  • KI erzeugt keine Unterscheidung, wodurch accidental complexity konstant wächst.

Gefahren für Wartbarkeit

  • Kleine AI‑Änderungen können unabsichtlich Architektur‑ oder Logik‑Entwürfe zerstören.
  • Beispiel bei Netflix: Umstieg von einer alten Authorisierungslösung zu einer neuen zentralen, doch die KI verliert den Kontext und führt zu chaotischen Refactorings.

Lösung

  • Nicht die KI‑Denken auslagern – Entwickler müssen weiterhin die Probleme verstehen.
  • Fokus auf strukturierte, „simple“ Codierung, regelmäßiges Refactoring und Bewusstsein der Unterscheidung zwischen essential und accidental complexity.

Schlüssel‑Botschaft

  • Die moderne Softwareentwicklung lebt von Geschwindigkeit, aber ohne Verständnis wächst die Komplexität unkontrolliert.
  • Die einzige nachhaltige Lösung ist, bewusst „simple“ zu bleiben und nicht ausschließlich auf den „easy“ Weg zu vertrauen.

Related queries

  • Wie unterscheidet sich die Definition von “simple” und “easy” bei der Nutzung von KI‑Tools in der Softwareentwicklung?
  • Welche Rolle spielt Fred Brooks’ Begriff der “Accidental Complexity” für die Wartbarkeit von durch KI generiertem Code?
  • Welche Maßnahmen können Teams ergreifen, um zu verhindern, dass KI‑generierter Code die bestehende Architektur übermäßig komplex macht?

Quelle: https://www.youtube.com/watch?v=IoohUmYpGI