Copilot: Te va a quitar el trabajo o ayudar a quedártelo
¿Qué es Github copilot?
Se podría resumir en que es una inteligencia artificial que te ayuda a programar, a través del auto completado de código. Algo así como un intellisense, pero versión mega brígido. Este tiene la capacidad de entender el contexto y sugerir nombres para variables (muy útil), comentarios e incluso funciones enteras, algo realmente sorprendente. Y ojo, que Copilot habla todos los lenguajes. Es como hacer pair programming pero sin una pareja.
Esta herramienta, que parece que venir directamente desde el mundo de Harry Potter, fue desarrollada por Github y OpenAI y se puede obtener como una extensión para los editores Visual Studio Code, Neovim y JetBrains. Todo lo que necesitas saber sobre esta herramienta te lo explico a continuación
Tecnología detrás de tu copiloto
Es una IA, pero a pesar de eso no son infinitos if's anidados. Copilot funciona gracias a Codex, un modelo de inteligencia artificial desarrollado por OpenAI. Este software es un descendiente de GPT-3, otra red neuronal de la misma compañía, siendo su gran mejora la capacidad de transformar lenguaje natural a código, lo que permite que copilot sea capaz de interpretar comentarios en tu código y convertirlo en cosas como una función, como en el siguiente ejemplo
Todo lo que está en un gris distinto al del comentario es la sugerencia de Github Copilot, y eso que el comentario es bastante simple y poco específico. Obvio que hacer funciones para jugar cachipún (piedra, papel o tijera) no es lo único que puede hacer y no da solo una solución, más adelante veremos más ejemplos.
Quizás te estarás preguntado: Si es un modelo de inteligencia artificial y logra dar sugerencias para todos los lenguajes…¿De dónde sacaron tantos datos para entrenarlo? Y PUM 🤯, ¿Te acuerdas del otro colaborador? ¿Un tal Github? Bueno, con todos los repositorios que son públicos en esa plataforma se entrenó esta IA, así que quizás colaboraste en el proceso sin saberlo.
Además, algo que es realmente sorprendente es que logra aprender de lo que tu vas programando ¿Cómo así? Si identifica que, en relación al contexto, lo que estás desarrollando ahora se parece lo suficiente a algo que ya hiciste antes, es capaz de recomendártelo, sobre tu propio código!
¿Es realmente útil?
Cómo diría un economista frente a cualquier pregunta, depende. Obvio que es de gran ayuda tener un compañero que te sugiera soluciones que (casi siempre) funcionan, que de buenas ideas para las variables o a los problemas que te puedes estar enfrentando. El gran pero es que, cómo me imagino ya habrás pensado, no resuelve la pega por ti. Copilot a pesar de ser una herramienta que roza lo onírico, no puede saber qué es lo que tiene que resolver, y en casos específicos no funciona demasiado bien.
Sobre todo cuando se trata de hacer código más custom, este no es capaz de sugerirte lo que debería, pero cuando estás intentando resolver un problema que puede haber sido resuelto antes, definitivamente es tu mejor aliado. Te puede sugerir hasta 10 soluciones distintas, algunas similares y otras radicalmente distintas para el mismo contexto. Si quisieras resolver un problema común, digamos solucionar un sudoku, con un algoritmo bien conocido, digamos backtracking, puedes dejar todo en las manos de tu herramienta de “pair programming”. Solo dile que quieres resolver (incluso con un typo)
No te convence esta solución? Tranqui, tiene 10 más para ti
Por razones lógicas no puse las 10 sugerencias, pero todas siguen el formato que se ve en los screenshots.
Pero lo bacán que es no termina ahí, a la hora de tratar con librerías/paquetes/gemas nuevas le vas a estar muy agradecido. La sintaxis de eso que estás usando puede dejar de ser tu problema. Si es que tienes suerte, quizás ni tengas que leer la documentación para algunas cosas. Todo esto gracias a que don Github y otros millones de personas ya lo hicieron. Solo siéntate y concéntrate en resolver el fondo del problema y no en la forma.
Como todas las cosas, no puede ser perfecto, y hay veces en las que no te va a sugerir lo que debería. Puede pasar que no encuentre una solución adecuada, o quizás se maree un poco y te diga que pongas cualquier cosa, como suele pasar en un modelo de inteligencia artificial. Es por esto que es importante que tu seas siempre el personaje principal, no hay que olvidar que a pesar de su genialidad, es solo una herramienta. Además, hay cierto disgusto en el mundo del desarrollo con algunos devs que no les pareció demasiado buena la idea de que usaran sus repositorios (a pesar de ser públicos) para entrenar esta IA, ya que está en una línea muy gris entre la propiedad intelectual y la creación propia, pero ese es un tema aparte que no se alcanza a abordar en este post. Tampoco hay que confiar a ojos cerrados en esta tecnología porque, como he repetido varias veces, se entrenó con TODO el código disponible, lo que se traduce en que a veces puede tener código que no sea de muy buena calidad, o también pueda llegar al extremo de sugerirte código que contenga discursos de odio, por lo que hay que tener ojo y reportar esos casos para que no sucedan
¿Dónde conseguirlo?
Lamentablemente esta maravilla no es accesible para todo el mundo, porque todavía está en su versión beta, por lo que solo puede ser usada por un grupo de testers ¡Pero no te preocupes! Para poder ser parte de esa grupo privilegiado solo basta con que pidas serlo, no es necesario ningún otro requisito. Pide entrar al grupo de testers acá y espera con ansias a tener Copilot
¿Te (nos) va a quitar el trabajo?
Como probablemente ya dedujiste, no, no nos va a quitar el trabajo. Por un lado es una herramienta increíble, casi mágica, pero necesita de alguien que la sepa usar para que se haga útil. No es capaz de entender, procesar y resolver el problema que se presenta, así que para eso siempre te van a necesitar a ti (o a mi). No te va a quitar el trabajo, pero sin duda lo va a hacer bastante más liviano, olvídate de tener que googlear soluciones sencillas que no recuerdas, de tener que leer de pies a cabeza toda la documentación y, lo mejor (según yo), olvídate de memorizar esos algoritmos milenarios, porque Copilot lo hará por ti. Ahora solo enfócate en lo importante, resolver problemas.