Quizás son muy chicos, pero hubo una época en la que programar era sinónimo de escribir código. Leer documentación (o, cuando era chico, libros… de papel), buscar un ejemplo de Stack Overflow, adaptar una función, renegar y, eventualmente, llegar a la entrega del proyecto. Después, en el lapso de apenas dos o tres años, llegó el autocompletado inteligente, Copilot, ChatGPT y finalmente los agentes capaces de recorrer un repositorio, proponer cambios y ejecutar tareas en forma autónoma.
Para muchos, fue una crisis (¿qué hago ahora?), pero, en realidad, no hizo menos importante al desarrollador. Cambió qué parte de nuestro trabajo suma más valor. Si bien dicen que el código se volvió barato, yo creo que solo se volvió barato de escribir, pero el criterio se volvió más caro. Una tonelada de código sin ponerle cabeza, puede costar muy caro tanto en dinero (por ejemplo, mal código puede disparar los costos de la nube, o perder datos valiosos de clientes) como en tiempo, mala publicidad, y angustia.
En otras palabras, mientras hoy cualquiera puede generar una pantalla, una API o una aplicación completa en minutos, lo difícil sigue siendo saber si esa tarea corresponde, tiene sentido, no entra en conflicto con otras partes del sistema, no rompe producción, será estable, podrá escalar, será mantenible a futuro…
En forma de micro-guía, estas son mis principales recomendaciones:
Número uno, fundamental, y no me canso de decirlo: Criterio. Mucho o poco código, no dejo de programar. Soy el ingeniero. Sigo poniendo cabeza en los requerimientos, mientras escribo el prompt, porque muchos problemas nacen antes de que exista la primer línea.
No escribo los requerimientos y las especificaciones yo mismo. Está comprobado que la IA es mejor que los humanos escribiendo prompts. Excepto cambios menores, se recomienda trabajar en dos sesiones, primero generando las especificaciones (solicito con mis palabras que redacte la especificación), y luego, en una nueva sesión, implementando la especificación escrita por la IA.
De la misma forma, tengo archivos AGENTS.md (o CLAUDE.md para Claude Code) y DESIGN.md para el frontend, todos escritos por la IA, tanto las versiones iniciales, para las cuales enumero mis reglas no-negociables y pido al modelo que lo redacte en forma óptima para la IA, como para mantenerlos actualizados, pidiendo a la IA que los actualice cada vez que encuentro algo que mejorar.
Sin embargo, es recomendable tener pocos archivos .md. Es una buena idea particionarlos, tener varios AGENTS.md ubicados cerca de los archivos que afecta, pero no tener decenas de ellos. Conviene guardar las especificaciones a parte, o en un repositorio diferente, para reducir la contaminación del contexto. Por este mismo motivo tiendo a evitar los contextos de 1 millón de tokens, ya que demasiado contexto puede disminuir la efectividad del agente.
Trabajo en sesiones manejables, cada una para un cambio o desarrollo específico y lo más conciso posible, tratando de que el volumen de cambios o código generado no supere mi capacidad de revisarlo. No olvides que la IA es una herramienta, no dejes que se vuelva una fábrica de deuda técnica.
Sigo tomando las decisiones críticas, como infraestructura, seguridad, costos, despliegue, datos, límites operativos. Es fundamental que entendamos esas decisiones, por lo que no conviene delegarlas ciegamente a un modelo.
La otra pata es probar a conciencia. No alcanza con que el agente diga que terminó y corrió los tests. Hay que entender el camino de ejecución y probar las partes críticas. Personalmente, hago pruebas de frontend (UI) a mano, porque un código que pase las pruebas no significa una buena experiencia de usuario, la IA todavía es desprolija, incluso con un buen DESIGN.md.
Por último, sigo estudiando. Aprendo a dirigir la IA en forma más eficiente y económica. Sigo estudiando lenguajes, infraestructura, patrones, software abierto, pero también modelos, técnicas, harnesses, herramientas nuevas y formas mejores de trabajar con agentes.
Mucho slop nace en aceptar una solución plausible sin cuestionarla. Vengo usando esta analogía: La IA es como un joven con varias carreras universitarias y másteres, pero que nunca trabajó; estará encantado de meter todo su conocimiento donde sea posible, pero no tiene experiencia para saber cómo va a resultar en el futuro. Si aceptamos todo sin mirar, terminaremos con un sistema sobredimensionado, inestable, caro de mantener, con problemas de seguridad imprevistos y una usabilidad paupérrima.
La tecnología siempre está en su peor versión. Mañana será mejor. Llegará el día que la IA (o la AGI) pueda tomar estas decisiones por nosotros. Entonces, el costo del código caerá a cero. Si dejamos de usar la cabeza, ahí si nos volveremos obsoletos.
