8 Punkte von GN⁺ 2025-08-15 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Effektive Softwareingenieure erstellen und pflegen ein klares mentales Modell der Anforderungen und des Codes und durchlaufen dabei eine Schleife, in der sie beides wiederholt vergleichen und aktualisieren
  • LLMs können Code schreiben und ändern, Tests verfassen und Debugging durchführen, haben aber Schwierigkeiten, ein präzises mentales Modell aufrechtzuerhalten, und geraten bei komplexen Aufgaben durcheinander
  • Aktuelle LLMs haben aufgrund von Context Omission, Recency Bias und Halluzinationen Grenzen dabei, Unterschiede zwischen Code und Anforderungen genau zu erkennen und passend zu korrigieren
  • Menschen können je nach Situation flexibel zwischen Denkweisen wechseln, etwa den Gesamtkontext vorübergehend speichern oder Details zeitweise ausblenden, um das große Ganze zu sehen; LLMs können das nicht umsetzen
  • LLMs sind für Aufgaben mit einfachen Anforderungen nützlich, aber bei komplexer Softwareentwicklung müssen letztlich Softwareingenieure selbst die Verantwortung für die Klarheit der Anforderungen und das Verhalten des Codes übernehmen; LLMs sind dabei Hilfswerkzeuge

Die Software-Engineering-Schleife

  • Erfahrene Ingenieure arbeiten, indem sie die folgenden Schritte wiederholen
    1. Ein mentales Modell der Anforderungen aufbauen
    2. Den Code passend zu diesem Modell schreiben
    3. Verstehen, was der geschriebene Code tatsächlich tut
    4. Unterschiede identifizieren und den Code oder die Anforderungen anpassen
  • Der Kern dieser Schleife ist die Fähigkeit, über ein präzises und wartbares mentales Modell zu verfügen

Grenzen von LLMs

  • LLMs können Code schreiben, Probleme erkennen und beheben, Tests schreiben und ausführen, Logging hinzufügen und Debugger verwenden
  • Weil sie jedoch kein mentales Modell aufrechterhalten können, treten Probleme wie die folgenden auf
    • Sie nehmen an, dass der von ihnen geschriebene Code gut funktioniert
    • Wenn Tests fehlschlagen, verlassen sie sich auf Vermutungen, ob der Code oder der Test korrigiert werden muss
    • Bei Verwirrung löschen sie den gesamten Code und schreiben ihn von Grund auf neu
  • Anders als Menschen fehlt ihnen die Flexibilität, bei fehlgeschlagenen Tests das Modell zu überprüfen und daraus die Richtung für Korrekturen abzuleiten oder sich im Gespräch aus einer Sackgasse herauszuarbeiten
  • Softwareingenieure führen während der Arbeit Tests aus und können bei Problemen klar beurteilen, welcher Teil angepasst werden muss
  • Manchmal führt sogar ein kompletter Neustart der Aufgabe zu einem tieferen Verständnis des Problems

Künftige Möglichkeiten

  • Künftige Modellfortschritte könnten daran etwas ändern, aber Software Engineering verlangt mehr als bloße Codegenerierung
  • Menschen können bei der Lösung wichtiger Probleme den Gesamtkontext vorübergehend aus dem Gedächtnis hervorholen, sich auf ein einzelnes Thema konzentrieren oder das große Ganze betrachten
  • Entscheidend ist nicht, Kontextinformationen immer weiter anzuhäufen, sondern benötigte Informationen selektiv zu verarbeiten
  • Funktionen, mit denen sich Kontext wie beim Menschen vorübergehend speichern und wiederherstellen lässt oder Denken zwischen Gesamtbild und Details wechselt, fehlen LLMs
  • Die wichtigsten aktuellen Einschränkungen von LLMs
    • Context Omission: Sie erkennen schlecht, wo benötigte Informationen fehlen
    • Recency Bias: Innerhalb des Kontextfensters gewichten sie die neuesten Informationen übermäßig stark
    • Halluzination: Sie erfinden Details, die nicht existieren
  • Speicherfunktionen könnten manches verbessern, doch ab einer gewissen Komplexität scheitern sie weiterhin an Kontextverständnis und Modellpflege
  • Es fehlt die Fähigkeit, zwei ähnliche mentale Modelle gleichzeitig aufrechtzuerhalten, Unterschiede zu analysieren und zu entscheiden, wo Anforderungen oder Code geändert werden müssen

Aktuelle Rolle und Nutzung

  • LLMs sind stark bei schneller Codegenerierung und der Integration von Anforderungen und Dokumentation und lassen sich daher für einfache, klar umrissene Aufgaben gut einsetzen
  • Bei nichttrivialen Problemen sind jedoch ausreichende Kontextpflege und iterative Verbesserung schwierig
  • Daher bleiben Anforderungsklärung und Codevalidierung weiterhin Verantwortung von Softwareingenieuren
  • Angestrebt wird eine Umgebung, in der Menschen und Agenten (LLMs) gemeinsam Software entwickeln, doch derzeit sollten Ingenieure die Führung übernehmen und LLMs als Werkzeuge nutzen

Noch keine Kommentare.

Noch keine Kommentare.