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

GitHub Copilot: Mejora la Velocidad de Desarrollo

En este artículo, exploraremos cómo GitHub Copilot, una herramienta potente de inteligencia artificial, está transformando el desarrollo de aplicaciones. El desarrollo de aplicaciones siempre ha tenido una vertiente artística o creativa, especialmente en funcionalidades complejas. Sin embargo, también incluye secciones repetitivas y funcionalidades básicas que requieren menos esfuerzo, pero deben completarse como el resto del proyecto. Gracias a la aparición de inteligencias artificiales más potentes y capaces de realizar análisis más profundos, GitHub Copilot permite combinar el desarrollo con la IA para mejorar los tiempos y facilitar el trabajo.

¿Qué es GitHub Copilot?

GitHub es uno de los portales más importantes del mundo para compartir código abierto y fue adquirido por Microsoft en 2018. Como parte de su impulso hacia nuevas soluciones de inteligencia artificial, Microsoft ha desarrollado GitHub Copilot.

GitHub Copilot se basa en Codex, un nuevo sistema de IA creado por OpenAI, la misma organización detrás de GPT-3, la base de ChatGPT. Sin embargo, en este caso, Codex está entrenado exclusivamente en código para desarrollos, basándose en el código disponible en GitHub.

GitHub Copilot es una IA diseñada para programadores, que propone código basado en el proyecto actual y el texto introducido al iniciar el desarrollo, como comentarios o nombres de clases o funciones. Este servicio es de pago, con una tarifa de 10€/mes para usuarios particulares y 19€/mes por usuario para empresas. No obstante, ofrece un período de prueba gratuito de 2 meses.

GitHub Copilot_Que es_Itequia

¿Cómo funciona GitHub Copilot?

Una vez contratado, Copilot funciona a través de un plugin o extensión que se añade al IDE utilizado para el desarrollo, con soporte para la mayoría de los IDEs principales actuales. Por ejemplo, en Visual Studio, se requeriría añadir la extensión de GitHub Copilot.

GitHub Copilot_Como funciona_Itequia

Una vez añadida la extensión, se debe iniciar sesión con una cuenta de GitHub que tenga activa la suscripción de Copilot. Después del inicio de sesión, Copilot analiza el código del proyecto actual y, posteriormente, el plugin puede generar código de propuesta completamente nuevo, sin copiar de otros sitios. En función de cada caso, puede proponer varias alternativas adicionales para elegir.

El programador debe revisar este código propuesto para verificar si se ajusta a lo que realmente se quiere lograr. Luego, puede aceptar o rechazar el código. En caso de rechazo, Copilot puede ofrecer nuevas soluciones. A medida que avanza el proyecto, Copilot aprende y mejora las propuestas entregadas.

GitHub Copilot_Como funciona 2_Itequia

Las extensiones suelen permitir habilitar o deshabilitar Copilot. Si se deshabilita, preguntará si se quiere desactivar las sugerencias de forma global o solo para el lenguaje del archivo que se está editando actualmente.

GitHub Copilot_Como funciona 3_Itequia

¿Con qué lenguajes puedo usar Copilot?

Aunque Copilot ha sido entrenado en muchos tipos de lenguajes, funciona especialmente bien para Python, JavaScript, TypeScript, Ruby, Go, C# y C++. Dada la naturaleza de la IA, a medida que realiza más predicciones y se acepta o rechaza el código, Copilot aprende más conceptos y puede proporcionar soluciones más precisas.

GitHub Copilot_Con que lenguages puedo usar_Itequia

Actualmente, Copilot también incluye módulos específicos para detectar patrones de código inseguro y evitar la introducción de vulnerabilidades.

Copilot es una tecnología relativamente nueva. Aunque el progreso es rápido, aún necesita aprender más. Para proponer cada vez mejor código y que sus propuestas. En tareas simples como nuevas clases y controladores resulta muy acertado. Puede acelerar el desarrollo. Sin embargo, en tareas más complejas o en arreglar bugs puede aún no acabar de dar con soluciones correctas.  

En cualquier caso, los desarrolladores que lo han probado coinciden en que les permite centrarse en trabajo más motivante y complejo. También les ayuda a ser más productivos y ahorrar tiempo en tareas repetitivas y fáciles. 

Prueba piloto de Copilot en Itequia

En ITEQUIA, hemos realizado una prueba piloto de Copilot con un pequeño grupo de 6 desarrolladores. Este equipo está formado por personas que trabajan en diferentes proyectos con diferentes tareas y lenguajes. Aunque la mayoría utilizan .NET, React o Angular.

Durante la prueba, se anotaron las tareas realizadas por el grupo. Junto con la estimación inicial del tiempo que deberían haber tomado. Y el tiempo real que se tardó en completarlas. Los resultados muestran un porcentaje de ahorro de tiempo significativo:

MesPorcentaje de ahorro en tiempoHoras ganadas
Marzo5%48 horas
Abril2%19,2 horas
Mayo 3,5%33,6 horas
Junio 8,7%83,52 horas

Para entender qué representa este porcentaje: Partiendo de que en un mes tenemos aproximadamente 160 horas que planear para cada desarrollador. El porcentaje de ahorro de tiempo representa cuantas de estas 160 horas hemos podrido ahorrar al realizar las tareas planeadas. 

Comportamientos en función del tipo de desarrollo

En general, hemos podido detectar dos tipos de comportamientos en función del tipo de desarrollo: 

  • Proyectos o funcionalidades totalmente nuevas: En estos casos Copilot consigue generar gran cantidad de código que facilita el trabajo. La estructura general de la nueva funcionalidad es generada automáticamente y sin esfuerzo. El desarrollador sólo tiene que pulirla y centrarse en los casos más específicos del negocio del cliente. Copilot también permite generar documentación de manera fácil y rápida y ahorra mucho tiempo. 
  • Proyectos o funcionalidades ya existentes que requieren correcciones o cambios: En estos casos Copilot resulta más limitado. Ayuda en el desarrollo, pero de manera similar a las opciones IntelliSense de VisualStudio. Se gana tiempo, pero es más difícil de cuantificar el total. A veces, propone opciones que no son correctas y no resuelven el problema.  

Dentro del grupo de prueba, en abril se realizaron sobre todo correcciones y en junio ha habido más desarrollos nuevos. También hemos detectado que no todos los desarrolladores han conseguido darle uso. Esto depende del proyecto en que trabajan y en la información dada a Copilot para que genere código. El uso de Copilot, al igual que cualquier otra herramienta tecnológica, no siempre es trivial. Requiere un periodo de adaptación y aprendizaje. 

Ejemplo de las tareas realizadas y resultado

Este es un pequeño ejemplo de las tareas realizadas y el resultado de las mismas: 

LenguajeHoras EstimadasHoras RealesComentariosTipo de tarea
C# 12 Horas5 HorasMétodo para procesamiento de respuestas a servicio SOAP. Serialización / Deserialización XML. Desarrollo
C# 2 Horas2 HorasNo ayuda porque el tiempo de dedicación es más para investigar el error que para solucionarlo. Defecto
YAML24 Horas12 HorasA pesar de que necesita un cierto tiempo de aprendizaje inicial, una vez que Copilot dispone de suficientes ejemplos para trabajar, la creación de documentación se convierte en un proceso en el que solo hay que proporcionarle unos inputs concretos para que realice la mayor parte del trabajo pesado, como la generación de estructuras y condiciones…Documentación
C# 24 Horas4 HorasUtilizando la documentación previamente generada en Swagger, hemos creado rápidamente los modelos de datos y entidades relacionadas al proporcionar los componentes asociados como input. Notamos que GitHub Copilot en Visual Studio 2022 brinda resultados más precisos que en Visual Studio Code y evita bucles infinitos en la generación de documentación.Desarrollo
javascript3 Horas2,5 HorasNos ha ayudado a detectar y corregir una cadena excesivamente larga para una cuadrícula de Kendo.Defecto
javascript16 Horas12 HorasAyuda a completar funciones al rellenar parámetros y facilita las consultas de LINQ. Además, al agregar toda la funcionalidad al crear un nuevo endpoint, te sugiere la misma estructura que en los demás casos.Desarrollo
React TypeScript 2 Horas2 HorasEvoluciona con el tiempo y cada vez es más preciso. Sin embargo, para muchas tareas, no hay diferencia en el tiempo de implementación entre usar Copilot y no usarlo.Desarrollo

Reflexiones sobre GitHub Copilot: Una herramienta poderosa con espacio para evolucionar

Copilot es una herramienta muy potente. Permite centrarse en desarrollos complejos y ayudar en el desarrollo más genérico y aburrido, consiguiendo tiempos mejores. Esta herramienta aún esta en fases iniciales. Necesita más tiempo para aprender, mejorar y proponer soluciones correctas en todo caso.  

Los desarrolladores necesitarán un cierto tiempo de ajuste para sacarle buen uso. De momento, no siempre da resultados positivos en cualquier tarea. Sin embargo, resulta claro que las ventajas en desarrollos nuevos son muy grandes. Puede agilizar mucho las tareas iniciales y los proyectos. 

Para usarse en correcciones y arreglos puede ser necesario más tiempo. También es importante que siga evolucionando. Sin embargo, las posibilidades que ofrece son muy buenas y esperamos ganar tiempos mediante un adecuado uso. 

¿Estás listo para llevar tu desarrollo al siguiente nivel con GitHub Copilot? ¡Contáctanos hoy mismo para descubrir cómo esta poderosa IA puede beneficiar a tu equipo y proyectos! No pierdas la oportunidad de probar GitHub Copilot y experimentar la diferencia en tu flujo de trabajo. ¡Estamos aquí para ayudarte a aprovechar al máximo esta innovadora herramienta! 

Daniel Morales Fitó – Cloud Engineer at Itequia