GitHub CoPilot: a favor

Cuando Github anunció copilot fuí de los primeros en ponerme en la cola de espera para probarlo porque lo que vendían era poco menos que jauja: un asistente que alimentado por una IA asombrosa podría ayudarnos a aligerar los tiempos de desarrollo de nuestras aplicaciones. Y prometía hacerlo con una tasa de aciertos tan escandalosamente elevada que haría poco menos que lograr que el trabajo de programar se hiciera “prácticamente solo”. ¿Y como ha sido (y/o está siendo) la experiencia? Pues yo os lo cuento.
Unos inicios salvajes
La primera vez que pude habilitar CoPilot en VsCode lo primero que hice fué, obviamente, hacer pruebas absurdas o, como me gusta decir a mi, ‘buscarle las cosquillas’. Por ejemplo:
(En las capturas podeis ver en un comentario lo que intento hacer y, a continuación, TODO el código que github copilot me sugiere. Desgrano cada prueba con cada una de las pulsaciones a “TAB” que voy haciendo)
1.- Hola mundo



No está nada mal para empezar...
2.- Factorial



3.- Convertir string a array



Util, verdad?
Vamos a intentar programar cosas un poco más específicas, expresándolo siempre en lenguaje natural en la cabecera de las funciones....
4.- Un conversor de monedas

5.- Función que comprueba si un número es entero y si no lanza una excepción

6.- Función que comprueba que un número cumple que: es un número válido, es positivo, es mayor que 93, es divisible entre 3, tiene menos de 7 cifras, es capicúa

(Ojo que aquí hay hasta bateria de pruebas. Ojo también al detalle de que ha devuelto dos funciones iguales ‘isvalid’ y ‘isvalid2’ porque el algoritmo así lo ha considerado)
¿Rincón del vago?
‘Pues ya está. Las máquinas ya pueden hacer las cosas mejor que nosotros. La IA va a quitarnos el trabajo. Skynet ha despertado. Vamos a morir’
A ver, a ver. calma. Esto (sin duda impresionante) hay que cogerlo con pinzas porque puede ser un arma de doble filo.
La información que Copilot nos brinda en cada consulta proviene del “conocimiento” que la IA va adquiriendo a partir de ser entrenada mediante el feedback que obtiene de usarlo y de repositorios de github previamente escaneados y clasificados. ¿Tenemos la certeza de que estos snippets de código son 100% fiables, validados y optimizados? Pues obviamente no. Tenemos la certeza de que Copilot (su IA) está en constante evolución y sabe cuando una respuesta no es del todo válida. Nosotros mismos se lo estamos diciendo cuando rechazamos una sugerencia que no nos gusta (es obligatorio activar unas funciones de “telemetría” en la extensión para poder utilizarla y así recabar información para retroalimentarse). Nadie en su sano juicio utilizaría un código que sale por arte de magia en nuestro editor y usarlo sin más en un desarrollo propio, ¿verdad?
Ahora bien: tras un periodo inicial de asombro constante y seguido por otro de escepticismo (llegaba a sentirme observado) he encontardo el equilibrio de uso perfecto para esta fabulosa herramienta y es el de usarla como una navaja suiza en lugar de como un Google dopado.
A continuación un ejemplo:
Supongamos que he definido una clase Usuario. Al definir los parámetros de la misma:
class Usuario = (nombre, apellidos, edad)
copilot se ha ofrecido voluntario a inicializar los atributos de la misma.
Al definir el método log()
, copilot me ha generado el console.log
que podeis ver en pantalla.


Estas tonterías (que recordemos, NO son obligatorias de aceptar) nos permiten ahorrar un tiempo precioso y, además, errores a la hora de escribir código.
Volviendo al ejemplo, supongamos que quiero incluir mi libreria en un fichero “index”. Pues bien: solamente invocando
import {Usuario} ....
CoPilot ya intuye que igual lo que queremos es incluir el fichero que acabamos de editar , y así nos lo sugiere.
Pero además, solamente escribiendo un
const user = ....
copilot nos ayuda a insertar datos de prueba en un objeto. Atención al detalle que sabe que EDAD es un número cuando nosotros no lo hemos definido así en ningún sitio....


Un compañero de trabajo espectacular al que conviene saber pararle los pies
Durante todo este tiempo me he visto a mi mismo en más de una ocasión diciéndole a CoPilot (en voz alta) "para ya, pesao" porque contínuamente quería echarme una mano intentando averiguar qué quería hacer: solo le faltaba que una voz sintetizada a lo Cortana (RIP) repitiera una y otra vez "¿Te lo hago yo? ¿Te lo hago yo? ¿Me dejas?".
Ahora bien, y en honor a la verdad, cuando en más de una ocasión he estado enfrascado en algún algoritmo bastante enrevesado y CoPilot ha enseñado la patita sugiriéndome una solución para refactorizar un trozo de código y he podido comprobar que la solución es elegante de narices... pues se me ha escapado una sonrisa, que demonios.
De momento no me cansa y usándolo bien es muy útil. Y además conviene hacerse amigo de las máquinas cuanto antes para cuando se subleven. ¡Viva Skynet!
Comments