{
 "id": 36896,
 "slug": "2025-04-15_codificacion-vibe",
 "url": "https://agents.willem.com/es/posts/2025-04-15_codificacion-vibe/",
 "source_url": "https://willem.com/es/2025-04-15_codificacion-vibe/",
 "language": "es",
 "date": "2025-04-15",
 "published": "2025-04-15T00:00:00+02:00",
 "created": "2025-06-26T21:29:41.353000+02:00",
 "updated": "2026-10-20T09:21:55.199000+02:00",
 "title": "Codificación Vibe",
 "subtitle": "Sobre el poder y el peligro de programar con IA",
 "summary": "Con más de 48.000 $ de ingresos al mes, el simulador de vuelo de Pieter Levels provocó una auténtica oleada de innovación. Sin conocimientos detallados de motores de juegos 3D, hizo 'vibe coding' de su juego con ayuda de la IA. Los críticos señalaron problemas de seguridad y escalabilidad, mientras que los defensores aplaudieron el resultado asombroso. ¿Qué podemos aprender de todo esto?",
 "topics": [
  "AI",
  "game",
  "programming",
  "work"
 ],
 "author": {
  "name": "Willem L. Middelkoop",
  "url": "https://willem.com"
 },
 "provenance": {
  "kind": "model",
  "method": "Gemini translation (2025), reviewed and corrected by Claude Sonnet (20 Oct 2026) against a glossary and hunspell",
  "date": "2026-10-20",
  "reviewed_by_native_reader": false,
  "language": "es",
  "source_language": "en"
 },
 "translations": [
  {
   "language": "en",
   "title": "Vibe Coding",
   "url": "https://agents.willem.com/en/posts/2025-04-15_vibe-coding/",
   "source_url": "https://willem.com/en/2025-04-15_vibe-coding/"
  },
  {
   "language": "nl",
   "title": "Vibe Coding",
   "url": "https://agents.willem.com/nl/posts/2025-04-15_vibe-coding/",
   "source_url": "https://willem.com/nl/2025-04-15_vibe-coding/"
  },
  {
   "language": "de",
   "title": "Vibe Coding",
   "url": "https://agents.willem.com/de/posts/2025-04-15_vibe-coding/",
   "source_url": "https://willem.com/de/2025-04-15_vibe-coding/"
  },
  {
   "language": "fr",
   "title": "Vibe coding",
   "url": "https://agents.willem.com/fr/posts/2025-04-15_vibe-coding/",
   "source_url": "https://willem.com/fr/2025-04-15_vibe-coding/"
  },
  {
   "language": "it",
   "title": "Vibe Coding",
   "url": "https://agents.willem.com/it/posts/2025-04-15_vibe-coding/",
   "source_url": "https://willem.com/it/2025-04-15_vibe-coding/"
  },
  {
   "language": "pt",
   "title": "Vibe Coding",
   "url": "https://agents.willem.com/pt/posts/2025-04-15_vibe-coding/",
   "source_url": "https://willem.com/pt/2025-04-15_vibe-coding/"
  },
  {
   "language": "pap",
   "title": "Vibe Coding",
   "url": "https://agents.willem.com/pap/posts/2025-04-15_vibe-coding/",
   "source_url": "https://willem.com/pap/2025-04-15_vibe-coding/"
  },
  {
   "language": "fy",
   "title": "Vibe Coding",
   "url": "https://agents.willem.com/fy/posts/2025-04-15_vibe-coding/",
   "source_url": "https://willem.com/fy/2025-04-15_vibe-coding/"
  }
 ],
 "image": "https://willem.com/global/images/81bb88df5fc6.webp",
 "image_width": 2560,
 "images": [
  {
   "url": "https://willem.com/global/images/9c7b33588ed2.webp",
   "description": "Simulador de vuelo generado por IA: fly.pieter.com",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36896_images-1.png"
  },
  {
   "url": "https://willem.com/global/images/5267f788426c.webp",
   "description": "Visualización 3D de datos de entrenamiento",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36896_images-2.png"
  },
  {
   "url": "https://willem.com/global/images/6b5de3beb772.webp",
   "description": "Arte conceptual del juego de 2013: partículas de HDL en el torrente sanguíneo",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36896_images-3.png"
  },
  {
   "url": "https://willem.com/global/images/8cdd2773d861.webp",
   "description": "Motor de juego 3D en acción; fíjate en los fallos gráficos en la pared de la arteria",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36896_images-4.png"
  },
  {
   "url": "https://willem.com/global/images/fa20ecb23326.webp",
   "description": "Paradoja de la productividad: cuando manejar la máquina te cuesta más esfuerzo que el valor de lo que produce",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36896_images-5.jpg"
  }
 ],
 "text": "Vibe coding\nEl vibe coding es un método de programación impulsado por IA en el que describes un problema en unas pocas frases, a modo de prompt, para un modelo de lenguaje ajustado para programar. El modelo genera el software y el papel del programador pasa a ser guiar, probar y pulir el resultado. Sus defensores sostienen que permite a programadores novatos crear programas sin mucha formación ni conocimientos de ingeniería de software.\nPieter_Levels (https://x.com/levelsio) creó el juego fly.pieter.com (https://fly.pieter.com). En las redes sociales mantuvo un registro abierto de su trabajo: desde la idea inicial hasta la publicación. Atrajo patrocinadores para anuncios dentro del juego y vende mejoras premium (como aviones especiales), con lo que ingresa miles de dólares cada mes.\nSu historia de éxito planteó preguntas sobre el futuro de la programación de juegos, o incluso de la programación en general. Si un tío con un portátil puede crear un bombazo como este, ¿para qué hacen falta estudios con grandes presupuestos? O, a la inversa: ¿qué pasaría con esos estudios si adoptaran un enfoque parecido de 'vibe coding' en su producción?\nProbarlo yo mismo\nComo tengo algo de experiencia desarrollando un_juego (https://snake97.com) (Snake 97, más de 40 millones de descargas), la historia de Pieter me animó a investigar la tecnología 3D que usó para el suyo: ThreeJS (https://threejs.org). Hacer un juego es difícil, y hacerlo en 3D lo es todavía más. Las matemáticas que sostienen un mundo en tres dimensiones añaden un reto enorme. En muchos sentidos no se parece a los programas normales ni a los juegos sencillos en dos dimensiones. Aunque ya había experimentado un poco antes, la curva de aprendizaje de las matemáticas 3D me pareció bastante empinada. Ahí es donde la IA puede ayudar.\nPara la app_Gran_Fondo (https://willem.com/blog/gran-fondo/) usé la IA para generar una presentación_tridimensional_de_una_actividad_de_carrera_grabada (https://willem.com/en/2025-03-10_workout-data-in-3d/). Formulé mi objetivo en lenguaje llano y el modelo de IA generó el código necesario para mostrar mi entrenamiento con ThreeJS en un panel giratorio. Los primeros resultados no eran buenos, pero entendía lo bastante del código generado como para seguir pidiendo mejoras concretas. Unas horas después tenía algo que me gustaba y, además, sentía que había aprendido mucho sobre la viabilidad de mi concepto inicial. La IA me permitió aprender más rápido.\nDecidí explorar otra idea que llevaba tiempo aparcada: un juego sobre partículas de colesterol bueno y malo en el torrente sanguíneo de una persona. Con elementos de un juego_de_carrera_infinita (https://en.m.wikipedia.org/wiki/Endless_runner), me pareció una buena forma de seguir experimentando, porque en estos juegos los niveles los genera el ordenador. Construir un generador automático de niveles me pareció algo con lo que la IA podría ayudarme.\nAprovechando las nuevas posibilidades del 3D, pensé que el juego debía transcurrir por las arterias, en lugar de moverse lateralmente como en los juegos 2D clásicos. Eso trae retos como el recorte visual y los gráficos distorsionados por tener la cámara fuera de la escena 3D. Otro reto es que se complica la detección de colisiones entre los elementos del juego, imprescindible para la mecánica. El código que generaba el modelo de IA crecía y crecía con cada iteración.\nTras unas 800 líneas de código empecé a notar las limitaciones del modelo: cometía errores y fallos que ya había resuelto en iteraciones anteriores. Cada iteración nueva traía problemas nuevos y el modelo se olvidaba de las mejoras y correcciones que había aplicado antes. Se debe a los límites de contexto (tokens de entrada) con los que trabajan los grandes modelos de lenguaje. En pocas palabras: no puede recordar lo suficiente como para seguir iterando sobre el conjunto entero a la vez.\nDejé de desarrollar el motor del juego con IA tras unos días de experimentación intensiva. Llegué a un punto en que dedicaba más esfuerzo a manejar el modelo de IA que al motor del juego en sí. Me pareció que sería mejor conseguir algunos libros sobre esas tecnologías, leerlos, dominarlas yo mismo y construir el motor a mano. Cuando las cosas se complican, nuestro cerebro humano parece capaz de concentrarse en partes concretas de una tarea compleja sin perder de vista el conjunto.\nSobre la insensatez de la \"programación en lenguaje natural\"\nAdemás de los límites del contexto que puede abarcar un modelo de IA, creo que hay un problema de ambigüedad. Te recomiendo leer lo que escribió Edsger_Wybe_Dijkstra (https://en.wikipedia.org/wiki/Edsger_Dijkstra) sobre la insensatez de la \"programación en lenguaje natural\" en su EWD667 (https://willem.com/etcetera/2025-05-15_EWD667-on-the-foolishness-of-natural-language-programming.pdf). Una descripción inequívoca, libre de pensamiento confuso, es la base del código fiable. Pero nuestra lengua materna deja demasiado margen para todo tipo de disparates y errores. En cambio, deberíamos dominar nuestras palabras, pensar con precisión y especificar con valentía.\nUn lenguaje formal, como un lenguaje de programación, un modelo matemático o una especificación exhaustiva de entradas y salidas, puede ser una herramienta eficacísima para eliminar la ambigüedad y los errores. En pocas palabras: obtendrás la mejor salida si le das la mejor entrada.\nDar instrucciones a la IA con código\nPara comprobar si la IA me daría mejor código, decidí cambiar mi forma de pedir. En lugar de describir lo que quería en lenguaje natural, subí un fragmento de código que había escrito antes, con unas características muy concretas:\n- el código venía de un sistema en producción, así que sabía que funcionaba bien\n- contenía varias instrucciones de gestión de errores, lo que lo hacía más robusto\n- no tenía errores de sintaxis y usaba variables y funciones con nombres lógicos\n- tenía un alcance muy específico, con interfaces claramente definidas hacia el mundo exterior\nAdemás del código, le pedí a la IA que cambiara un aspecto concreto. Tenía que quitar el uso de un programa externo (el módulo NodeJS 'lwip') y sustituirlo por otro (ImageMagick). Como tanto lwip (https://www.npmjs.com/package/lwip) como ImageMagick (https://github.com/ImageMagick/ImageMagick) son código abierto, el modelo de IA conoce bien ambos programas. Le di la receta perfecta para cocinar.\nEl código que me devolvió la IA era un sustituto perfecto al 99 % de mi propio código. Tenía un fallo que hacía que algunos parámetros no se escaparan bien, y eso provocaba un cuelgue. Pude localizar el error y corregirlo a mano, porque conocía este software a fondo y me movía con total comodidad en su contexto. Tras algunas pruebas más, decidí poner en producción el código generado por la IA, porque la nueva biblioteca rendía mucho mejor que la anterior.\nConclusión\nEl vibe coding con IA permite crear prototipos y aprender con rapidez, como demuestra el éxito de Pieter Levels, pero flaquea en proyectos complejos que exigen precisión. Plantea una pregunta: ¿la IA amplía nuestro potencial o nos encierra en sus restricciones? La maestría combina el pensamiento humano con la potencia de la IA. Reflexiona sobre el oficio: ¿cuándo te afilan las herramientas la destreza y cuándo pueden embotártela?",
 "word_count": 1126,
 "markdown_url": "https://agents.willem.com/es/posts/2025-04-15_codificacion-vibe/post.md"
}