Cómo depurar código que genera la IA

Clase 19 de 27Curso Gratis de Programación Básica

Contenido del curso

Resumen

La mayor parte del tiempo de un programador profesional no se va escribiendo código, se va arreglando código que no funciona. Aprender a depurar código, sobre todo el que te entrega la inteligencia artificial, es la habilidad más subestimada que vas a desarrollar como desarrollador en 2026.

¿Qué significa depurar y por qué es tan importante?

Depurar es el proceso de encontrar por qué tu código se comporta distinto a lo que esperabas y corregirlo. No es un castigo ni una señal de que algo salió mal: es el trabajo real de programar. El código casi nunca funciona a la primera, ni el tuyo, ni el de las mejores ingenieras del mundo, ni el que te genera una IA.

¿Qué es depurar en programación? Es el proceso de identificar, aislar y corregir errores en tu código. Incluye reproducir el problema, encontrar la línea exacta donde ocurre, entender por qué pasa y aplicar una corrección.

Lo que distingue a alguien que avanza de alguien que se traba no es cuántos errores tiene, sino qué hace con ellos [00:36].

¿Cómo se ve un bug típico de código generado por IA?

Para mostrarlo en vivo, le pedí a Gemini una función para un sitio web de café que recibiera la cantidad de tazas a reservar y validara que no se reserven más de dos por persona [01:14]. El código que devolvió se ve limpio, corto y respeta la regla del negocio.

Al probarlo en un formulario HTML conectado con JavaScript [02:13], pasa algo curioso:

  • Con 2 tazas: reserva confirmada. Correcto.
  • Con 3 tazas: rechaza la reserva. Correcto.
  • Con el campo vacío: reserva confirmada. Incorrecto.
  • Con la palabra "Hola": reserva confirmada. Absurdo [04:00].

Esto es lo que más vas a ver al depurar código de IA: rara vez está completamente roto. Casi siempre funciona para el caso obvio y se cae en los casos que nadie pensó.

¿Cuáles son los cuatro pasos para depurar código?

El ciclo de depuración tiene cuatro pasos claros que puedes aplicar a cualquier bug, sin importar el lenguaje.

Reproducir el error

Reproducir es el paso más fácil: lograr que el bug aparezca de forma consistente. En el ejemplo, escribir 0 o dejar el campo vacío y darle reservar ya reproduce el problema [04:53].

Aislar la línea exacta

Aislar significa encontrar dónde el código se comporta distinto a lo esperado. Aquí entra una herramienta que ya conoces: console.log. Hasta ahora la usabas para mostrar cosas, pero a partir de ahora es un instrumento de diagnóstico, una linterna que metes adentro del código para ver qué pasa en cada momento [05:14].

En el ejemplo, agregar dos console.log antes de llamar a la función y dentro de ella revela algo clave [05:38]: cuando el campo está vacío, la función no recibe nada "raro". Recibe un string vacío, representado como dos comillas sin nada en medio. Y un string vacío técnicamente no es mayor que 2, así que la condición es falsa y la función devuelve true [06:39].

¿Por qué un campo vacío de un input llega como string? Porque el valor de un input HTML siempre es texto, sin importar lo que el usuario escriba. Si no escribe nada, llega como un string vacío (""), no como null ni undefined.

Entender por qué ocurre

La respuesta no es solo técnica. La IA solo verificó el caso del límite superior porque eso fue lo único que le pedí. Mi prompt decía: "no se puede reservar más de dos tazas por persona". Eso fue lo único que validó [07:33].

Aquí aparece algo de la clase de condiciones: el bug de los casos olvidados. El error más común no es escribir mal una condición, sino olvidar un caso:

  • ¿Qué pasa si la cantidad es cero? Olvidado.
  • ¿Qué pasa si es negativa? Olvidado.
  • ¿Qué pasa si no es un número? Olvidado [08:13].

Corregir con mejor contexto

Hay dos formas de corregir. Una es agregar las validaciones a mano. La otra, más poderosa, es volver a la IA con un prompt mejor, uno que incluya el contexto que faltaba [08:33]:

"Esta función va a recibir su parámetro desde el value de un input HTML, así que va a llegar como texto. Necesito que valide que el campo no esté vacío, que sea un número, que sea mayor a cero y que no sea mayor a dos."

Eso es describir en serio: no solo qué tiene que hacer la función, sino el contexto en el que va a vivir y los casos que tiene que manejar.

¿Cómo pedirle ayuda a una IA para resolver un bug?

La diferencia entre obtener una respuesta útil y una inútil es el contexto que des. Decir "mi código no funciona" es como ir al médico y decir "me siento mal" [09:34].

Compáralo con: "Esta función debería rechazar cantidades vacías o que no sean números, pero las está aceptando. Cuando hago console.log de cantidad, veo que el campo vacío llega como string vacío". Eso es llegar con tus síntomas, tus análisis y tu hipótesis [09:51].

Para escribir esa segunda versión necesitas vocabulario: los nombres de las cosas (string, input, value, parámetro). Eso es justo lo que has construido en las clases anteriores.

Depurar código que la IA te entregó es una habilidad nueva: leer código que no escribiste, encontrar el supuesto que la IA hizo y tú no validaste, y volver con una pregunta mejor. ¿Cuál fue el último bug que te tomó horas y resultó ser un caso olvidado? Cuéntamelo en los comentarios.