Mostrando las entradas con la etiqueta LLM. Mostrar todas las entradas
Mostrando las entradas con la etiqueta LLM. Mostrar todas las entradas

domingo, 5 de abril de 2026

El espejismo del “vibe coding”: cuando la IA acelera el código pero frena el aprendizaje



Hace unos meses recibí una llamada que, en retrospectiva, anticipaba exactamente lo que la industria está empezando a discutir en foros académicos y técnicos. Un amigo —CTO de una startup en etapa de crecimiento— me pidió orientación. Su pregunta fue sencilla: "¿Conoces buenos cursos para que mis devs juniors aprendan a programar mejor?"

La historia detrás de esa pregunta no lo era tanto.

El desastre del vibe coding

Su equipo había adoptado con entusiasmo asistentes de programación con IA. Los desarrolladores junior producían código a una velocidad que parecía imposible hace dos años. Features salían en días, no en semanas. Las métricas de productividad se disparaban. Todo parecía ir bien.

Hasta que no lo estuvo.

El código, generado a ritmo industrial, contenía errores sutiles de arquitectura, dependencias circulares, lógica de negocio inconsistente y soluciones que funcionaban en los tests aislados pero fallaban en producción. Los juniors no podían explicar por qué habían tomado ciertas decisiones —porque en muchos casos no las habían tomado ellos—. La IA decidía, ellos aceptaban.

Mi amigo me describió algo que ahora reconozco como un patrón: los juniors estaban produciendo código que no podían mantener, explicar ni corregir. El vibe coding —dejarse llevar por la fluidez de la generación automática— había creado una ilusión de progreso.

Mi consejo fue directo: no necesitas cursos. Necesitas contratar un ingeniero senior que limpie el desastre y ponga orden en esa base de código.

No porque los juniors fueran malos, sino porque el entorno en el que estaban trabajando les impedía aprender. Estaban en modo "pasajero" cuando necesitaban estar en modo "piloto".

El artículo que confirma lo que ya sospechaba

Hace poco leí "Redefining the Software Engineering Profession for AI" de Mark Russinovich y Scott Hanselman, publicado en Communications of the ACM (Volumen 69, Número 4, febrero de 2026). El artículo articula con precisión académica lo que mi amigo vivió en carne propia.

La tesis central es contundente: la IA generativa ha fracturado la economía de la ingeniería de software, creando una estructura de incentivos perversa donde tiene sentido contratar seniors y automatizar juniors. Pero si las organizaciones dejan de contratar desarrolladores en etapas tempranas de su carrera (Desarrolladores Jr), la cadena de talento colapsa. No habrá próxima generación de ingenieros experimentados.

Los autores presentan datos que refuerzan esta preocupación. Tras el lanzamiento de GPT-4, el empleo de personas de 22 a 25 años en trabajos altamente expuestos a la IA —como desarrollo de software— cayó aproximadamente un 13%, mientras que los roles senior crecieron. Un estudio de Harvard titulado "Generative AI as Seniority-Biased Technological Change" confirma que la IA ya está generando una forma de cambio tecnológico sesgado hacia la seniority.

El problema del "becario de IA"

Lo que más me resonó del artículo es lo que Russinovich y Hanselman llaman el "becario de ingeniería basado en agentes": la IA puede producir código que parece correcto pero que contiene errores que solo un ingeniero experimentado puede detectar.

Describen ejemplos concretos donde agentes de IA insertan sleep para ocultar condiciones de carrera, implementan algoritmos ineficientes, duplican código, dejan código de depuración y usan atajos que funcionan en tests específicos pero no generalizan. El agente incluso afirma haber tenido éxito cuando el código tiene errores importantes.

Esto es exactamente lo que le pasó al equipo de mi amigo.

Un junior frente a un agente que dice "¡listo, problema resuelto!" después de parchear un bug con un sleep de 200 milisegundos, no tiene el contexto para cuestionar esa solución. No sabe lo que es una condición de carrera. No entiende por qué ese parche es una bomba de tiempo. Acepta el resultado porque parece funcionar.

Como escriben los autores: "Solo un ingeniero familiarizado con protocolos de sincronización, primitivas de concurrencia y la arquitectura del código puede tener la confianza para señalar los errores del agente y guiarlo en la dirección correcta."

La deuda cognitiva del vibe coding

El artículo también referencia una investigación del MIT de inicios de 2025 que observó "deuda cognitiva" en adultos que usaron ChatGPT para redactar ensayos: menor actividad cerebral y menor retención en comparación con quienes trabajaron sin ayuda.

Esto conecta con algo que he visto repetidamente: cuando los juniors usan la IA como muleta en lugar de como herramienta, no desarrollan intuición. No construyen el juicio que necesitan para evaluar el trabajo de la IA. Como dice Ethan Mollick, citado en el artículo:

"Cada vez que delegamos trabajo a un 'mago', perdemos una oportunidad de desarrollar nuestra propia experiencia; de construir el juicio que necesitamos para evaluar su trabajo."

Los juniors del equipo de mi amigo no estaban aprendiendo. Estaban siendo espectadores de una generación de código que no comprendían.

La solución: preceptoría, no prohibición

Aquí es donde el artículo va más allá del diagnóstico y propone algo valioso. No se trata de prohibir la IA a los juniors —eso sería absurdo e insostenible—. Se trata de diseñar deliberadamente sistemas donde su crecimiento sea un objetivo organizacional explícito.

Los autores proponen un programa de preceptoría donde ingenieros senior guíen a desarrolladores Jr en un ratio de 3 a 5 aprendices por mentor, con la IA funcionando como acelerador de aprendizaje, no como sustituto del mismo.

La idea de un "modo Jr" en los asistentes de programación —que priorice el acompañamiento socrático antes de generar código— es particularmente interesante. En lugar de dar la respuesta directamente, el asistente desafiaría al aprendiz, explicaría su proceso de razonamiento y evaluaría la comprensión con preguntas.

Esto transforma la dinámica completamente. En lugar de un junior que acepta código generado sin entenderlo, tendrías un junior que aprende mientras trabaja con la IA, guiado por un senior que externaliza su criterio como acto deliberado de enseñanza.

Mi conclusión: la llamada que todos deberíamos estar recibiendo

La llamada de mi amigo no fue un caso aislado. Es el canario en la mina de carbón.

Cada startup que reemplaza juniors con agentes de IA, cada empresa que congela contrataciones de nivel inicial porque "la IA ya hace eso", cada equipo que mide productividad en líneas de código generadas sin evaluar si alguien las entiende —todos están acelerando hacia el mismo muro.

El artículo de Russinovich y Hanselman lo dice con claridad: el futuro de la ingeniería de software no estará definido por cuánto código genere la IA, sino por qué tan bien los humanos aprenden, razonan y evolucionan junto a ella.

Mi consejo para mi amigo, dicho meses antes de leer este artículo, era más simple pero apuntaba en la misma dirección: deja de buscar cursos y empieza a invertir en personas que puedan enseñar, no solo producir.

Porque al final, el código que no entiendes no es tuyo. Y el equipo que no puede mantener su propio software no es un equipo de ingeniería. Es una audiencia esperando el próximo truco del mago.


Referencia:

Russinovich, M., & Hanselman, S. (2026). Redefining the Software Engineering Profession for AI. Communications of the ACM, 69(4), 41–44. https://doi.org/10.1145/3779312

jueves, 4 de julio de 2024

DSPy: Framework para optimizar algorítmicamente los prompts



Estoy trabajando con DSPy y puedo afirmar que es una maravilla.

Este framework ha mejorado significativamente la calidad de las aplicaciones de LLMs, facilitando la creación de cadenas de prompts de alta calidad de manera automática vía programación.

DSPy es un framework para optimizar algorítmicamente los prompts y los pesos de modelos de lenguaje (LM), especialmente cuando los LM se utilizan una o más veces dentro de un pipeline.

El artículo que les presento es "A Guide to Large Language Model Abstractions", escrita por expertos de Carnegie Mellon, Stanford, y Berkeley. El artículo presenta el Language Model System Interface Model (LMSI), una nueva abstracción de siete capas inspirada en el modelo OSI.

Este modelo organiza y estratifica los frameworks orientados en trabajar con los modelos de lenguaje (como LangChain, LlamaIndex, etc) en capas. Las capas se ordenan desde la más alta hasta la más baja en términos de nivel de abstracción:
7. Capa de Red Neuronal: Acceso directo a la arquitectura y pesos del LM.
6. Capa de Prompting: Entrada de texto a través de API u otras interfaces.
5. Capa de Restricción de Prompting: Imposición de reglas o estructuras en los prompts.
4. Capa de Control: Soporte de flujo de control como condicionales y bucles.
3. Capa de Optimización: Optimización de algún aspecto del LM o del sistema de LMs basado en una métrica.
2. Capa de Aplicación: Bibliotecas y código de aplicación que proporcionan soluciones configurables.
1. Capa de Usuario: Interacción directa con el usuario para realizar tareas impulsadas por LM.

Por ejemplo, al observar la imagen, LangChain incide en las capas: Capa de Prompting, Capa de Restricción de Prompting, Capa de Control y Capa de Aplicación.

El framework DSPY destaca especialmente en la capa de optimización, siendo el único mencionado que optimiza automáticamente las cadenas de prompts, mejorando significativamente la calidad de las aplicaciones de LLMs. Esto es algo realmente impresionante, optimiza el promting.

Para aquellos interesados en el futuro de la programación y el procesamiento de lenguaje natural, esta guía proporciona una estructura clara y comprensible para el desarrollo y la optimización de frameworks de LMs.

viernes, 17 de mayo de 2024

Crea tu propio asistente educativa con IA: Llama3 corriendo en Web usando Flowise (parte2)

¡Hola amigos! Bienvenidos a la segunda parte de nuestra serie sobre la creación de un asistente educativo. En la primera parte, configuramos un asistente utilizando Ollama y el modelo Llama 3 localmente mediante la terminal. Ahora, haremos lo mismo, pero utilizando una página web. La idea es que los niños puedan practicar las capitales de los países de América de una manera más atractiva y divertida.

Objetivo del Proyecto

El objetivo es crear un entorno en el que los niños puedan interactuar con el asistente educativo a través de una página web similar a ChatGPT. Queremos que los niños jueguen a preguntas y respuestas sobre las capitales de los países y reciban hechos interesantes si responden correctamente. Esto es mucho más amigable y atractivo que utilizar una terminal.

Preparativos

Para esta segunda parte, hemos creado el repositorio:

https://github.com/pedro-aaron/ollama--with-llama3--flowise-dockerized


Aquí se encuentra la guía de instalación y cómo correr el proyecto. También te comparto un enlace a nuestro canal de Telegram, "Minera de Datos", donde discutimos temas relacionados con la minería de datos, machine learning, modelos de lenguaje, etc.

https://t.me/mineriadedatos

El proyecto de Flowise usado, está en el repositorio en:

https://github.com/pedro-aaron/ollama--with-llama3--flowise-dockerized/blob/main/AsistenteEducativa-llama3%20Chatflow.json


Instalación de Ollama y Llama 3 con Docker

En esta ocasión, utilizaremos Docker para instalar Ollama con Llama 3. Esto nos permitirá contenerizar nuestro proyecto, facilitando la limpieza y gestión del entorno. Los pasos generales son los siguientes:

  1. Preparar el Entorno: Descargar el repositorio y abrir los archivos en Visual Studio Code.
  2. Configurar Docker: Utilizar el archivo docker-compose.yml para configurar los contenedores necesarios. Esto incluye Ollama y Flowise, un nuevo componente que facilita la creación de flujos de trabajo con modelos de lenguaje.
  3. Instalar los Modelos: Descargar e instalar los modelos necesarios dentro de Docker. Para Llama 3, se necesita aproximadamente 4.6 GB de espacio.

Configuración y Uso de Flowise

Flowise (https://flowiseai.com/) es una herramienta que nos permite crear aplicaciones de modelos de lenguaje de manera simple mediante la configuración de flujos de trabajo. En nuestro caso, configuraremos Flowise para que actúe como nuestro asistente educativo.

Pasos para Configurar Flowise:

  1. Iniciar los Servicios: Ejecutar docker-compose up -d para levantar los contenedores.
  2. Acceder a Flowise: Abrir Flowise desde el navegador y configurar un nuevo proyecto.
  3. Crear un Chatbot: Utilizar plantillas en Flowise para configurar un chatbot que haga preguntas sobre las capitales de los países de América.
  4. Personalizar el Chatbot: Añadir un nodo de memoria para que el chatbot recuerde la conversación y configurar el prompt inicial para orientar al modelo.

Probar el Chatbot

Una vez configurado, el chatbot estará listo para interactuar con los niños. Por ejemplo, el chatbot puede preguntar "¿Cuál es la capital de Canadá?" y, al responder correctamente, proporcionar un hecho interesante sobre Canadá. Esto no solo hace que el aprendizaje sea divertido, sino también educativo.

Exponer el Chatbot

Podemos compartir el chatbot mediante un enlace público que se puede incrustar en una página web. Esto permite que cualquier persona pueda acceder y utilizar el chatbot sin necesidad de configuraciones adicionales.

Resultados y Conclusiones

En conclusión, hemos logrado crear un asistente educativo utilizando Ollama y Llama 3, configurado en un entorno web mediante Flowise y Docker. Este método no solo hace que el aprendizaje sea más interactivo y atractivo para los niños, sino que también facilita la gestión y despliegue del proyecto.

Para aquellos interesados en aprender más o contribuir al proyecto, los invitamos a unirse a nuestra comunidad en Telegram, "Minera de Datos". Aquí podrán compartir sus dudas, experiencias y contribuciones con otros entusiastas de la minería de datos y machine learning.

Les recomiendo seguir el video aquí:




El prompt usado en el video es el siguiente:

Eres experto en geografia de américa. trabajarás como un asistente de IA que ayuda a niños para su examen de geografía. deberás preguntar por la capital de un país del continente americano  y esperarás a que el niño te dé una respuesta.Si la respuesta es la capital del país que tu preguntaste. mandarás un mensaje de respuesta positiva y darás un hecho interesante relacionado con el país del cual preguntaste. Si la respuesta que recibiste no es correcta, responde que no es correcta y dá una pista al respecto para que el niño pueda responder correctamente (la ayuda puede ser de la forma "la capital inicia con la letra X" o "la capital  está compuesta por dos palabras" o la "capítal tiene 5 letras", o por ejemplo si el niño se ha equivocado con la misma capital en mas de una opcación debes mostrarle pistas más cercanas al nombre de la capital por ejemplo "La capital inicia con 'Bo' y termina con 'ta'" suponiendo que la capital es 'Bogotá'  la idea es que el niño pueda recordar el nombre requerido ), esto sucederá hasta que recibas la respuesta correcta, es decir la capital del país del cual preguntaste. 

Instruccion adicional. Recuerda que es un niño, puede tener alguna falta ortográfica en su respuesta. En esos casos debes dar la respuesta como correcta y decirle cual es la respuesta esperada y en dónde se equivocó. 

Instruccion adicional. Maneja un lenguaje apto para niños y que sea de manera más personal.

Responde Ok cuando estés listo. Y queda en espera de la palabra "iniciar". 

Cuando recibas la palabra "iniciar", debes decirle al niño las reglas del juego.

Instrucción. El idioma de tu respuesta es Español LATAM