Programmers working on computer in IT office typing data coding in software

GitHub Copilot: Millora la velocitat de desenvolupament

En aquest article, explorarem com GitHub Copilot, una potent eina d’intel·ligència artificial, està transformant el desenvolupament d’aplicacions. El desenvolupament d’aplicacions sempre ha tingut una faceta artística o creativa, especialment en funcionalitats complexes. No obstant això, també inclou seccions repetitives i funcionalitats bàsiques que requereixen menys esforç, però han de completar-se com la resta del projecte. Gràcies a l’aparició d’intel·ligències artificials més potents i capaces de realitzar anàlisis més profunds, GitHub Copilot permet combinar el desenvolupament amb la IA per millorar els temps i facilitar la feina.

Què és GitHub Copilot?

GitHub és un dels portals més importants del món per compartir codi obert i va ser adquirit per Microsoft el 2018. Com a part del seu impuls cap a noves solucions d’intel·ligència artificial, Microsoft ha desenvolupat GitHub Copilot.

GitHub Copilot es basa en Codex, un nou sistema d’IA creat per OpenAI, la mateixa organització darrere de GPT-3, la base de ChatGPT. No obstant això, en aquest cas, Codex està entrenat exclusivament en codi per a desenvolupaments. Es basa en el codi disponible a GitHub.

GitHub Copilot és una IA dissenyada per a programadors. Proposa codi basat en el projecte actual i el text introduït en iniciar el desenvolupament, com ara comentaris o noms de classes o funcions. Aquest servei és de pagament, amb una tarifa de 10 €/mes per a usuaris particulars. I 19 €/mes per usuari per a empreses. No obstant això, ofereix un període de prova gratuït de 2 mesos.

GitHub Copilot_Que es_Itequia

Com funciona GitHub Copilot?

Un cop contractat, Copilot funciona mitjançant un connector o extensió que s’afegeix a l’IDE utilitzat per al desenvolupament, amb suport per a la majoria dels principals IDE actuals. Per exemple, en Visual Studio, caldria afegir l’extensió de GitHub Copilot.

GitHub Copilot_Como funciona_Itequia

Un cop afegida l’extensió, s’ha d’iniciar sessió amb un compte de GitHub que tingui activada la subscripció de Copilot. Després de l’inici de sessió, Copilot analitza el codi del projecte actual i, posteriorment, el connector pot generar codi de proposta completament nou, sense copiar-lo d’altres llocs. En funció de cada cas, pot proposar diverses alternatives addicionals per triar.

El programador ha de revisar aquest codi proposat per verificar si s’ajusta al que realment vol aconseguir. Llavors, pot acceptar o rebutjar el codi. En cas de rebuig, Copilot pot oferir noves solucions. A mesura que avança el projecte, Copilot aprèn i millora les propostes presentades.

GitHub Copilot_Como funciona 2_Itequia

Les extensions solen permetre habilitar o deshabilitar Copilot. Si es desactiva, preguntarà si es vol desactivar les suggeriments de forma global o només per al llenguatge de l’arxiu que s’està editant actualment.

GitHub Copilot_Como funciona 3_Itequia

Amb quins llenguatges puc utilitzar Copilot?

Tot i que Copilot ha estat entrenat en molts tipus de llenguatges, funciona especialment bé per a Python, JavaScript, TypeScript, Ruby, Go, C# i C++. Donada la naturalesa de la IA, a mesura que realitza més prediccions i es accepta o rebutja el codi, Copilot aprèn més conceptes i pot proporcionar solucions més precises.

GitHub Copilot_Con que lenguages puedo usar_Itequia

Actualment, Copilot també inclou mòduls específics per detectar patrons de codi insegur i evitar la introducció de vulnerabilitats.

Copilot és una tecnologia relativament nova. Tot i que el progrés és ràpid, encara necessita aprendre més. Per proposar cada vegada millor codi i que les seves propostes siguin més encertades. En tasques simples com noves classes i controladors, resulta molt encertat. Pot accelerar el desenvolupament. No obstant això, en tasques més complexes o en arreglar errors, potser encara no acabi de trobar solucions correctes.

En qualsevol cas, els desenvolupadors que l’han provat coincideixen que els permet centrar-se en tasques més motivadores i complexes. També els ajuda a ser més productius i estalviar temps en tasques repetitives i senzilles.

Prova pilot de Copilot a Itequia

A ITEQUIA, hem realitzat una prova pilot de Copilot amb un petit grup de 6 desenvolupadors. Aquest equip està format per persones que treballen en diferents projectes amb diferents tasques i llenguatges. Tot i que la majoria utilitzen .NET, React o Angular.

Durant la prova, es van anotar les tasques realitzades pel grup, juntament amb l’estimació inicial del temps que haurien d’haver pres i el temps real que es va trigar a completar-les. Els resultats mostren un percentatge d’estalvi de temps significatiu:

MesPercentatge d’estalvi de tempsHores guanyades
Març5%48 hores
Abril2%19,2 hores
Maig 3,5%33,6 hores
Juny 8,7%83,52 hores

Per entendre què representa aquest percentatge: Partint del fet que en un mes tenim aproximadament 160 hores per planificar per a cada desenvolupador. El percentatge d’estalvi de temps representa quantes d’aquestes 160 hores hem pogut estalviar en realitzar les tasques planejades utilitzant Copilot.

Comportaments en funció del tipus de desenvolupament

En general, hem pogut detectar dos tipus de comportaments en funció del tipus de desenvolupament:

  • Projectes o funcionalitats totalment noves: En aquests casos, Copilot aconsegueix generar una gran quantitat de codi que facilita la feina. L’estructura general de la nova funcionalitat és generada automàticament i sense esforç. El desenvolupador només ha de polir-la i centrar-se en els casos més específics del negoci del client. Copilot també permet generar documentació de manera fàcil i ràpida i estalvia molt de temps.
  • Projectes o funcionalitats ja existents que requereixen correccions o canvis: En aquests casos, Copilot resulta més limitat. Ajuda en el desenvolupament, però de manera similar a les opcions IntelliSense de VisualStudio. Es guanya temps, però és més difícil quantificar-ne el total. A vegades, proposa opcions que no són correctes i no resolen el problema.

Dins del grup de prova, a l’abril es van realitzar sobretot correccions i al juny hi ha hagut més desenvolupaments nous. També hem detectat que no tots els desenvolupadors han aconseguit donar-li ús. Això depèn del projecte en què treballen i de la informació donada a Copilot perquè generi codi. L’ús de Copilot, igual que qualsevol altra eina tecnològica, no sempre és trivial. Requereix un període d’adaptació i aprenentatge.

Exemple de les tasques realitzades i resultat:

Aquest és un petit exemple de les tasques realitzades i el resultat de les mateixes:

LlenguatgeHores EstimadesHores RealsComentarisTipus de tasca
C# 12 Hores5 HoresMètode per processament de respostes a servei SOAP. Serialització / Deserialització XML.Desenvolupament
C# 2 Hores2 HoresNo ajuda perquè el temps dedicat és major per investigar l’error que per solucionar-lo.Defecte
YAML24 Hores12 HoresTot i que necessita un cert temps d’aprenentatge inicial, una vegada que Copilot disposa d’exemples suficients per treballar, la creació de documentació es converteix en un procés on només cal proporcionar-li uns inputs concrets perquè realitzi la major part del treball pesat, com ara la generació d’estructures i condicions…Documentació
C# 24 Hores4 HoresUtilitzant la documentació prèviament generada a Swagger, hem creat ràpidament els models de dades i entitats relacionades en proporcionar els components associats com a input. Notem que GitHub Copilot en Visual Studio 2022 ofereix resultats més precisos que en Visual Studio Code i evita bucles infinitos en la generació de documentació.Desenvolupament
javascript3 Hores2,5 HoresEns ha ajudat a detectar i corregir una cadena excessivament llarga per a una graella de Kendo.Defecte
javascript16 Hores12 HoresAjuda a completar funcions en omplir paràmetres i facilita les consultes de LINQ. A més, en afegir tota la funcionalitat en crear un nou endpoint, et suggereix la mateixa estructura que en els altres casos.Desenvolupament
React TypeScript 2 Hores2 HoresEvoluciona amb el temps i cada vegada és més precís. No obstant això, per a moltes tasques, no hi ha diferència en el temps d’implementació entre fer servir Copilot i no fer-ho.Desenvolupament

Reflexions sobre GitHub Copilot: Una eina potent amb espai per evolucionar

Copilot és una eina molt potent. Permet centrar-se en desenvolupaments complexos i ajudar en el desenvolupament més genèric i avorrit, aconseguint millors temps. Aquesta eina encara està en fases inicials. Necessita més temps per aprendre, millorar i proposar solucions correctes en tot cas.

Els desenvolupadors necessitaran un cert temps d’ajust per aprofitar-la bé. De moment, no sempre dóna resultats positius en qualsevol tasca. No obstant això, és clar que les avantatges en desenvolupaments nous són molt grans. Pot agilitzar molt les tasques inicials i els projectes.

Per utilitzar-la en correccions i solucions pot ser necessari més temps. També és important que segueixi evolucionant. No obstant això, les possibilitats que ofereix són molt bones i esperem guanyar temps mitjançant un ús adequat.

Estàs llest per portar el teu desenvolupament al següent nivell amb GitHub Copilot? Contacta’ns avui mateix per descobrir com aquesta potent IA pot beneficiar el teu equip i projectes! No perdis l’oportunitat de provar GitHub Copilot i experimentar la diferència en el teu flux de treball. Estem aquí per ajudar-te a aprofitar al màxim aquesta innovadora eina!

Daniel Morales Fitó – Cloud Engineer at Itequia