![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
A pesar de cubrir algunas proezas de ChatGPT hace unos meses, no tomé el siguiente paso lógico para probar Copilot, la herramienta de soporte de codificación de IA de Github. Sin embargo, mi interés se despertó la semana pasada, cuando un compañero de trabajo compartió una captura de pantalla de un conjunto de pruebas generado por IA.
El mensaje fue razonablemente simple y los casos de prueba generados fueron relevantes; suficiente para hacerme querer suscribirme a la versión de prueba gratuita de GC y contribuir al advenimiento del evento de singularidad.
Evitaré cubrir en detalle lo que Copilot puede o no puede hacer: otros ya me anticiparon por mucho. La parte interesante para mí es cómo puedo llegar a un acuerdo con esta nueva tecnología.
En esta publicación, también usaré Github Copilot como punto de referencia para inferir lo que una "IA para la codificación" puede hacer hoy, ya que creo que representa el estado del arte en el campo.
Muchas preguntas espontáneas vienen a la mente cuando se piensa en la IA en el dominio del software.
¿Es útil? ¿Es peligroso? ¿Se llevará nuestros trabajos? Lo más importante es no arrinconarnos con una mentalidad limitante y dejar que nuestras emociones forjen una extraña narrativa en torno a la IA, ya sea como neoludistas o utópicos entusiastas de la tecnología.
En cambio, encuentro otros tipos de preguntas más interesantes y mucho más fáciles de responder: estas preguntas no implican una respuesta de "sí" o "no", sino que generalmente comienzan con "qué", "cuándo" y "dónde".
Por ejemplo, ¿cómo puedo integrar Copilot en mi trabajo diario? ¿Qué tareas facilita y qué habilidades personales exige?
El valor de la IA en nuestro trabajo es mayormente claro para los ingenieros de software. Aún así, entiendo que las personas de otros ámbitos de la vida pueden juzgar erróneamente cuáles son las posibilidades, especialmente porque a muchos creadores de contenido o periodistas les gusta atraer la atención sugiriendo escenarios catastróficos (o prometiendo que la creación de software ahora es accesible para todos).
Sí, es cierto que las herramientas basadas en GPT-3, y recientemente GPT-4, pueden escribir código, y sí, el código que se genera a menudo compilará y hará lo que se espera de él.
Sin embargo, esto no representa necesariamente una amenaza inmediata para la seguridad de mi trabajo, ya que escribir código no es lo que realmente hacen los ingenieros de software. Déjame elaborar mejor.
Nuestro trabajo no se trata de escribir código en un editor de texto. No somos taquígrafos. El trabajo consiste en decidir qué codificar. De hecho, cada vez que estoy diseñando software y finalmente empiezo a escribir algo en mi IDE, ya tengo en mente cómo será el próximo fragmento de código.
En este punto, AI solo está conectando los puntos, generando instantáneamente el método o la estructura de datos que pretendía, menos los errores tipográficos involuntarios u otros errores obvios.
Incluso si la IA pudiera contribuir con más del 80 % de algún código base, es esencial brindar la indicación adecuada (el 20 % inicial) , ya que contiene una gran cantidad de información que GC necesita para funcionar correctamente. Y no obtendrá ese aviso inicial sin un ingeniero detrás del teclado.
Creo que se puede hacer una buena comparación con los pilotos automáticos de los aviones. AFCS (Sistema de control de vuelo automático) puede realizar perfectamente una variedad de operaciones de vuelo: ajustar la ruta de vuelo, acercarse a un aeropuerto o incluso aterrizar.
Todavía no soñaría con subirme a un vuelo comercial sin supervisión humana.
El hecho de que la computadora pueda controlar el avión no significa que los pilotos permanezcan inactivos en la cabina de vuelo.
Todavía queda mucho por hacer: verificar el clima por delante, comunicarse con el control de tráfico aéreo, planificar rutas alternativas y, lo más importante, supervisar el piloto automático y tomar las riendas si es necesario.
Por tanto, podemos ver como los pilotos siguen siendo los que pilotan el avión.
De manera similar, la IA no desarrolla software, lo hacen los ingenieros . La IA es una herramienta. Los ingenieros están capacitados para optimizar su flujo de trabajo mediante el uso de la automatización, pero siempre controlarán lo que está haciendo su herramienta. Si no se está comportando según lo previsto, los ingenieros intervendrán y corregirán la situación.
Esta es la mentalidad que tengo cuando uso Copilot: con mucho gusto le delegaré las tareas menores pero, mientras tanto, estaré atento a los resultados que producirá.
Como sabrá, el algoritmo ML subyacente de Copilot se llama GPT-3 y hace predicciones de la secuencia más probable de tokens que se generarán. Si bien el código generado suele ser sintácticamente correcto, las herramientas no saben cuáles son las especificaciones y si el código producido es válido.
Una posible contramedida es ayudar a GC con un poco de ingeniería rápida: por ejemplo, escribir un comentario que indique lo que hace el siguiente fragmento es una técnica poderosa para ayudar a la IA.
Aún mejor, a veces incluso el comentario podría generarse automáticamente después de escribir las primeras palabras.
Sin embargo, hay que decir que, incluso en las condiciones más ideales, Copilot no siempre ofrece una sugerencia útil, o ninguna sugerencia si ese es el caso. Si bien GC es bastante sorprendente, creo que todavía es muy imperfecto como herramienta de codificación.
Por ahora, no decidí si incorporar completamente Copilot en mi conjunto de herramientas o no: la naturaleza aleatoria de sus sugerencias a veces puede ser un obstáculo.
En cualquier caso, sugiero a todos que se mojen los pies y al menos lo prueben una vez: piensen en él como una herramienta de utilidad como su resaltador de sintaxis o la función de autocompletado de su IDE favorito.
¿Cuál es tu opinión sobre Github Copilot? ¿Lo incorporaste a tu trabajo diario o fue un paso difícil para ti? ¡No seas tímido y cuéntamelo en los comentarios!