Lo que empieza como “vibe-driven coding” rápido suele terminar como un sistema opaco: capas de lógica generada, reescrita varias veces con distintos prompts, con poca huella de la intención original. Quien hereda estos sistemas se encuentra con un problema clásico: funciona, pero no se puede razonar con confianza. Sin estructura ni documentación, cambios pequeños se vuelven arriesgados y el debugging se convierte en adivinanza.

Tratar el código generado como una caja negra es la raíz del problema. Cuando una aplicación se modifica a base de prompts (en vez de diseñarse deliberadamente), acumula inconsistencias. Ventanas de contexto, alucinaciones y ediciones manuales ad‑hoc contribuyen a perder coherencia. El resultado es una versión moderna del “spaghetti code”, solo que más difícil de desenredar porque ninguna persona lo escribió por completo. En producción, eso no es solo incómodo: es un riesgo.

La estructura no es opcional

La estructura marca la diferencia entre experimentar y hacer ingeniería. Control de versiones y prácticas básicas de SDLC ayudan, pero no alcanzan. Hace falta guiar a los sistemas de IA con artefactos de diseño intencionales que sigan siendo entendibles para humanos. Si la arquitectura es inevitable, conviene diseñarla explícitamente en vez de dejar que “aparezca” por accidente a partir de una secuencia de prompts.

Modelado ligero

Aquí el modelado ligero es práctico y potente. Definir estructuras de datos en SQL, describir APIs con OpenAPI, delinear comportamiento en Markdown y representar arquitectura con herramientas como PlantUML crea un lenguaje compartido entre humanos y máquinas. No tienen que ser exhaustivos para ser útiles. Un set mínimo —modelos de datos, contratos de API y tests— mejora mucho la claridad y reduce ambigüedad.

Trazable, testeable, mantenible

La ventaja real de este enfoque es su simplicidad: todo se expresa como texto plano, fácil de versionar y de entregar como contexto a una IA. En vez de pedir “construye algo”, defines restricciones y expectativas. El resultado puede seguir siendo complejo, pero se vuelve trazable, testeable y mantenible. Y, sobre todo, devuelve control: el equipo pasa de “revisar output” a diseñar sistemas que evolucionan coherentemente.

Pasar del vibe coding al software útil no es rechazar la IA: es colaborar con ella de forma más deliberada. Con los artefactos correctos, la IA deja de ser una fuente de entropía y se transforma en aceleración sostenible.