ISW · Contexto + IA
🧭 Ingeniería de Software · Programar con IA

Ingeniería de contexto: que la IA no adivine nada

Una IA que programa no sabe lo que tu equipo decidió. Todo lo que no esté escrito en lo que le das, lo adivina — y lo hace con total seguridad. La buena noticia: tu equipo ya produjo, sprint tras sprint, justo la información que ella necesita (el backlog, los casos de uso, el diagrama de clases, el diagrama de estados). Esta guía enseña a convertir esos artefactos en contexto, para que la IA ejecute y vos conserves el control de las decisiones.

👁 — vistas · Ing. Roy Carrasco, Facultad de Ingeniería de Sistemas · UAB

Volvés al equipo de EventoUAB, ya en el Sprint 3. Valentina va a rehacer una historia con un asistente de código y Camila (la PO) es quien decide qué reglas de negocio valen. En cada decisión podés probar primero un camino equivocado, ver su consecuencia sin ninguna penalidad, y recién después se desbloquea el correcto.

Dos líneas y un módulo que no es nuestro

La historia #14, «Cancelar una reserva», vuelve al tablero del Sprint 3: la primera versión no distinguía estados y Camila pidió rehacerla bien. Valentina abre su asistente de código y escribe lo primero que se le ocurre: «Hacé el módulo para cancelar reservas de EventoUAB en JavaScript». En diez segundos tiene esto:

JavaScript — lo que devolvió la IA
// cancelarReserva.js
import { db } from "./db.js";
import { enviarCorreo } from "./correo.js";

export async function cancelarReserva(reservaId, usuario) {
  const reserva = await db.reservas.findById(reservaId);
  if (reserva.userId !== usuario.id && usuario.rol !== "admin") {
    throw new Error("No autorizado");
  }
  reserva.status = "CANCELLED";
  reserva.motivo = usuario.motivo;
  reserva.penalidad = reserva.precio * 0.2;
  await db.reservas.save(reserva);
  await enviarCorreo(usuario.email, "Reserva cancelada");
  return reserva;
}

Compila, se lee prolijo y hasta suena razonable. Pero Valentina lo mira con calma y se da cuenta de que casi nada de eso existe en EventoUAB:

Lo que escribió la IALa realidad del proyecto
db.reservas.findById, ./db.jsNo hay ese módulo ni esa API de base de datos.
reserva.userId, usuario.rol === "admin"Una reserva pertenece a un club, y no existe el rol «admin».
reserva.status = "CANCELLED"El atributo se llama estado y sus valores van en español.
reserva.motivo, reserva.penalidad, reserva.precioNadie pidió motivos ni cobros; las reservas no tienen precio.
enviarCorreo(...)Notificar a Bienestar es otra historia, no esta.
(no hay nada sobre las 2 horas)La regla central de la historia ni aparece.
La IA no falló: rellenó

Un prompt de dos líneas deja decenas de decisiones abiertas. La IA no puede preguntar «¿cómo se llama el dueño de la reserva?», así que elige una respuesta verosímil. Lo verosímil casi nunca coincide con lo que tu equipo acordó.

Decisión

¿Cómo sigue Valentina?