Skip to content

Ingenieria de Contexto

En este artículo vamos a explorar el concepto de Ingeniería de Contexto y cómo se relaciona con la creación de proyectos de software utilizando inteligencia artificial (IA). Este enfoque es especialmente útil para proyectos complejos donde la claridad y la estructura son esenciales para el éxito.

Recursos

¿Qué es la Ingeniería de Contexto?

La Ingeniería de Contexto es un enfoque que busca proporcionar a la IA toda la información necesaria para que pueda generar código de alta calidad y alineado con las expectativas del proyecto. En lugar de simplemente pedirle a la IA que genere código, se le proporciona un conjunto de documentos que definen claramente los requisitos, las reglas y el contexto del proyecto. Esto incluye:

  • GEMINI.md: Reglas globales que la IA debe seguir.
  • INITIAL.md: Requisitos iniciales del proyecto.
  • PRP_CLON_AIRBNB.md: Un Plan de Requisitos de Producto (PRP) que detalla cómo debe ser el proyecto, incluyendo la estructura del código, las tecnologías a utilizar y las características específicas.

¿Qué es vibe coding y como se diferencia de la Ingeniería de Contexto?

El vibe coding es un enfoque más informal y creativo para la programación, donde el desarrollador se basa en su intuición y experiencia para crear código que "sienta bien" o que tenga una buena "vibra". Este enfoque puede ser útil para proyectos pequeños o personales, pero carece de la estructura y claridad necesarias para proyectos más grandes y complejos.

La Ingeniería de Contexto, por otro lado, es un proceso sistemático y estructurado que busca eliminar la ambigüedad y proporcionar un marco claro para la IA. En lugar de depender de la intuición, se basa en documentos detallados que guían a la IA en cada paso del proceso de desarrollo.

¿Por qué es importante un PRP?

El término Product Requirements Prompt es un nombre que se ha popularizado en el ámbito de la ingeniería de contexto.

En español, lo más común es referirse a un "Plan" o "Documento" de Requisitos de Producto.

"Prompt" en este contexto no significa una instrucción de una sola línea, sino un documento de contexto muy detallado que actúa como un "prompt" para el modelo de IA.

Un PRP (Prompt de Requisitos de Producto o Plan de Requisitos de Producto) no es el resultado final, sino un plano de trabajo exhaustivo y altamente estructurado para la IA. Si le entregas el PRP a la IA, no solo le dices "hazme un clon de Airbnb", sino que le das una guía detallada y validada para que lo construya.

Aquí te explico por qué una IA lo usaría y cómo funciona ese proceso:

  1. Elimina la Ambigüedad: Sin un PRP, la IA podría tomar decisiones genéricas o desactualizadas. El PRP elimina la ambigüedad al proporcionar un contexto claro sobre la tecnología, los patrones de diseño y los requisitos específicos. Le dice a la IA exactamente qué herramientas usar (Next.js App Router, Tailwind, Prisma), cómo deben interactuar, y qué características clave debe implementar.

  2. Actúa como un "Cerebro" de Contexto: La IA no tiene memoria a largo plazo ni conocimiento del "mundo real" del proyecto. El PRP le proporciona toda la información que tú y la IA recopilaron en la fase de investigación:

    • Búsqueda web: Le da los hallazgos de las mejores prácticas y ejemplos.
    • Documentación: Le presenta las reglas y APIs de los frameworks.
    • Gotchas: Le advierte sobre errores comunes a evitar.
  3. Proporciona un Plan de Implementación: El PRP desglosa el problema en pasos lógicos. Por ejemplo, en lugar de pedirle que cree el proyecto de una vez, el PRP le indica que primero debe configurar la estructura del proyecto, luego implementar el sistema de autenticación, después el CRUD de propiedades, y así sucesivamente. Esto permite a la IA trabajar de manera modular y más organizada.

  4. Permite la Validacón: El PRP incluye una sección de validación. Le puedes pedir a la IA que, después de generar cada fragmento de código, lo valide según los criterios establecidos en el PRP. Esto es clave en la ingeniería de contexto, ya que garantiza que el código sea de alta calidad desde el principio, en lugar de corregir errores al final.

Proceso de trabajo con la IA:

  1. Tú le pasas a la IA los tres archivos: GEMINI.md (reglas globales), INITIAL.md (requisitos del proyecto) y el PRP_BASE.md que acabas de generar.

  2. Le das una instrucción clara: Le pedirías a la IA que actúe como un ingeniero de software experto y que utilice los tres archivos como su única fuente de conocimiento para el proyecto.

  3. Empiezas con la primera tarea: Por ejemplo, le pedirías: "Basado en el PRP, comienza la implementación. La primera tarea es configurar la estructura inicial del proyecto Next.js y el entorno de Tailwind CSS. Asegúrate de seguir la estructura de directorios y las convenciones de nomenclatura definidas en el PRP".

Al hacer esto, la IA no está improvisando; está siguiendo un plan detallado y validado que tú le proporcionaste. El PRP es el puente entre una idea abstracta ("quiero un clon de Airbnb") y una implementación concreta, precisa y de alta calidad generada por una IA.

Ejemplo

Toma el archivo INITIAL_BASE.md y algún proyecto que quieras replicar, aquí dejé el canal de youtube de Antonio, que es un gran ejemplo de cómo se puede aplicar la ingeniería de contexto para replicar proyectos existentes.

Utiliza la herramienta de NotebookLM para crear un INITIAL.md

con estos dos archivos el promp podría ser el siguiente:

markdown
puedes leer el initial.md y completarlo según el video, la idea es que me ayudes a redactar el initial.md con las tecnologías del video, puedes ser lo más especifico posible y detallado.

Esto te permitirá generar un INITIAL.md que sirva como base para tu proyecto, siguiendo las pautas de la ingeniería de contexto.

También podrías hacer algo similar para generar un PRP_BASE.md:

markdown
has lo que está en el archivo promp_generate.md

Ejemplo de proyecto con Next.js y Prisma

sh
npm i -D prisma tsx
npm i @prisma/client

npx prisma init --datasource-provider sqlite --output ../generated/prisma

npx prisma migrate dev --name init ## 👈 ejecute el siguiente comando para crear las tablas de la base de datos y generar el cliente Prisma

npx prisma studio ## Prisma Studio para inspeccionar tus datos