Ist KI der bessere Softwareentwickler?

Es ist wenig überraschend, dass mit den überraschenden Ergebnissen der generativen Künstlichen Intelligenz in den letzten Monaten der Gedanken aufgetaucht ist, dass die Entwicklung von Software selbst bald schon von den Large Language Models (LLM) übernommen werden kann. Visionäre populäre Vorstellungen von Maschinen, die selbst Maschinen konstruieren, treffen hier mit plausiblen Überlegungen über die Voraussetzungen und Prinzipien erfolgreicher KI-Systeme zusammen: In den letzten Jahrzehnten hat sich eine riesige Menge von Softwarecode in frei verfügbaren oder jedenfalls gut erschließbaren Repositories angesammelt, zugleich gibt es gut gepflegte Plattformen, auf denen Softwareentwickler aus aller Welt Lösungen für Programmieranforderungen bereitstellen. All das kann man nutzen, um ein LLM zu trainieren, das dann entsprechende Anfragen mit der Bereitstellung von brauchbarem Code beantwortet.

Zweifellos wird das der Softwareentwicklung Produktivitätsgewinne bringen, wobei man sich schon ganz genau anschauen muss, wie ein Programmierer heute Ideen und Lösungsansätze für einzelne Herausforderungen eines komplexen Softwareprojektes recherchiert und in seine Entwicklungsarbeit einfließen lässt. Ob der Vorschlag einer KI da tatsächlich besser ist als die Hilfestellungen anderer Entwickler, die sich auf den verschiedenen Portalen finden lassen – und auf denen ein LLM letztlich aufbaut – sei dahingestellt.

Die Erwartung, dass LLMs in kurzer Zeit professionelle Softwareentwickler nahezu überflüssig machen, zeugt aber vor allem von falschen Vorstellungen über die Arbeit, die tatsächlich insbesondere in einem individuellen Softwareprojekt steckt.

Anforderungs-Analyse braucht den verständnisvollen Dialog

Da ist zunächst die Erarbeitung eines gemeinsamen Verständnisses von den Anforderungen und Zielen des Kunden. Hier muss viel implizites Wissen durch den erfahrenen Entwickler, der die Anforderungen spezifiziert, abgerufen und strukturiert werden. Anders gesagt: die Anforderung, die ein LLM als Prompt verstehen könnte, muss ja erst einmal so formuliert werden, dass sie tatsächlich vollständig und eindeutig ist. Sodann muss eine Softwarearchitektur erdacht werden, die eine wartungsfreundliche, erweiterbare und änderbare Lösung ermöglicht. Ein großer Teil der professionellen Softwareentwicklung besteht immer in der Berücksichtigung und Einarbeitung von Änderungswünschen. Das wird so schnell auch nicht anders werden, denn ob die Software für die Praxis wirklich geeignet ist, zeigt erst der Test in der Praxis. Nicht die Produktion von neuem Code ist die wichtigste Aufgabe professioneller Softwareentwicklung, sondern die Änderung und Erweiterung von bestehendem Code.

Guten Code schreiben, der wartbar ist

Von Anfang an eine Software so zu schreiben, dass sie auch geändert werden kann und dass noch nach Monaten verständlich ist, was sie genau tut, das ist nur mit der Erfahrung und der Ausbildung von Informatikern möglich. KI-Quellcode löst zwar oft ein konkretes Einzelproblem und ist somit auch nützlich als Vorlage, muss aber durch verantwortungsvolle Entwickler so geändert werden, dass er zu den Richtlinien der Wartbarkeit passt. Sonst entsteht sogenannter Spaghetti-Code oder ein Kartenhaus aus Codezeilen, das zusammenfällt, sobald man daran etwas ändern muss.

Schließlich gehören zum Softwareprojekt die verschiedenen Teststufen. Die Arbeit des Testers beginnt bei der Überlegung, welche Fehlersituationen auftreten können, und welche Testdaten gebraucht werden, welche Testfälle ausgeführt werden müssen. Auch hier ist natürlich denkbar, dass KI unterstützt, aber mit einem einfachen LLM ist es da eben nicht getan. Den Benutzer bei den Tests zu beobachten, seinen suchenden Blick beim ersten Versuch, mit der Software einen Geschäftsprozess abzubilden, die Reihenfolge seiner Interaktionen nachzuvollziehen – auch da dürfte der Mensch mit allen seinen Sinnen, der Entwickler, der selbst auch Anwender ist, auf lange Sicht unverzichtbar sein.

Fazit

Künstliche Intelligenz wird die Softwareentwicklung unterstützen können. Wer stabile und benutzerfreundliche, wartbare und gut getestete Software für die Unterstützung von Geschäftsprozessen braucht, sollte in den nächsten Jahren aber nicht zu viel von Generativen KI-Systemen erwarten. Sonst läuft man Gefahr, Software zu bekommen, die zwar billig produziert ist, deren Betriebs- und Wartungskosten aber hoch sind und die kaum an neue Anforderungen angepasst werden kann. Und gerade das wird auch in Zukunft immer wichtiger sein.