ia
ingeniería de software
lecciones aprendidas
Lo Que Construir Software Real con IA Realmente Me Enseñó
Diez cosas que un año llevando a producción código escrito por IA me enseñó de verdad, sin el hype.
Pasé los últimos meses llevando a producción código escrito, en su mayor parte, por una IA. Yo leía cada cambio y firmaba cada línea. Esto es lo que esa experiencia me enseñó de verdad, la parte que no aparece en ninguna demo.
La Confianza No Es una Señal de Verdad
La IA te va a decir que se filtró un secreto en tu historial de git con la misma voz que usa para decirte que el cielo es azul. Tranquila. Segura. Impasible. Solo una de esas dos afirmaciones necesita verificación. Verifica las dos igual.
“El primer principio es que no debes engañarte a ti mismo, y tú eres la persona más fácil de engañar.”
— Richard Feynman
Arregla Cada Error Una Sola Vez, por Escrito
Si detectas al modelo cometiendo el mismo error dos veces, la corrección que hiciste la primera vez no sirvió de nada. No tiene memoria de una tarea a la siguiente, salvo lo que realmente dejes escrito: una regla, un comentario, un documento breve que lea antes de empezar. Si la corrección queda solo en tu cabeza, va a repetir el mismo error en el próximo archivo, y en el siguiente.
“Existe” No Es Lo Mismo Que “Funciona”
Pídele que construya una funcionalidad y va a dar el trabajo por terminado en cuanto el código compile y la función esté ahí. No cuando algo realmente la use. Una vez le pedí una función de verificación de estado que se veía completa en todo sentido. Ninguna otra parte del sistema la llamó jamás. Nadie lo notó durante semanas.
Dos Agentes, Dos Historias
Pon dos sesiones de IA a trabajar sobre el mismo código y se van a contradecir. No por mala intención, por pura ignorancia: ninguna sabe qué decidió la otra hace diez minutos en otra ventana. Alguien tiene que sentarse a leer los dos conjuntos de cambios.
El Bug Vive en la Costura
El campo en la base de datos se implementó, y funciona. El toggle en la interfaz se implementó, y funciona. Nadie construyó lo que ese toggle debía activar. Tres checkmarks en verde, una funcionalidad muerta. Los peores bugs casi nunca están dentro de una sola tarea. Viven en el traspaso entre dos tareas que, cada una por separado, parecían terminadas.
Pasar un Test No Es Sobrevivir en Producción
El código que funciona ahora mismo y el código que sobrevive tres días en producción no son el mismo código.
Nada en una suite de tests corre el tiempo suficiente para detectar una fuga de memoria. Esas las descubres de la forma difícil, a las dos de la madrugada, o las descubres a tiempo porque ya te quemaste una vez antes y sabes exactamente qué patrones revisar: la conexión que nunca se cierra, la caché que nunca se limpia.
Tener una Llave No Significa que se Abra Cualquier Puerta
El agujero de seguridad más común que encontré en código escrito por IA nunca fue “quién eres.” Esa pregunta casi siempre se hace. La que se salta es “tienes permiso para tocar esto en particular.” Los primeros borradores la omiten, siempre.
“La seguridad es un proceso, no un producto.”
— Bruce Schneier
Un Linter Es un Pasante, No un Juez
Marcó código perfectamente correcto solo porque su forma le pareció rara a una máquina que no tiene idea de por qué lo escribiste así. En ingeniería de software hay un nombre para el error de fondo: la Valla de Chesterton, el hábito de derribar algo antes de entender por qué lo pusieron ahí. Entiende el código primero. Obedece a la herramienta después, si acaso.
Plausible No Es Correcto
Strings de protocolo, claves de configuración, formatos de fecha: compilan, se leen bien, y a veces simplemente están mal, porque la IA copió la forma general de especificaciones que ya vio en vez de la exacta que tú necesitas. Verifica contra la documentación real. No contra qué tan prolijo se ve el código.
El Bug Más Barato Es el que Nunca Llegas a Escribir
Cada error costoso que vi ocurrir se remontaba a una decisión que nadie dijo en voz alta al principio: un supuesto sobre alcance, formato o responsabilidad que cada uno interpretó a su manera, en silencio.
“La parte más difícil de construir un sistema de software es decidir con precisión qué construir.”
— Fred Brooks, No Silver Bullet
Preguntar primero parece lento. Sigue siendo la jugada más barata del tablero. Todas estas lecciones se reducen a la misma instrucción: frena justo en el momento en que la máquina suena más segura de sí misma.