Tutorial de programación con IA · en español · desde cero
Programa con IA con método, no cruzando los dedos.
Un agente de código escribe en segundos algo que parece correcto. Que lo sea es otra historia. Este tutorial enseña una forma de trabajar que lo comprueba: primero la especificación (SDD), después los tests (TDD) y solo entonces el código. Paso a paso y sin dar nada por sabido.
- 10 capítulos
- 10 demos interactivas
- 0 líneas aceptadas a ciegas
Dado el título "¿Qué es TDD?"
Entonces el slug es "que-es-tdd"slug("¿Qué es TDD?") === "que-es-tdd"
✗ falla: aún no hay códigofunction slug(titulo) { … }
✓ 7 de 7 tests en verdeDemo · se ejecuta en tu navegador
Rojo, verde, refactor. Aquí mismo.
Hay que escribir slug(titulo), la función que convierte un título en un trozo de URL. La spec son siete criterios y cada uno tiene su test. Recorre el ciclo con los botones o edita el código: los tests se ejecutan con cada tecla.
Los tests están escritos y la función aún no hace nada: fallan todos. Ese rojo es la prueba de que los tests comprueban algo.
Minúsculas, y guiones en vez de espacios: falla
slug("Hola Mundo") → "hola-mundo"
obtenido: undefined
Sin acentos: falla
slug("Programación con IA") → "programacion-con-ia"
obtenido: undefined
Sin signos de puntuación: falla
slug("¿Qué es TDD?") → "que-es-tdd"
obtenido: undefined
Separadores seguidos: un solo guion: falla
slug("spec → test") → "spec-test"
obtenido: undefined
Sin guiones al principio ni al final: falla
slug(" -Hola- ") → "hola"
obtenido: undefined
Los números se conservan: falla
slug("Top 10 errores") → "top-10-errores"
obtenido: undefined
Un título sin letras ni números es un error: falla
slug("¡¡!!") → lanza un error
obtenido: undefined
Activa JavaScript para editar el código y ver cómo cambian los tests.
- El rojo va primero. Un test que nunca has visto fallar no demuestra nada: quizá pasa siempre. Por eso el ciclo empieza con todo en rojo, y por eso a la IA se le exige confirmarlo antes de escribir una línea.
- El código plausible engaña. Carga «A ojo, sin tests»: dos líneas razonables que cualquiera daría por buenas. La spec dice lo contrario, criterio a criterio y sin discusión.
- Los tests son la red. Con la suite en verde se puede reescribir el código sin miedo. Y da igual quién lo reescriba: tú, un compañero o un agente a las tres de la mañana.
Itinerario
Diez capítulos, del prompt suelto al método.
Cada capítulo explica una idea con palabras normales, la deja probar en una demo y enseña cómo se aplica con un agente de código: qué se le pide, qué se le exige y qué se revisa. Se irán publicando uno a uno.
- 01
El problema: programar con IA sin método
La IA escribe código plausible en segundos. Que sea el que querías depende de lo que no le dijiste.
Demo · Un prompt vago, tres programas distintosPróximamente - 02
Qué es SDD: la spec es el contrato
Nada se implementa si no está especificado. Por qué escribir antes ahorra reescribir después.
Demo · Detector de ambigüedades en una specPróximamente - 03
Escribir la spec con la IA
Que la IA te entreviste a ti: de una idea de una frase a criterios que se pueden comprobar.
Demo · Constructor de criterios Dado / Cuando / EntoncesPróximamente - 04
Qué es TDD: rojo, verde, refactor
Primero el test que falla, después lo mínimo para que pase. El rojo demuestra que el test prueba algo.
Demo · El ciclo completo, paso a pasoPróximamente - 05
De criterios a tests
Un criterio de la spec, al menos un test. También los casos negativos, que son los que la IA se salta.
Demo · Matriz criterio ↔ test que marca los huecosPróximamente - 06
El contexto del agente
Lo que el agente no lee, no existe. Qué poner en AGENTS.md o CLAUDE.md y qué dejar fuera.
Demo · Monta un AGENTS.md y mira qué cambiaPróximamente - 07
El bucle: tarea, test, código
Una sesión de trabajo entera con un agente: tareas pequeñas, rojo confirmado, verde y commit.
Demo · Una sesión real repetida commit a commitPróximamente - 08
Revisar lo que hace la IA
Tests debilitados, valores fijados a mano, casos borrados. Las trampas típicas y cómo cazarlas en el diff.
Demo · Encuentra la trampaPróximamente - 09
Cambiar requisitos sin romper nada
El cambio empieza en la spec, no en el código. Qué tests y qué ficheros arrastra cada frase que tocas.
Demo · Cambia la spec y mira qué se iluminaPróximamente - 10
Calidad continua
¿Y quién prueba los tests? Mutation testing, la suite entera en cada cambio y cuándo fiarse del verde.
Demo · Muta el código: ¿lo detectan los tests?Próximamente
Cómo encaja todo
Una funcionalidad, de la idea al commit.
La IA escribe casi todo el código. Tú decides qué se construye y compruebas que es eso lo que se ha construido: las dos cosas que no se pueden delegar.
- Tú
La idea, en una frase
Qué quieres y para quién. «Las entradas del blog necesitan una URL legible» es suficiente para empezar; todavía no se habla de código.
- Tú + IA
La spec
La IA te entrevista: ¿qué pasa con los acentos?, ¿y con un título vacío? De las respuestas sale un fichero en specs/ con criterios que se pueden comprobar. Nada se implementa si no está ahí.
- Tú
Revisas el contrato
Leer siete criterios cuesta dos minutos. Descubrir el mismo malentendido en el código cuesta una tarde. Este es el momento barato para corregir el rumbo.
- IA
Tests primero, y en rojo
Un criterio, al menos un test; los casos negativos también. El agente los ejecuta y enseña que fallan: es la prueba de que comprueban algo.
- IA
Lo mínimo para el verde
Ahora sí, el código. Solo el necesario para que pasen los tests, y sin tocarlos: cambiar un test para que pase es hacer trampa.
- IA
Refactor con la suite entera
Se limpia el código y se ejecuta todo: los tests del repo completo, el linter y el formateador. No solo lo que se ha tocado.
- Tú
Revisión y commit
Lees el diff, pruebas la historia completa en el sistema real y haces commit. Spec, tests y código viajan juntos; si el cambio contradice la spec, la spec se actualiza en ese mismo commit.
Pruébalo
Empieza hoy, en el repo que ya tienes.
No hace falta ninguna herramienta nueva. El método cabe en tres sitios de tu repositorio y en la forma de pedir las cosas: en vez de «hazme una función slug», un encargo que dice qué leer, cómo trabajar y cuándo está terminado.
- specs/
- El contrato: qué hace el sistema, criterio a criterio
- AGENTS.md
- Las reglas de la casa que el agente lee siempre
- tests/
- La spec convertida en algo que se ejecuta
Sirve con cualquier agente de código: Claude Code, Codex, Cursor… Lo que cambia de uno a otro es el nombre del fichero de reglas, no el método.
# Qué leer antes
Lee AGENTS.md y specs/003-slug.md antes de tocar nada.
# La tarea
Implementa slug(titulo) según la spec. Los siete criterios
de aceptación están en ella.
# El método
TDD: escribe primero un test por criterio, ejecútalos y
enséñame que fallan. Después, lo mínimo para el verde.
No modifiques un test para que pase.
# Los límites
Solo puedes tocar src/slug.js y tests/slug.test.js.
Sin dependencias nuevas.
# Terminado es
La suite completa en verde y el linter sin avisos.
# El informe
Al acabar: ficheros tocados, decisiones que has tomado
y cualquier desviación de la spec.
Qué cambia
La misma IA, con otra forma de pedir.
El modelo es el mismo en los dos casos. Lo que cambia es cuánto tiene que adivinar y cómo te enteras cuando adivina mal.
Sin método
- El prompt es la única especificación, y se pierde al cerrar el chat
- «Funciona» significa que lo probaste una vez con un ejemplo
- Cada cambio puede romper algo que ya iba, y nadie avisa
- Revisar es leer cientos de líneas buscando no se sabe qué
Con spec y tests
- La spec vive en el repo. Cualquier agente, o cualquier persona, se pone al día leyéndola. No depende de la memoria de nadie.
- «Funciona» es que la suite lo demuestra. Un criterio, un test. Lo que no tiene test no está prometido.
- Lo que se rompe, se rompe en rojo. Y en segundos, no en producción tres semanas después.
- Revisar es comparar con el contrato. ¿Están los tests de cada criterio? ¿Alguno se ha tocado para que pase? El diff tiene preguntas concretas.
Lo que el método no hace. No vuelve infalible a la IA ni te ahorra pensar. Unos tests en verde solo prueban lo que la spec pide: si la spec está mal, tendrás el programa equivocado, muy bien probado. Por eso la spec la decides tú y el diff lo revisas tú.