cursos:sdd:presentacion
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Próxima revisión | Revisión previa | ||
| cursos:sdd:presentacion [2026/11/02 11:59] – Nueva presentación de una hora: cómo se programa con IA claude | cursos:sdd:presentacion [2026/11/02 15:04] (actual) – Añade patrones agénticos antes de guardarraíles deterministas claude | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| ====== Cómo se programa con IA ====== | ====== Cómo se programa con IA ====== | ||
| - | Una hora para ver cómo se programa | + | ===== 1. Se programa |
| - | ^ Minutos ^ Bloque ^ | + | El agente |
| - | | 5 | [[# | + | |
| - | | 10 | [[# | + | |
| - | | 10 | [[# | + | |
| - | | 10 | [[# | + | |
| - | | 10 | [[# | + | |
| - | | 10 | [[# | + | |
| - | | 5 | [[# | + | |
| - | ---- | + | [[cursos: |
| - | ===== 1. Lo caro ya no es escribir código | + | ===== 2. OpenCode se mete dentro de Orca o herdr ===== |
| - | Escribir código ha dejado | + | Son el «IDE» |
| - | Un proyecto real hecho con agentes, en líneas sin blancos ni comentarios: | + | [[cursos:sdd: |
| - | ^ ^ Líneas ^ | + | ===== 3. Precios: API o suscripción ===== |
| - | | Aplicación ('' | + | |
| - | | Tests ('' | + | |
| - | | Instrucciones para el agente (// | + | |
| - | Hay más líneas | + | * **API**: se paga por //token//. Para probar o para un uso puntual. |
| + | * **Suscripción**: | ||
| - | * **Especificar**: | + | Por API, en dólares por millón de //tokens// de entrada, en OpenRouter con el proveedor oficial (2 de noviembre de 2026): |
| - | * **Dar contexto**: que el agente tenga lo que necesita. | + | |
| - | * **Comprobar**: que lo que hizo sirve. | + | |
| - | <note important> | + | ^ Modelo ^ Entrada ^ |
| + | | Claude Haiku 5.5 (hasta 100.000 //tokens// de entrada) | 0,10 | | ||
| + | | DeepSeek V4.1 Flash | 0,15 | | ||
| + | | Claude Haiku 5.5 (a partir de 100.000) | 0,50 | | ||
| + | | GLM 5.3 | 1,40 | | ||
| + | | Kimi K3.1 Pro | 2 | | ||
| + | | Claude Sonnet 5.5 | 2 | | ||
| + | | Claude Opus 5.5 | 4 | | ||
| + | | Claude Fable 5.1 | 10 | | ||
| - | ---- | + | Por suscripción, |
| - | ===== 2. El agente ===== | + | ^ Plan ^ Precio ^ Modelos ^ |
| + | | OpenCode Go | 10 y 40 | Modelos abiertos: Kimi, DeepSeek, GLM... | | ||
| + | | GLM Coding Plan | 18, 72 y 160 | GLM | | ||
| + | | Kimi | 19, 39, 99 y 199 | Kimi | | ||
| + | | Claude | 20, 100 y 200 | Haiku, Sonnet, Opus | | ||
| - | El **modelo** recibe texto y genera texto. Tres rasgos que condicionan todo lo demás: | + | {{:cursos: |
| - | * **No tiene memoria**: cada petición empieza de cero. | + | [[https:// |
| - | * **No es determinista**: la misma petición dos veces da dos códigos distintos. | + | |
| - | * **Su conocimiento tiene fecha**: no sabe nada de tu proyecto, | + | |
| - | Un **agente** es ese modelo metido en un **bucle con herramientas**. Un chat te da texto; el agente actúa | + | ===== 4. Skills |
| - | < | + | * **Skill**: cómo se hace una tarea en tu equipo. Solo ocupa contexto cuando la tarea encaja. |
| - | start | + | |
| - | :petición; | + | |
| - | repeat | + | |
| - | :decidir el paso siguiente; | + | |
| - | | + | |
| - | :ver el resultado; | + | |
| - | backward: | + | |
| - | repeat while (¿terminado? | + | |
| - | : | + | |
| - | stop | + | |
| - | </ | + | |
| - | El programa que monta el bucle es [[cursos:sdd: | + | Empieza por las //skills//: son ficheros de texto. |
| - | <sxh bash> | + | [[cursos: |
| - | cd pedidos | + | |
| - | claude | + | |
| - | </ | + | |
| - | Trabajan en dos modos, y se cambia con '' | + | ===== 5. El contexto ===== |
| - | * **Plan**: lee, analiza | + | Es todo lo que ve el modelo, y se le manda entero en cada turno. Cuanto más lleno, peor trabaja |
| - | * **Build**: edita ficheros | + | |
| - | Una petición sirve cuando lleva **objetivo, restricciones y criterio | + | |
| + | * **Una tarea, una sesión**: al cambiar | ||
| + | * **Lo fijo, corto**: '' | ||
| - | <sxh markdown> | + | [[cursos:sdd: |
| - | Malo: | + | |
| - | Bueno: arregla el NullPointerException de PedidoService.calcularTotal, | + | ===== 6. Agentes ===== |
| - | | + | |
| - | y deja pasando los tests de PedidoServiceTest | + | |
| - | </ | + | |
| - | Más información: | + | Un subagente hace un trozo del trabajo en **su propia ventana |
| - | ---- | + | La //skill// dice cómo se hace; el agente, quién lo hace y cuándo para. Casi todo son //skills//: en un proyecto real, 28.211 líneas de //skills// y 134 de agentes. |
| - | ===== 3. El contexto ===== | + | [[cursos: |
| - | El contexto es **todo lo que ve el modelo** en una petición. Como no tiene memoria, en cada turno se le manda entero: las instrucciones, | + | ===== 7. ¿Hace falta conocer el framework o el lenguaje? ===== |
| - | <note important> | + | La IA los conoce mejor que tú: la sintaxis y la API las pone ella. El problema es que **hay que revisar el código**, y no puedes revisar lo que no entiendes. Hay que conocerlos lo suficiente para leerlos y juzgarlos, no para escribirlos |
| - | Lo que hay que repetirle en cada sesión se escribe en '' | + | [[cursos: |
| - | <sxh markdown; | + | ===== 8. SDD: especificar antes de programar ===== |
| - | # Pedidos | + | |
| - | API REST de pedidos. Compilar y probar: `./mvnw verify`. | + | «Hay que poder exportar los pedidos» esconde |
| - | + | ||
| - | - Los importes son `BigDecimal` con escala 2; nunca `double`. | + | |
| - | - Antes de crear cualquier clase, lee `.claude/ | + | |
| - | </ | + | |
| - | + | ||
| - | Para cada problema, una pieza: | + | |
| - | + | ||
| - | ^ El problema ^ Lo que necesitas ^ | + | |
| - | | «Tengo que repetirle lo mismo en cada sesión» | Una línea en '' | + | |
| - | | «Cada vez lo hace distinto» | Una [[cursos: | + | |
| - | | «Se inventa los datos» o «no puede consultarlo» | Un servidor [[cursos: | + | |
| - | | «Se llena el contexto» | Un [[cursos: | + | |
| - | | «No sé por dónde empieza» | Ninguna: falta especificación | | + | |
| - | + | ||
| - | <note tip> | + | |
| - | + | ||
| - | Más información: | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== 4. Especificar antes de implementar ===== | + | |
| - | + | ||
| - | La petición, tal y como llega: | + | |
| - | + | ||
| - | <sxh markdown> | + | |
| - | hay que poder exportar los pedidos | + | |
| - | </ | + | |
| - | + | ||
| - | Ahí hay cinco decisiones | + | |
| - | + | ||
| - | * ¿En qué formato? | + | |
| - | * ¿Qué pedidos: todos, los del usuario, los que su rol puede ver? | + | |
| - | * ¿Cuántos? Diez y diez millones no se resuelven igual. | + | |
| - | * ¿En el momento, o se genera y se avisa al terminar? | + | |
| - | * ¿Qué pasa si no hay ninguno? | + | |
| - | + | ||
| - | El resultado compila, pasa los tests y no es lo que pedías. Un error en los requisitos se corrige cambiando una frase; en el código, rehaciendo el trabajo y los tests. | + | |
| - | + | ||
| - | // | + | |
| - | + | ||
| - | < | + | |
| - | start | + | |
| - | : | + | |
| - | repeat | + | |
| - | : | + | |
| - | : | + | |
| - | :diseño: el CÓMO; | + | |
| - | : | + | |
| - | :tareas: el plan; | + | |
| - | : | + | |
| - | : | + | |
| - | backward: | + | |
| - | repeat while (el código desmiente la spec) is (sí) not (no) | + | |
| - | : | + | |
| - | stop | + | |
| - | </ | + | |
| ^ Documento ^ Qué contesta ^ | ^ Documento ^ Qué contesta ^ | ||
| - | | '' | + | | '' |
| - | | '' | + | | '' |
| - | | '' | + | | '' |
| - | + | ||
| - | Cada requisito se escribe para que se pueda comprobar: | + | |
| - | <sxh markdown> | + | [[cursos: |
| - | Cuando un usuario solicita la exportación de pedidos, el sistema DEBERÁ | + | |
| - | generar un fichero CSV con los pedidos visibles para su rol. | + | |
| - | Si la consulta supera los 10.000 pedidos, el sistema DEBERÁ generarlo | + | |
| - | en segundo plano y avisar por correo al terminar. | + | |
| - | Si no hay ningún pedido, | + | |
| - | generar ningún fichero. | + | |
| - | </ | + | |
| - | * **No es cascada**: se especifica una funcionalidad pequeña, no el sistema entero, y se vuelve atrás cuando hace falta. | + | ==== ¿Realmente funciona? ==== |
| - | * **Revisas otra cosa**: una página de requisitos en vez de dos mil líneas de //diff//. | + | |
| - | * **Si cabe en una frase sin ambigüedad, | + | |
| - | <note warning> | + | No como dogma. La prueba |
| - | Más información: | + | ^ ^ Agente ^ Revisión humana ^ Markdown ^ Código ^ |
| + | | Con Spec Kit | 33 min | 3,5 h | 2.577 líneas | 689 líneas | | ||
| + | | Sin especificación | 8 min | 24 min | 0 | 1.000 líneas | | ||
| - | ---- | + | Especifica lo que no cabe en una frase, y que la especificación sea corta: lo que vale es el diseño, no el volumen de // |
| - | ===== 5. Comprobar lo que hace ===== | + | [[https:// |
| - | El agente no es determinista y dice «listo» con la misma seguridad cuando está bien y cuando no. Lo que vale es lo que se comprueba, y **lo comprueba el propio agente dentro de su bucle**: escribe, lanza la comprobación, | + | ===== 9. SDD centrado en la arquitectura ===== |
| - | ^ Comprobación ^ Quién juzga ^ Qué pilla ^ | + | Variante de SDD: el documento principal |
| - | | Compilador y tests | Regla fija | Lo que se rompe y lo que no cumple | + | |
| - | | [[cursos:sdd: | + | |
| - | | Otro agente que revisa | Un modelo | Lo que no se puede escribir como regla. Se puede equivocar | | + | |
| - | Primero lo determinista, | + | * '' |
| + | * Tareas pequeñas, abarcables en una sola interacción. | ||
| + | * Cada resultado se valida con tests y contra la arquitectura. | ||
| - | <note warning> | + | Su punto débil: nadie escribe los criterios de aceptación de cada funcionalidad. |
| - | <note important> | + | [[cursos: |
| - | Cuando el agente se equivoca, no se corrige solo esa salida: **se cambia el sistema para que el error no vuelva a ocurrir**. Si usa '' | + | ==== Tú haces la arquitectura, la IA escribe |
| - | - Se añade la regla a '' | + | La IA es una máquina de implementar: |
| - | - Si lo vuelve a hacer, se escribe un test de arquitectura | + | |
| - | <note warning> | + | [[https:// |
| - | Más información: | + | ==== El diseño detallado, antes que el código ==== |
| - | ---- | + | Si le dejas, decide él el alcance, los componentes y las interfaces. Se acuerda de lo abstracto a lo concreto: capacidades, |
| - | ===== 6. Demo: exportar | + | [[https:// |
| - | La funcionalidad del bloque 4, de principio a fin, con [[cursos: | + | ==== El prompt se puede ignorar, la arquitectura no ==== |
| - | * Instalarlo en el proyecto, una sola vez: | + | Tú escribes |
| - | <sxh bash> | + | |
| - | npx cc-sdd@latest --claude-skills --lang es | + | |
| - | </ | + | |
| - | * Crear la memoria del proyecto, una sola vez. Lee el repositorio y escribe el producto, el //stack// y las convenciones en '' | + | [[https://www.infoq.com/articles/skeleton-architecture|Skeleton Architecture]]: el esqueleto lo pones tú, el tejido la IA. |
| - | <sxh bash> | + | |
| - | / | + | |
| - | </ | + | |
| - | * Crear la especificación. El nombre de la carpeta lo genera él: | + | ==== Una tarea pequeña cada vez ==== |
| - | <sxh bash> | + | |
| - | / | + | |
| - | </ | + | |
| - | * Requisitos. | + | Se pide un trozo, se prueba |
| - | <sxh bash> | + | |
| - | / | + | |
| - | </ | + | |
| - | * Diseño. '' | + | [[https:// |
| - | <sxh bash> | + | |
| - | /kiro-spec-design exportar-pedidos | + | |
| - | </sxh> | + | |
| - | * Tareas. '' | + | ===== 10. Patrones agénticos ===== |
| - | <sxh bash> | + | |
| - | / | + | |
| - | </ | + | |
| - | * Implementación: | + | Le pides algo a la IA y lo hace mal. Le dices que lo revise y encuentra el error. ¿WTF? La IA es así y hay que vivir con ello. Programar con IA es saber trabajar con ella para que funcione bien, y para eso hay una serie de patrones: |
| - | <sxh bash> | + | |
| - | /kiro-impl exportar-pedidos | + | |
| - | </ | + | |
| - | * Revisión, en una sesión nueva (''/ | + | ^ Patrón ^ En qué consiste ^ |
| - | <sxh markdown> | + | | Planificador-Ejecutor | Uno hace el plan y se revisa antes de tocar nada | |
| - | Compara | + | | Ejecutor-Revisor | Uno hace el trabajo y otro lo revisa |
| - | Para cada requisito, di si está implementado y qué test lo cubre. | + | | Adversarios | Uno intenta romper |
| - | No arregles nada. | + | | Razonador-Refutador | Uno propone la causa de un fallo y otro intenta desmontarla | |
| - | </ | + | | Best-of-N | Varios intentos, y se queda el mejor | |
| - | ---- | + | Empieza por lo más simple: cada patrón añade coste y tiempo. |
| - | ===== 7. Por dónde empezar ===== | + | [[cursos: |
| - | - Instala [[cursos: | + | ===== 11. Guardarraíles deterministas ===== |
| - | - Crea un '' | + | |
| - | - Coge una tarea pequeña y hazla en modo Plan: lee el plan antes de dejarle tocar nada. | + | |
| - | - Una tarea, una sesión. ''/ | + | |
| - | - Cada vez que se equivoque en lo mismo, escríbelo en '' | + | |
| - | - Cuando la tarea no quepa en una frase, especifica. | + | |
| - | <note tip> | + | Como no se acaba de confiar en la IA, se añade software determinista: |
| - | Lo que no ha cabido en esta hora: | + | * **JUnit**: que hace lo que tiene que hacer. |
| + | * **ArchUnit**: | ||
| + | * **Métricas**: cobertura, complejidad ciclomática, | ||
| - | ^ Tema ^ Para qué ^ | + | [[cursos: |
| - | | [[cursos: | + | |
| - | | [[cursos: | + | |
| - | | [[cursos: | + | |
| - | | [[cursos: | + | |
| - | | [[cursos: | + | |
cursos/sdd/presentacion.1793617165.txt.gz · Última modificación: por claude
