Antes de entrar de lleno en la explicación de cómo hemos usado Copilot y cuales han sido los resultados, es necesario comentar los antecedentes de este piloto.
En dev&del estamos enfrascados en un proceso de mejora de calidad constante de código con especial énfasis en los principios SOLID, clean Architecture y clean clode. Para conseguir aplicar estos conceptos realizamos formaciones técnicas, investigación, code review, mentorización de juniors, etc.
Por tanto, podemos decir que en dev&del no solo nos importa la productividad sino también la calidad. Obviamente, somos una empresa de servicios que además nos centramos en los proyectos cerrados. Así que todo lo que sea mejorar la productividad y acelerar el desarrollo de software implica reducir los costes del proyecto y por tanto mejorar los números. Pero como también estamos muy implicados en la calidad de nuestros entregables no nos vale con aumentar la velocidad del desarrollo a costa de empeorar la calidad.
Con estas premisas hemos decidido hacer un piloto de asistente de programación con IA. Para este piloto hemos escogido Copilot. Copilot se instala en tu IDE, en nuestro caso VSCode, IntelliJ y Microsft Visual Studio, y te da sugerencias de código. En la propia página de Copilot te dicen que es tu compañero IA de Pair Programming. Es algo así como que tienes un compañero en el IDE que te va sugiriendo código según lo que vayas escribiendo o donde pongas el cursor.
Como lo que queríamos hacer era una prueba piloto lo hemos probado solo 5 o 6 programadores de los 50 de la empresa, y estos 5 o 6 somos lo de más experiencia en desarrollo de forma que pudiéramos evaluar su uso.
Lo que vemos es que Copilot es una muy buena herramienta, que sugiere código en base a lo ya escrito en tu código, por lo que tener una buena arquitectura es esencial. De lo contrario lo que te propone es continuar e incrementar los problemas de codificación que ya tienes.
¿Merece la pena usar Copilot?
Las conclusiones son dispares, pero entre los que lo hemos probado hemos estimado que dependiendo de las tareas se puede ahorrar entre un 20% y un 70% de tiempo. Por lo que sí aumenta la productividad de manera muy clara. También es cierto que se debe revisar el código generado con mucho cuidado porque no siempre está bien estructurado o es correcto. No tiene en cuenta todas las posibles variables ni entiende el comportamiento funcional, por lo que te ayuda a ir más rápido si de antemano sabes lo que quieres escribir.
A la hora de que lo usen los juniors tenemos muchas más dudas. Por lo que comentamos anteriormente, si Copilot te propone un código que o no entiendes o no has hecho el esfuerzo de pensar como debería ser y al probarlo funciona, un junior puede estar muy tentado a aceptarlo sin más. No teniendo en cuenta la arquitectura o los flujos alternativos.
En nuestro caso por el momento solo lo van a utilizar programadores con cierta experiencia e iremos viendo poco a poco quien está capacitado para usarlo.
Ventajas de Copilot
Después de nuestro piloto es obvio que el uso de Copilot tiene ventajas:
- Mejora de la productividad
- Reducir errores de tipografía
- Asegurarse del uso de convenciones (por ejemplo camel case o principio de mayúsculas/minúsculas según lenguaje)
Desventajas
Por como comentamos antes también tiene sus desventajas
- Errores propiciados por código incorrecto funcionalmente parecido al esperado. Requiere revisión del código generado
- Facilita el «no pensar»
- Facilita el perpetuar errores arquitectónicos
Conclusión
Es una herramienta básica a incorporar en los equitos técnicos maduros siempre que los programadores tengan experiencia y conocimientos suficientes.