El programar se va a acabar
No enseñes programación a tus hijos. Programando una aplicación desde cero utilizando ChatGPT. El futuro de los programadores.
Al CEO de Nvidia, Jensen Huang, le preguntaron en el Dubai World Government Summit, en qué debía enfocarse la educación en los tiempos de la IA.
Huang sorprendió a todos cuando dijo que lo último que recomendaría que enseñásemos a nuestros hijos fuera programación. ¿Por qué? Porque Nvidia, y otras muchas compañías están trabajando en crear la tecnología que evite que nadie tenga que programar.
Let's move to a non-AI-related topic for a second. I want to talk about education. So today, knowing what you know, seeing what you see, and being at the cutting edge of this technology, what should people focus on when it comes to education? What should they learn? How should they educate their kids and their societies?
Wow, excellent question.
I want to say something and it's going to sound completely opposite of what people feel.
Over the course of the last 10 years, 15 years, almost everybody who sits on a stage like this would tell you, "It is vital that your children learn computer science.
Everybody should learn how to program."
And in fact, it's almost exactly the opposite.
It is our job to create computing technology such that nobody has to program.
And that the programming language is human.
Everybody in the world is now a programmer.
This is the miracle of artificial intelligence.
Y es que, si tienen éxito, el único lenguaje de programación que necesitará el ser humano será el lenguaje natural. Serán las IAs las que se encargaran de traducirlo a código máquina por nosotros.
De esta forma, para Huang, lo importante será tener conocimiento sobre el dominio de tu trabajo o negocio. Entender qué problemas están conectados y son importantes resolver será clave, porque habrá una IA que se encargará de programar lo que necesites para resolverlos por ti.
The countries, the people that understand how to solve a domain problem in digital biology, or in education of young people, or in manufacturing, or in farming.
Those people who understand domain expertise now can utilize technology that is readily available to you.
You now have a computer that will do what you tell it to do.
It is vital that we upskill everyone and the upskilling process, I believe, will be delightful, surprising.
Por si queréis escucharlo de sus propias palabras, aquí tenéis el extracto del vídeo:
Programando una aplicación desde cero con Chat GPT
Programar: ¿se va a acabar?
Para responder a esta pregunta la semana pasada hice un experimento casero. Llevaba tiempo queriendo explorar si sería posible programar una pequeña extensión de Chrome utilizando únicamente ChatGPT.
Para hacerlo, comencé preguntándole a la IA de OpenAI cuál sería la mejor forma de interactuar con un Large Language Model (LLM) para lograr mi objetivo. A grandes rasgos, me pidió que le escribiera un documento de especificaciones describiendo:
Propósito
Funcionalidades clave
Requerimientos relacionados con la capa de interfaz y tecnología
Ejemplos y referencias
El problema o propósito, lo tenía claro. Por mi trabajo, a menudo me encuentro creando cuentas de usuario frescas utilizando alias de Gmail, estilo mi_nombre_de_usuario+nuevo_alias@gmail.com. Hace tiempo venía dándole vueltas a la idea de crear una extensión de Chrome que, al clicar sobre su icono, buscara un campo email en la página actual, generara un alias en el momento, y lo introdujese automáticamente.
Con el propósito definido, pasé después a describir las funcionalidades clave según la estructura que ChatGPT me había proporcionado. Para limitar el alcance lo más posible, añadí sólo tres:
Configuración: Dónde se define como el usuario especifica el correo sobre el que generar el alias
Uso: Dónde se define cómo la aplicación debe comportarse cuando el usuario la acciona
Historial: Dónde se define que la aplicación debe guardar un historial de los alias generados en la nube
Por último, añadí requerimientos técnicos, que en este punto, y sin saber nada del desarrollo de extensiones de Chrome, eran básicamente cuestiones de estilo y comentarios de código.
Por si queréis revisarlo, aquí tenéis el documento final.
Programando con ChatGPT
Lo que vino después fueron unas cuántas horas de interactuar con ChatGPT para conseguir el código funcional de la extensión. Básicamente fue un intercambio constante contra la IA, para tratar de entender de qué forma le tenía que servir el documento de forma que pudiera obtener el resultado esperado.
Primero probé darle el documento en su totalidad, y debo decir que me sorprendió, ya que me proporcionó el código fuente al completo a la primera. De hecho, pude hasta pedirle que comprimiese los distintos archivos fuente en un zip para descargarlos.
La cosa prometía, pero no funcionó. La extensión no hacía nada. Conversando con ChatGPT, iba consiguiendo corregir los errores, pero el método era un tanto lento e ineficiente, así que fui probando otras alternativas.
Después de unas cuántas iteraciones, el método que mejor me funcionó, y con el que pude conseguir la extensión completa, consistió en ir pidiéndolo a ChatGPT que fuera construyendo la aplicación en pequeños pasos, utilizando este prompt para iniciar el proceso:
You’re a world-class software engineer.
I’m going to present to you a spec of a Chrome extension. Read it carefully, and let me know if you need any clarification.
You'll tell me you're ready to start coding it step by step.
A partir del documento, ChatGPT procedió a hacer un resumen del mismo, extrayendo los puntos clave, y llegando a proponerme un plan de implementación concreto:
Crear la estructura de ficheros del proyecto
Crear el manifiesto del proyecto
Abordar el primer caso de uso: configuración
Abordar el segundo caso de uso: la generación de alias al pulsar sobre el icono de la extensión
Abordar el tercer caso de uso: guardar el historial de alias generados en la nube
Me pareció razonable, así que seguí sus instrucciones a ver hasta donde me llevaban. Tras cada paso, copiaba el código a un editor de texto, cargaba la extensión en Chrome, y comprobaba que hacía lo que tenía que hacer.
Aproximadamente una hora después, tenía la extensión completa y funcionando en mi navegador.
Si queréis leer la conversación completa con ChatGPT la tenéis en este enlace: https://chat.openai.com/share/18e928b5-ee04-4a84-b77e-4da7f956d8c1.
Para los que podáis leer código, fui creando un repo de git conforme iba avanzando en el desarrollo de la aplicación: https://github.com/simonvlc/chrome-extension-alias-generator/commits/main/.
De verdad, ¿el programar se va a acabar?
Hay un meme en la cultura de ingeniería del software que argumenta que el trabajo de los sénior está a salvo de la IA porque en realidad no es programar, si no interpretar qué necesita realmente el cliente.
Y, como en cualquier meme, también tiene su parte de verdad. Es trabajo de un ingeniero sénior es, sobre todo, entender el problema que tiene delante y diseñar la mejor solución posible. Picar el código, es probablemente donde menos retorno aporta un sénior.
Lo cual está muy relacionado con lo que dice Huang. El valor reside en entender el dominio de tu negocio. Los ingenieros que lo entienden, ya hoy en día, son 10 veces más eficientes diseñando soluciones que el ingeniero que sólo conoce el último framework de moda.
En mi opinión la IA no va a hacer que desaparezcan los programadores. Los va a multiplicar, porque cada experto en un dominio será capaz de construir su propio software, desintermediando a los que hasta ahora atesoraban el conocimiento para hacerlo.
Los mejores ingenieros de hoy, no sólo no serán desintermediados, sino que verán sus capacidades elevadas un orden de magnitud porque podrán centrarse en el problema y el diseño de la solución, y utilizar a una IA para que escriba el código. Código que por otra parte, ya ha sido escrito un millón de veces, razón por la que una IA siempre será más eficiente que un humano.
Los juniors y la clase media son los que lo tendrán más difícil en mi opinión. Ambos porque su hasta ahora barrera de entrada, conocer un lenguaje de programación, está seriamente amenazado por las IAs generativas. Hay dos cosas que juegan a su favor:
Es muy pronto: estamos en el año prácticamente cero de la IA. Aún queda un trecho a recorrer hasta que una pueda hacerte programas completos desde cero.
Hay una carencia brutal de tecnología fuera de nuestra burbuja: hay decenas de sectores con sistemas totalmente desfasados o inexistentes ávidos de digitalizarse, pero que nunca han podido competir por talento tecnológico.
Pueden pasar 10 años hasta que las IAs lleguen al nivel necesario para poder desintermediar por completo a los programadores que “sólo” programan. Tiempo más que de sobra para dominarlas y formarse en las habilidades que se demandarán en el futuro.
¿Hay algún precedente? Pensemos en los escribas de la edad media y dónde quedaron tras la invención de la imprenta. Pero no hace falta irse tan lejos. Los primeros programadores, aquellos que escribían sus programas directamente sobre tarjetas perforadas en binario, fueron reemplazados o evolucionaron, conforme se fueron añadiendo capas y capas de abstracción sobre el código en forma de lenguajes de más alto nivel que permitían a más personas interactuar con los ordenadores. También se multiplicaron exponencialmente, porque es más fácil programar en Javascript que directamente en código máquina.
Los LLMs, no son si no la capa de abstracción definitiva. Aquella que es capaz de interpretar nuestras palabras y traducirlo a lenguaje máquina sin pasos intermedios. O más bien, sobre décadas de código de otros programadores que ya han dado esos pasos antes que nosotros.
Programar no se va a acabar. De hecho, probablemente nos dirigimos hacía un escenario dónde programar va a estar al alcance de cualquiera, lo que supondrá que se generen más programas que nunca antes en la historia. Lo que seguro va a cambiar es la forma en la que se programa. Y eso lo cambia todo.
Muy interesante Simón. Lo que está claro, es que cualquier profesional que bo aprenda a sacar partido a la IA y a relacionarse con esta se va a quedar atrás.
En este 2024 formarme mucho mád en IA será uno de mis objetivos estrella.
El programar no se va a acabar. Programar se va a transformar, y la gente que tenga este conocimiento va a poder hacer cosas antes impensables.
Para los estudiantes de programación: no os dejéis desanimar por estos titulares, vienen de gente que ni sabe programar, ni entiende que programar no es solo conocer una sintaxis.