En junio de 2021 GitHub presentaba una herramienta singular. Un asistente capaz de autocompletar y generar código gracias a la inteligencia artificial. Lo llamaron GitHub Copilot. En aquel momento la incógnita era clara: ¿realmente puede una IA programar? Las dudas eran muchas, sobre todo teniendo en cuenta que el limitado lanzamiento de GPT-3 en 2020 no había llamado apenas la atención.
Sin embargo, Copilot, que precisamente estaba basado en dicho modelo de inteligencia artificial, demostró que las cosas habían cambiado. Este servicio se convirtió en muy poco tiempo en toda una revolución para los desarrolladores, que comprobaron cómo gracias a este componente era posible ahorrar mucho tiempo en tareas repetitivas. De repente las máquinas podían programar (un poco) por nosotros.
El impacto de este asistente fue enorme: en pocos meses llegó a "picar" el 30% del nuevo código que se publicaba en GitHub, y poco después esa cuota subió al 40%. ¿La previsión? Que en cinco años llegue al 80%.
Este avance se ha visto ensombrecido por ChatGPT, el motor que OpenAI presentó en noviembre de 2022 y que planteaba un cambio radical no solo para los desarrolladores, sino para todo tipo de profesionales y usuarios. Su aplicación era mucho más general y no se ceñía al mundo de la programación, pero aún así era también posible usarlo para programar.
Los avances en este ámbito han sido —como muchos habréis visto— frenéticos. Hace unos días se presentó GPT-4, el nuevo modelo de inteligencia artificial conversacional que añade novedades importantes (es multimodal y admite entrada de texto pero también de imagen) y sobre todo es más potente y preciso. En pocos días hemos visto cómo han surgido sorprendentes casos de uso para este nuevo motor de IA, y entre ellos está el de la programación.
Copilot, ChatGPT y GPT-4, enfrentados
Precisamente esa capacidad y esas mejoras planteadas en GPT-4 nos han hecho preguntarnos si este modelo cambia aún más las cosas para los programadores. Y para responder a esa pregunta hemos querido preguntar a dos expertos en este ámbito, que nos han dado su opinión sobre estas plataformas, su alcance y, por supuesto, su futuro.
El primero de los expertos a los que hemos querido acudir para dar respuesta a estas preguntas es Brais Moure (@MoureDev), ingeniero de software que desde hace ocho años ses freelance especializado en desarrollo móvil y que además desde hace cuatro es divulgador y creador de contenido sobre programación en sus canales de YouTube o Twitch.
Brais nos confesaba cómo a él la aparición de GitHub Copilot le sorprendió como a todos. "Nos volvíamos para probarlo y ver cómo eran sus respuestas en diferentes lenguajes y atendiendo a cada casuística". Este experto ha seguido usándolo de cuando en cuando, pero confiesa que "habitualmente no".
Para él Copilot "es una gran herramienta" que le permite responder algunas preguntas que "antes buscaba en Google/Stack Overflow/GitHub" o "generar ese primer código para yo mismo seguir completándolo". Sin embargo para él aquí cabría aplicar la célebre cita de Spider-Man: "un gran poder conlleva una gran responsabilidad". De hecho, explica lo siguiente:
"Descargar toda nuestra responsabilidad como programadores en una herramienta como Copilot puede derivar en perder el control de nuestro software. Resumiendo, ante todo, debemos entender que esa respuesta automática es la que a nosotros nos encaja (y tener la capacidad de adaptarla a nuestras necesidades de proyecto). Dicho de otra manera, es a la que nosotros llegaríamos, pero quizás tardando más tiempo".
Hay un detalle importante más sobre Copilot. Como comentaba Brais, "lo mejor de Copilot es que está integrado dentro de nuestro editor de código" y está expresamente creado para este ámbito, algo que lo hace especialmente potente para desarrolladores.
El segundo de nuestros expertos es Miguel Ángel Durán (@midudev), programador con más de 15 años de experiencia. Como Brais, él también es creador de contenido y publica su contenido tanto en YouTube como en Twitch, y coincide con esa visión de la utilidad de la herramienta creada por GitHub.
Miguel Ángel nos comebtaba cómo ha usado Copilot "desde el primer día" Gracias a él, destaca, "ha mejorado muchísimo mi productividad. Me gusta porque se integra perfectamente con mi flujo de trabajo. No es intrusivo porque es como un consejo".
Para él Copilot es un asistente especialmente útil. "Por ejemplo, si no sé cómo plantear una solución en un momento dado, su sugerencia, aunque no sea la mejor, me ayuda a pensar en una dirección. Igual después ni siquiera uso su sugerencia, pero me desbloquea para continuar". Hay otra ventaja aún más esencial: ahorrar tiempo que puede dedicar a otras tareas:
"En otras ocasiones me ayuda con tareas repetitivas. ¿Cuántas veces he escrito un bucle para extraer un campo de un array de objetos? Muchas. GitHub Copilot me ayuda a escribirlo en un segundo y me permite concentrarme en lo que realmente importa".
Cuando apareció ChatGPT, ambos expertos también dedicaron tiempo a probar qué podía aportar este motor de IA a su trabajo. Para Brais ChatGPT tiene una orientación más generalista: "a ChatGPT le puedes plantear prácticamente el caso de uso completo (e iterar sobre las respuesta), ya que se trata de modelo conversacional". Para él la sensación es que GPT es "más inteligente, si se me permite la expresión. Creo que me ofrece mejores respuestas, sobre todo si le pones las cosas difíciles".
Miguel Ángel también ha usado ChatGPT en su flujo de trabajo, pero sobre todo "para contestar correos o crear documentación. Alguna duda de programación he podido hacerle, pero me es más pesado que la inmediatez de GitHub Copilot. La diferencia es que Copilot es más específico para programación y, además, usa el contexto de lo que ya estás creando. También te suele sugerir una sola línea de código y no bloques enteros.
Como ya destacaba Brais, Miguel Ángel opina que "ChatGPT es más general, te da bloques de código más grandes y con explicaciones". Para él ChatGPT es mejor opción si necesitas aprender algo o no tienes claro cómo hacer algo porque te falta el conocimiento.
Teníamos especial interés por conocer sus primeras impresiones sobre GPT-4, el nuevo modelo de IA conversacional de OpenAI. Para Brais "ejecuta mucho más lento que la versión 3", algo que la empresa ya avisaba en el anuncio oficial, pero a cambio sus resultados "son más detallados o coherentes, pero no siempre mejores, más eficientes o “elegantes” que la versión 3.5 (sobre todo a la hora de generar un código concreto)".
No solo eso, indica Brais: la versión 4 hace todo lo de la 3.5 "y me muestra paso por paso y con código cómo hacer las cosas". Además, explicaba, GPT-4 es multimodal y reconoce también imágenes como entrada, algo que "nos abre infinitas posibilidades".
Esa era también la percepción de Miguel Ángel, que nos explicaba como tras probarlo algunas horas lo encontraba más potente. "Es más preciso y más inteligente, aunque más lento". Señalaba además algo en lo que Brais también había incidido: "en ChatGPT las soluciones de código normalmente las intenta agrupar en un solo bloque. En cambio GPT-4 te da la solución paso por paso y te explica cada uno. Es más didáctico y más iterativo en sus soluciones".
Poniendo a prueba a CoPilot, ChatGPT y GPT-4
Tanto a Brais como a Miguel Ángel les pedimos un favor especial: poner a prueba a estas herramientas para ver cómo resolvían un problema específico. Brais en realidad quiso hacer dos pruebas. La primera, con un programa que calculase quién gana más partidas al piedra, papel, tijera, lagarto, Spock (¡grande!). El prompt fue el siguiente:
Crea un programa que calcule quien gana más partidas al piedra, papel, tijera, lagarto, spock.
El resultado puede ser: "Player 1", "Player 2", "Tie" (empate)
La función recibe un listado que contiene pares, representando cada jugada.
El par puede contener combinaciones de "🗿" (piedra), "📄" (papel),
"✂️" (tijera), "🦎" (lagarto) o "🖖" (spock).
Ejemplo. Entrada: [("🗿","✂️"), ("✂️","🗿"), ("📄","✂️")]. Resultado: "Player 2".
La prueba fue parte de los retos de programación que Brais le plantea a sus seguidores, y tras proponer este problema en concreto, sus conclusiones eran las siguientes:
- GPT-4: la solución era menos concisa, pero más fácil de entender.
- GPT-3.5: era más concisa, pero más compleja.
- Copilot: después de darle un par de vueltas, no ha podido resolverlo.
De hecho, tras la prueba confirmaba cómo Copilot "tiene un enfoque más orientado a resolver tareas cotidianas basado en código semejante ya publicado". Es algo que ya se conocía, pero GitHub Copilot básicamente hace un copia/pega de algo que ya ha hecho literalmente otra persona. Al asistente de GitHub "se le da peor entender una premisa compleja".
Este experto también le planteaba otro ejemplo: el de que creara "una expresión regular en python para saber si el IBAN de una cuenta bancaria es válida". Tras analizar el resultado, Brais concluyó que:
- GPT-4: Se ha ceñido a lo pedido, ha implementado una expresión regular, pero nos ha aclarado que puede no ser suficiente para validar el IBAN.
- GPT-3.5: Ha implementado una expresión regular y una validación adicional para validar al 100% el IBAN.
- Copilot: No ha implementado una expresión regular, pero sí una forma correcta de validarlo.
Para este programador la mejor solución era la de GPT-4 "por su forma entender el contexto, explicarlo y afrontarlo". Eso sí, advertía de que eso no quiere decir que a nivel de código sea el "mejor".
Miguel Ángel también tuvo el mismo detalle e invirtió tiempo en evaluar el comportamiento de estas tres plataformas a la hora de resolver un problema de programación. En concreto, el usó el prompt "Crea el juego de Super Mario Bros con JavaScript".
Como en el caso de los problemas planteados por Brais, Miguel Ángel confirmaba que GitHub Copilot no está tan destinado a resolver poblemas completos, y "está pensado más bien para darte sugerencias de tu propio código. Cuanto más código tienes en el archivo o el proyecto, mejores resultados da".
Con GPT-3.5 (el ChatGPT que está disponible de forma gratuita en la web de OpenAI) comprobó cómo el código era "una versión simplificada", en un solo bloque y "una explicación muy general del código".
El resultado, explicaba, funciona, "pero está muy lejos de tener cualquier referencia al juego de plataformas. Es algo tremendamente básico. Ha sido muy rápido respondiendo, eso sí".
Con GPT-4 la cosa cambiaba mucho. "Separa separa todos los archivos y sus explicaciones, en lugar de hacerlo todo en un bloque. Además es más avanzado todo lo que hace y las prácticas que usa", nos explicaba Miguel Ángel.
No solo eso: en esa versión del motor de IA de OpenAI el código estaba además más claramente segmentado: "me ha dado 5 secciones: El HTML básico, configuración del archivo de JavaScript, Creación de la clase Player, Control de Teclado y Bucle del juego". De hecho, señalaba, incluso implementa las "colisiones y el azul de fondo característico".
Lo que hizo Miguel Ángel a continuación es copiar el código y cambiar la imagen por un sprite de Mario. Tras hacerlo "me ha aparecido este juego básico pero que me permite controlar a Mario, saltar, tiene gravedad y colisiones con los laterales. Desde luego, se ve mucho más avanzado y completo que el de ChatGPT. La imagen queda muy grande, porque es la primera que he encontrado, pero con algunos ajustes tendría una base reconocible de Super Mario Bros".
Eso sí, había otra diferencia importante respecto al comportamiento de GPT-4 respecto a su predecesor. "la versión de ChatGPT ha usado apenas 3 o 4 segundos. La versión de GPT-4 ha tardado mucho más en producirlo, casi un minuto y, además, he tenido que indicarle que me repita el último punto porque el código no me lo había dado completo". Para Miguel Ángel esto último es normal ya que GPT-4 acaba de hacer su aparición y seguramente mejor de forma notable a corto plazo.
Las conclusiones de ambos desarrolladores eran contundentes. Según Brais, a GPT-4 "debemos tomarlo como una herramienta de ayuda, no como una fuente de verdades universales. Y, mucho menos, como una amenaza. Si me tengo que mojar”, concluía, "me quedo con GPT antes de con Copilot, y con la versión 4 antes de con la 3.5 (ChatGPT)".
Para Miguel Ángel "GitHub Copilot ofrece una experiencia de desarrollo perfecta si ya estás en el editor. Yo pienso seguir usándolo y no lo voy a cambiar por ChatGPT/GPT-4". Aquí la idea es usar estos nuevos modelos casi más para otros ámbitos —apuntando a un sustituto del buscador de Google—, y apuntaba que "si le vas a sacar rendimiento", pagar los 20 dólares al mes que cuesta usar GPT-4 "puede valer la pena".
De quitarle el trabajo a los desarrolladores, nada
La capacidad de GPT-4, como ya había ocurrido con su predecesor, plantea una pregunta clara sobre el impacto que este modelo puede tener a la hora de quitarle el trabajo a los seres humanos en distintos ámbitos.
Quisimos saber qué opinan nuestros expertos: ¿amenaza GPT-4 sus puestos de trabajo?
Brais Moure opinaba que el mundo del desarrollo de software no ha dejado de evolucionar, y cada una de esas evoluciones "nos ha permitido crear más y mejor software, incluso mucho más rápido y con una “barrera de entrada” a nivel de conocimientos menor, pero no por ello necesariamente insuficiente". Como él concluía:
"Copilot y GPT-4 no son más que herramientas que los desarrolladores usarán en su beneficio y se incluirán dentro de nuestro flujo de trabajo de una manera natural, como hemos hecho con muchos otros avances. Unas tareas asociadas a nuestro rol desaparecerán y otras nuevas harán su aparición, pero, a fin de cuentas, seremos los encargados de seguir programado software (sea lo que sea que signifique eso a futuro, al principio perforábamos tarjetas...)".
Muy en esa línea expresaba también su opinión Miguel Ángel Durán, que se resistía a creer que estos sistemas vayan a quitarle el puesto de trabajo a los desarrolladores:
"No creo que los motores de IA vayan a reemplazar a los programadores al corto plazo. Pero sí que creo que vamos a poder hacer más cosas con menos esfuerzo y tiempo. Si esto se consigue, los programadores podrán dedicar más tiempo a cosas más creativas y menos a tareas repetitivas".
Para él, de hecho, quienes sepan usar estas herramientas "van a tener una ventaja competitiva". Miguel Ángel sí cree que puede haber un cambio de paradigma, pero no sustituyendo a los programadores, sino reemplazando al concepto de programación como tal. "La pregunta no es si [la IA] reemplazará la programación. La pregunta es cuándo... Pero vaya, en ese tiempo no creo que nos tengamos que preocupar sólo de la programación precisamente".
Esa percepción es la que por ejemplo también expresaba recientemente John Carmack, cofundador de idSoftware, creador de Wolfenstein 3D, Doom o Quake y una leyenda de la programación de videojuegos.
From a DM, just in case anyone else needs to hear this. pic.twitter.com/GZl4twl4wP
— John Carmack (@ID_AA_Carmack) March 18, 2023
En una reciente conversación con un estudiante, éste le preguntaba por el futuro que esperaba a todos los jóvenes que querían plantearse ser desarrolladores. Para Carmack el software "es solo una herramienta que ayuda a la gente a lograr algo [...]. Mantén la atención en el valor ofrecido, y no te enfoques demasiado en lo específico de las herramientas". O lo que es lo mismo: una vez más, el papel del desarrollador puede cambiar, sí, pero las herramientas seguirán siendo eso. Herramientas.
Mientras, lo que es evidente es que estas herramientas no van a parar de evolucionar y mejorar. Lo ha demostrado Microsoft, que mientras preparábamos este tema presentaba GitHub Copilot X, una versión "supervitaminada" del anterior desarrollo que promete integrarse aún más y mejor que su predecesor en el flujo de trabajo de los desarrolladores. La evolución no para, y los desarrolladores tienen aquí herramientas excepcionales para realizar su trabajo.
En Xataka | No tengo ni idea de programar pero sí tengo GPT-4. Así que he creado un clon de 'Flappy Bird'
En Xataka | GPT-4 es un salto de nivel brutal respecto a ChatGPT: nueve ejemplos para comprobarlo en persona
Ver 26 comentarios