En este episodio de Investigando la Investigación me adentro en un terreno más técnico de lo habitual para hablar de herramientas de inteligencia artificial aplicadas a la programación y, sobre todo, del cambio de paradigma que estamos viviendo en la forma de desarrollar software. Empiezo recordando cómo usábamos —y muchos seguimos usando— modelos como ChatGPT para programar: pedir fragmentos de código, copiarlos en un editor, ejecutarlos, detectar errores y volver a iterar en un proceso manual y relativamente lento. Ese enfoque sigue siendo útil, pero empieza a quedarse corto frente a lo que está apareciendo ahora.
En los últimos meses han surgido muchas herramientas que introducen la llamada programación basada en agentes. Ya no hablamos solo de generar código, sino de sistemas que analizan una petición, la descomponen en tareas, orquestan agentes que trabajan en paralelo y deciden cómo implementar una solución completa. Menciono brevemente algunas de estas herramientas, pero el foco del episodio se centra en Cursor, que a día de hoy me parece una de las opciones más completas. Cursor es, en esencia, un fork de Visual Studio Code que integra este enfoque y permite trabajar con proyectos reales, con múltiples ficheros, relaciones complejas y ejecución directa del código generado.
Uno de los puntos clave del episodio es entender los distintos modos de trabajo de Cursor. Por un lado está el modo pregunta, pensado para discutir ideas y requisitos sin generar código. Luego está el modo plan, donde el sistema traduce esas ideas en un plan detallado de implementación que conviene revisar con calma y nunca aceptar a la primera. A partir de ahí entramos en el modo agente o de construcción, donde la herramienta despliega uno o varios agentes que implementan el plan, a menudo en paralelo. Finalmente, el modo depuración introduce un enfoque muy interesante basado en la generación y comprobación sistemática de hipótesis para localizar errores, de una forma mucho más transparente que los métodos anteriores.
También hablo de aspectos prácticos importantes, como la posibilidad de elegir distintos modelos de lenguaje según la tarea, la necesidad de controlar bien los permisos que damos a los agentes y la importancia crítica del versionado del código para poder volver atrás cuando una iteración rompe algo que antes funcionaba. Dedico además parte del episodio a explicar las limitaciones del contexto y la memoria de estos sistemas y cómo gestionar sesiones largas para evitar errores sutiles.
Para cerrar, planteo una reflexión más general: el rol del programador está cambiando hacia uno más cercano al de gestor de proyectos. Cada vez menos escribimos código línea a línea y cada vez más diseñamos planes, supervisamos agentes y validamos resultados. En este nuevo escenario, el trabajo realmente crítico pasa a ser el diseño de buenos planes y, sobre todo, de tests sólidos y fiables, que se convierten en el verdadero contrato del sistema. Todo apunta a que este cambio no ha hecho más que empezar.
Si este episodio te ha resultado interesante, te agradecería mucho que desde la plataforma donde lo estés escuchando le des a like, lo marques como favorito o te suscribas al podcast. Es un gesto muy sencillo, pero ayuda enormemente a que Investigando la Investigación crezca y pueda llegar cada día a más gente.
PD: Episodios relacionados: 234, 240, 309, 340, 341, 378