Programadores, ¿oís eso?: es el sonido de la inevitabilidad

Con la inteligencia artificial aparece una nueva capa de abstracción en el desarrollo software. Todavía no "ha cambiado la programación para siempre"

Mar 16, 2025 - 08:48
 0
Programadores, ¿oís eso?: es el sonido de la inevitabilidad

“You hear that Mr. Anderson?... That is the sound of inevitability... It is the sound of your death... Goodbye, Mr. Anderson...”. Agente Smith, Matrix

Me invitan a un evento de desarrolladores. El tema de la mesa redonda es, por supuesto, la inteligencia artificial. La idea, me indicaron, era que yo participara como ponente “a favor”.

Llevo un par de días pensando en ello. En si estoy “a favor”, en si creo que la IA “es buena” en la industria del software. Tras varios días rumiando, leyendo, viendo vídeos y reflexionando creo que tengo más clara mi postura. La inteligencia artificial en programación es inevitable.

Dario Amodei, CEO de Anthropic, asegura que en los próximos 3-6 meses, la IA escribirá el 90% del código. Y que en 12 meses, prácticamente todo.

Zuck es más comedido, sólo apunta a que en 2025, los sistemas de IA de Meta y otras empresas serán capaces de escribir código como ingenieros de nivel medio.

Algunos han señalado un “YES/BUT” del amigo Dario: mirad cuántos ingenieros software quieren contratar en su empresa. Hay una síntesis de las posturas: Amodei debe entender, por supuesto, que un ingeniero hace mucho más que escribir código.

Y que, en todo caso, en un año seguirá habiendo “humanos en el proceso”. Es un tema que hemos discutido largo y tendido los últimos tres años: el pecado original de las alucinaciones sigue sin estar resuelto y además no hay que confundir que la IA pueda hacer una tarea con que haga un trabajo complejo que requiere interacciones, un entendimiento profundo de la materia y los objetivos y que, en realidad, está compuesto por decenas de tareas.

Aunque estas predicciones de futuro sean fruto del furor de una parte interesada tras los halagos recibidos por el lanzamiento de Claude Code y Claude 3.7, abundan los testimonios: “fue como si el lenguaje de programación no existiera y el simple inglés fuera ahora lo suficientemente bueno como para crear cosas realmente asombrosas” ; “Nunca he creído que la IA pudiera reemplazar a los mejores programadores expertos, pero ahora…”; “me da miles de líneas de código que funcionan a la primera”.

También tenemos algunos datos de los que partir.

En las competiciones de desarrollo tenemos que, hace meses, Alphacode llegó al nivel de programador medio y recientemente modelos razonadores como o3 están llegando al top 200 mundial.

Nvidia descubrió que DeepSeek R1 podía escribir kernels personalizados que "resultaron ser mejores que los kernels optimizados desarrollados por ingenieros expertos en algunos casos".

A mediados de 2024, la encuesta para desarrolladores de Stack Overflow reveló que el 82 % de los desarrolladores utilizan herramientas de IA para escribir código. Jetbrains apunta al 69%. Son datos previos a la explosión de Cursor, Windsurf y similares.

Según datos de GitHub, el uso de asistente de programación ha llegado a dar hasta un 55% de aumento en productividad en ciertas tareas. Y, lo que me resulta más revelador, la gran mayoría de desarrolladores siente que las herramientas de IA mejoran la calidad del software que producen. En EE. UU., por ejemplo, alrededor de 90% de los encuestados perciben que la calidad de su código aumenta al emplear asistentes de IA, e igualmente más de 80% en la India reportan mejoras, frente a prácticamente nadie que opine que la calidad disminuye.

Bar chart showing perceived impact of AI coding tools on code quality across USA, Brazil, Germany, and India. Respondents believe AI increases the quality of their code, especially in the US and India.

Con la inteligencia artificial en programación hay dos procesos en marcha a la vez

A la hora de debatir el impacto de la IA en desarrollo software tenemos un problema porque tiene un doble efecto. Y posiblemente uno triple, como discutiremos más adelante. Pero vayamos paso a paso.

Como hemos visto, un uso claro de la IA es el de asistente en programación, con cada vez más código escrito por ella. Eres un desarrollador y cuando te atascas, no das con la solución o simplemente te toca escribir algo tedioso para un asunto no muy complejo, cambiar la búsqueda en Stack Overflow / Google por preguntar a un modelo de IA.

Eso supone que para un programador la barrera de entrada y el tiempo de desarrollo de una aplicación ha bajado. Véase el ejemplo de Victoriano Izquierdo con Calmdigest, ocho horas para un servicio online bien resuelto. Podría haber sido más rápido con MCP, de hecho.

Incluso para grandes expertos hay ganancias de productividad en los sistemas más complejos. Esto que cuenta Ricardo Galli puede ilustrar el asunto.

Pero, por supuesto, no es todo. Tenemos una avalancha de no programadores creando webs y aplicaciones. Un ejemplo es esto de Kiko Llaneras (aunque él sepa programar, el ejemplo es ilustrativo).

Hay miles de ejemplos en redes y plataformas. El No-code ya venía permitiendo crear webs más sofisticadas y pequeñas automatizaciones (Webflow, Zapier, make, incluso podríamos meter ahí a Wordpress), pero la inteligencia está permitiendo un fenómeno nuevo. Si me permiten la provocación, el “código hecho por IA” es una especie de “el nuevo No Code”.

La capacidad de la IA de bajar la barrera de entrada a la hora de plasmar en un proyecto digital funcional una idea es una línea a seguir. Vería lo que está diciendo y haciendo Masad de Replit, por ejemplo en esta entrevista en Semafor. Básicamente ha reorientado la empresa en torno a la idea de que los programadores profesionales ya no son lo que más importa.

Empieza a haber consecuencias. Una es que gente con ideas fantásticas pero poco conocimiento técnico puede empezar a experimentar y ver resultados. También que, al igual que con el contenido online en el que ya cualquiera puede publicar en texto o vídeo, empezamos a tener producción masiva y de calidad muy desigual de aplicaciones y servicios online. Los programadores de siempre no están contentos porque los proyectos buenos tendrán que pelear todavía más por la visibilidad.

Separar hype, realidad actual y posibilidades de futuro

Y luego tenemos que en Y Combinator afirman que una cuarta parte de sus empresas de nueva creación del cohorte actual tienen bases de código generadas en un 90% por IA. También nos regalan los mensajes más afilados del hype para con el fenómeno: ingenieros que con IA son “10 veces más productivos”, fundadores que ahora se dedican a “pensar y que la IA escriba mis pensamientos” y así…

Creo que el asunto de que la IA hace todo el código o, más aún, que un agente como Devin puede ser un “compañero más del equipo de desarrollo” es enormemente exagerado. Como la idea de que su adopción desemboca en “ingenieros 10x” o que aumentando tantísimo la velocidad no se está haciendo sacrificando la calidad y mantenibilidad del proyecto a medio plazo.

Lo difícil es restar esta costra de hype del mucho valor que ya está aportando.

La foto actual es que un ingeniero en solitario puede hacer más rápido lo que hacía antes y, además, abordar asuntos más ambiciosos. Sospecho que un gran efecto de la IA es la explosión de ‘side projects’ creados por profesionales. También que equipos pequeños pueden acometer proyectos antes inaccesibles.

A partir de un mensaje de Andrej Karpathy se ha puesto en boga el “vibe coding”. Usar LLMs y Cursor para pedir el código a la IA de manera despreocupada, trabajar con la semántica (lo que quiero), y llegar a ni revisar el código esperando hasta que funcione.

Ahora Reddit, youtube y Twitter se han llenado de vibe coding, sobre el que señalaría dos cosas. Una es que Karpathy es uno de los mayores expertos en inteligencia artifical del mundo, no un novato sin experiencia. Y dos, como él dice “no está tan mal para proyectos de fin de semana de usar y tirar, pero sigue siendo bastante divertido”.

Lo difícil a la hora de atajar el hype con la IA en desarrollo software es que es realmente útil. Hay muchísimos momentos en los que ayuda: procesar y responder sobre documentación técnica de un nuevo sistema o librería a integrar, código de nuevas funciones en las que uno quiere ir rápido, revisar y buscar errores como ayudante en QA, explicar qué hace una función que no vemos clara, etc, etc…

Pero la inteligencia artificial no ha llegado, siquiera en programación, al punto de sustituir el conocimiento experto y profundo de un desarrollador con experiencia. No elimina decisiones de arquitectura críticas ni produce sistemas complejos que sean mantenibles.

Es igual de exagerado decir que alguien sin muchos conocimientos de análisis de datos, matemáticas, IA y programación puede hacer lo que Ricardo y su equipo que apuntar a que la IA generativa no tiene valor porque ella sola (o un no programador con ella) no puede hacer todo eso.

Y otra razón por la que es muy difícil discurrir sobre este tema: quedarnos con la foto fija del ‘estado del arte’. Es ese momento en que un programador experto intenta hacer algo de complejidad media con una IA que falla y resuelve “nunca lo conseguirá”. Es cuando, como hay muchos mensajes de hype, se acaba despreciando todo lo que viene desde la IA.

Nueva capa de abstracción en programación

Una idea que llevo tiempo rumiando es que, de alguna manera, la inteligencia puede ser una nueva capa de abstracción como otras que la han precedido históricamente.

Pasamos de programar directamente la máquina en ensamblador a compilador y lenguajes de bajo nivel, lenguajes de alto nivel, código interpretado en lugar de compilado, ofuscamos el manejo de memoria con punteros, delegamos la concurrencia y su complejidad.

Pensando de esta manera tenemos que vamos de una pirámide del tipo

+----------------------------------+

| No Code |

+----------------------------------+

| Lenguajes de Alto Nivel |

+----------------------------------+

| Bibliotecas y Frameworks |

+----------------------------------+

| Lenguajes Intermedios |

+----------------------------------+

| Lenguaje Ensamblador |

+----------------------------------+

| Hardware |

+----------------------------------+

a otra así en la que añadiríamos una nueva capa de abstracción, entre el no code y los lenguajes de alto nivel

+----------------------------------+

| No Code |

+----------------------------------+

| Code sólo con IA |

+----------------------------------+

| Lenguajes de Alto Nivel |

+----------------------------------+

| Bibliotecas y Frameworks |

+----------------------------------+

| Lenguajes Intermedios |

+----------------------------------+

| Lenguaje Ensamblador |

+----------------------------------+

| Hardware |

+----------------------------------+

Es algo similar a lo que plantea Tim O´Reilly en su “The End of Programming as We Know It”, comentado de forma algo crítica por ThePrimeTime.

Pero esto nos mostraría sólo una cara de lo que está pasando, la pila real de abstracciones debe recoger que la inteligencia artificial no sólo permite un escenario nuevo por encima de los lenguajes de alto nivel. Está cambiando el desarrollo en todas las capas, sería algo así:

+----------------------------------+

| No Code con IA |

+----------------------------------+

| Code sólo con IA |

+----------------------------------+

| Lenguajes de Alto Nivel + IA |

+----------------------------------+

| Bibliotecas y Frameworks + IA |

+----------------------------------+

| Lenguajes Intermedios + IA |

+----------------------------------+

| Lenguaje Ensamblador + IA |

+----------------------------------+

| Hardware + IA |

+----------------------------------+

Esta nueva pirámide nos lleva a varias reflexiones. Una es que despreciar que en “Code sólo con IA” (aquí me refiero a delegar todo el desarrollo, plausible para un no programador) porque sólo se puede aspirar a prototipos apenas funcionales y proyectos poco ambiciosos que luego además serán difíciles de mantener nos lleva a dos errores: el de no ver el impacto para el resto de la pirámide y el de quedarnos con la foto fija actual.

El gran tema está en cómo se desplaza el valor, la demanda en la pirámide. Históricamente que aparecieran los lenguajes de alto nivel no significó que dejaran de importar los desarrollos más pegados a la máquina: alguien tiene que hacer esos compiladores y sistemas operativos. Pero los cambios en la industria del software y la productividad sí que mueven la aguja.

El cambio de bajo nivel a alto nivel sin manejo de memoria directo permitió un aumento de la productividad aunque se sacrifique eficiencia del código. En muchos casos tuvo sentido económico y por eso hay más programadores de Java que de Fortran o incluso que de C++.

El salto a la web y luego al móvil llevó a una enorme explosión económica en hacer servicios y apps con los lenguajes y arquitecturas que precisan esas plataformas. Así tenemos a millones de programadores que han padecido esa desgracia llamada Javascript.

En si habrá una traslación de este tipo, es decir, si cambiará la demanda de desarrolladores por el impacto de la inteligencia artificial deberíamos considerar dos cuestiones.

Productividad y calidad del programador novato (y del experto) con inteligencia artificial

¿Es la capa de ‘Code sólo con IA’ realmente valiosa? Aparentemente lo es mucho: gente poco formada puede escribir software. Se parecería al salto de la revolución industrial: obreros no cualificados con máquinas nos dan lo que antes hacían artesanos con décadas de experiencia.

En la realidad del momento presente no lo es tanto. Sin un conocimiento profundo se puede aspirar sólo a proyectos muy poco ambiciosos y, además, difíciles de mantener. Decía Manu Arenas hace poco lo erróneo que resulta proclamarm como hacen algunos, que puedes crear una aplicación "sin tener ni p*** idea de código", pero no una aplicación cualquiera, sino la aplicación de "tus sueños"… gracias a usar Lovable.

Herramientas como esa son un juguete estupendo para crear prototipos más o menos funcionales. Conozco a programadores avanzados que así las adoptan. También para no programadores a la hora de conseguir pequeños casos de uso en poco tiempo. Pero ya. Pensar que la inteligencia artificial ha llegado al nivel de poder sustituir años de experiencia y formación en una disciplina compleja y dura como es el desarrollo software es comprar un hype sin reflejo en la realidad.

Y recordaría algo: este “Code con sólo código de IA” compite con lo que se puede hacer en el resto de capas por programadores con experiencia… impulsadas con una ganancia de productividad gracias a la propia IA.

Pero, de nuevo, toca insistir en no caer en la falacia de la foto fija o de la primera impresión. Probamos herramientas o asistentes, concluimos (con razón) que no dan para el hype ni para nada parecido a gente sin saber programar capaz de hacer una aplicación con complejidad, segura y mantenible. Pero eso es un error, el sesgo de hacernos fuertes en nuestra primera idea, y por eso siempre deberíamos matizar. Esto es así en ausencia de innovación.

Si atendemos a la situación actual, es improbable que haya un desplazamiento masivo del valor a la nueva capa de abstracción. Nos queda la pregunta de si la inteligencia artificial va a mejorar mucho en despliegue, diseño de arquitecturas complejas de aplicaciones, integración con otros sistemas, pruebas del software, ventana de contexto para tener ver todo el proyecto... Es, por tanto, un debate sin cerrar, afectado por una segunda derivada…

Cada nueva gran plataforma tecnológica cambia la industria del software

Volvamos al debate de 2022.

Me autocito: “¿Cuál será la nueva gran plataforma tecnológica que dominará tras la crisis? [..] mi apuesta, todo lo que está pasando alrededor del deep/machine learning me tiene fascinado”

Cada salto, desde el mainframe al PC y luego a la web y al móvil como principales fenómenos e impulsores de la demanda de nuevo desarrollos software tuvo consecuencias en qué lenguajes, metodologías, perfiles demandados… todo había que volver a hacerlo de nuevo, adaptado a esas nuevas grandes plataformas que además ampliaban la base de usuarios.

Si la IA va a ser la tecnología clave de las próximas décadas, ¿cómo afectará eso a la demanda y el valor en la pirámide de abstracciones en el desarrollo software? Es, sin duda, la pregunta más difícil y apenas he llegado a plantearme algunos escenarios plausibles.

  • Cambia todo para que no cambie nada. La IA es una especie de electricidad que mejora todo pero seguimos accediendo a webs, instalando apps, consumiendo SAAS en cliente-servidor. Tenemos gente jugando con el no code y el code con IA, pero no van más allá de sumar ruido.

  • Ídem al anterior pero super productivos. Ingenieros en solitario montan proyectos potentes, equipos pequeños pueden competir con las grandes. Es donde empezamos a ver signos claros. Es el punto de Levie de Box, que analiza Samuel Gil.

  • La IA empieza a ser una fuerza que agrega lo que antes se desagregó. Si vivimos un ‘unbundling’ en forma de una app para caso de uso y una miríada de SAAS especializados, con inteligencia artificial tenemos una mayor o menor recentralización. Es un escenario de futuro que para muchos empieza a ser presente: he visto servicio que piden una suscripción para resolver un problema que en 10 minutos con algo de maña y ChatGPT he podido hacer por mi mismo.

  • Super inteligencia. La IA llega a un nivel tal que hasta conceptos básicos de la industria del software quedan trastocados. Ya no se trata que alguien haya desarrollado algo para arreglar mi problema, sino que cuando lo tengo le pido a la IA una solución y ella se encarga (y si tiene que desarrollar software, lo hace). Resulta obvio recordar recordar a los lectores que, a falta de evidencia en contrario, prefiero mantenerme escéptico de que vayamos a conseguir AGI a partir de LLMs.

En cualquier caso, estas reflexiones nos dejan abiertas cuestiones para la segunda (y próxima) parte de este artículo. Qué puede pasar con el empleo y los salarios y qué podemos hacer ahora como profesionales y estudiantes.

Continuará.