Softwareentwicklung besteht zu einem grossen Teil darin, direktere und effizientere Wege zu finden, um Ideen in funktionierende Lösungen zu verwandeln. Stark vereinfacht gedacht, schreiben Entwickler Texte unter Berücksichtigung strenger Regeln, damit eine bestehende Software diese entweder in eine ausführbare Datei verwandelt (Compiler) oder direkt ausführt (Interpret). Dabei gibt es auch Werkzeuge, die eine Programmiersprache in eine andere umwandeln.
Heute gibt es eine neue Gruppe an unglaublich mächtigen «Code-Interpretern» und «Transpilern», welche direkt alle menschlichen Sprachen in all ihren Facetten unterstützt: Die sogenannten Large Language Models (LLMs). Manchmal mit den Begriffen KI oder AI zusammengefasst, sprechen wir konzeptionell gesehen von einer grossen Mengen an Zahlen, die man in einen relativ einfachen Algorythmus füttert. Auf der einen Seite werden Wörter hineingeschoben, auf der anderen Seite kommen mittlerweile unglaublich faszinierende Resultate heraus.
Die Technologie ist nicht neu. Deren Grösse, die Raffinesse des Trainierens und die Vorbereitung der Trainingsdaten hat 2022 und 2023 aber zu einem riesigen, unerwarteten Sprung geführt. Während die Sprachmodelle einst als «Best-Next-Word-Predicter» und plumpes Werkzeug abgestempelt wurden, entstehen in diesen Modellen nun Fähigkeiten, die nicht mehr komplett erklärt werden können.
Vorurteile: «Es macht Fehler»
Die Entwicklung der grossen Sprachmodelle ist momentan schneller, als die Aufnahmefähigkeit der Gesellschaft. Es ist so, als würden ein Tag nach dem Flug der Gebrüder Wright bereits die ersten Journalisten einen Passagierflug machen und berichten, dass das Flugzeug den Zeppelin nie ersetzen würde. Am nächsten Tag, wenn die Zeitung erscheint, sässen aber bereits einige der Leser in einem Düsenjet auf einem interkontinentalen Flug. Der Mensch bildet sich gerne schnell eine Meinung – so auch bei der KI.
Man hat Anfang 2023 vom kostenlosen ChatGPT-Modell 3.5 vielleicht suboptimale Antworten erhalten, sich aber nicht die Zeit genommen, das kostenpflichtige, aber um Meilen bessere 4.x-Model zu testen. Die Ergebnisse vieler erster Gehversuche waren damit unbefriedigend. Und eine Vielzahl von Medienberichten schlug in die gleiche Kerbe.
Dazu kommt eine enorm schnelle Entwicklung: Bei GPT4 konnte man anfangs gerade einmal 8000 Wörter (oder Tokens) als Kontext mitgeben, heute sind es bereits 100’000 Tokens. Somit kann eine Anfrage bereits beachtliche Code-Basen beinhalten.
Wichtig: Wer sich zum heutigen Stand ein Bild machen will, sollte unbedingt das neuste Modell GPT4 nutzen. Entweder über einen bezahlten ChatGPT-Account, Github Copilot oder über den Playground in der OpenAI Developer Platform. Das Geld ist es absolut Wert.
In der Software-Entwicklung eröffnet KI eine riesige Menge an Werkzeugen, Modellen und Anwendungsfällen. Jeden Tag kommen neue hinzu oder bestehende werden verbessert. Nachfolgend eine Reihe an Praxisbeispielen aus dem neuen, AI-gestützten Coding-Alltag.
Inline-Code-Unterstützung
Der offensichtlichste Einsatzbereich von KI in der Software-Entwicklung ist das Vervollständigen von Code. Dies kann in einem Editor wie VS Code geschehen oder direkt in einer IDE (integrierte Entwicklungsumgebung) wie IntelliJ. Dabei sendet eine Extension während dem Tippen den Code an ein Modell, welches dann Vorschläge zum Vervollständigen zurückgibt, die akzeptiert oder verworfen werden können.
Anstelle der bekannten einfachen Vorschläge, die man in fast jeder Entwicklungsumgebung bereits erhält, gibt die KI längere, komplexere und – wenn richtig genutzt – auch wesentlich bessere Vorschläge. Verstehen muss man den Code aber trotzdem und ein Gespür dafür entwickeln, wie und wo man effektive Vorschläge erhält. Zusätzlich bieten diese Lösungen direkt im Editor zusätzliche Funktionen und erklären, korrigieren, dokumentieren und refaktorieren ausgewählten Code.
Die stärkste Lösung in diesem Bereich ist Github Copilot, welcher neuerdings direkt das GPT4-Modell nutzt und ab 100 US-Dollar im Jahr zu haben ist (was sich X-fach lohnt). Es gibt viele Alternativen, von welchen unter anderem Amazon Codewhisperer, Tabnine oder Gitlab Duo erwähnenswert sind.
Es ist für jeden Software-Entwickler empfehlenswert, sich für einen ersten Monat eine Lösung wie Github Copilot zu beschaffen und bewusst immer wieder in der Arbeit anzuwenden (wie man es beispielsweise beim Lernen von Tastenkombinationen macht). Die Vorteile sind nicht von der Hand zu weisen.
Prompt-basiertes Generieren oder Überarbeiten
Ein weiterer Einsatzbereich von KI in der Programmierung ist das Generieren von grösseren Code-Segmenten auf Basis eines präzise verfeinerten Prompts (Aufforderung an das LLM). Dazu eignet sich etwa die bezahlte Version von ChatGPT oder auch der OpenAI Playground mit dem GPT4+-Modell bestens. Die Kunst besteht darin, einen möglichst klaren Prompt zu schreiben, die Lösung des Modells zu prüfen und den Prompt so lange zu verfeinern oder einen Folge-Prompt zu formulieren, bis die Lösung den Erwartungen entspricht. In der Praxis konnten so sowohl ganze Komponenten wie auch kleinere Software-Projekte generiert werden. Natürlich muss der Code geprüft werden, was letztlich aber auch für selbst geschriebenen Code von Entwicklern gilt.
Sehr gute Arbeit bei der Prompt-basierten Code-Generierung leisten LLMs, wenn man ihnen genug Kontext gibt und die Erwartungen klar absteckt. Als Kontext und Vorgabe eignen sich konkrete Code-Beispiele aus dem bestehenden Projekt, bereits definierte Datenstrukturen und Checklisten mit Infos, wie man sie auch neuen Entwicklern geben würde. Vermeintlich unpassende Antworten ziehen dabei zuweilen Frustration nach sich, entstehen aber meist, wenn man wichtige Informationen im Prompt vergessen hat, die das LLM nicht wissen kann. Hier müssen Entwickler auch über ihren Schatten springen und sich von alteingesessenen Mustern lösen können.
Es zeigt sich aber deutlich: Dank LLM-Unterstützung werden Software-Projekte möglich gemacht, die bisher aus zeitlichen und personellen Gründen nicht in diesem Umfang umsetzbar gewesen wären.
Code Review in der CI/CD Pipeline
Ein weiterer erwähnenswerter Einsatzbereich von KI ist das automatische Code-Review in CI/CD-Pipelines (Continuous Integration/Continuous Delivery). In der Praxis übernimmt etwa ein kleines, selbst entwickeltes Modul einen zusätzlichen Testschritt: Alle relevanten Code-Änderungen werden mit einem optimierten Prompt an GPT4 gesendet, und wenn das LLM-Review fehlschlägt, dann schlägt auch die Pipeline fehl und man erhält eine exakte Liste, was GPT4 beanstandet.
Fragen, diskutieren, debuggen
Die KI steht also als ständiger Helfer beim Coden bereit und hat sogar beim Verfassen des vorliegenden Artikels mitgeholfen, indem mit Github Copilot Chat beim Schreiben über den Inhalt diskutiert wurde. Diese rege Interaktion kann auch beim Programmieren genutzt werden: Man kann einer KI Fehlermeldungen und Code-Schnipsel übergeben, um eine neue Lösungsrichtung zu erhalten. Man kann längere Diskussionen führen und sich genau erklären lassen, wie eine Technologie funktioniert oder aufgebaut ist.
Damit ersetzt der KI-Chatbot in vielen Fällen die Internet-Suchmaschine, das Lesen des originalen Source Codes einer Bibliothek oder deren Dokumentation. Eine Dokumentation kann sogar am Stück in den Chatbot kopiert und dieser im Anschluss zum Inhalt befragt werden. Die Ergebnisse sind erstaunlich oft korrekt. Gerade wenn man zwei separate Lösungen zusammen betrachten will, bieten LLMs sehr viel effiziente Wissensbereitstellung.
Muss man verstehen, was da steht? Absolut! Es gilt: Je weniger man über ein Thema weiss, desto genauer muss man auch prüfen, ob die Antwort stimmt. Das gilt aber genauso für Informationen von Stackoverflow, Google oder aus Dokumentationen.
Von «Manager» zu Manager
Es ist also empfehlenswert, sich diese KI-Hilfsmittel zum Programmieren zunutze zu machen. Dafür sollten im Team pragmatische Entwickler ausgewählt werden, die offen für die Nutzung von Github Copilot und ChatGPT4 sind. Sie sollen damit beginnen, die Tools aktiv in Projekten zu nutzen und zum Beispiel ein bis zwei Mal im Monat Hands-On-Beispiele mit dem Rest des Teams anzuschauen.
Eine weitere Empfehlung: Es lohnt sich nicht, bei den Abos und Bezahlversionen der KI-Lösungen zu sparen, wenn die Mitarbeiter diese nutzen möchten. Als Verantwortlicher sollte man den Lead übernehmen, den Rahmen abstecken und diese Werkzeuge proaktiv einführen. Dies ist besser, als eine «inoffizielle» unkoordinierte Nutzung der Modelle.
Es braucht nach wie vor Entwickler
Man fragt sich angesichts dieser Hilfsmittel: Macht die KI damit nun Entwickler überflüssig? Eine Gegenfrage: Warum werden die meisten Business-Applikationen heute nicht direkt durch die Fachabteilungen mit sogenannten Low-Code-Lösungen gebaut? Es gibt unzählige, absolut grossartige Lösungen, bei denen man kaum noch entwickeln muss.
Natürlich werden Entwickler, welche KI-Werkzeuge nutzen, ihre Effizienz stark steigern können. Es gibt aber in fast jedem Software-Projekt stetig wachsende Erwartungen an gewünschte Funktionen, nötige Optimierungen, wichtige Qualitätssteigerungen und neues Know-how. Die Zeit, welche durch AI gewonnen wird, hilft letztlich dabei, diese Erwartungen besser zu erfüllen.
Es wird jedoch einen spürbaren Graben geben zwischen Entwicklern, die AI-Werkzeuge aktiv einsetzen, und denjenigen, die dies nicht tun. AI wird die Unterschiede betreffend Effizienz zwischen Entwicklern teilweise relativieren (wenn es um reines Know-how geht) und teilweise extrem verstärken (wenn es um Offenheit für Neues geht).
Der Autor
Seit Ende der 90er ist Jonas Felix in der Software- und Systementwicklung aktiv, hat mehrere Unternehmen erfolgreich aufgebaut und wieder verkauft. Sein Herz ist und bleibt aber bei der Hands-On-Entwicklung und der Mitarbeit in Open-Source-Projekten. So führt er seit 2016 den Trainings- und Coaching-Anbieter
Letsboot.ch, bei dem er regelmässig selbst Kurse entwickelt und durchführt.