Flujo de trabajo AIDD

Flujo de trabajo AIDD

Metodología de programación con IA

Como programador, estarás harto de escuchar tanto promesas como advertencias sobre la IA y tu modo de trabajo. Es fácil emocionarse con la idea de una IA que escriba código por ti, pero también es importante tener los pies en la tierra y entender sus limitaciones, que saltan a la vista en cuanto rascas un poco la superficie...

En este artículo, te explicaré cómo puedes integrar AI-DD (AI-Driven Development) en tu rutina diaria, con un enfoque práctico y realista.

🦻 Si prefieres, escucha el resumen del artículo como Audio Podcast

Generado con la IA de Google NotebookLM.

✨ Expectativas y Decepciones

La mayoría de programadores experimentan un ciclo común al empezar con IA:

  1. 🎉 Entusiasmo : "¡Esto es mágico! Va a programar por mí"
  2. 😕 Decepción : "No entiende lo que quiero, genera errores"
  3. 😤 Rechazo : "Es una pérdida de tiempo, mejor lo hago yo"
  4. 🎯 Aceptación : "Vale, entiendo para qué sirve y para qué no"

Cuando empiezas a usar IA, es tentador pensar que va a resolver todos tus problemas de desarrollo. A fin de cuentas, puede generar código, solucionar errores y optimizar procesos. Sin embargo, no es un mago que entiende perfectamente todo lo que le pides. La clave está en gestionar bien tus expectativas: la IA no va a reemplazar tu lógica ni tu capacidad para analizar problemas, pero sí puede ser una excelente ayuda si sabes cómo usarla.

🎲 La IA no es determinista

Una de las mayores sorpresas para los desarrolladores es descubrir que la IA es no determinista. A diferencia de un compilador o un formateador de código, que siempre producen la misma salida para una entrada dada, los LLM pueden generar respuestas diferentes cada vez. Incluso con el mismo prompt, el mismo modelo y la misma configuración, obtendrás variaciones en el código generado.

🧑‍🏫 Consejo:

La clave está en entender que la IA no es un reemplazo del programador, sino una herramienta de amplificación. Como tal, debemos aprender a usarla correctamente y establecer un flujo de trabajo que nos permita aprovechar sus capacidades.

🎯 1. Pregunta bien

La primera habilidad que necesitas desarrollar es saber hacer buenas preguntas. En este contexto, pregunta equivale a solicitud o incluso mandato. Comunicar claramente lo que necesitas es esencial para trabajar de manera efectiva con IA. No basta con decirle "escribe un programa que haga X", necesitas dar un mensaje amplio y específico a la vez. Esto implica dominar tres niveles de interacción:

  • System Prompt
  • Prompt Engineering
  • Prompt as Code

Veámoslos con un poco más de detalle.

🔧 System Prompts

Algunas herramientas de IA te permiten configurar system prompts, que son como las instrucciones iniciales que guían su comportamiento. Por ejemplo:

- Eres un desarrollador senior especializado en Angular y Node.js.
- Sigues principios SOLID y escribes pruebas unitarias.
- Prefieres soluciones simples y mantenibles.

Te dejo un recordatorio a mi artículo sobre System Prompts, basado en la metodología 🤺 Íñigo Montoya

📝 Prompt Engineering

Aquí es donde entra el verdadero ¿arte? ¿ingeniería?. Parte del éxito masivo de las interacciones IA actuales es el uso de lenguaje natural. El cual, por definición, no es formal ni estructurado como los lenguajes que usamos habitualmente para programar.

Esta es la dificultad de la cuestión: cuanto más preciso y formal seas al formular tus prompts, mejores serán las respuestas que obtendrás y más posibilidades tendrás de reutilizarlas. Y todo ello en tu lengua materna.

A falta de ese prompt language, te detallo algunos consejos prácticos para estructurar bien tus preguntas:

  • Ser específico y detallado
  • Dividir problemas complejos en partes
  • Proporcionar ejemplos del resultado esperado
  • Establecer restricciones y preferencias

Dedicaré un artículo completo a este tema en el futuro. Suscríbete a esta newsletter para no perderte el enlace o busca en la sección de procedimientos de AIDDBot por si ya lo he publicado.

🧬 Prompt as Code

Una idea interesante es tratar los prompts como código, versionándolos y refinándolos. Esto te permite reutilizarlos y ajustarlos según las necesidades del proyecto. Si trabajas en equipo, también puedes compartir estos prompts como parte de la documentación del código.

Esto es parte de lo que puedes hacer con tus prompts:

  • Escribirlos estructuradamente en Markdown, y agregarles JSON o XML si el LLM lo soporta
  • Versionarlos en el repositorio git asociados a un cambio en el código
  • Compartirlos con el equipo o incluso open source

Algunas herramientas ya facilitan este proceso. Pero si no es así, siempre te queda la opción manual de guardarlos en ficheros y gestionarlos con git.

🧩 2. Agrega contexto

La IA, por muy avanzada que sea, no puede leer tu mente ni conoce todos los detalles de tu proyecto a menos que se los proporciones. Así que el siguiente paso es darle contexto relevante.

📋 Requerimientos Funcionales

Antes de pedirle a la IA que escriba código, asegúrate de que tienes claros los requisitos:

  • Define claramente qué debe hacer el código
  • Menciona restricciones y qué no debe hacer
  • Mejor aún, proporciona casos de uso y ejemplos
  • Obviamente señala si es para una app web, móvil, cli, server...
  • y el tech stack que vas a usar

🧑‍🏫 Consejo:

Dedicaré algún post a este tema para tratar de formalizar este proceso. Pero te adelanto un tip: Puedes usar un LLM para que te ayude a definir los requerimientos. Y puedes usar el mismo LLM para generar el prompt que usarás para generar el código. 🤯

📏 Reglas de Codificación

Si trabajas en un equipo con reglas estrictas de codificación, asegúrate de que la IA las siga. Puedes indicarle directamente esas reglas o guiarla con ejemplos de código bien formateado.

  • Comunica el estilo de código preferido (clean code, functional, etc)
  • Define convenciones de nombrado y estilo
  • Especifica patrones y arquitecturas a seguir
  • Lo mejor, proporciona ejemplos de código bien formateado

Algunos editores te permite definir las reglas de codificación por proyecto. Lo cual es una buena práctica.

📚 Documentación de Librerías

Si tu proyecto usa librerías externas, es útil proporcionar documentación o ejemplos de cómo deben integrarse. La IA no siempre va a acertar con todos los detalles, pero si le das información adicional, puede generar un código más ajustado a tus necesidades.

  • Menciona versiones específicas de frameworks
  • Indica preferencias de librerías
  • Comparte snippets de código existente relevantes
  • Proporciona documentación de integración

Lo dicho, puede que tu editor o plugin soporte el enriquecimiento de la documentación. Ayúdale para que te ayude mejor.

🔄 3. Evalúa y repite

Trabajar con IA es un proceso iterativo. El primer intento rara vez será perfecto, por lo que debes evaluar, ajustar y repetir hasta que el resultado sea lo que esperabas.

Como decía Reagan: "¡Confía, pero comprueba!"

♻️ Proceso de Mejora Continua

Cada vez que la IA te dé un resultado, revísalo cuidadosamente. ¿Se ajusta a los requisitos? ¿Sigue las reglas de codificación? ¿Es eficiente? Si la respuesta es “no” en alguno de estos puntos, ajusta el prompt y vuelve a intentarlo. Este ciclo de generación, evaluación y ajuste es clave para obtener lo mejor de la IA.

  1. Genera una primera versión
  2. Evalúa el resultado
  3. Refina el prompt o añade contexto
  4. Regenera y compara

🎲 La IA no es determinista

Un aspecto interesante (y estresante) es que la IA debido a su naturaleza probabilística, no siempre genera el mismo código ante el mismo prompt. Esto tiene sus ventajas y desventajas:

  • Cada respuesta será ligeramente diferente
  • Puedes aprovechar esta variabilidad para explorar alternativas
  • Es importante revisar siempre el código antes de usarlo
  • Combina las mejores partes de diferentes respuestas
  • Usa git para gestionar las versiones y volver atrás o mezclar respuestas

⏱️ Chat Session Pomodoro Commit

Vale, no sé cómo llamarle al ciclo de interacción con el bot. Un truco que puede ayudarte a trabajar mejor con IA es usar sesiones de chat tipo "pomodoro". Esto significa que trabajas en intervalos de tiempo concentrados, usando la IA para generar código o resolver problemas durante un periodo corto y luego haces un commit de lo que has logrado. Así te aseguras de mantener un ritmo constante y de integrar de forma ordenada el código generado.

  1. Establece sesiones de trabajo enfocadas
  2. Mantén el contexto en una única conversación
  3. Cuando logres algo útil, guárdalo y commitea
  4. Integra de forma ordenada el código generado

La idea es más vieja que el hilo negro. Divide el problema en partes y trabaja en intervalos cortos. Guarda y documenta cada avance.

📦 Conclusiones

La IA no es la solución mágica que lo hará todo por ti, pero si sabes cómo integrarla correctamente en tu flujo de trabajo, puede ahorrarte tiempo y mejorar la calidad de tu código. La clave está en:

    1. Preguntar de manera clara y estructurada
    1. Proporcionar contexto relevante
    1. Iterar y refinar las respuestas

Con un enfoque adecuado, AI-DD puede ser una de las herramientas más poderosas para maximizar los beneficios de la IA mientras minimizas las frustraciones asociadas con sus limitaciones inherentes.

Herramientas potentes + metodología estructurada = AI-DD

Code smarter, not harder. 🚀