4 Möglichkeiten, wie GitHub-Ingenieure GitHub Copilot verwenden

Erst kürzlich habe ich eine neue Funktion für GitHub Copilot Chat programmiert. Meine Aufgabe bestand darin, den Chat in die Lage zu versetzen, die Projektabhängigkeiten eines Benutzers zu erkennen und magische Antworten bereitzustellen, wenn der Benutzer eine Frage stellt. Obwohl ich die Projektabhängigkeiten leicht hätte auflisten und die Aufgabe als erledigt betrachten können, wusste ich, dass ich zum Extrahieren erstklassiger Antworten aus diesen großen Sprachmodellen darauf achten musste, die Eingabeaufforderung nicht zu überladen, um das Modell nicht durch die Bereitstellung von zu viel Kontext zu verwirren . Dies bedeutete, die Abhängigkeitsliste vorab zu verarbeiten und die relevantesten auszuwählen, die in die Chat-Eingabeaufforderung aufgenommen werden sollten.

Die Erstellung maschinenverarbeitbarer Formate für die bekanntesten Frameworks in verschiedenen Programmiersprachen hätte Tage gekostet. In dieser Zeit erlebte ich einen dieser „Copilot-Momente“.

Ich habe einfach den Chat in meiner IDE abgefragt:

Look at the data structure I have selected and create at least 10 examples that conform to the data structure. The data should cover the most prominent frameworks for the Go programming language.

Voilà, da war mein erster Stapel maschinenverarbeitbarer Abhängigkeiten. Nur 30 Minuten später hatte ich eine umfassende Sammlung wichtiger Abhängigkeiten für fast alle unterstützten Sprachen zusammengetragen, einschließlich parametrisierter Komponententests. Es war wirklich bemerkenswert, eine Aufgabe, die ohne GitHub Copilot wahrscheinlich Tage gedauert hätte, in nur 30 Minuten zu erledigen.

Dies brachte mich zum Nachdenken: Welche anderen „Copilot-Momente“ könnten meine Kollegen hier bei GitHub erlebt haben? Hier sind einige Möglichkeiten, wie wir GitHub Copilot bei GitHub verwenden.

1. Wiederkehrende Aufgaben halbautomatisieren

Die Halbautomatisierung sich wiederholender Aufgaben ist ein Thema, das bei einem meiner Kollegen aus einem anderen Team Anklang findet. Er erwähnt, dass sie mit der Entwicklung und Wartung mehrerer Live-Dienste beauftragt sind, von denen viele Protokollpuffer für die Datenkommunikation nutzen. Während der Wartung kommt es häufig vor, dass die ID-Nummern in den Protobuf-Definitionen erhöht werden müssen, wie im folgenden Codeausschnitt dargestellt:

protobuf

google.protobuf.StringValue fetcher = 130

  [(opts.cts_opt)={src:"Properties" key:"fetcher"}];

google.protobuf.StringValue proxy_enabled = 131

  [(opts.cts_opt)={src:"Properties" key:"proxy_enabled"}];

google.protobuf.StringValue proxy_auth = 132

  [(opts.cts_opt)={src:"Properties" key:"proxy_auth"}];

Er schätzt es besonders, dass für diese Aufgaben GitHub Copilot-Vervollständigungen im Editor verfügbar sind. Dies führt zu einer erheblichen Zeitersparnis und macht die manuelle Generierung von ID-Nummern überflüssig. Stattdessen kann man einfach durch die Abschlussvorschläge scrollen, bis die Aufgabe abgeschlossen ist.

Lesen Sie auch  Philippe und Macron, Polarkälte

2. Vermeiden Sie Ablenkungen

Hier ist ein weiterer faszinierender Anwendungsfall, von dem ich von einem Kollegen gehört habe. Er musste einen regulären Ausdruck entwickeln, um einen Markdown-Codeblock zu erfassen und die Sprachkennung zu extrahieren. Vollständig in seine Arbeit vertieft, zog er es vor, seinen Fluss nicht durch den Wechsel zum Chat zu unterbrechen, auch wenn dies eine Lösung hätte bieten können. Stattdessen verfolgte er einen kreativen Ansatz, indem er seine Aufgabe in einem Codekommentar formalisierte:

// The string above contains a code block with a language identifier.
// Create a regexp that matches the code block and captures the language 
identifier.
// Use tagged capture groups for the language and the code. 

Dies veranlasste GitHub Copilot, den regulären Ausdruck als folgende Anweisung in seinem Editor zu generieren:

const re = /```(?w+)(?[sS]+?)```/;

Nachdem der Kommentar gelöscht war, war die Aufgabe schnell erledigt!

Während eines angenehmen Kaffeegesprächs erzählte eine unserer Support-Technikerinnen einem Kollegen von einem Vorfall, den sie letzte Woche erlebt hatte. Es war ein Freitagnachmittag und sie versuchten, ein Problem für einen bestimmten Kunden zu beheben. Schließlich fanden sie die Lösung, indem sie verschiedene Notizen in VSCode erstellten. Bei GitHub legen wir Wert auf Remote-Zusammenarbeit. Die bloße Lösung der Aufgabe reichte also nicht aus; Es war auch wichtig, unsere Kollegen über den Prozess zu informieren, um das bestmögliche Erlebnis für zukünftige Kundenanfragen zu gewährleisten. Folglich mussten sie auch nach Abschluss dieser umfassenden Aufgabe dokumentieren, wie sie zur Lösung gelangten.

Sie startete den GitHub Copilot Chat und tippte einfach etwas in der Art ein: „Organisieren Sie meine Notizen, strukturieren Sie sie und stellen Sie die Daten im Editor in Markdown-Tabellen zusammen.“ Innerhalb von Sekunden war die Aufgabe erledigt und sie konnten ihr wohlverdientes Wochenende beginnen.

4. Entdecken und Lernen

Die Verbesserung und der Erwerb neuer Fähigkeiten sind integrale Aspekte der Karriere eines jeden Ingenieurs. John Berryman, ein Kollege von mir, stellte sich der Herausforderung, GitHub Copilot zu nutzen, um eine nicht triviale Programmieraufgabe in einer völlig unbekannten Programmiersprache zu bewältigen. Sein Ziel war es, tiefer in Rust einzutauchen, also startete er dieses Unterfangen an einem Sonntag mit Unterstützung von GitHub Copilot Chat. Seine Aufgabe bestand darin, ein Programm zu entwickeln, das jede numerische Eingabe in ihr schriftliches englisches Äquivalent umwandeln kann. Obwohl diese Aufgabe auf den ersten Blick einfach erschien, war sie mit verschiedenen Komplexitäten verbunden, beispielsweise mit der Handhabung teen Zahlen, Namenskonventionen für Zehner, Platzierung von „und“ in der Ausgabe und mehr.

Dreiundzwanzig Minuten und neun Sekunden später gelang es ihm, eine funktionsfähige Version in Rust zu erstellen, obwohl er noch keine Erfahrung mit der Sprache hatte. Insbesondere dokumentierte er seinen gesamten Prozess und zeichnete sich selbst während des gesamten Unterfangens auf.

Berryman verwendet eine ältere, experimentelle Version von GitHub Copilot, um ein Programm in Rust zu schreiben.

Ihr ganz persönlicher GitHub Copilot-Moment

Ich fand es unglaublich aufschlussreich zu entdecken, wie meine Hubber-Kollegen GitHub Copilot nutzen, und ihre innovativen Ansätze haben mich dazu inspiriert, einige ihrer Ideen in meine täglichen Arbeitsabläufe zu integrieren. Wenn Sie GitHub Copilot aus erster Hand kennenlernen möchten, ist der Einstieg ein Kinderspiel. Installieren Sie es einfach in Ihrem bevorzugten Editor und fragen Sie los.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.