menu sluiten
Contact

Antwerpen
Veldkant 33B, 2550 Kontich
België +32 (0)3 444 11 08

Breda
Rithmeesterpark 50-A1, 4838GZ Breda
Nederland +32 (0)3 444 11 08

info@jstack.eu

4 December 2023

Hoe GitHub Copilot jouw developer experience kan verbeteren

Door Mitch Jans

 

Deze post is niet geschreven door AI, maar AI kan wel jouw developer experience verbeteren.

Wat is GitHub Copilot?

Copilot is een AI-gebaseerde pair programmer die in je IDE leeft en je bijstaat bij het schrijven van code of andere soorten tekst. Copilot werd ontwikkeld door GitHub in samenwerking met OpenAI en maakt het gebruik van het OpenAI Codex large language model (LLM). Codex is een variant van GPT, bekend van ChatGPT, en werd getraind op een dataset met een grotere concentratie aan publieke source code. Codex analyseert natural language en genereert code als response.

Door middel van contextuele ghost text suggesties genereert Copilot in real-time codefragmenten, -regels en -blokken, gebaseerd op omliggende code, comments en functiebenamingen. Daardoor wordt coderen efficiënter, wordt de ontwikkelingstijd ingekort en je productiviteit verhoogd.

Voorbeeld van ghost text:

Hoe Copilot jou tijd helpt te besparen

Copilot kan ervoor zorgen dat je minder boilerplate code moet schrijven. Boilerplate volgt vaak vaste patronen (denk bijvoorbeeld aan getters en setters), en dat is net waar Copilot heel sterk in is.

 

Copilot kan Javadoc/JSdoc, andere in-code documentatie en andere vanzelfsprekende stukken code aanvullen.

 

Omdat Copilot getraind is op enorme hoeveelheden source code met veelgebruikte talen, frameworks en libraries, bezit het kennis van zowat alle mogelijkheden die er bestaan. Denk bijvoorbeeld aan CSS of regular expressions; wie kent alle CSS properties en alle regex syntax?

Github Copilot Chat

Copilot X is een set aankomende features voor Copilot, waarvan je sommige al kan gebruiken door je op een waitlist te zetten. De handigste feature van Copilot X tijdens het schrijven van source code is Copilot Chat. Met Copilot chat kan je inline in je editor of in een sidebar of panel van je editor een gesprek voeren met Copilot. Net zoals de ghost text suggesties worden deze gesprekken gevoed met context over je project.


De inline copilot chat

 


Copilot chat view in vscode

 

Je kan aan Copilot in deze chat modus eender welke (developmentgerelateerde) vraag stellen, of specifieke ingebouwde commando’s uitvoeren. Om je op weg te helpen geeft Copilot onderaan de chat interface ook suggesties of voorbeelden van vragen die je zou kunnen stellen.

 

Ook het schrijven van unit testen – de favoriete bezigheid van elke developer – kan je laten doen door Copilot chat.

 

Als je nood hebt aan een stuk code in een taal die je niet kent, kan je de code schrijven in een taal die je wel kent en aan Copilot vragen om die te vertalen.

 

Soms geraak je in een flow state, de heilige graal van productivieit. Als je wat documentatie nodig hebt over een library, een API, of wat anders, ben je vaak genoodzaakt om je IDE te verlaten en wordt je concentratie gebroken. Copilot chat kan je hier helpen door uitleg te geven over de dingen die je normaal gezien in je browser zou gaan zoeken.

Enkele belangrijke richtlijnen

 

Single, Specific, Short

  • Single: Vraag in je prompts om één ding per keer. Vraag bijvoorbeeld niet om een http body te parsen, de naam eruit te halen, om te keren en naar de db op te slaan in één prompt. Splits je prompts op in aparte comments of chatberichten en vraag telkens om 1 stap uit te voeren.
  • Specific: Wees specifiek over wat je van Copilot verwacht. Te beknopte of vage prompts als ‘Persist user’ zullen vaker een onverwacht resultaat opleveren dan prompts als ‘save the user object to the database using the prisma client’.
  • Short: Anticipeer korte responses. Schrijf liever een prompt waarvan je 1 html element als response verwacht, dan eentje die een hele page moet genereren.

 

Copilot heeft context nodig

CoPilot haalt snippets uit de huidige context (code in de buurt van de cursor, comments, packages, etc) om naar de GitHub servers te sturen. Er is een beperking op de hoeveelheid context die naar de backend gestuurd kan worden en de grootte van de respons die terug komt. Hoe dichter de context bij je cursor staat, hoe beter. Als Copilot niet lijkt te genereren wat je verwacht, voeg dan bijvoorbeeld wat comments met uitleg toe.

 

Itereren, itereren, itereren, …

Als een prompt niet meteen het gewenste resultaat oplevert, bekijk het dan als een sparring sessie en itereer op wat er opgeleverd is. Geef Copilot in de chat comments alsof het een code review is. Vraag om aanpassingen en als je niet precies weet welke aanpassing nodig is, formuleer dan gewoon je problemen met de gegeven oplossing.

 

Goede naamgeving is goud waard

Vaak is goede naamgeving van bestanden, classes, en functies al genoeg context om goede suggesties te krijgen van Copilot.

Vergelijk dit voorbeeld met een vage bestandsnaam en functienaam, met die eronder.

Conclusie

Werken met Copilot kan in het begin lijken op een klus of een hindernis, maar eens je begrijpt hoe Copilot werkt en hoe je het het beste kan aansturen is het een echte meerwaarde. Bekijk het niet als een magische oplossing voor al je problemen tijdens development, maar als een pair programmer waarmee je in dialoog kan gaan om tot een goede oplossing te komen.

En vergeet vooral niet om vriendelijk te blijven tegen onze toekomstige AI-overheersers!

 

Lees meer blog posts