GitHub Copilot im Einsatz: Ein Einblick in das KI gestützte Entwicklungs-Experiment

KI in der Entwicklung

Einleitung & Motivation

In der rasanten Welt der Softwareentwicklung sind Tools, die die Produktivität steigern, Gold wert. GitHub Copilot hat als KI-gestützter Code-Generator und Assistent viel Aufmerksamkeit erregt. Um seinen wahren Wert zu messen, haben wir CoPilot in einem Experiment unter die Lupe genommen. Unser Ziel war es, herauszufinden, ob und wie CoPilot unsere Entwicklungsprozesse und vor allem die Produktivität verbessern kann. In diesem Beitrag teile ich detaillierte Ergebnisse und Interpretationen aus diesem Experiment.

Was ist GitHub Copilot

GitHub Copilot ist ein von GitHub und OpenAI entwickeltes KI-gestütztes Entwicklungs-Tool. Es handelt sich dabei um eine KI-Codevervollständigung, die Entwicklern dabei hilft, Code schneller zu schreiben, indem es automatisch Codevorschläge generiert. Copilot wurde erstmals im Juni 2021 von GitHub und OpenAI angekündigt.

Die Funktionsweise von GitHub Copilot beruht auf der GPT (Generative Pre-trained Transformer)-Technologie, insbesondere auf der GPT-3-Architektur von OpenAI. Copilot analysiert den Kontext des vom Entwickler geschriebenen Codes und schlägt dann automatisch Codefragmente vor, die den gewünschten Anforderungen entsprechen.

Entwickler können GitHub Copilot als Erweiterung in ihrer bevorzugten integrierten Entwicklungsumgebung (IDE) verwenden. Es unterstützt eine Vielzahl von Programmiersprachen und ist dazu gedacht, Entwicklern dabei zu helfen, produktiver zu arbeiten, indem es ihnen eine Art "kollaborativen" Ansatz für die Codeerstellung bietet.

 

Die Rahmenparameter

CoPilot Version und Integration:

Wir haben Github Copilot Business als Plugin in PHP Storm verwendet.

CoPilot Features

1. KI-gestützte Autocompletion beim Tippen.

Eingabe:

Ausgabe:

2. KI-gestützte Autocompletion mit Verwendung von Kommentaren

Hier ist ein einfaches Beispiel. Mittels der Kommentarfunktion kann man aber auch ganze Klassen generieren lassen, die dann als erstes Konstrukt für den finalen Code verwendet werden können.

Eingabe:

Ausgabe:

Das Team

Unser Team erhält für jeden der 5 Entwickler eine Lizenz für GitHub Copilot. Im Zeitraum des Experiments (1.07.2023 - 31.01.2024) waren im Team sowohl Junioren als auch Senioren.

Jeder Entwickler hat sich selbst darüber informiert, wie er/sie mit Copilot arbeiten kann.

  • Projekt- und Teamkontext: Das Team hat Copilot im aktiven Projektgeschäft für 2–3 Projekte verwendet und arbeitet seit Jahren mit Kanban. Während der Phase des Experiments wurden regelmäßig Retrospektiven gemacht, die zu weiteren Experimenten parallel zu diesem geführt haben.
  • Erfolgskriterien: These: Wenn Copilot eine Verbesserung von 10 % in folgenden Metriken erzielt, erachten wir das Experiment als erfolgreich:
  • Leadtime: Bei der Leadtime-Metrik haben wir nur den Zeitraum ausgewertet, auf den Copilot Auswirkungen hat. Konkret wird die Zeit (Bearbeitungs- + Liegezeit) gemessen, die ein Ticket benötigt, vom Start der Entwicklung bis das lokale Testing durch eine zweite Person erfolgreich war. Die Zeiten für Deployment und weiteres Testing durch Entwickler, POs und Kunden werden somit nicht berücksichtigt.

Als gemessenen Tickettypen haben wir Stories ausgewählt, da diese den meisten Programmieraufwand beinhalten. Folgende Grafik zeigt das TechDivision Lead Times Dashboard mit exemplarischen Daten:

  • Reduzierung der durchschnittlichen Bearbeitungsdauer eines Tickets pro Tickettyp: Diese Metrik soll den Aufwand pro Ticket pro Tickettyp ermitteln, um zu prüfen, ob sich dort eine Veränderung aufzeigt. Hier wurden nur die Worklogs der Entwickler auf Tickets im Status "In Progress" betrachtet.
  • Ablehnung der Tickets/Rejection Quote: Diese Metrik ist ein Versuch zu messen, ob Copilot eine Auswirkung auf die Codequalität aufzeigt. Die Ablehnung wird gemessen, wenn ein Ticket aus dem Second-Dev-Test oder vom Kunden zurückgewiesen wurde. Als zusätzliche Metrik haben wir das Aufkommen von Blocker-Tickets aufgenommen. Ein Blocker-Ticket entsteht, wenn auf einem Live-System ein Fehler auftritt, der die User daran hindert, den Shop normal zu nutzen. Solch kritische Probleme sind insbesondere falsche Preise oder ein nicht funktionierender Check-out.
  • Subjektive Meinung der Entwickler: Um zu prüfen, ob das Tool gerne genutzt und als hilfreich und produktivitätssteigernd wahrgenommen wurde, musste jeder Entwickler seine Erfahrungen auf täglicher Basis von 1 bis 4 bewerten (1 = sehr negativ, 4 = sehr positiv).

 

Konkrete Ergebnisse

Für die Messungen wurden die beiden siebenmonatigen Zeiträume 1.07.2023 - 31.01.2024 und 1.12.2022 - 30.06.2023 verglichen.

Lead-Time und Ticketdauer

Die Lead-Time für Stories hat sich um 2 Tage erhöht, was einer Verschlechterung von 9,5 % entspricht. Zudem zeigt die durchschnittliche Dauer eines Tickets keine Verbesserung, was darauf hindeutet, dass Copilot unsere Effizienz in diesen Bereichen nicht steigern konnte.

Ablehnungsrate und Blocker-Tickets

Interessanterweise stieg die Ablehnungsrate von Tickets beim Second Dev Testing nach der Einführung von Copilot signifikant an – von 17,79 % auf 26,69 %. Zudem erhöhte sich auch die Ablehnungsrate beim Testing des Kunden von 3,36 % auf 9,65 %.

Dies ist aber aller Wahrscheinlichkeit nach auf ein anderes Experiment zurückzuführen, das fast gleichzeitig mit diesem Experiment gestartet hat. Dabei wurden die Qualitätskontrollen verbessert und präzisere Testverfahren innerhalb des Teams und bei unseren Kunden eingeführt.

Des Weiteren blieb der Anteil der Tickets mit der Priorität "Blocker" mit einem minimalen Rückgang von 4,72 % auf 4,63 % nahezu unverändert.

Subjektive Bewertungen

Die Entwickler wiesen auf die Nützlichkeit von Copilot bei repetitiven Aufgaben und die einfache Implementierung von nativen PHP-Funktionen hin. Kritik gab es hauptsächlich bei der Genauigkeit komplexerer Code-Vorschläge und der potenziellen Ablenkung durch unpassende Vorschläge.

Grundsätzlich war der durchschnittliche Wert der täglichen Befragung bei 3,48. Dies ist als sehr positiv zu bewerten.

Interpretation der Ergebnisse

Beim Auswerten der Metriken ist aufgefallen, wie schwierig es ist, aus den Metriken etwas über das Experiment mit GitHub Copilot auszusagen. Im aktiven Projektgeschäft gibt es sehr viele Einflussfaktoren, die das Auswerten der Metriken erschweren. Veränderungen von Teamgröße oder Ticketumfang sind nur ein paar von vielen dieser Einflussfaktoren.

Obwohl die Entwickler sehr zufrieden mit Copilot waren, deuten die Ergebnisse der gemessenen Metriken zunächst auf eine Verschlechterung der Produktivität und Qualität hin. Allerdings gibt es einen weiteren Aspekt, der sich erst beim Auswerten der Metriken erschlossen hat, nämlich worauf genau Copilot Auswirkungen hat: Code schreiben.

Effektiv schrieben die Probanden Code nur zwischen 2 und 12 % des gebuchten Aufwandes eines Tickets. Codeschreiben wird hierbei definiert als reine Tipparbeit, da der Copilot in der aktuellen Version als KI-gestützter Autocompleter fast ausschließlich dabei unterstützt. Die restlichen 90 % ist die Zeit, die ein Entwickler benötigt, um die Anforderungen des Tickets zu verstehen und zu recherchieren, wie diese umgesetzt werden müssen.

Die Erkenntnis, dass Copilot sich hauptsächlich auf den geringen Anteil von ca. 2–12 % auswirkt, interpretieren wir dahin, dass der Einfluss von Copilot schlicht zu gering ist, um in den Metriken ersichtlich zu sein.

Fazit

Das Experiment hat gezeigt, dass der Einsatz einer KI gestützten Code-Completion alleine nahezu keinen messbaren Einfluss auf die Softwareentwicklung im Projektgeschäft hat. Die von uns ursprünglich angedachten Metriken haben sich als nicht geeignet herausgestellt, Rückschlüsse auf den Mehrwert von GitHub Copilot in der eingesetzten Funktionalität lassen sich somit leider nur sehr begrenzt ziehen. 

Ausblick

Nicht nur wir haben erkannt, dass Copilot als “etwas besserer Autocompleter” sein volles Potenzial nicht ausschöpft, da somit hauptsächlich die reine Tipparbeit beschleunigt werden kann. Um die Denkarbeit bei der Softwareentwicklung (wie oben beschrieben ca. 90 %) zu reduzieren, testet Github gerade in einer Betaphase Copilot Chat. Die neu enthaltenen Features sind ein Chat (ähnlich wie ChatGPT), die Möglichkeit Bugs im Code zu finden, Refactoring vorzuschlagen und vieles weitere. Per Chat kann man auf markierte Code-Schnipsel referenzieren und erhält persönlich zugeschnittene Antworten im aktuellen Projektkontext. Einer der größten Vorteile ist, dass man deutlich weniger selbst nach Antworten im Browser suchen muss, sondern dies gleich in der Entwicklungsumgebung mit KI Unterstützung tun kann.

Die Zukunft von Werkzeugen wie Copilot liegt in der Feinabstimmung ihrer Algorithmen, um die Genauigkeit und Relevanz der Vorschläge zu verbessern. Gleichzeitig müssen Teams lernen, diese Tools effektiver in ihre Arbeitsabläufe zu integrieren, um den größtmöglichen Nutzen zu ziehen.

Dieses Experiment hat uns erste wertvolle Einblicke in die Möglichkeiten und Grenzen von Copilot in der zu diesem Zeitpunkt verfügbaren Version gegeben. Es dient als Grundlage für weitere Experimente und Diskussionen darüber, wie wir Technologie nutzen können, um die Kunst der Softwareentwicklung voranzutreiben.