Qué es el desarrollo basado en especificaciones
Del Vibe Coding al desarrollo basado en especificaciones: comprenda cómo la programación con IA evoluciona de la 'intuición' a la 'ingeniería', y domine el nuevo paradigma de escribir especificaciones antes del código
Introducción
This approach succeeds where 'just prompting the AI' fails due to a basic truth about how language models work: they're exceptional at pattern completion, but not at mind reading.
En octubre de 2025, GitHub publicó como código abierto un conjunto de herramientas llamado Spec Kit, introduciendo oficialmente el concepto de "Desarrollo Basado en Especificaciones" (Spec-Driven Development) en el panorama de la programación con IA. Esta idea aparentemente retro — escribir especificaciones antes del código — se está convirtiendo en el nuevo paradigma para aprovechar las herramientas de programación con IA.
Si utiliza regularmente asistentes de programación con IA como Claude Code, Cursor o GitHub Copilot, probablemente haya experimentado esta frustración: usted dice "agregue una función de inicio de sesión de usuario", la IA produce con entusiasmo un montón de código, pero al examinarlo de cerca — usa un framework que usted no conoce, la estrategia de seguridad difiere de lo esperado, el estilo de la interfaz no coincide... Entonces comienza ronda tras ronda de correcciones hasta quedar agotado.
¿Dónde está el problema? No es que la IA no sea lo suficientemente inteligente, sino que usted no ha proporcionado suficiente información. "Agregar una función de inicio de sesión de usuario" parece claro, pero en realidad oculta cientos de decisiones no declaradas: ¿Qué método de autenticación? ¿Cuáles son los requisitos de contraseña? ¿Cómo manejar los inicios de sesión fallidos? ¿Se debe recordar el estado de sesión? ¿Soportar inicio de sesión con terceros?... La IA no tiene más opción que adivinar, y adivinar significa desviación.
El desarrollo basado en especificaciones nació precisamente para resolver este problema.
Vibe Coding: el costo de la velocidad
A principios de 2025, el ex Director de IA de Tesla, Andrej Karpathy, acuñó el término "Vibe Coding" para describir un enfoque de desarrollo que consiste en "aceptar las sugerencias de la IA sin revisión profunda". El término se volvió viral e incluso fue nombrado Palabra del Año 2025 por el Diccionario Collins.
El atractivo del Vibe Coding es evidente: usted describe una idea, la IA genera código, y si parece que funciona, es suficiente. Para prototipado rápido, hackatones y scripts desechables, este enfoque es genuinamente eficiente. Pero cuando se aplica a sistemas de producción, surgen los problemas.
We allowed a developer to vibe-code an entire user authentication flow... When we later needed to extend the auth system, it collapsed. No one could trace what was connected to what.
Historias como esta son comunes en la industria: consultas de base de datos generadas por IA funcionan bien en pruebas a pequeña escala, pero el sistema se arrastra bajo tráfico real; un módulo de autenticación improvisado pasa el QA, pero dos semanas después descubren que las cuentas desactivadas aún pueden acceder a las herramientas de administración. Según una encuesta de 2025 de Final Round AI, 16 de 18 CTOs han experimentado desastres en producción causados por código generado por IA.
Esto no significa que el Vibe Coding sea inútil. La clave está en conocer sus límites:
| Escenario | Vibe Coding | Desarrollo basado en especificaciones |
|---|---|---|
| Prototipos / demos | Adecuado | Excesivo |
| Scripts desechables | Adecuado | Excesivo |
| Funciones de producción | Alto riesgo | Recomendado |
| Relacionado con seguridad | Peligroso | Esencial |
| Colaboración en equipo | Difícil de mantener | Recomendado |
El desarrollo basado en especificaciones busca mantener la eficiencia de la IA mientras evita las trampas del Vibe Coding.
Qué es el desarrollo basado en especificaciones

La idea central del desarrollo basado en especificaciones se puede resumir en una frase: Definir "qué construir" antes de considerar "cómo construirlo".
Esto suena como un lugar común de la ingeniería de software, pero en la era de la programación con IA, adquiere un nuevo significado. Los documentos de requisitos tradicionales están escritos para humanos, a menudo extensos, vagos y llenos de jerga. La "especificación" en el desarrollo basado en especificaciones está escrita para la IA: concisa, estructurada y ejecutable.
Imagine que va a construir una casa. El enfoque tradicional de programación con IA es como decirle al equipo de construcción "constrúyanme una casa cómoda de tres habitaciones" y dejar que ellos lo resuelvan. El resultado podría estar bien, pero es más probable que sea muy diferente de lo que usted imaginó. El desarrollo basado en especificaciones significa dibujar primero el plano arquitectónico: cuántos pisos, metros cuadrados por piso, orientación de las ventanas, especificaciones de materiales... El equipo construye según el plano, y el resultado naturalmente cumple con las expectativas.
En la programación con IA, este plano es la especificación. No se preocupa por qué lenguaje de programación o framework usar, solo por qué debe lograr la función, qué tareas necesitan completar los usuarios y cuáles son los criterios de éxito.
Comparado con los flujos de trabajo de desarrollo tradicionales, el desarrollo basado en especificaciones tiene una diferencia fundamental:
| Programación tradicional con IA | Desarrollo basado en especificaciones |
|---|---|
| Describir requisitos directamente -> La IA genera código | Requisitos -> Especificación -> Plan -> Tareas -> Código |
| La IA debe adivinar muchos detalles | Cada paso es explícito; la IA solo necesita ejecutar |
| Retrabajo frecuente, alto costo de comunicación | Inversión inicial, ejecución fluida después |
| Adecuado para tareas simples | Adecuado para funciones complejas |
Este proceso de "refinamiento progresivo" es la esencia del desarrollo basado en especificaciones. Usted no pasa de cero al código de un salto, sino que aclara progresivamente los requisitos a través de múltiples etapas, cada una de las cuales puede ser revisada y ajustada.
Resumen del flujo de trabajo de Speckit
El Spec Kit de GitHub y el comando speckit en Claude Code siguen un flujo de trabajo similar, que se puede dividir aproximadamente en seis etapas:
Constitution -> Specify -> Clarify -> Plan -> Tasks -> Implement
| | | | | |
Carta del Especificación Resolver Plan Desglose Ejecutar
Proyecto de función ambigüedad técnico de tareas implementación1. Constitution (Carta del Proyecto)
La constitución del proyecto define los principios y restricciones fundamentales de todo el proyecto, como "pruebas primero", "simplicidad ante todo", "API primero", etc. Estos principios se aplican a todas las etapas posteriores, asegurando que las soluciones generadas por la IA se alineen con sus preferencias técnicas.
2. Specify (Especificación de función)
Este es el primer paso crítico. Usted describe la función deseada en lenguaje natural, y la IA le ayuda a organizarla en un documento de especificación estructurado, que incluye:
- Historias de usuario: quién necesita hacer qué, y por qué
- Requisitos funcionales: capacidades que el sistema debe tener
- Criterios de éxito: cómo determinar si la función cumple con los estándares
Es importante destacar que el documento de especificación se enfoca únicamente en "qué construir", no en "cómo construirlo" — sin stacks tecnológicos específicos, sin estructura de código.
3. Clarify (Resolver ambigüedad)
La IA revisa la especificación en busca de puntos ambiguos y formula hasta 5 preguntas clave. Estas generalmente involucran límites de funcionalidad, tipos de usuario, requisitos de seguridad, etc. A través de este intercambio de preguntas y respuestas, la especificación se vuelve mucho más clara.
4. Plan (Plan técnico)
Solo después de tener una especificación clara se comienza a considerar el enfoque técnico. Este paso produce:
- Selección de tecnología (lenguaje, framework, base de datos)
- Diseño del modelo de datos
- Definiciones de contratos de API
- Informes de investigación (resolviendo decisiones técnicas)
5. Tasks (Desglose de tareas)
El plan técnico se desglosa en una lista de tareas ejecutables. Cada tarea tiene un ID claro, descripción y rutas de archivos, lista para ser entregada a la IA para su ejecución. Las tareas se agrupan por historia de usuario y soportan desarrollo en paralelo.
6. Implement (Ejecutar)
Las tareas se ejecutan una por una de la lista. Cada tarea completada se marca como terminada, asegurando la trazabilidad.
Los entregables de estas seis etapas forman una cadena clara:
| Etapa | Entregable | Propósito |
|---|---|---|
| Constitution | constitution.md | Definir principios del proyecto |
| Specify | spec.md | Describir requisitos funcionales |
| Clarify | spec.md actualizado | Eliminar ambigüedades |
| Plan | plan.md, research.md | Diseño de solución técnica |
| Tasks | tasks.md | Lista de tareas ejecutables |
| Implement | Código real | Entregable final |
Por qué funciona este enfoque
El desarrollo basado en especificaciones tiene éxito donde "simplemente dejar que la IA escriba código" fracasa porque aborda la contradicción central de la programación con IA: la asimetría de información.
Cuando usted dice "agregar una función para compartir fotos", puede tener una imagen completa en su mente, pero la IA solo ve esas pocas palabras. Debe adivinar: ¿compartir dónde? ¿Quién puede verlo? ¿Necesita compresión? ¿Marcas de agua? ¿Soporte por lotes?... Cada suposición puede ser incorrecta.
El desarrollo basado en especificaciones resuelve esto "obligándole a pensar las cosas primero". Cuando se le requiere escribir historias de usuario, requisitos funcionales y criterios de éxito, los detalles que usted asumía como "obvios" salen a la superficie. Este proceso en sí mismo es valioso — incluso sin IA, escribir los requisitos claramente reduce los costos de comunicación.
Además, el refinamiento progresivo expone los errores más temprano. Descubrir una desviación en los requisitos en la etapa de Specify no cuesta prácticamente nada de corregir; descubrirlo después de que el código está escrito podría significar empezar de nuevo.
Por supuesto, el desarrollo basado en especificaciones no es una solución mágica. Tiene casos de uso claros:
Buena opción:
- Desarrollo de funciones complejas (que involucran múltiples módulos e interacciones)
- Proyectos de colaboración en equipo (los documentos de especificación sirven como medio de comunicación)
- Escenarios de alta calidad (que requieren trazabilidad y verificabilidad)
No es buena opción:
- Correcciones simples de errores o cambios menores
- Programación exploratoria (cuando aún no sabe qué construir)
- Situaciones con tiempo extremadamente limitado (sin tiempo para escribir especificaciones)
La clave está en reconocer la complejidad de la tarea. Algo que toma una hora en completarse no necesita una hora de escritura de especificaciones; una función que requiere una semana de desarrollo absolutamente justifica dos horas de escritura de especificaciones.
Pero las especificaciones no son una solución mágica
Es necesario aclarar un malentendido común: el desarrollo basado en especificaciones reduce las suposiciones, pero no elimina la necesidad de revisión.
Incluso con una especificación completa, la IA aún puede:
- Pasar por alto casos extremos (escenarios que la especificación no cubrió)
- Generar código que no cumple con los requisitos de rendimiento
- Introducir vulnerabilidades de seguridad potenciales
- Producir implementaciones con estilo inconsistente
Esto es como la construcción: incluso con planos detallados, la inspección sigue siendo necesaria. Usted no se mudaría a una casa solo porque el equipo terminó de construirla según los planos — verificaría que el cableado eléctrico sea seguro, que la plomería funcione y que las puertas y ventanas estén firmes.
If specs define intent and agents generate the code, do we need to review code anymore? Short answer: yes, absolutely.
El valor del desarrollo basado en especificaciones radica en hacer que los errores sean más fáciles de encontrar, no en eliminar los errores en sí.
Resumen
El núcleo del desarrollo basado en especificaciones es una verdad simple: cuanto más compleja sea la tarea, más necesita pensar las cosas antes de comenzar. Las herramientas de programación con IA amplifican la importancia de esta verdad — porque la IA ejecutará fielmente sus instrucciones, pero no puede realmente comprender su intención.
The person who communicates the best will be the most valuable programmer in the future. The new scarce skill is writing specifications that fully capture your intent and values.
Recuerde tres puntos clave:
| Punto clave | Significado |
|---|---|
| Especificación antes del código | Definir "qué construir" antes de considerar "cómo construirlo" |
| Refinamiento progresivo | De lo vago a lo claro, con revisión y ajuste en cada paso |
| Reducir las suposiciones | Especificaciones claras = menos espacio para la especulación de la IA |
Ahora que comprende la filosofía, el siguiente artículo, Guía práctica de Speckit, le guiará en la práctica: cómo usar el comando speckit para completar un flujo de trabajo de desarrollo basado en especificaciones para una función.
Combinado con Claude Skills, puede automatizar y estandarizar aún más la ejecución de especificaciones.
Comentarios
Guía rápida de inicio de Tmux
Aprenda Tmux desde cero — el multiplexor de terminal con conceptos básicos, comandos frecuentes e integración profunda con Claude Code
Guía práctica de Speckit
Domine el flujo de trabajo completo de especificación a código con los comandos speckit — referencia de comandos, demostración de extremo a extremo y mejores prácticas