osob.de Unicorn Logo
Blogpost overview

GitHub Copilot - eine Revolution der Softwareentwicklung | 01.07.2021

GitHub hat vor Kurzem Copilot angekündigt. Und das kann unter Umständen nicht weniger sein als eine echte Revolution im Bereich der Programmierung/Softwareentwicklung. Aber warum? Funktioniert das? Und ist das gut? Diese Fragen möchte ich mit diesem Beitrag beleuchten.

Was kann GitHub Copilot

Copilot basiert auf einem neuronalen Netzwerk, das sich Programmcode anschaut und auf die Interaktion der Entwickler:innen reagiert. Wenn du also eine React.js Applikation schreibst, schaut sich Copilot deinen Code an. Wenn du dann an einer Stelle bist und beispielsweise einen Eventhandler an ein Objekt binden möchtest, schlägt dir Copilot fertige Lösungen vor. Und ja, es sind fertige neue Lösungen und keine Code-Snippets. Copilot soll dabei die Struktur deines Codes analysieren und bei der Entwicklung eigener Lösungen adaptieren.

Bild Titel

Das Ganze klingt spannend, denn es kann den Entwicklungsprozess deutlich beschleunigen, indem nicht nur - wie bisher - fertige Templates genutzt werden, um wiederkehrende Aufgaben schneller zu lösen, sondern anhand des konkreten Problems künstliche Lösungen entstehen.

You like what you find here? A donation helps to keep this project running.

Die Copilot Landingpage von GitHub zeigt dir genauer, was damit gemeint ist. Die Funktionsweise wird dort wie folgt beschrieben: OpenAI Codex was trained on publicly available source code and natural language, so it understands both programming and human languages. The GitHub Copilot editor extension sends your comments and code to the GitHub Copilot service, which then uses OpenAI Codex to synthesize and suggest individual lines and whole functions

Copilot soll in vielen IDEs lauffähig sein. Für VSCode gibt es (natürlich) bereits das notwendige Plugin.

Warum Copilot

Das ist recht einfach erklärt. Es geht immer darum, Kosten zu sparen und die Qualität von Software zu verbessern. Bei beiden kann dir Copilot helfen.

Kosten sparen

Durch eine schnellere Entwicklung von Software kann der Faktor Zeit reduziert werden. Zeit ist das, was eine Anwendung so teuer macht. Entwickler:innen benötigen einfach Zeit, um Lösungen zu erdenken, umzusetzen und zu testen. Hier kann Copilot natürlich helfen, indem bereits in der Theorie getestete Lösungen als Codefragmente angeboten werden. Und generell kann das Anbieten dieser Fragmente schon eine deutliche Zeitersparnis bringen, wenn du als Entwickler:in nur die Absicht in einen Kommentar schreibst. Denn Copilot soll so kontextsensitiv sein, dass es Kommentare auswertet und umsetzt. Klingt spannend!

Im besten Fall kommst du mit Copilot also deutlich schneller an dein Ziel, also die fertige Anwendung.

Qualität erhöhen

Durch den Einsatz von KI im Allgemeinen, bzw. Copilot im speziellen Fall, kann auch die Qualität des Codes verbessert werden. So können potente Lösungen vorgeschlagen werden, die zugleich erprobt sind (beides noch Zukunftsmusik bei Copilot). GitHub selber schreibt dazu:

Nein. GitHub Copilot versucht, deine Absicht zu verstehen und den besten Code zu generieren, den es kann, aber der vorgeschlagene Code funktioniert möglicherweise nicht immer oder ergibt möglicherweise keinen Sinn. Obwohl wir hart daran arbeiten, GitHub Copilot zu verbessern, sollte der von GitHub Copilot vorgeschlagene Code sorgfältig getestet, überprüft und geprüft werden, wie jeder andere Code auch. Als Entwickler:in hast du immer die Kontrolle.

Funktioniert das?

Jaein. Wie eben schon zitiert, ist Copilot noch in der Entwicklung. Für viele Szenarien wird es auch funktionieren. Aber Copilot kann (noch) nicht den Gesamtkontext der Anwendung erfassen oder wissen, was du dir eigentlich vorgestellt hast. Ein Produkt-Outline auszuwerten ist (aktuell) nicht möglich.

Und ist das gut?

Wenn irgendwann Copilot so leistungsfähig ist, dass die Beiträge bzw. Fragmente potent sind und im Sinne der Anwendung, kann es viele Schritte in der Softwareentwicklung ersetzen bzw. durchführen. Das heißt, dafür wird keine menschliche Kraft mehr notwendig sein. Nun kann dieses Bild natürlich bis zum Ende durchgedacht werden. Und da könnte dann stehen, dass es einfach keine Entwickler:innen mehr braucht.

Die Ausgangsbedingungen sind ideal - besonders für Copilot. GitHub gehört zu Microsoft. Und es gibt viele öffentliche Projekte auf GitHub, die ausgewertet werden können und so das neuronale Netz verbessern. Weiterhin gibt es Plattformen wie Stackoverflow, bei denen die Potenz der Lösungen hervorragend ist. Diese Datenquellen zusammen erzeugen eine unglaubliche Basis an Daten, die die Qualität verbessern können. Alles eine Frage der Zeit.

Ist Copilot das Ende der menschlichen Softwareentwickler:innen?

Aber bis es wirklich so weit ist, wird noch viel Zeit vergehen. Und auch wenn Copilot in der Lage sein wird, gewisse Anwendungen zu entwickeln, bedarf es immer noch Architekt:innen und Big-Data-Analyst:innen, die für mehr Input bei Tools wie Copilot sorgen.

Dann ist da noch das Problem mit der Softwareentwicklung als Service. Je besser Copilot wird, umso eher ist davon auszugehen, dass irgendwann das Ganze auch Geld kostet. Nun müssen Firmen abwägen, ob sich für jene oder diese Arbeit der Open AI-Service (das ist die Grundlage von Copilot) lohnt oder es besser ist, inhouse Kapazitäten vorzuhalten.

Auch wird immer noch eine Qualitätssicherung notwendig sein. Das Entwickeln der Anforderungen an die Anwendung wird Copilot absehbar nicht übernehmen können. Zur Erstellung von User Stories und Cases, die dann entsprechend in Bedarfe umgewandelt werden, mit denen Copilot arbeiten kann, wird es noch lange menschliche Arbeitskräfte benötigen.

Zukunft von Copilot

Mit Copilot wird es definitiv weitergehen. Die Qualität wird immer weiter verbessert. Microsoft wird selber definitiv Nutzer:in dieses Service werden. Wann es aber in der breiten Masse ankommt, bleibt abzuwarten. Es ist auf jeden Fall sehr spannend. Was denkst du darüber? Ist Copilot der Jobkiller? Oder wird es deine Tätigkeiten erleichtern/verbessern?