~/VibeHandbook
PDF gratis

Capítulo 06 · 03

El ciclo: intención → generar → revisar → refinar

Todo en este libro regresa a un solo ciclo. Interiorízalo.

El ciclo gira hasta que el resultado alcanza tu estándar, y la revisión es la puerta por la que tiene que pasar cada vez:

   ┌──────────────────────────────────────────────┐
   │                                               │
   ▼                                               │
┌────────┐    ┌──────────┐    ┌────────┐    ┌──────────┐
│ INTENT │ ─▶ │ GENERATE │ ─▶ │ REVIEW │ ─▶ │  REFINE  │
│ (spec) │    │  (AI)    │    │ (you)  │    │  (you)   │
└────────┘    └──────────┘    └───┬────┘    └──────────┘
                                  │
                            pass? ▼
                            ┌──────────┐
                            │   SHIP   │
                            └──────────┘
  1. Intención. Indica lo que quieres y las restricciones que importan: entradas, salidas, casos límite, la pila tecnológica, el estilo. Una intención vaga produce código vago.
  2. Generar. Deja que el modelo escriba la implementación. No le guíes de la mano con la sintaxis; describe el comportamiento.
  3. Revisar. Lee lo que regresó. ¿Realmente hace lo que debe? ¿Maneja la lista vacía, el valor nulo, la llamada de red fallida? ¿Es la versión más simple que funciona?
  4. Refinar. Señala qué está mal, da una corrección concreta y vuelve a generar. Repite hasta que alcance tu estándar.

La mayoría de los principiantes se saltan el paso 3. Generan, corre, siguen adelante. Luego se rompe en producción con un caso que nunca describieron. El paso de revisión es donde ocurre la ingeniería.

Así se ve un buen primer en este ciclo:

Write a TypeScript function `parseDuration(input: string): number`
that converts strings like "1h30m", "45s", "2d" into total seconds.

Requirements:
- Support units: d (days), h (hours), m (minutes), s (seconds).
- Multiple units can combine: "1h30m" = 5400.
- Reject invalid input (empty, unknown units, negative) by throwing
  an Error with a clear message.
- No external libraries. Include 5 unit tests covering the edge cases.

Show the function and tests only.

Fíjate en la estructura: una firma precisa, reglas explícitas, los casos límite señalados, las restricciones indicadas y una petición de pruebas. No estás esperando que el modelo adivine bien; estás eliminando la ambigüedad que produce malas suposiciones.

El paso de refinar es tan una habilidad como el primer prompt. Una retroalimentación vaga produce arreglos vagos. Compara estas dos correcciones:

Bad:  "this is wrong, fix it"

Good: "parseDuration('1h30m') returns 90 instead of 5400 — you're
       summing the numbers but ignoring the unit multipliers. Multiply
       each value by its unit's seconds (d=86400, h=3600, m=60, s=1)
       before summing. Also add a test for the combined case '2d3h'."

La buena versión nombra el síntoma, la causa y la solución. Estás revisando como lo harías con el de un colega, y entre más precisa sea tu señalización, menos rondas necesitarás. Cada ciclo debe converger. Si te encuentras dando vueltas en círculo, esa es una señal de que tu intención estaba subespecificada; deja de regenerar y reescribe la especificación en su lugar.

¿Lo quieres sin conexión?

Descarga el libro entero en PDF o EPUB — gratis.