AIn't gonna be worth it
Autor: Oliver Hankeln
Datum:
Letzte Woche bin ich in einer Pause meines APS-SD mit dem technischen Leiter des Kunden ins Gespräch gekommen. KI in der Softwareentwicklung ist dort kein Thema - die Ergebnisse sind einfach nicht gut genug. Wir haben dann sehr schnell Parallelen zwischen KI-Code und Technical Debt entdeckt - in beiden Fällen erreiche ich sehr kurzfristig höheren Wert, allerdings auf Kosten der Fähigkeit, zukünftig weiter Wert liefern zu können.
In meinen Trainings verwende ich oft nebenstehendes Diagramm, um die Idee zu verdeutlichen:
Zuerst sind wir beeindruckend schnell, wenn wir die KI für uns arbeiten lassen. Doch dieser Code ist schlechter wartbar als Handgeschriebener. Deshalb nimmt die Fähigkeit, zusätzlichen Wert zu erzeugen, immer weiter ab und schon nach kurzer Zeit schneiden sich die beiden Kurven. Rechts vom Schnittpunkt wären wir besser dran, wenn wir Menschen den Code hätten schreiben lassen.
Das deckt sich mit meinen Erfahrungen. Als ich mit Vibe-Coding rungespielt habe, war ich zuerst echt beeindruckt. Da kommt nach einem Prompt ein lauffähiges Programm heraus, das sogar noch halbwegs gut aussieht. Und dafür habe ich nur ein paar Minuten gebraucht. Das macht Spaß.
Leider kommt die Ernüchterung sehr schnell danach. Manche Sachen hat die KI eben nicht so verstanden, wie ich es gemeint habe. Und jetzt muss ich anfangen, an Prompts zu feilen, um einem Computer zu erklären, was ich eigentlich will.
Das können wir aber eigentlich schon lange: Die Arbeit eines Entwicklers besteht daraus, zu verstehen, was gebraucht wird, das in einen Kontext zum bestehenden Produkt zu setzen, sich für einen Lösungsweg zu entscheiden und diesen dann dem Computer sehr genau zu erklären.
Die Schwierigkeit lag nie darin, die Funktionen in Programmiersprachen zu übersetzen - das ist simples Handwerkszeug eines Entwicklers. Die Schwierigkeit liegt in der Präzision, in der das geschieht und in der Entscheidung, welcher Lösungsweg am effizientesten, lesbarsten und veränderbarsten ist.
Mit sauber dokumentierten Programmiersprachen hatten wir Entwickler die Kontrolle darüber, was passiert. Jetzt sollen wir die gleiche Präzision in natürlicher Sprache herstellen, die dafür nicht gedacht ist. Kleines Beispiel: was passiert, wenn ich der künstlichen Intelligenz sage, dass sie das Kind auf der Strasse umfahren muss? Und: anders als in herkömmlichen Code können wir nicht in die KI reinschauen. Ein Prompt der heute funktioniert hat, macht morgen vielleicht etwas ganz anderes.
Und was nimmt uns die KI ab, wenn sie denn tut, was wir wollen? Nur den trivialen Schritt, die Algorithmen in Programmiersprache zu formulieren. Wir holen uns also einen Mittelsmann ins Boot, der (wenn überhaupt) nur ein sehr eingeschränktes Verständnis der Welt hat, dem wir dann mühsam erklären müssen, was wir haben wollen, damit der dann vergleichsweise schlecht wartbaren Code erzeugt.
Es scheint so, als gäbe es dieses Problem nicht nur in meiner Bubble. Bei Gitlab wird gerade überlegt, ob man die Funktion einführt, dass Projekte das Einreichen von Verbesserungsvorschlägen in Form von Pull Requests abschalten können - nicht, weil plötzlich so viele Leute mithelfen wollen, sondern weil so viel schlechter Code von KIs die Projekte überschwemmt und die Verantwortlichen der Slop-Flut nicht mehr Herr werden.
Damit will ich nicht sagen, dass KI grundsätzlich schlecht ist. Es gibt viele Anwendungsfälle wie z.B. automatische Bilderkennung die hervorragend funktionieren. Trotzdem habe ich das Gefühl, dass KI gerade der nächste Hype ist - genau wie die Blockchain vor ein paar Jahren, die dann zwanghaft in alle Produkte eingebaut werden muss - egal, ob es für die Kunden einen Wert hat oder nicht.
Wir benutzen teilweise auch KI, um unsere Texte feinzuschleifen oder Artikelbilder zu generieren. Der Glanz des Neuen ist da aber mittlerweile verflogen und es setzt sich bei uns immer mehr das Gefühl durch, dass solchen Texten und Bildern das Persönliche und Authentische fehlt. Deshalb ist dieser Artikel auch handgeschrieben und bebildert.
Vielleicht liege ich aber auch komplett falsch und KI funktioniert für das Schreiben von Software doch? Ich wäre sehr interessiert an euren Erfahrungen im professionellen Umfeld wo “nur” lauffähiger Code nicht ausreicht, sondern wartbarer, erweiterbarer und betreibbarer Code gefragt ist.