Vibe Coding: Lo Bueno, Lo Malo y Lo que Nadie te Cuenta (Experiencia Real 2026)
Vibe coding es programar delegando casi todo a la IA. Llevo meses haciéndolo en proyectos reales. Esto es lo que funciona, lo que falla y cuándo destruye más de lo que construye.
Tabla de contenidos
Andrej Karpathy tuiteó en febrero de 2025: “There’s a new kind of coding I call ‘vibe coding’, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.”
El término explotó. De repente todo el mundo hablaba de programar sin programar. La IA escribe, tú aceptas, el producto existe.
Llevo meses haciendo vibe coding en proyectos reales — desde scripts de un día hasta plataformas SaaS completas. Esto es lo que nadie te cuenta.
Qué es realmente el vibe coding
Vibe coding no es nuevo. Siempre hemos usado generadores de código, frameworks, librerías. Lo nuevo es la escala: ahora la IA puede generar sistemas completos funcionales en minutos, no fragmentos de código.
La definición práctica: describes lo que quieres, el agente genera el código, tú aceptas sin leer en detalle, el sistema funciona (o no). El ciclo es:
Descripción en lenguaje natural
↓
Agente genera código
↓
Tú aceptas (o rechazas con feedback rápido)
↓
Test superficial ("¿funciona visualmente?")
↓
Siguiente feature
La diferencia con usar GitHub Copilot para autocompletar es que en vibe coding la IA toma decisiones de arquitectura. Qué estructura de archivos. Qué librería usar. Cómo modelar los datos. Tú pides resultados, no código específico.
Lo bueno: dónde el vibe coding es imbatible
Prototipos y MVPs
Es el caso de uso perfecto. Tienes una idea, la describes, en 2 horas tienes algo que funciona suficientemente bien para mostrar a un cliente o validar con usuarios.
En el caso real de iECO, el prototipo con Streamlit tardó menos de un día haciendo vibe coding puro. Sin ese prototipo rápido, no hubiera podido validar que la idea era viable antes de invertir semanas en la arquitectura real.
Scripts y automatizaciones one-shot
Scripts de migración de datos, procesadores de archivos, integraciones simples con APIs. Código que ejecutas una vez, revisas el output, y descartas. El riesgo de no entender el código es casi cero porque el contexto es limitado y el resultado es verificable.
"Crea un script que lea todos los CSV de esta carpeta,
combine las columnas 'nombre' y 'apellidos',
y exporte un único CSV con email, nombre_completo y telefono"
Tiempo sin IA: 20 minutos. Con vibe coding: 2 minutos. Y el resultado es el mismo.
Explorar tecnologías desconocidas
Quieres probar Svelte pero nunca lo has usado. Haces vibe coding con el agente, en una tarde tienes una app funcionando, entiendes los conceptos principales sin leer la documentación entera. Luego profundizas donde necesitas.
Código repetitivo y boilerplate
Tests unitarios básicos, DTOs de TypeScript, migraciones de base de datos simples, componentes de formulario. Todo lo que sabes exactamente qué tiene que hacer pero que es tedioso de escribir.
En Atrapaclientes, generé los 29 DTOs de TypeORM con un prompt por entidad. Lo que hubiera tardado un día tardó una hora. No porque no supiera escribirlos, sino porque el agente los escribía correctamente y yo solo revisaba.
Lo malo: dónde el vibe coding te destroza
Seguridad
Este es el problema gordo. La IA genera código funcional que parece seguro pero no lo es. Los errores más comunes que he visto en código generado con vibe coding:
Inyección SQL por interpolación:
// Lo que genera el agente con vibe coding descuidado
const query = `SELECT * FROM users WHERE email = '${email}'`;
// Lo correcto
const query = "SELECT * FROM users WHERE email = $1";
const result = await db.query(query, [email]);
IDOR sin validación:
// El agente genera esto — cualquier usuario puede ver cualquier recurso
app.get('/api/campaigns/:id', async (req, res) => {
const campaign = await Campaign.findById(req.params.id);
res.json(campaign);
});
// Necesitas validar que el recurso pertenece al usuario autenticado
app.get('/api/campaigns/:id', authMiddleware, async (req, res) => {
const campaign = await Campaign.findOne({
where: { id: req.params.id, tenantId: req.user.tenantId }
});
if (!campaign) return res.status(404).json({ error: 'Not found' });
res.json(campaign);
});
Credenciales hardcodeadas:
// El agente las pone "para que funcione el ejemplo"
const apiKey = "sk-proj-abc123..."; // ← va directo al repo si no lo revisas
Si estás haciendo vibe coding en producción, lee siempre cualquier código que maneje auth, queries a base de datos y llamadas a APIs externas.
Deuda técnica silenciosa
El agente optimiza para que funcione ahora, no para que sea mantenible. Con vibe coding puro acabas con:
- Funciones de 300 líneas que “hacen lo que pediste” pero son imposibles de modificar
- Duplicación masiva — el agente no refactoriza lo que ya existe, añade
- Nombres inconsistentes —
getUserById,fetchUser,getUserpara hacer lo mismo en distintas partes - Sin manejo de errores — el happy path funciona, los edge cases explotan en producción
Yo lo llamo la “deuda de vibe” — a corto plazo avanzas rápido, a medio plazo el código es una mina.
El agente en bucle
Si no supervisas, el agente puede entrar en un bucle intentando arreglar errores que él mismo creó. Cuesta dinero y tiempo. Lo cuento en detalle en cómo parar un agente en bucle infinito.
Dependencia del contexto
Si el proyecto crece y el agente pierde contexto de la arquitectura inicial, empieza a tomar decisiones inconsistentes. Sin un buen manejo del context window, el código generado en la sesión 1 y el de la sesión 10 parecen escritos por personas diferentes.
Mi enfoque real: vibe coding supervisado
Después de meses, mi forma de trabajar no es vibe coding puro ni programación tradicional. Es algo intermedio que llamo vibe coding supervisado:
1. Arquitectura manual, implementación con IA
Diseño la estructura del proyecto yo: qué módulos, qué modelos de datos, qué patrón de arquitectura. La IA implementa dentro de ese marco.
Yo defino:
- /modules/auth/ → JWT + refresh tokens
- /modules/campaigns/ → CRUD + estado
- /modules/users/ → multi-tenancy con guard
La IA implementa cada módulo según el patrón que yo he definido
2. Revisión de código en puntos críticos
No leo todo el código generado, pero sí leo cualquier cosa relacionada con:
- Autenticación y autorización
- Queries a base de datos
- Manejo de datos del usuario
- Configuración de CORS, headers de seguridad
- Variables de entorno y secrets
Para el resto (componentes UI, lógica de negocio sin seguridad crítica), confío más en el agente.
3. Tests como red de seguridad
Si el agente genera código que pasa los tests, hay más probabilidades de que sea correcto. Los tests los pide el agente también, pero los reviso para asegurar que prueban lo que importa, no que hagan pasar el test con mocks vacíos.
Lo cuento en cómo testear código generado por IA.
4. Commits frecuentes
Antes de pedirle al agente una tarea grande, hago commit. Si el agente rompe algo, git checkout . y vuelves al estado anterior. Sin commits frecuentes, el vibe coding puede costarte horas de recuperación.
# Antes de cualquier tarea del agente
git add -A && git commit -m "checkpoint antes de refactor auth"
# Si el agente lo rompe todo
git checkout .
Cuándo usar vibe coding y cuándo no
| Situación | Vibe coding | Supervisado | Manual |
|---|---|---|---|
| Prototipo/MVP | ✅ | - | - |
| Script one-shot | ✅ | - | - |
| Boilerplate/DTOs | ✅ | - | - |
| Feature nueva en prod | - | ✅ | - |
| Refactor grande | - | ✅ | - |
| Sistema de auth | - | - | ✅ |
| Gestión de pagos | - | - | ✅ |
| Queries críticas | - | ✅ | - |
| Infraestructura/DevOps | - | ✅ | - |
El elefante en la habitación: ¿está matando el vibe coding a los developers?
La respuesta honesta: no, pero está cambiando qué skills importan.
Lo que importa cada vez menos:
- Memorizar sintaxis
- Escribir boilerplate rápido
- Conocer todos los métodos de una API de memoria
Lo que importa cada vez más:
- Saber si el código generado es correcto y seguro
- Diseñar arquitecturas que el agente pueda implementar bien
- Debuggear cuando la IA falla (y falla)
- Entender el negocio para hacer las preguntas correctas
El vibe coding sin conocimientos previos produce código que funciona en el demo pero explota en producción. Con conocimientos previos, multiplica tu velocidad sin sacrificar calidad.
La IA es tan buena como el criterio de quien la dirige.
Herramientas para hacer vibe coding bien
- Cursor con Agent mode — el mejor para proyectos con múltiples archivos. Comparativa completa aquí
- Cline — agente open source para VS Code, muy configurable
- GitHub Copilot — más conservador pero más integrado con el flujo de trabajo
- MCP servers — dan al agente contexto real (BD, repos, APIs). Cómo configurarlos
- git — tu red de seguridad. Sin commits frecuentes, el vibe coding es ruleta rusa
Conclusión
El vibe coding es real y es útil. No es el fin de la programación ni la salvación del mundo. Es una herramienta más, con sus casos de uso y sus límites.
Mi conclusión después de meses: vibe coding en proyectos de exploración, vibe coding supervisado en producción, cero vibe coding en seguridad.
Y siempre, siempre, commits frecuentes.