lunes, 16 de junio de 2025

La IA y la Informática: Puede la Máquina de las Respuestas desarrollar software?

Uno de los temas más promovidos por los Sacerdotes del Culto del Cargo, los gerentes de las empresas de tecnología, es la aplicación de IA a la Informática. Más específicamente, utilizar un Modelo Grande de Lenguaje (LLM) para programar computadores.

No es de extrañarse, considerando que los LLM fueron creados por personas de esta área.

Como un Uroboro, muchos predican que la IA reemplazará a los Informáticos, y dejará sin trabajo a muchos en esta área, de manera similar a otras disciplinas.

  • ¡Por supuesto!, el futuro está en el Vibe Coding! una persona con escaso o nulo conocimiento de programación, puede crear programas dándole instrucciones a un LLM!

Vibe coding, la nueva tendencia. Aprovechar al máximo las capacidades de la IA para reemplazar las neuronas de los programadores. Delegar las tareas tediosas y complejas del desarrollo de software a un LLM. Programar computadores dejándose llevar por lo que nos entrega ChatGPT o similares, de manera similar a surfear una ola en la playa.

  • ¿Reemplazará la IA a los programadores?

La situación no es tan diferente a otras disciplinas. Dado que este es un tema donde tengo mucha experiencia, puedo entregar información de primera mano para despejar dudas.

Lo primero y más importante es hacerse una pregunta muy similar a la formulada en mi artículo anterior:

  • En qué actividades de la programación de computadores, los LLM pueden reemplazar a los humanos de manera adecuada?

Por adecuada, me refiero a que el resultado entregado por un LLM sea tal que requiera un esfuerzo mínimo en controlar su calidad.

En otras palabras, que uno pueda confiar en la IA de manera similar a un humano experto en el tema.

Para responder a esto tenemos que entender qué es exactamente, programar.

En esencia, programar es concebir una secuencia lógica de pasos para resolver un problema de manejo de información y explicarlos de manera no ambigua a un computador.

Una persona que programa tiene que:

  1. Entender y conceptualizar, de manera completa, la cadena de razonamiento que resuelve el problema. Esto a menudo es algo complejo.

  2. Especificar lo anterior usando un lenguaje de programación. Éste, a diferencia de un lenguaje natural hablado por personas, es más conciso, no ambiguo y requiere un entrenamiento no trivial para usarlo de manera fluida.

Muchos ven un LLM como una alternativa atractiva para programar computadores. Si uno puede darle instrucciones sencillas a un computador usando lenguaje natural y el computador genera un software funcional, ¿para qué aprender a programar de la manera "tradicional"?

Las aparentes capacidades de los LLM en estas tareas, insinúan una revolución que cambiaría la Informática. Sin embargo, la gente cae a menudo en la falacia que para programar solo basta con aprender el lenguaje.

Lo cierto es que, lo más importante es la concepción de la solución, previa a su especificación: El diseño.

Al día de hoy, los LLM todavía son muy limitados para diseñar soluciones informáticas (el ítem 1 mencionado más arriba).

  • Pero, si es así, cómo lo hace un LLM para llegar a un resultado similar al de una persona experta?

A diferencia de un humano, un LLM opera de un modo drásticamente diferente. Recordemos que para crear un LLM hay que entrenarlo con múltiples textos de diferentes fuentes. El LLM no "aprende" de ellos como lo hacen las personas, sino simplemente registra las probabilidades de ocurrencia de cada palabra en diferentes posiciones de cada texto.

Al responder, un LLM no "piensa" realmente, sino genera estocásticamente el texto más probable que acompañe al prompt escrito por la persona. Si usamos lenguaje natural para decirle a un LLM: "Un elefante se balanceaba", este respondería: "sobre la tela de una araña". Esa sería su respuesta, ya que, de acuerdo a los múltiples textos con los que fue entrenado, esas palabras van a menudo juntas.

Cuando se trata de programación, la situación no es diferente.

En adición a textos en lenguaje natural, los LLM han sido entrenados con un sinnúmero de códigos fuente escritos por personas. Con esa información, el LLM es capaz de generar un programa de forma similar a como construiría una frase en lenguaje natural.

En un lenguaje de programación, luego del prompt: "Escribe un programa en Python que imprima Hola mundo", el LLM respondería con el texto print("Hola mundo"). Esto es gracias a que hay muchísimos programas en internet que hacen algo similar, acompañados de un texto explicativo. El LLM los tiene registrados en su sistema y contribuyen probabilísticamente a sus respuestas.

En resumen, un LLM no programa como una persona, sino simplemente ha "aprendido" a "adivinar" qué secuencias de palabras de un lenguaje de programación son las más probables que acompañen a una pregunta de desarrollo de software.

No hay razonamiento de por medio, solo especulación probabilística.

En la práctica, si bien un LLM podría generar una solución al problema, también puede, con una probabilidad no negligible, entregar resultados erróneos, tanto conceptuales como gramaticales, por el simple hecho que no está razonando sobre el problema ni su solución.

  • Pero si a cada rato se ven videos donde un LLM resuelve rápidamente un problema que a un programador le puede tomar días...

Este tipo de contenido hay que analizarlo con cautela. Un escrutinio un poco más profundo revela que la mayoría de este tipo de publicaciones, se centra en problemas con las siguientes características:

  1. Son problemas relativamente simples

  2. Son problemas cuya solución ha sido publicada en múltiples ocasiones en Internet

  3. Utilizan lenguajes de programación y librerías populares

La primera característica deriva de las limitaciones actuales en la información de contexto que los LLM pueden utilizar. La "memoria de trabajo" relativamente pequeña de los LLM hace que no puedan crear, todavía, soluciones relativamente complejas.

La segunda y tercera obedecen a la naturaleza intrínseca de los LLM como un modelo estadístico de una base de conocimientos. Dado que un LLM es entrenado con el código de muchas soluciones encontradas en Internet, es de esperarse que pueda resolver de mejor forma, problemas que se asemejen a los que haya "aprendido".

Consecuentemente, estos modelos no funcionan bien cuando el problema:

  1. Es complejo, tiene muchos elementos no triviales interconectados entre sí

  2. Difiere ligeramente de problemas existentes


  • Entonces los LLM son inútiles. Si es así, por qué tienen tanta publicidad?

No voy a discutir las implicaciones éticas en torno al marketing de productos o servicios.

Lo cierto es que los LLM tienen el potencial de facilitar la programación de computadores, pero aún tienen problemas muy importantes que restringen lo adecuado de sus respuestas.

Por sobre todo, las limitaciones mencionadas anteriormente son más evidentes mientras más generales sean las instrucciones dadas al LLM.

Esto quiere decir que la aplicabilidad de los LLM a la programación se ve fuertemente afectada por la calidad del prompt utilizado.

Un LLM funciona bastante bien traduciendo texto de un lenguaje a otro. Esto aplica tanto para lenguajes naturales como para lenguajes de programación.

Un LLM, usado correctamente, es razonablemente bueno para convertir una especificación en lenguaje natural, a su equivalente en un lenguaje de programación.

Mientras más preciso y detallado sea el prompt, mejores serán los resultados. Mientras más general y ambiguo, es más probable que un LLM entregue resultados de baja calidad.

En la práctica, para sacarle provecho a un LLM en programación, hay que concebir una secuencia lógica de pasos para resolver un problema de manejo de información y explicarlos de manera no ambigua a al LLM.

  • Un momento! Esa frase es la misma que se mencionó al inicio del artículo! No es aquella que explica lo que hace un programador?

Precisamente :)

jueves, 5 de junio de 2025

La IA y la automatización del trabajo. ¿Puede la Máquina de las Respuestas reemplazar a los humanos?

Cuando niño, en mi casa había una enciclopedia de los años 50s. No tenía la definición de "Computador", sino de "Computista": una persona que realiza cálculos.


En aquella época las neuronas humanas hacían todo el trabajo.

Cuando se masificaron los computadores personales en los 70s y 80s, la mayoría de la computación pasó a ser realizada por máquinas. Los computistas de carne y hueso dieron paso a los computadores de hardware.

Muchos oficinistas que hacían tareas repetitivas tuvieron que adaptarse. Una persona con un computador podía reemplazar a grupos de personas que hacían las cosas manualmente. Muchos perdieron sus empleos.

A pesar de ello, en el largo plazo, la cantidad de empleos se recuperó. Para soportar la creciente demanda de computación, se requirieron nuevos puestos de trabajo, tanto para personas que usaban computadores, como para quienes construían el software que los hacía funcionar. Cada nuevo invento en el área no hizo más que aumentar la demanda de capital humano.

Esa tendencia se ha mantenido hasta la actualidad.

La historia muestra que, cada vez que se intenta sustituir el cerebro humano con máquinas, la sociedad termina requiriendo aún más especialistas que antes.

Hasta ahora los computadores han asumido tareas repetitivas y estructuradas: cálculos contables, diseño y escritura de documentos (procesadores de texto), simulaciones, etc. Sin embargo, muchos están preocupados por los recientes avances de las IA Generativas, las cuales aparentan ser capaces de crear productos intelectuales similares a los de los humanos.

En otras palabras tareas no repetitivas y no estructuradas que, históricamente, solo los humanos han podido hacer

  • ¿Producirán estas tecnologías una disminución irreversible en los empleos?

Depende...

...de la respuesta a la siguiente pregunta:

  • En qué áreas la IA hace un mejor trabajo que una persona?

Creería que las siguientes son las más conocidas;

  1. Resumir y clasificar texto. En mi experiencia estas tareas las hace relativamente bien. Probablemente por el hecho que las IA basadas en LLM fueron inicialmente construidas para esos propósitos. Otras aplicaciones nacieron como comportamientos emergentes. Sin embargo, todavía tienen limitaciones, especialmente con alucinaciones

  2. Traducir texto a otros idiomas. Esta tecnología ya funcionaba de manera bastante adecuada antes de que se popularizaran los LLM. Con la ayuda de LLM, parecen generar buenos resultados, pero aún tienen limitaciones para textos complejos

  3. Redacción de texto. En mi experiencia, desde el punto de vista gramatical, las IA tienden a ser significativamente más efectivas que un humano promedio para generar textos "bien escritos". Sin embargo, la calidad del contenido del texto puede depender mucho de las instrucciones que reciba.

  4. Emular a un humano en una conversación. Alguien dijo alguna vez que, para pasar el Test de Turing hay dos opciones: hacer una máquina tan inteligente que ningún humano pueda detectarla, o ponerla a jugar contra un humano tan estúpido que cualquier máquina pueda ganarle. Todavía nos encontramos en el en el segundo escenario. Si bien hay indicios de que podríamos estar transicionando hacia el primero, creo que es muy pronto para entusiasmarse.

  5. Responder preguntas especializadas. Mucha gente utiliza un LLM como una Máquina de las Respuestas. Sin embargo, un LLM no es una base de conocimientos, sino un modelo estadístico de una base de conocimientos. En otras palabras, un LLM tiene una probabilidad (no negligible) de entregar datos falsos (alucinaciones).

  6. Programación de computadores. En teoría, un LLM puede utilizarse como un lenguaje de programación de muy alto nivel (lenguaje natural). La premisa más extrema es que un LLM puede generar software sin necesidad de una persona especialista. Vibe Coding es el nuevo "paradigma" donde una persona sin conocimientos de programación, construye software con la ayuda de un LLM. En mi experiencia, la calidad de ese código deja mucho que desear.

  7. Generar contenido audiovisual. Todos somos testigos de la cantidad de imágenes y videos generados por IA que se ve en las redes. A veces no nos damos cuenta que es generado por IA, lo cual habla bien (o mal?) del estado de estas tecnologías.


  • ¿En cuáles de estas áreas podría una IA sustituir adecuadamente a un humano?

Recalco la palabra adecuadamente. No olvidemos que los vendedores de IA, los Sacerdotes del Culto del Cargo, en su ánimo proselitista, siempre abogarán por el uso de la IA en cuánta área sea posible, ya que eso aumenta las ventas y valoriza las acciones de sus empresas.

Revisemos cada una de las áreas anteriores.

  1. Resumen de texto, traducción, redacción de texto. Profesiones como Escritura Técnica, Periodismo o Traductor de idiomas, pueden verse afectadas por la IA, ya que tareas importantes que realizan pueden ser automatizadas y podrían llevar a ciertas empresas a prescindir de la contraparte humana. Sin embargo, cuando la calidad del resultado es importante, es necesario que un humano depure los resultados entregados por la máquina.

  2. Emular a un humano en una conversación. Los sistemas automatizados de atención al cliente ya eran comunes antes de los LLM. La masificación de las IA para este propósito ha tenido resultados poco alentadores. En buena medida, la sustitución de humanos por máquinas dependerá del objetivo que tenga la Atención al Cliente para cada empresa. Si solo se necesita como un mecanismo para distraer al cliente y no atender a sus necesidades, una IA es una opción que, una vez supere algunas limitaciones, podría lograr ese propósito. Si lo que se quiere es realmente atender las necesidades del cliente, aún es necesario tener un humano de por medio.

    Otra área relacionada donde tiene mucho potencial es para distraer a los estafadores telefonicos. En este caso la IA no tiene que ser perfecta, sino solo simular a un humano medianamente creíble para hacerles perder tiempo y dinero a los estafadores.

  3. Responder a preguntas especializadas. Las IA se usan cada vez más frecuentemente como una alternativa a las búsquedas clásicas en la red, ya que proveen una interfaz más amigable y pueden resumir múltiples fuentes en una respuesta que es (con cierta frecuencia) coherente. Esto último ha sido históricamente monopolizado por humanos. Como siempre, el problema más grande son las alucinaciones, con lo cual se requiere un humano especialista que verifique la calidad de los resultados.

    Un área afín es educación. En teoría, un LLM puede servir de tutor si se le dan las instrucciones adecuadas. En ese caso se afectan dos cosas: la certeza de la información entregada y el factor humano. Gracias a esto último, la educación presencial todavía tiene valor para muchas personas por sobre la educación a distancia u otras estrategias similares.

  4. Programación. En esta área tengo experiencia de primera mano. Varias veces he probado en profundidad las capacidades de los LLM para crear código fuente. Los resultados, en mi opinión, son bastante pobres todavía. Si bien puede generar rápidamente cosas comunes y simples, tiene serias limitaciones cuando los requisitos a implementar aumentan de complejidad, requieren soluciones poco comunes o usan lenguajes poco populares o que cambian mucho en el tiempo. En mis pruebas, los LLM a menudo generan código con errores o que son difíciles de entender (porque siguen malas prácticas). Donde tienden a funcionar mejor es para generar código repetitivo, por ejemplo, archivos de configuración o boilerplate. En resumen, no pueden, por si solas reemplazar a un humano, pero si pueden potenciar a un desarrollador con suficiente experiencia.

  5. Generación de contenido audiovisual. En esta área tengo serias preocupaciones. Esto es porque percibo que la mayoría del mercado para contenido audiovisual no requiere material de buena calidad. Esto es un caldo de cultivo ideal para la generación de bazofia (en inglés slop), contenidos destinados a las masas que no les preocupa lo bueno o malo que es.

En resumen, todas las disciplinas que, potencialmente, pueden verse afectadas por la IA comparten lo siguiente:

  • Tareas tradicionalmente humanas pueden realizarse más rápido bajo ciertas condiciones

  • La calidad del resultado tiene una variabilidad que requiere supervisión de un humano competente

  • Si la calidad no es importante, el humano puede ser removido de la ecuación

Al final la pregunta puede acotarse a:

  • ¿Qué porcentaje de las empresas están dispuestas a ahorrar dinero reemplazando humanos por IA, sin importar el detrimento en calidad?

Esa pregunta aún no puede responderse del todo. Está por verse si, aquellas empresas que intentan reemplazar personas por IA sobrevivan en el tiempo o si necesitarán recontratar los puestos humanos removidos para recuperar su competitividad.

Por sobre todo, aún si la IA reemplaza humanos, es muy probable que, lo haga sobre aquellos con poca especialización. En el largo plazo, podría no afectar significativamente la cantidad de puestos de trabajo ni los salarios promedio, ya que nuevas necesidades derivadas del uso de IA requerirán nuevos puestos para los humanos.

No importa lo que digan los Sacerdotes del Culto del Cargo, la Máquina de las Respuestas no es nada más que eso, una máquina, una herramienta que formará parte del abanico de opciones que tenemos los humanos para hacer nuestro trabajo más expedito, con todo lo que ello implica.

En otras palabras, creo que la IA seguirá el destino de las hojas de cálculo, que reemplazaron a los "computistas", pero no a los contadores.