Una lista de verificación para depurar
Recorre estos pasos en orden. Saltar directamente a "arréglalo" es lo que hace que la IA dé vueltas en círculo.
- Reprodúcelo de forma confiable. Encuentra los pasos exactos que provocan el bug cada vez. Un bug que no puedes reproducir es uno que no puedes confirmar que arreglaste; solo estarás adivinando si desapareció. Si ocurre de forma intermitente, busca la variable que lo activa: una entrada específica, un estado de iniciada versus cerrada, una red lenta.
- Lee el error real. No lo hojees. El mensaje de error y la parte superior del stack trace suelen nombrar el archivo y la línea donde algo salió mal. Los principiantes a menudo se saltan la frase más útil de la pantalla porque parece intimidante.
- Reúne el contexto. Recopila el texto del error, el stack trace, el código relevante y una descripción de una línea de lo que esperabas.
- Dale a la IA el panorama completo. Pega todo lo anterior en un solo mensaje. Deja que forme una hipótesis.
- Formula una hipótesis, no un arreglo. Pregunta "¿qué podría estar causando esto?" antes de "arregla esto". Un arreglo equivocado sobre una teoría equivocada desperdicia tiempo, y a veces añade un segundo bug encima del primero.
- Añade registros (logging) para probar la hipótesis. Confirma qué está haciendo realmente el código antes de cambiarlo.
- Aplica búsqueda binaria al problema. Acota dónde se rompe cortando repetidamente por la mitad el área sospechosa.
- Arregla la causa raíz, no el síntoma. Asegúrate de que el arreglo aborde por qué se rompió, no solo el fallo visible.
- Verifica el arreglo y revisa si hay regresiones. Vuelve a ejecutar los pasos de reproducción. Luego asegúrate de que las funciones cercanas sigan funcionando; una regresión es cuando un arreglo rompe silenciosamente algo que solía funcionar, como parchar una fuga y reventar una tubería justo al lado.
Esa lista de verificación es en realidad un solo ciclo que recorres hasta que el bug desaparece. Cada casilla le pasa evidencia a la siguiente, y una verificación fallida simplemente te devuelve al ciclo con lo que aprendiste:
┌──────────────┐
│ REPRODUCE │ make it happen every time
└──────┬───────┘
▼
┌──────────────┐
│ READ ERROR + │ what does it actually say?
│ GATHER │ collect trace + code + context
└──────┬───────┘
▼
┌──────────────┐
│ HYPOTHESIS │ "what could cause this?"
└──────┬───────┘
▼
┌──────────────┐
│ CONFIRM w/ │ add a log, get evidence
│ LOGGING │
└──────┬───────┘
wrong│ correct
┌──────┘ guess ▼
│ ┌──────────────┐
│ (new │ FIX root │ not the symptom
│ theory) │ cause │
│ └──────┬───────┘
│ ▼
│ ┌──────────────┐ fails / regression
└────────────┤ VERIFY │──────────┐
│ + regressions│ │
└──────┬───────┘ │
│ passes │
▼ ◀───────┘
✔ DONE (loop back around)
El orden no es arbitrario. Cada paso produce la evidencia que necesita el siguiente. Reproducir te da algo que leer; leer te da contexto que reunir; el contexto le da a la IA algo sobre lo que formular una hipótesis. Sáltate un paso y estarás alimentando al siguiente con un vacío.