Github Copilot: 6 meses después
Llevo un tiempo usando a diario Github Copilot: una IA de autocompletado de código que parece tener vida propia.
GitHub Copilot está disponible como una extensión para Visual Studio Code, Neovim y JetBrains. Va mandando el código y el contexto del entorno (lenguaje de programación usado, todo el código del proyecto y los nombres de los archivos) a los servidores de OpenAI, donde es completado y enviado de vuelta como una sugerencia. Al pulsar Tab
, la sugerencia se añade al código, y al pulsar Esc se descarta.
Está basado en una IA llamada Codex, un descendiente de GPT-3 ajustado para su aplicación sobre lenguajes de programación y entrenado sobre todos los repositorios de dominio público de Github. Esto incluye código, comentarios y documentación en todos los lenguajes de programación imaginables.
Usarlo por primera vez es emocionante. Poner el nombre de una función y que genere no sólo su código sino también un enlace válido a una API de conversión de moneda parece sacado de una novela de ciencia ficción. Pero pasado el hype inicial es fácil ver que la herramienta no es perfecta. Necesita ser guiada para llegar al resultado esperado y hay que entender qué está escribiendo para no perder el control.
Por ejemplo, en el segundo 0:30
del vídeo anterior intenta usar un servicio de pago, así que defino una URL del Banco Central Europeo para darle una pista de qué herramientas usar. Y aun así, el código generado no es perfecto y hay que corregir a mano la expresión regular para parsear los datos.
Aun así, decidí dejar el plugin activado durante los últimos 5 meses, y entre trabajar y programar por hobby lo he probado con muchos lenguajes distintos: Python, JS, CSS, C++, PHP, SQL, Arduino, VBS, OpenScad, GLSL… y ha sido un cambio radical en mi forma habitual de programar. Uno de esos saltos que se producen pocas veces.
Cuando era pequeño, mi padre compraba la Computer Hoy todos los meses y yo me la leía de arriba a abajo. En una edición, había una guía que rezaba algo así como "aprenda a optimizar sus tareas con Visual Basic" y por algún motivo me dio por seguirla. Cuando vi la magia que había en pensar una idea, describírsela a un ordenador y verla hecha realidad, sentí el primero de esos saltos.
Desde entonces, empecé a programar en VBS sin mucho más que aquella guía y unas fotocopias que alguien me consiguió. Mi forma de resolver mis necesidades era mirar esos 20 folios fotocopiados una y otra vez hasta que daba con una respuesta. Cuando los folios ya estaban ajados y amarillentos, llegó internet a casa y se produjo el siguiente salto.
Programar se volvió muy distinto. Ahora mi conocimiento no se limitaba a unos pocos folios, sino a la referencia completa de Visual Basic o cualquier otro lenguaje que quisiera aprender. Y entre referencias online, foros e hilos de correo seguí programando hasta empezar la Universidad, que fue cuando aprendí lo que era un IDE con debugger.
Ese salto también fue muy grande. Ahora podía escribir en un editor de texto que le ponía colores a mi código, me autocompletaba algunos métodos, me permitía navegar por la referencia del lenguaje con solo pulsar Ctrl+Space
y ver línea a línea cómo cambiaba el estado de mi aplicación. Y por si fuera poco ahora el foro era Stack Overflow.
En la actualidad sigo programando así, pero cuento con otro as en la manga: la habilidad de no mirar una API si no recuerdo algo, de dejar al IDE terminar mi código siguiendo el mismo estilo de mi codebase, y en general de dedicarme a la parte divertida de la programación en vez de pelearme con la API de Matplotlib, Puppeteer o PyTorch.
Cuando salió Copilot todas las opiniones con una semana de uso eran que iba a reemplazar a los programadores y que era una herramienta mágica, por eso me quise esperar a haberlo probado un buen tiempo para entender cuál era su sitio en la caja de herramientas del programador. Y mi conclusión es que es muy, muy útil si se usa con algo de filosofía.
Es fácil dejarse llevar por las soluciones que propone Copilot (al fin y al cabo no hay Oscar al mejor código). Pero como no es perfecto, sin saber qué está haciendo es fácil hacer código poco funcional. O lo que es peor: funcional pero con vulnerabilidades difíciles de detectar. Algo parecido a hacer copy-paste indiscriminado de Stack Overflow.
Está claro que hay una tendencia hacia una programación cada vez más asistida. Y si el futuro está en herramientas como Copilot, tendremos que atajar retos como evitar la distracción de las recomendaciones o favorecer el pensamiento crítico ante sugerencias que impliquen malas prácticas y aproximaciones anticuadas; algo parecido a lo que ocurre con las IAs entrenadas en datasets reales y sus prejuicios adquiridos.
Por el momento podemos probarlo para entender mejor sus implicaciones. Si has leído hasta aquí y estás interesado, te gustará saber que la telemetría sólo se usa para ver qué soluciones son aceptadas, pero el código que se escribe no alimenta al modelo. Siendo un producto de Windows es probable que estén tirando la caña para pescarnos luego con un servicio de suscripción, así que podéis apuntaros a la beta antes de que sea demasiado tarde.
Sé el primero en comentar