zetarıx

Blog

La frustración de programar con IA

Escrito en noviembre de 2025 · 7 min de lectura

Las herramientas y modelos que menciona esta nota cambian rápido; conviene leerla con su fecha en mente.

La distancia entre la promesa y el uso diario

La inteligencia artificial cambió la forma de escribir software. Pero conviene ser honestos sobre lo que implica trabajar con ella todos los días: se equivoca, insiste en soluciones que no funcionan, y afirma con seguridad que todo está resuelto cuando no lo está.

En Zetarix llevamos cientos de horas programando con asistentes de IA. Esta es una mirada franca a esa experiencia: lo que falla, por qué falla, y qué hacemos distinto cuando falla.

Lo que se promociona

La idea que circula es simple: le pides algo a la IA y ella resuelve el resto. Código listo, pruebas incluidas, todo funcionando a la primera.

Lo que ocurre en la práctica

Iteración 1
"Error: Cannot read property of undefined"

Iteración 2 (mismo error)
"Arreglado. Ahora sí funciona."
// no funciona

Iteración 3 (mismo error otra vez)
"Esta vez está resuelto."
// tampoco funciona

Tú, después de un rato
"Mejor lo hago manual."

Por qué la IA comete errores (y va a seguir cometiéndolos)

La frustración es real. Entender por qué ocurre ayuda a manejarla mejor.

Contexto limitado

La IA trabaja únicamente con el contexto que le das. Cuando falta información, completa los huecos con supuestos:

# Lo que le pides:
"Arregla el bug en la función de autenticación"

# Lo que la IA no sabe:
# - qué versión de la librería usas
# - la estructura real de tu base de datos
# - las variables de entorno del proyecto
# - el middleware que agregaste ayer

Los modelos no son determinísticos

A diferencia del código tradicional, un mismo prompt no garantiza el mismo resultado dos veces. Es un proceso probabilístico, no determinístico: pídele lo mismo tres veces y puedes recibir una solución correcta, otra con un error sutil y una tercera con un enfoque distinto. Ninguna de las tres es más "la respuesta" que las otras: son muestras diferentes de la misma distribución.

Sobreconfianza en el resultado

Los modelos están entrenados para responder con seguridad. Rara vez dicen "no estoy seguro". Frases como estas generan una confianza que no siempre está justificada:

  • "He actualizado todos los imports correctamente."
  • "Los tests pasan sin problemas."
  • "El código está listo para producción."

La realidad, a veces: falta un import, los tests no llegaron a correr, o hay un problema de memoria esperando en producción.

La tentación de volver atrás (y por qué conviene resistirla)

Cuando la IA falla varias veces seguidas, aparece un pensamiento natural:

"Mejor lo hago manual. Es más rápido."

Ese es el momento más delicado. Es donde muchos desarrolladores abandonan la herramienta justo antes de aprender a usarla bien.

Por qué conviene no retroceder

El desarrollo manual también tiene su propio costo: tiempo, y una tasa de error que no desaparece solo porque el código lo escribió una persona. El desarrollo con IA, bien dirigido y con revisión humana, reduce ambas cosas. La diferencia no está en la herramienta: está en cómo nos comunicamos con ella.

El arte de comunicarse con la IA

Trabajar bien con IA no es solo saber programar. Es aprender a comunicarse con una herramienta que no comparte tu contexto por defecto.

El contexto es clave

Compara estos dos pedidos:

Prompt pobre:
"Arregla el error"

Prompt útil:
"Estoy usando Next.js 14 con App Router. Hay un error de hidratación
en el componente UserProfile.tsx, línea 47. Ocurre cuando el usuario
está autenticado con OAuth. Stack trace: [...]
Archivos relacionados: [...]. Analiza y sugiere una solución."

Divide y vencerás

En lugar de pedir todo de una vez ("crea un sistema completo de autenticación con OAuth, refresh tokens, rate limiting y envío de emails"), conviene avanzar paso a paso:

  1. Crear la estructura básica de autenticación con JWT.
  2. Agregar OAuth con Google.
  3. Implementar rotación de refresh tokens.
  4. Añadir límite de tasa con Redis.
  5. Integrar notificaciones por correo.

Usa la herramienta correcta para cada tarea

No todos los modelos sirven igual para todo:

  • Debugging complejo: conviene un modelo con razonamiento más profundo.
  • Refactors rápidos: alcanza con un modelo liviano, pensado para velocidad y costo.
  • Generación de tests: los modelos entrenados específicamente para código suelen rendir mejor.
  • Arquitectura de sistema: vale la pena un modelo con más capacidad de razonamiento estructurado.

Itera, no te rindas

let intentos = 0;
let exito = false;

while (!exito && intentos < 10) {
  const resultado = await ia.intenta();

  if (!resultado.funciona) {
    // evitar: volver directo al desarrollo manual
    contexto = mejorarContexto(resultado.error);
    prompt = refinarPrompt(contexto);
    intentos++;
  } else {
    exito = true;
  }
}

La mayoría de los problemas se resuelven con algunas iteraciones bien dirigidas, no con la primera respuesta ni con abandonar en la segunda.

La resiliencia como valor en Zetarix

No vemos la frustración con la IA como un problema a evitar, sino como parte del proceso de aprender a trabajar con ella.

Tres principios que aplicamos

  • Avanzar en vez de volver a lo manual. Cada frustración se documenta: qué funcionó, qué no, y por qué.
  • El equipo por encima del individuo. Cuando alguien se traba, comparte el problema: prompts que funcionaron antes, experiencia del resto del equipo, una sesión de pair programming con la IA.
  • La IA es parte del equipo, no un reemplazo. Propone y redacta; las personas con experiencia validan, deciden y se hacen responsables del resultado.

Con el tiempo notamos algo simple: los equipos que sostienen estos principios se frustran menos y entregan con más consistencia. No hay una fórmula mágica detrás; hay práctica y disciplina.

Lecciones aprendidas

Acepta la curva de aprendizaje

La primera vez que trabajas en serio con IA, es probable que seas menos productivo, no más. Es parte de aprender un lenguaje nuevo.

Documenta los prompts que funcionan

# prompts-que-funcionan.md

## Para debugging de React:
"Tengo un error en React: [error]. Archivo: [nombre].
Versión: [x]. Dependencias: [y]. Último cambio: [z]."

## Para refactoring:
"Refactoriza [función] siguiendo [patrón].
Restricciones: [x]. Mantener: [y]."

Aprende a detectar alucinaciones

Algunas señales de que la IA está inventando algo:

red_flags = [
    "usa una función que no existe en esa librería",
    "referencias a APIs ya deprecadas",
    "sintaxis de una versión distinta a la que usas",
    "propiedades que nunca definiste",
    "imports de paquetes que no instalaste",
]

# la respuesta no es confiar menos en la IA, sino verificar siempre

Usa el modelo adecuado para cada trabajo

No tiene sentido usar el modelo más caro y lento para una tarea simple, ni el más liviano para un problema que requiere razonamiento profundo. Vale la pena revisar, de tanto en tanto, qué modelo conviene para cada tipo de tarea dentro de tu flujo de trabajo.

Combina IA con experiencia humana

const feature = {
  diseño: "la IA propone, una persona con experiencia valida",
  implementacion: "la IA escribe, una persona orienta",
  review: "validación humana crítica",
  tests: "la IA genera casos, una persona valida la cobertura",
  optimizacion: "la IA refactoriza, una persona aprueba",
};

// la IA hace, la persona experta valida y orienta
// esto es especialmente importante en arquitectura, seguridad
// y decisiones de negocio

Una habilidad que se construye con el tiempo

La frustración al programar con IA no desaparece: cambia de forma a medida que se aprende a trabajar mejor con la herramienta. Es una señal de que se está en la parte todavía inestable de una nueva forma de trabajar, no de que algo esté fundamentalmente mal.

Los equipos que sostienen la comunicación con la IA, que revisan cada resultado en vez de asumirlo, y que aprenden de cada iteración frustrante, van a estar mejor preparados para lo que viene en el desarrollo de software.

En Zetarix elegimos sostener el proceso: documentar lo que funciona, revisar lo que no, y tratar a la IA como una parte del equipo que todavía necesita supervisión. La IA no es perfecta. Las personas tampoco. Trabajando juntas, se complementan.

¿Te cruzas con este tipo de fricciones al trabajar con IA? Es un tema del que nos gusta hablar. Si quieres conversarlo, puedes escribirnos.