Clase 1
Metodología

Spec-Driven Development

Antes de construir con IA, producir claridad.

El problema no es que la IA no pueda escribir código.

El problema aparece cuando le pedimos que construya sin estructura previa.

“La velocidad sin claridad se vuelve frágil.”
Diagnóstico

Vibe coding: pedir, probar, corregir, insistir.

Puede servir para explorar ideas pequeñas, pero se vuelve inestable cuando el proyecto crece.

Decisiones enterradas

Las ideas y el diseño quedan perdidos en el scroll infinito del chat.

Instrucciones contradictorias

Al no tener una base firme, el modelo olvida lo que ya hizo y se contradice.

Resultados difíciles de revisar

Sin especificación, solo podemos juzgar si "parece que funciona".

Pérdida del hilo

El proyecto entra en un espiral de parches y correcciones ciegas.

El Modelo

El contexto es la memoria de trabajo de la IA.

Cada vez que hablamos con un agente, trabaja con una ventana limitada que incluye instrucciones, archivos y la conversación previa.

Mesa de Trabajo (Context Window)
Decisión de diseño #1
Error de consola #4
Idea de funcionalidad
Código index.html
Código app.js
"Arreglá esto..."
Espacio Saturado
Límites

Cuando el contexto se llena, el modelo se degrada.

La IA empieza a olvidar instrucciones iniciales, repite errores previos, confunde archivos o inventa decisiones para llenar los vacíos.

“No necesariamente el modelo se volvió peor. Le estamos pasando demasiado ruido.”
La Solución

No necesitamos un chat más largo.
Necesitamos una memoria externa.

Spec-Driven Development convierte la intención del proyecto en documentos estructurados, legibles y ejecutables fuera del chat.

Filosofía

Spec-Driven Development

Una práctica donde antes de escribir una sola línea de código, se definen especificaciones claras.

“Primero entendemos qué construir. Después construimos.”
Estructura

Cuatro documentos para ordenar el trabajo

La memoria externa se organiza en cuatro capas de abstracción decreciente:

01

proposal.md

La intención y el alcance estratégico del proyecto.

Ver más →
02

functional_spec.md

La experiencia del usuario, flujos, pantallas y comportamientos.

Ver más →
03

technical_spec.md

La arquitectura, tecnologías, archivos y restricciones del sistema.

Ver más →
04

tasks.md

El plan paso a paso, dividido en tareas pequeñas y verificables.

Ver más →
Documento 1

1. Proposal

¿Qué queremos hacer?

Define la intención inicial, el problema, la audiencia a la que va dirigida la solución y los límites del proyecto.

Ejemplo de Proposal
# Proposal - Galería Generativa

## Propósito
Crear una web minimalista para presentar una obra interactiva de arte generativo.

## Audiencia
Visitantes de la exposición y coleccionistas digitales.

## Alcance
Una sola página local con:
- Portada de impacto
- Galería de capturas
- Texto sobre el proceso de creación
- Acceso interactivo a la obra
Documento 2

2. Functional Spec

¿Qué debe experimentar el usuario?

Describe pantallas, comportamientos ante interacciones, estados (cargando, error, vacío) y los recorridos visuales del usuario.

Clave: No decide todavía la tecnología (si es React, Vanilla o WebGL). Se enfoca en qué tiene que pasar, no en el cómo.

Documento 3

3. Technical Spec

¿Cómo lo vamos a construir?

Define la arquitectura de archivos, las librerías a importar, el esquema de datos, las variables globales y las restricciones técnicas del entorno.

Clave: Debe responder exactamente al alcance funcional. No añade complejidad técnica innecesaria ni sobreingeniería.

Documento 4

4. Tasks

¿En qué pasos verificables se implementa?

Divide el desarrollo en una lista de tareas pequeñas, secuenciales y ordenadas. Cada tarea es un bloque atómico de trabajo.

Clave: Cada tarea debe terminar con un criterio de aceptación claro que el programador (o la IA) pueda probar inmediatamente.

El Flujo

Cada documento construye al siguiente

Idea
Proposal
Func Spec
Tech Spec
Tasks
Code
Review

Al segmentar el conocimiento, el agente puede concentrarse en una sola tarea a la vez, reduciendo drásticamente la carga de contexto y evitando confusiones.

Desarrollo

Una task por vez.

No intentes implementar todo de un solo golpe. La ambición confunde al modelo.

Trabajar de manera incremental permite comprobar que los cimientos del proyecto sean sólidos antes de seguir agregando lógica.

Prompt de ejecución
Implementá únicamente la Task 1.
Usá como fuente de verdad functional_spec.md y technical_spec.md.
No avances a la Task 2.
Al terminar, explicá cómo verificar el resultado.
Control

Revisar contra la spec, no contra la intención.

La revisión no debe basarse en un vago "se ve bien". Debe responder a preguntas de control específicas basadas en las especificaciones escritas.

¿Cumple con la especificación funcional acordada?
¿Respeta la arquitectura y variables de la spec técnica?
¿La tarea actual está 100% finalizada?
¿Hay código de más o comportamiento inventado?
Metodología avanzada

Fresh Context

Un revisor independiente (humano u otro agente en un chat nuevo) evalúa mejor el resultado porque no arrastra el "ruido" de la sesión de codificación.

“El reviewer mira el resultado final, no las excusas o desvíos ocurridos durante el proceso.”
Límites de Agente Único

Un solo agente no escala para siempre.

Cuando un proyecto crece, un único hilo de chat intentando explorar, documentar, planificar, codificar y testear al mismo tiempo colapsa rápidamente por saturación de contexto.

Aquí es donde la orquestación multiagente se vuelve indispensable.

Multiagente

Roles especializados de agentes

En lugar de pedirle a un solo agente que haga todo, dividimos las responsabilidades en roles bien definidos y aislados.

Explorer

Inspecciona el repositorio para entender la estructura actual.

Documenter

Redacta y actualiza las especificaciones escritas (specs).

Planner

Divide los requerimientos técnicos en un plan de tareas detallado.

Builder

Implementa el código estrictamente delimitado a una tarea.

Reviewer

Evalúa de forma independiente en un contexto limpio.

El Humano

El programador humano no desaparece.
Cambia de rol.

Dejamos de ser escribas manuales de sintaxis de código para convertirnos en directores de arquitectura y validadores de intenciones.

  • Formular el problema de fondo: Qué queremos resolver.
  • Validar y refinar las especificaciones: Aprobar qué y cómo se construirá.
  • Decidir prioridades estratégicas: Determinar los siguientes pasos.
  • Revisar y verificar los resultados: Probar la experiencia directamente.
  • Cuidar la dirección estética y conceptual: Mantener el alma del proyecto.
Paper Zero

Paper Zero como puerta de entrada a SDD.

Paper Zero es una herramienta diseñada para ayudar a artistas y creadores a estructurar ideas sin forzarlos a codificar.

“El formulario no produce código directamente. Produce la claridad de contexto necesaria para trabajar con un agente.”
El Puente

Flujo integrado: De Paper Zero a SDD

Pre-SDD (Humano)
Formulario Paper Zero
Context.md
SDD (Memoria Externa + Agentes)
proposal.md
specs.md
tasks.md
Implementación / Código

El archivo Context.md generado en Paper Zero actúa como la chispa inicial que alimenta el desglose de documentos estructurados para el agente.

Práctica

Ejercicio de Clase

Pasa de la teoría a la práctica.

Consigna:

Elige una idea web minimalista. Abre una nueva sesión con tu asistente de IA y ordénale que no escriba nada de código todavía. Haz que desglose las especificaciones usando este prompt base:

Prompt del Ejercicio
Actuá como asistente de Spec-Driven Development.
No escribas código todavía.
Convertí esta idea en:
1. proposal.md
2. functional_spec.md
3. technical_spec.md
4. tasks.md

Idea: [Escribe aquí tu idea web simple]
Criterio Práctico

¿Cuándo conviene aplicar SDD?

No todo desarrollo requiere el rigor completo de SDD. Elige tu herramienta según la complejidad:

Tarea pequeña / simple

👉 Prompt directo e interactivo

Ej: "Alineá este texto al centro", "Agregá un toggle de tema oscuro".
Múltiples pantallas o lógica compleja

👉 SDD Completo (Proposal + Specs + Tasks)

Ej: "Un reproductor de audio interactivo con playlist y presets".
Interactuando en repo existente

👉 SDD + Exploración previa

Ej: "Agregar un módulo de estadísticas al dashboard de administración actual".
Operaciones críticas o riesgosas

👉 SDD + Revisión en Fresh Context

Ej: "Reestructurar el almacenamiento de la base de datos local".
Cierre

Antes de construir, formular.

Spec-Driven Development no ralentiza la creación. Evita el desperdicio de construir rápidamente en la dirección incorrecta.

“La IA puede producir código. Nuestra tarea humana es producir claridad.”
Ir a Paper Zero →