E083_Guía de Spec-Driven Development con Spec Kit
Ep. 83

E083_Guía de Spec-Driven Development con Spec Kit

Episode description

Descubre el Poder de SpecKit y el Desarrollo Guiado por Especificaciones

SpecKit, una herramienta de código abierto de GitHub, revoluciona la forma en que se desarrollan sistemas robustos mediante el desarrollo guiado por especificaciones (SDD). Este enfoque permite a los equipos dejar de lado la improvisación y obliga a la IA a generar sistemas sólidos. Con SpecKit, se define la lógica de negocio y se impone una gobernanza absoluta, evitando la degradación de contexto y permitiendo la creación de aplicaciones complejas de manera predecible y sin caos. ¿Qué implica este cambio para el futuro del sector y los profesionales de la informática?

Download transcript (.srt)
0:09

Buenas, esto es BIMPRAXIS, el podcast donde el

0:15

BIM se encuentra con la inteligencia artificial.

0:20

Exploramos la ciencia, la tecnología y el futuro

0:23

desde el enfoque de la arquitectura, ingeniería y

0:26

construcción.

0:28

¡Empezamos!

0:36

Muy buenas, bienvenidas, bienvenidos a un nuevo episodio

0:40

de BIMPRAXIS.

0:41

Hoy os traemos SPECKIT de GitHub.

0:50

Sí, sí, y sin que un ser humano

1:09

tenga que picar ni una sola línea de

1:11

código, que se dice pronto.

1:14

Exacto.

1:14

Es que eso, bueno, ha dejado de ser

1:16

una promesa de ciencia ficción.

1:18

Esa es la realidad arquitectónica que vamos a

1:20

diseccionar hoy aquí.

1:21

Y el catalizador de toda esta locura es

1:24

el desarrollo guiado por especificaciones, o SDD por

1:29

sus siglas en inglés.

1:30

Vamos a meterle mano a este concepto a

1:32

través de SPECKIT, que, bueno, para quien no

1:36

lo conozca, es una herramienta de código abierto

1:38

de la gente de GitHub que lo ha

1:40

reventado.

1:41

O sea, más de 16 ,000 estrellas en

1:43

su primera semana.

1:44

¡Qué barbaridad!

1:46

Totalmente.

1:47

El objetivo de hoy es entender los mecanismos

1:50

profundos que permiten a los equipos dejar de

1:53

lado la improvisación y, básicamente, obligar a la

1:56

IA a generar sistemas robustos de verdad.

1:59

Porque, a ver, la improvisación es justo lo

2:01

que ha dominado la industria este último año,

2:03

¿no?

2:03

Cualquiera que haya estado trasteando con modelos generativos

2:06

para crear apps ha terminado, casi seguro, en

2:09

el agujero negro este del vibe coding.

2:11

Uf, el famoso vibe coding, ¿sí?

2:14

Sí.

2:14

Escribirle un prompt de dos líneas en plan,

2:18

créame un clon de una red social de

2:20

fotos y sentarte a esperar un milagro.

2:23

Ya, y el espejismo al principio es brutal,

2:26

¿eh?

2:26

Porque durante los primeros minutos ves la pantalla

2:29

llenarse de componentes, de estilos visuales.

2:32

Parece magia.

2:33

Parece magia pura, exacto.

2:34

Pero el problema del vibe coding es que

2:37

no tiene cimientos.

2:38

O sea, la tercera o cuarta iteración, cuando

2:40

intentas meter, no sé, una pasarela de pago

2:43

o tocar el sistema de usuarios, ¡boom!, el

2:46

proyecto colapsa.

2:47

Claro, te empiezan a salir dependencias circulares, el

2:49

diseño se rompe por todos lados.

2:51

Y el código acaba siendo un laberinto ilegible.

2:54

Para visualizarlo un poco, es como intentar construir

2:56

una casa gritándole ideas sueltas a un grupo

3:00

de obreros que, además, llevan los ojos vendados,

3:02

en lugar de, pues eso, darles unos planos

3:05

arquitectónicos en condiciones.

3:07

Con placer, de forma estadística, la última petición

3:10

que le has hecho.

3:12

Claro, te dice que sí.

3:13

A todo.

3:13

Y si le pides un cambio muy radical,

3:15

pues lo intenta meter con calzador y te

3:18

destroza la lógica que tenía antes.

3:20

Exacto.

3:20

Y el problema técnico real detrás de esto

3:23

es lo que llamamos la degradación del contexto.

3:25

A ver, los LLMs tienen una memoria finita.

3:28

Si tú llevas un chat de docenas de

3:30

mensajes, el modelo empieza a perder el rastro

3:32

de las instrucciones originales.

3:35

Claro, prioriza lo último que le has dicho.

3:38

Eso es.

3:38

Y el vibe coding confía ciegamente en que

3:41

la máquina se va a acordar de toda

3:42

tu estrategia global, cuando su arquitectura no da

3:45

para eso.

3:46

Y justo ahí es donde entra la interfaz

3:48

de línea de comandos de SpecKit, el CLI

3:50

llamado Specify, y lo cambia absolutamente todo.

3:53

Y mete un cambio que impone una gobernanza

3:55

absoluta.

3:56

O sea, es una pasada.

3:57

De hecho, mirando el flujo de SpecKit, me

4:00

llamó muchísimo la atención que el primer paso,

4:03

después de iniciar el proyecto, ignora por completo

4:05

el código.

4:06

O sea, te exige ejecutar un comando que

4:09

es speckit .constitution.

4:11

Sí.

4:13

Crear un archivo Markdown con la constitución del

4:16

proyecto.

4:16

Eso es.

4:17

O sea, las leyes inmutables del sistema, ¿no?

4:20

Volviendo a lo de las físicas que decías

4:22

antes, es como en un motor de videojuegos.

4:24

Si el motor dice que una pared es

4:26

sólida, el muñeco no la atraviesa, por mucho

4:29

que aporrees el mando.

4:30

La constitución en SpecKit, el archivo constitution .md,

4:35

pues hace lo mismo.

4:36

Son principios innegociables.

4:38

Claro, cosas como estándares de accesibilidad, patrones de

4:42

diseño.

4:42

O directamente, prohibir tecnologías.

4:45

Exacto.

4:45

Y fíjate en el caso de Dan Delimarsky,

4:48

el mantenedor del proyecto, que lo explicaba construyendo

4:51

la web de su podcast.

4:52

En su constitución, él puso unas reglas de

4:55

hierro.

4:55

La web tenía que ser estática, cero bases

4:58

de datos y JavaScript puro y duro.

5:00

Nada de frameworks pesados.

5:03

Y eso es brillante, porque así neutralizas el

5:05

sesgo que tiene la IA por defecto.

5:07

A ver, estos modelos se entrenan con GitHub

5:10

y Stack Overflow.

5:11

Así que a la mínima… Te van a

5:12

querer meter un React y una base de

5:14

datos relacional, porque es lo que más ven,

5:16

estadísticamente.

5:18

Totalmente.

5:19

Pero al fijar la regla de entrega estática

5:21

pura en ese documento de constitución, el sistema

5:24

inyecta eso en el system prompt de cada

5:26

maldita llamada al API.

5:27

Es como un ancla.

5:28

O sea, si dentro de un mes a

5:30

alguien se le ocurre pedir una función para,

5:32

no sé, guardar episodios favoritos, y a la

5:35

IA le parece súper tentador montar una base

5:37

de datos en la nube… La constitución le

5:39

dice que ni de broma.

5:41

Exacto.

5:41

Lo bloquea.

5:42

Y obliga a la IA a buscarse la

5:45

vida de otra forma.

5:46

Yo qué sé, usando el almacenamiento local del

5:48

navegador, pero siempre respetando la ley.

5:51

Y así te cargas la degradación de contexto

5:54

de un plumazo.

5:55

Pero a ver, poner restricciones no te construye

5:58

el producto.

5:59

O sea, evitas que se caiga la casa,

6:01

pero no defines la lógica de negocio.

6:03

Para eso, el framework tiene otro comando, que

6:05

es specit .specify.

6:08

Aquí es donde defines el qué y el

6:10

por qué, ¿verdad?

6:11

Eso es.

6:12

Se hace mediante historias de usuario y criterios

6:15

de aceptación, pero ojo, con una regla de

6:17

oro.

6:18

Está terminantemente prohibido hablar de tecnología.

6:21

Nada de mencionar Python, ni servidores… Nada.

6:25

Cero.

6:26

A ver, ¿qué yo tengo que hacer de

6:27

abogada del diablo, vale?

6:29

Porque, metodológicamente, esto de redactar requisitos súper exhaustivos

6:33

y blimbar el diseño antes de tirar una

6:35

línea de código… Te suena a cascada, ¿no?

6:38

Al modelo Waterfall.

6:39

Es un poco paradójico que ahora la IA

6:41

nos devuelva eso.

6:42

¿No crees?

6:43

Ya.

6:43

A ver, la comparación es inevitable, lo entiendo.

6:47

Pero hay una diferencia mecánica brutal.

6:49

El problema del Waterfall era el tiempo.

6:52

Que te tirabas meses validando documentos entre departamentos.

6:56

Claro, el factor humano.

6:57

Exacto.

6:58

Specit resuelve esa lentitud con el comando specit

7:02

.clarify.

7:03

O sea, el sistema no coge tu especificación

7:05

y asiente como un tonto.

7:07

Activa un motor lógico y busca ambigüedades, fallos

7:11

o casos límite que tú… No has pensado.

7:13

O sea, no se comporta como un ejecutor

7:15

servicial, sino que se pone la gorra de

7:17

arquitecto o de product manager.

7:19

Eso es.

7:20

Si le pides un formulario para subir fotos,

7:23

la IA te para y te dice, vale,

7:25

¿cuál es el peso máximo?

7:27

¿Qué formatos admitimos?

7:28

¿Qué pasa si el servidor da un timeout?

7:31

Qué bueno.

7:32

Te fuerza a tapar los agujeros en minutos.

7:34

Y claro, una vez que tienes el qué

7:37

totalmente definido y aislado de la tecnología, pues

7:41

llegamos a la revelación.

7:42

La revelación más loca de todo esto del

7:44

SDD.

7:44

Que el código fuente deja de importar.

7:47

Exacto.

7:47

El código pasa a ser, bueno, un subproducto

7:51

desechable.

7:52

Y esto cuesta asimilarlo, ¿eh?

7:54

Llevamos 50 años donde el código era el

7:56

rey de la empresa tecnológica.

7:58

Pero si toda tu lógica está en un

8:00

markdown agnóstico, el andamiaje técnico te da igual.

8:04

Te da exactamente igual.

8:05

Imagínate que tienes algo montado en Next .js

8:07

súper complejo y de repente el negocio pide

8:10

ir a toda pastilla con contenido estático.

8:13

Hacer eso hoy en día es reescribirlo todo

8:15

durante meses.

8:16

Ya te digo.

8:17

Pero con este paradigma, tu spec .md no

8:20

se toca.

8:21

Cambias el mandato técnico y el sistema te

8:23

regenera la aplicación entera.

8:24

El código acaba siendo solo el resultado de

8:27

una compilación, ¿sabes?

8:28

Como el binario que te escupe, C++.

8:31

Lo único que vale oro o aura es

8:33

la especificación.

8:34

Vale.

8:35

Pero bajemos un poco a la tierra, que

8:37

aquí hay un salto.

8:38

Tenemos la constitución, tenemos las especificaciones.

8:41

Pero, ¿cómo pasa?

8:42

¿De esos textos lógicos a carpetas con código

8:45

real que funcione?

8:46

Bueno, esa coreografía tiene dos pasos.

8:49

Primero tiras specitplan, que coge tus requisitos y

8:52

define la arquitectura técnica formal.

8:55

Enrutamiento, estado, dependencias.

8:58

Y luego entra el verdadero peso pesado, el

9:01

comando specit .tasks.

9:03

Que, ojo, no te hace una lista de

9:05

la compra de tareas.

9:06

Te monta un grafo acíclico dirigido.

9:09

Toma ya.

9:09

Sí, sí.

9:10

Una estructura matemática para matemáticas.

9:12

Para mapear qué depende de qué.

9:13

Y eso, claro, te evita las típicas condiciones

9:16

de carrera, ¿no?

9:17

La máquina entiende que no puede montar la

9:19

interfaz de la lista de usuarios si antes

9:22

no ha diseñado la base de datos de

9:24

sus usuarios.

9:24

Exactamente.

9:25

Te hace una topología perfecta.

9:29

Incluso detecta qué tareas son independientes entre sí.

9:32

Y les pone una etiqueta de paralelo, una

9:34

P entre corchetes.

9:36

Pero, ojo, la verdadera magia aquí es cómo

9:38

te impone el TDD, el desarrollo guiado por

9:42

pruebas.

9:42

Uy, el ciclo este de rojo -verde y

9:44

refactorizar.

9:45

Ese mismo.

9:46

El plan exige que la IA escriba primero

9:49

el test unitario, lo ejecute y que falle.

9:52

Si no hay un test fallando, el sistema

9:54

bloquea la escritura del código.

9:56

Es un filtro implacable.

9:58

Qué maravilla.

9:59

Y fíjate, leyendo la documentación de Dan Delimarsky,

10:02

menciona una técnica súper interesante gracias a dividir

10:06

tanto las tareas.

10:07

Como todo va por archivos de texto, tú

10:09

puedes pausar la cosa y cambiar el modelo

10:11

de IA a mitad de camino.

10:13

Ostras, claro.

10:14

Optimización pura de costes y capacidades.

10:17

Eso es.

10:18

Para montar el grafo de dependencias o pensar

10:21

la constitución, necesitas un modelo que razones súper

10:24

bien a nivel sistémico, tipo un GPT -5,

10:27

¿no?

10:27

Sí.

10:28

Pues usas ese para planificar.

10:30

Y cuando ya tienes el archivo de tareas

10:32

perfecto, pausas.

10:33

Cambias el motor a algo como Clot 3

10:35

.5 Sonet, que escribiendo sintaxis pura es un

10:38

avión.

10:39

Y lanzas el comando final.

10:40

El spekit .es.

10:42

O sea, usas al mejor arquitecto para pensar

10:45

y al mejor albañil para poner los ladrillos.

10:47

Tal cual.

10:48

Pero oye, sobre ese comando spekit .implement, yo

10:52

al principio pensaba que esto mandaba los archivos

10:54

a un servidor en la nube y te

10:56

devolvía un zip con la app.

10:57

Ah, no, no, no, que va.

10:59

Esto ocurre en tu propia máquina.

11:01

O sea, ¿tiene permisos para ejecutar cosas en

11:03

mi terminal?

11:04

Sí.

11:04

Interactúa con tu sistema de archivos local.

11:07

Lanza procesos reales.

11:08

Te instala paquetes de NPM.

11:10

Te compila la app.

11:12

O te corre un lighthouse para ver el

11:13

rendimiento en tiempo real.

11:15

Todo en local.

11:16

Madre mía.

11:17

A ver, eso está genial porque mantienes tú

11:19

el control y puedes revisar los archivos antes

11:22

de hacer un commit.

11:23

Pero a nivel de seguridad, tela.

11:26

Ahora, también te digo, todo este flujo es

11:29

precioso en un entorno ideal, pero las empresas

11:31

tienen herramientas muy arcaicas.

11:32

Si esto fuera un sistema cerrado, nadie lo

11:35

usaría.

11:35

Y por eso se llama SpecKit.

11:37

Su arquitectura interna tiene un sistema de prioridades

11:40

que te permite anular casi...

11:42

casi todo mediante dos cosas.

11:44

Extensiones y presets.

11:45

A ver, las extensiones me las imagino.

11:47

Para conectar con el mundo real, ¿no?

11:49

Exacto.

11:50

Para tirar muros.

11:51

La comunidad ya ha montado integraciones con Azure

11:54

DevOps con Jira.

11:55

Claro, el sistema genera las tareas técnicas y

11:58

la extensión te las crea automáticamente, como tickets

12:01

en el tablero del proyecto de la empresa.

12:04

Eso es.

12:04

O extensiones para meter flujos de QA corporativos

12:07

automáticos.

12:08

Pero luego están los presets, que esto sí

12:11

que es...

12:12

Es profundo.

12:12

No añaden herramientas, sino que le cambian el

12:15

cerebro al sistema.

12:17

Alteran cómo procesa la información.

12:19

Hay presets corporativos para temas legales o financieros,

12:22

¿verdad?

12:22

Sí.

12:23

Te fuerzan a cumplir estándares muy locos.

12:26

Pero a ver, los más bestias son los

12:28

que la comunidad ha llevado al límite del

12:30

absurdo.

12:31

O sea, fíjate, en la propia documentación oficial

12:34

tienen un preset que se llama Habla Pirata.

12:36

Ah, sí.

12:37

El Pirate Speak.

12:38

Es buenísimo.

12:39

Es que es de locos.

12:40

Tú activas eso y el sistema sigue programando

12:43

perfecto, pero todo el marco conceptual se disfraza

12:46

con palabras de corsarios.

12:48

Sí, sí.

12:48

Las especificaciones pasan a llamarse manifiestos de viaje,

12:53

la arquitectura es el plan de batalla y

12:56

las tareas son asignaciones de la tripulación.

12:59

La IA te monta una app moderna, pero

13:02

hablando como un pirata del siglo XVII.

13:04

Y, a ver, parece una fricada de programadores,

13:07

que lo es, pero demuestra algo vital.

13:09

La separación total entre la capa...

13:11

...la capa semántica y la capa sintáctica.

13:13

Ese es el punto clave.

13:15

Claro.

13:15

SpecKit obliga a la IA, mediante JSON súper

13:18

rígidos, a usar el tono pirata para los

13:20

comentarios, los textos, los botones, pero al mismo

13:23

tiempo le impone una disciplina brutal en la

13:25

sintaxis.

13:26

El código en Python o React tiene que

13:28

ser matemáticamente perfecto para que compile.

13:31

O sea, consiguen que un LLM, que tiende

13:34

a alucinar y mezclar cosas, mantenga esa frontera

13:37

impermeable entre su creatividad pirata y el rigor

13:42

de compilación.

13:43

Exactamente.

13:44

Eso demuestra un control absoluto.

13:46

Y, rizando el rizo, he visto que hay

13:48

alguien que ha usado un preset para escribir

13:51

libros de ficción.

13:52

Madre mía.

13:53

Sí, sí.

13:54

O sea, han cogido este framework de ingeniería

13:56

de software y lo han transformado en un

13:59

motor narrativo.

14:00

Las funciones de código son los arcos de

14:03

los personajes.

14:03

La Constitución dicta las reglas de ese mundo

14:06

de fantasía y usan el TDD para asegurarse

14:10

de que no hay agujeros de guión.

14:11

Es que eso te dice lo que es

14:13

realmente SpecKit.

14:14

No es solo para hacer webs.

14:15

Es un motor universal para la resolución algorítmica

14:18

de problemas complejos.

14:20

Da igual si quieres montar el sistema de

14:21

un banco o escribir una novela.

14:23

Coges un problema gigante, lo divides en partes

14:25

pequeñas, verificables y en paralelo.

14:28

Y, uff, a ver, esto nos lleva a

14:31

la gran reflexión final, ¿no?

14:33

Sí, el futuro del sector.

14:34

Claro, si el SDD consigue abstraer por completo

14:38

lo que queremos hacer del código máquina, ¿dónde

14:42

deja esto a los millones de profesionales que

14:44

se han ganado la vida memorizando lenguajes de

14:46

programación?

14:48

Pues, sinceramente, nos asomamos a una reestructuración total

14:51

de la informática.

14:52

Hasta ahora, el mercado te pagaba muy bien

14:54

por conocer las entrañas de la sintaxis, por

14:56

saber dónde poner el punto y coma o

14:58

cómo gestionar la memoria.

14:59

Ya.

14:59

Pero si la IA asune esa ejecución manual,

15:02

el valor de picar código cae en picado.

15:04

La competencia clave ahora va a ser la

15:06

claridad de pensamiento estructural, saber definir arquitecturas, comunicarte

15:10

sin ambigüedades y controlar esta automatización.

15:13

O sea, pasas de ser un traductor de

15:15

instrucciones a un director de orquesta.

15:17

Y, bueno, eso deja una pregunta fascinante para

15:21

quienes nos escuchan hoy.

15:22

Si ahora mismo un texto bien estructurado en

15:25

español puede gobernar y generar aplicaciones enteras de

15:29

forma predecible, matando el caos este del vibe

15:32

coding, estamos en un punto de no retorno.

15:34

Da que pensar, desde luego.

15:36

A ver, si lenguajes que hoy nos parecen

15:38

sagrados, tipo Python, Java o Rust, acaban relegados

15:43

al mismo sótano oscuro que el lenguaje ensamblador.

15:46

Igual resulta que, dentro de muy poco, el

15:48

lenguaje natural bien pensado sea el único lenguaje

15:51

de programación que un humano necesite dominar.

15:54

Totalmente posible, ¿ya ves?

15:55

Que las voces que oyéis han sido generadas

15:57

por la IA de Notebook LM.

15:59

Y que dirigiendo el podcast se encuentra Julio

16:02

Pablo Vázquez, un humano que te envía saludos.

16:05

En caso de error, probablemente sean errores humanos.

16:08

¡Nos escuchamos!