Programmieren mit KI
Generative-AI-Praxistipps von Entwicklern
Generative AI hat einen neuen technologischen Goldrausch ausgelöst. Dabei richtet sich viel Aufmerksamkeit auf KI-Tools, die natürlichsprachliche Inhalte oder visuelle Kunst produzieren. In Technologiekreisen steigt insbesondere auch das Interesse an KI-Coding-Tools. Dabei fasziniert und beängstigt es gleichermaßen, einem ChatbotChatbot die gewünschte Applikation zu beschreiben - um sie Sekunden später in Form von ausführbarem Code auf dem Silbertablett serviert zu bekommen. Alles zu Chatbot auf CIO.de
Geredet und geschrieben wird zum Thema bekanntlich viel - insbesondere aus Sicht von Führungskräften, Beratern und Fachexperten. Deshalb wollten wir wissen, was die Entwickler zum Thema zu sagen haben, die bereits in der Praxis mit KI programmieren.
Programmieransätze mit Gen AI
Die Entwickler, mit denen wir gesprochen haben, verwenden entweder ChatGPT oder GitHub Copilot. Beide ToolsTools sind in der Lage, Code auf der Grundlage von natürlichsprachlichen Anweisungen zu generieren. Allerdings gehen Copilot (und sein experimenteller Nachfolger Copilot X) noch einen Schritt über das Konversationsmodell hinaus. Sie fungieren als eine Art aufgemotzte IDE mit Autovervollständigung, die "antizipiert", woran Entwickler gerade arbeiten. Alles zu Tools auf CIO.de
Vanessa Freudenberg, Mitbegründerin und Chefarchitektin von Croquet.io, nutzt GitHub Copilot bei ihrer täglichen Arbeit - im Zusammenspiel mit Visual Studio Code. Die Entwicklerin klärt über den wesentlichen Benefit anhand eines praktischen Beispiels auf: "Wenn ich die Zeile let x = this.leftMargin + this.width / 2;
schreibe, wird automatisch die nächste Zeile vorgeschlagen: let y = this.topMargin + this.height / 2;
Dabei weiß die KI, dass "width
" und "left
" durch "height
" und "top
" zu ersetzen sind. Das spart mir eine Menge Tipparbeit."
Auch Panickos Neophytou, Mitbegründer und CTO von NetBeez, outet sich als täglicher Nutzer von Copilot X und ChatGPT - und beschreibt zwei verschiedene Ansätze, um mit den KI-Tools über den Autocomplete-Tellerrand hinauszublicken. Der erste ist systematisch: "Beschreiben Sie eine gut definierte Funktion mit spezifischen Inputs, Beispielen für erwartete Outputs sowie die beteiligten Datenmodelle, zu denen auch Datenbanktabellen mit impliziten Verknüpfungen gehören. Die KI kann die Zusammenhänge im Allgemeinen ableiten." Davon abgesehen könne auch eine zwanglosere Methode gute Ergebnisse bringen, wie der CTO aus Erfahrung weiß: "Während Sie einen Task ausführen, stellen Sie einfach die Fragen, die Ihnen gerade in den Kopf kommen. Das ist ein bisschen so, als würde ein erfahrener Engineer neben Ihnen sitzen und Ihre Fragen beantworten."
Unabhängig davon, welche Methode Entwickler verwenden - es ist eine Kunst, Generative AI richtig zu steuern, wie Shanea Leven, Gründerin und CEO des Softwareanbieters CodeSee, bestätigt: "Die Wahl der richtigen Verben und Beschreibungen sind essenziell, um gute Prompts zu erstellen."
Programmieren mit KI - Vorteile
Im Folgenden einige Anwendungsfälle, bei denen Generative-AI-Tools Softwareentwickler im Alltag unterstützen können.
Dokumentation aus Code generieren
Weil Software-Dokumentationen im Regelfall ein ziemlich strukturiertes Format darstellen, funktioniert KI in diesem Bereich gut, wie Chris Love, Gründer der Web-Beratung Love2Dev, unterstreicht: "Ich verwende ChatGPT vorzugsweise, um meinen Code mit Dokumentation oder Kommentaren zu versehen. Das sind Aufgaben, die normalerweise viel Zeit kosten, wenn man sie manuell erledigt. Mit KI ist es eine Sache von ein oder zwei Sekunden."
Code aus Dokumentation erstellen
Dieses Konzept lässt sich auch umdrehen: KI kann auch Code auf der Grundlage von Kommentaren oder Dokumentation generieren. Ein Kommentar wie:
// get file name from our url
resultiert etwa im Fall von GitHub Copilot in diesem Output:
let fileName = window.location.pathname.split ("/").pop();
"Ich hätte das vermutlich etwas anders geschrieben - ich bin einfach ein Regex-Girl", kommentiert Freudenberg und fügt hinzu: "Nichtsdestotrotz ist dieser Output eine einfache und lesbare Lösung, die ich akzeptieren würde. Dabei geht es nicht nur darum, Zeit zu sparen - manchmal komme ich durch KI auch auf Idiome, auf die ich selbst nicht gekommen wäre."
Gelöste Probleme
Entwickler wissen: Ein Teil ihrer Arbeit besteht darin, das Rad beständig neu zu erfinden. Und es kann frustrierend sein, an einer Problemlösung zu arbeiten, von der man genau weiß, dass es sie irgendwo schon gibt. Nach Ansicht von Jeff Wills, Engineering Practice Lead beim Softwareanbieter Rise8, sind das Tasks, die nach geradezu nach Generative-AI-Unterstützung schreien: "Angenommen, ich entwickle eine Methode, um den Abstand zwischen zwei Punkten auf einer Kugel zu berechnen. Dann findet Copilot automatisch den Haversinus-Algorithmus und generiert den zugehörigen Code."
Besonders praktisch sei dieses Vorgehen, wenn die Alternative zu KI-generiertem Code sei, eine umfassende Bibliothek zur Anwendung hinzuzufügen, so der Softwareexperte: "Eine vollständige Geometriebibliothek in meinen Code einzufügen, würde die Codebasis aufblähen. Das macht keinen Sinn, wenn ich wirklich nur diesen einen Algorithmus brauche. Es bleiben also zwei Optionen: Entweder ich schreibe den Algorithmus einfach selbst, oder ich nutze ChatGPT respektive Copilot, um mich dabei zu unterstützen."
Code aktualisieren oder bereinigen
Love hingegen findet Generative-AI-Tools besonders nützlich, um bereits geschriebenen Programmcode zu aktualisieren: "Ich habe mit ChatGPT alte Node.js-Module aktualisiert. Dafür hatte ich zuvor keine Zeit übrig."
Schneller programmieren (?)
Mit KI zu programmieren, beschleunigt darüber hinaus die Dev-Arbeit - zumindest ist das die Wahrnehmung unserer Gesprächspartner: "Ich glaube, es hilft mir, schneller besseren Code zu schreiben", meint beispielsweise Love und spezifiziert: "Das ist relativ schwer zu quantifizieren, aber ich für mich persönlich greifbar."
Auch Wills hat das Gefühl, schneller durch mögliche Lösungen iterieren zu können: "Es beschleunigt nicht nur die Arbeit, sondern ermöglicht auch, mehr potenzielle Lösungen zu betrachten. Letztlich profitiert also nicht nur das Zeitgefüge, sondern auch die Qualität."
Programmieren mit KI - Fallstricke
Trotz der allgemeinen Begeisterung für Generative AI im Bereich der Softwareentwicklung: Die Experten sind sich darüber bewusst, dass KI-Systeme diverse Fallstricke bereithalten.
Programmieren mit KI - nicht ohne Grundlagen
Auch wenn KI-Chatbots "magisch" erscheinen - damit sie zu den gewünschten Ergebnissen führen, brauchen sie Input, der so spezifisch wie möglich ist.
Liam Edwards, CEO einer Web-Design-Firma, erklärt: "Momentan müssen Sie den Tools so viele Informationen wie möglich über Ihr Programmierproblem geben. Wenn ich zum Beispiel die Anweisung geben würde: 'Schreibe mir benutzerdefinierten CSS-Code, der den Hintergrund der Schaltfläche weiß macht', würde ich einen Code erhalten, der vielleicht funktioniert. Der Prompt 'Schreibe mir benutzerdefinierten CSS-Code, der den Hintergrund einer Schaltfläche weiß macht (die Klasse der Schaltfläche ist .button)', würde eine wesentlich genaueren Output liefern."
Das verdeutlicht nach Meinung von Edwards einen entscheidenden Punkt, wenn es darum geht, mit KI zu programmieren: "Man braucht Erfahrung und Knowhow, um das Maximum aus diesen Tools herauszuholen. Ein Anwender, der nicht gut coden kann, wird auch mit Generative AIGenerative AI länger brauchen und am Ende weniger gute Qualität liefern." Alles zu Generative AI auf CIO.de
Einfache Tasks bevorzugt
Peter Surowski, CTO der Webdesign- und Entwicklungsagentur Brain Jar, nutzt KI-Tools ebenfalls zu Coding-Zwecken, relativiert jedoch: "Aber nur für kleine Aufgaben, für die ich sonst Google nutzen würde - etwa wenn ich Standardcode brauche, um etwas einzurichten. Oder wenn mir kurzfristig entfallen ist, wie eine switch
-Anweisung in einer bestimmten Programmiersprache zu schreiben ist. Für alle Aufgaben, die darüber hinausgehen, ist Generative AI nutzlos."
Auch Leven sieht derzeit einen noch limitierten Aufgabenbereich für Gen AI in der Softwareentwicklung - allerdings rechnet sie fest damit, dass sich das in Zukunft grundlegend ändern wird: "Der echte Mehrwert wird entstehen, wenn es möglich ist, Fragen zur spezifischen Codebasis eines Unternehmens zu stellen und dann die KI die eigentliche Aufgabe erledigen zu lassen. Das wird ein echter Wendepunkt."
Testing ist obligatorisch
Die meisten Softwareentwicklungsteams setzen inzwischen auf Systeme, bei dem ihr Code umfangreiche, automatisierte Testreihen durchlaufen muss, bevor er in die Produktion geht. An dieser Stelle bildet KI-generierter Code keine Ausnahme.
Das ist zwar nicht per se ein Nachteil, kann aber für Enttäuschung bei denjenigen sorgen, die unrealistische Vorstellungen davon haben, was die Technologie leisten kann, unterstreicht Love: "Natürlich müssen Sie auch KI-generierten Programmcode vollumfänglich überprüfen und testen. Es gibt zu viele Entwickler, die in der Vergangenheit das, was auf Stack Overflow steht, als richtig akzeptiert haben. Das dürfte sich mit ChatGPT nicht anders verhalten."
Mit ChatGPT oder GitHub Copilot erzeugten Code also einfach im Copy-Paste-Verfahren übernehmen ist nicht - im Gegenteil: "Meistens muss der Code noch ein wenig verfeinert werden - aber immerhin nicht grundlegend neu geschrieben", meint Neophytou.
Security im Auge behalten
Jede neue Technologie, die dazu genutzt wird zu programmieren, öffnet unweigerlich eine Angriffsfläche für böswillige Akteure. Die Folgen sind dabei nur schwer abzuschätzen. In einem aktuellen Beispiel taten Security-Forscher eine Möglichkeit auf, Schadcode über ChatGPT-Hallizunationen zu verbreiten.
In gewisser Weise dienen die aktuellen Einschränkungen von Generative AI als eingebaute Sicherheitsschranken, meint Love: "Die Größenbeschränkungen für Token oder Prompt/Response bieten meiner Meinung nach eine Art Schutz vor bösartigem Code, weil das Entwickler dazu zwingt, alles in kleinen Häppchen zu überprüfen." (fm)
Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.com.