Nuestra experiencia en Baufest utilizando GitHub Copilot: ¿Un cambio en la programación o solo un asistente?

In Software by Baufest

La primera vez que oí hablar de GitHub Copilot, estaba intrigado pero escéptico. La idea de una IA sugiriendo código en tiempo real sonaba revolucionaria, pero tenía mis dudas sobre si realmente podría entender el contexto y ser útil en situaciones reales, o si solo ofrecería fragmentos de código genéricos.

miércoles 20 - noviembre - 2024
Baufest

No pude evitar recordar a Visual Studio IntelliCode de Microsoft. Así que tenía que probarlo para ver si cumplía con las expectativas o si era solo otro producto que terminaría olvidando.

En Baufest comenzamos nuestro proceso de evaluación enfocándonos en las cuatro características que consideramos más relevantes de esta herramienta de AI: autocompletado, chat, generación de pruebas unitarias y exploración de código evaluando el impacto en una decena de proyectos en colaboración con nuestros clientes de diversos rubros.

Autocompletado

El autocompletado es la función “core” con la que GitHub Copilot fue lanzado. Ofrece sugerencias de código contextuales que son correctas en nuestra experiencia aproximadamente el 50% de las veces, y cuando las sugerencias no aplican, pueden simplemente ignorarse y el desarrollador puede seguir con la escritura del código de forma tradicional, lo que le proporcionará más contexto a la herramienta para que la siguiente recomendación tenga mejor probabilidad de ser aceptada.

Chat

El chat en el editor hace mucho más que sugerir código; no es solo una ventana de chat, sino que reconoce el código que un desarrollador ha escrito, los mensajes de error que se muestran, y está integrado en el IDE (entorno integrado de desarrollo). Un desarrollador puede obtener un análisis detallado y explicaciones sobre lo que deberían hacer los bloques de código, e incluso recibir propuestas de corrección de errores o implementaciones de nuevas funcionalidades o reestructuraciones de código.

Generación de Pruebas Unitarias

La integración en el editor de código también incluye la posibilidad de seleccionar parte de nuestro código y pedir que se genere la prueba unitaria correspondiente. Cuando el código está bien estructurado, la generación de pruebas unitarias funciona muy bien, pero apenas puede crear código útil cuando se trata de código complejo o en el que están involucradas muchas librerías con estrategias de prueba más específicas.

Exploración de código

La función de exploración de código permite a los desarrolladores seleccionar una sección específica del código y obtener un análisis detallado sobre su estructura y funcionamiento. Esta herramienta es particularmente útil para entender rápidamente bloques de código escritos por otros o en proyectos en los que no se ha trabajado anteriormente. Aunque la exploración de código es eficaz para proporcionar resúmenes y detectar posibles áreas problemáticas en código bien organizado, puede ser menos útil en casos donde el código es altamente complejo o con múltiples dependencias externas que requieren un conocimiento profundo del contexto para una evaluación más precisa.

Resultados

Para obtener una idea del impacto de Copilot recurrimos a dos enfoques, uno cualitativo el que llevamos a cabo con encuestas, y otro cuantitativo donde nos enfocamos en obtener métricas de impacto en el tiempo estimado versus real para completar una tarea.

De los resultados cualitativos aquí tenemos los más interesantes:

  • El 97% de los desarrolladores que lo usaron lo recomiendan y desean seguir usándolo.
  • El 86% de los desarrolladores opinan que ayudo a mejorar la velocidad de sus desarrollos.
  • El 70% lo considera una herramienta fundamental en su día a día.

Para obtener los resultados cuantitativos, debió afrontarse el reto innegable de medir el impacto en la productividad de los desarrolladores ya que esta actividad es altamente compleja, colaborativa y en gran medida un trabajo creativo. Para enfrentar este problema se seleccionaron tareas técnicas acotadas y relativamente más sencillas de estimar y se comparó el tiempo real que cada una de estas tareas incurrió. Y si bien solo pueden tomarse como conclusiones anecdóticas de cada equipo de desarrollo en particular no extrapolables a otros equipos, estos muestran impactos relevantes a considerar.

  • Un equipo que trabaja en el mantenimiento evolutivo de sistemas core de supermercados obtuvo una diferencia de 25%, esto representa el porcentaje promedio de mejora en los tiempos.
  • Un equipo que trabaja en el mantenimiento de las integraciones de una cadena de mejoramiento del hogar, de forma similar encontró resultados positivos los cuales se ven clasificados en 4 categorías como se aprecia en el grafico debajo.
  • Otro equipo de desarrollo encontró resultados positivos y resaltaron el impacto en sus tareas de Code Review.

En conclusión, GitHub Copilot ha cambiado nuestra forma de abordar el desarrollo en Baufest. Lo que comenzó como una herramienta que generaba curiosidad, se ha convertido en un asistente poderoso que complementa nuestro flujo de trabajo. Hemos aprendido a confiar en su capacidad para acelerar tareas. Sin embargo, también hemos descubierto que, como con cualquier herramienta, es crucial entender cuándo estamos frente a sus limitaciones.

Un consejo práctico: no veas a Copilot como un reemplazo, sino como un compañero de equipo. Aprende a interactuar con él, revisa sus sugerencias y úsalas como base para mejorar y optimizar tu código.

Mirando hacia el futuro, estamos emocionados por cómo Copilot y herramientas similares pueden seguir evolucionando, ayudándonos a enfocarnos más en la creatividad y la solución de problemas complejos, mientras la Inteligencia Artificial maneja las tareas más mundanas.

Por Jesús Angulo, Account Architect de Baufest.