Saltar a contenido

Prompt Engineering para Desarrollo de Software


Proposito

Guia practica para escribir prompts efectivos al usar IA como copiloto de desarrollo. No es teoria abstracta: son patrones concretos que funcionan para tareas de ingenieria.

Cuando usarlo

  • Cada vez que le pidas algo a una IA para desarrollo.
  • Cuando los resultados de la IA no son lo que esperabas (probablemente el prompt necesita mejora).

1. El Framework CREST para Prompts de Codigo

Cada prompt efectivo tiene estos componentes:

Componente Que es Ejemplo
Context Informacion de fondo sobre tu proyecto "Estoy trabajando en un backend NestJS con TypeORM y PostgreSQL"
Role Que rol quieres que la IA asuma "Actua como un senior backend engineer con experiencia en DDD"
Expectation Que output esperas exactamente "Genera el servicio con unit tests incluidos"
Spec La especificacion detallada de lo que necesitas El contenido de tu spec.md o la regla de negocio
Tone Restricciones y estilo "Usa TypeScript estricto, sigue los patrones del proyecto, no uses any"

2. Patrones de Prompt por Tarea

Patron 1: Implementar desde Spec

Contexto: Estoy trabajando en un Sistema de Reservas de Turnos Medicos.
Backend: NestJS + TypeORM + PostgreSQL.
Patron: DDD con servicios de dominio.

Necesito implementar el servicio de cancelacion de turnos.

Spec de la feature:
[pegar contenido de la spec o secciones relevantes]

Reglas de negocio:
- Cancelacion con < 24h genera penalizacion
- 3 penalizaciones bloquean al paciente por 30 dias
- Solo el paciente dueno o el medico asignado pueden cancelar
- Un booking COMPLETED o NO_SHOW no se puede cancelar

Genera:
1. El domain service (BookingCancellationService)
2. Unit tests para cada regla de negocio
3. El controller endpoint (PATCH /bookings/:id/cancel)

Restricciones:
- TypeScript estricto (no any)
- Inyeccion de dependencias via constructor
- Errors con codigos especificos (BOOKING_NOT_CANCELLABLE, etc.)

Patron 2: Debugging Asistido

Tengo un bug en el calculo de disponibilidad de medicos.

Comportamiento esperado: Los slots del medico no deben incluir horarios
donde ya existe un booking CONFIRMED.

Comportamiento actual: Los slots ocupados siguen apareciendo como disponibles.

Codigo relevante:
[pegar el metodo getAvailableSlots()]

Query que obiene los bookings:
[pegar la query]

Datos de ejemplo:
- Medico tiene disponibilidad Lunes 09:00-13:00, slots de 30 min
- Existe booking CONFIRMED para Lunes 10:00-10:30
- El endpoint retorna 10:00 como disponible (incorrecto)

Ayudame a encontrar el bug. Muestrame el fix y explicame por que ocurre.

Patron 3: Code Review

Revisa este codigo como un senior engineer enfocado en:
1. Correctitud: Cumple con las reglas de negocio?
2. Seguridad: Hay vulnerabilidades?
3. Performance: Hay queries N+1 o problemas de rendimiento?
4. Mantenibilidad: Es facil de entender y modificar?

Reglas de negocio que debe cumplir:
[listar las reglas relevantes]

Codigo a revisar:
[pegar el codigo]

Para cada issue encontrado, indica:
- Linea del problema
- Tipo (bug, seguridad, performance, estilo)
- Severidad (critico, alto, medio, bajo)
- Fix sugerido con codigo

Patron 4: Generar Tests desde BDD

Genera tests automatizados a partir de estos escenarios BDD.

Stack: Jest + Supertest + TypeORM (test database)

Escenarios:
[pegar los scenarios en formato Given/When/Then]

Convenciones del proyecto:
- Cada test usa una BD de test limpia (beforeEach trunca tablas)
- Helpers: seedDoctor(), seedPatient(), loginAs(user)
- Los mocks de servicios externos usan jest.mock()

Genera integration tests que cubran cada scenario.

Patron 5: Refactoring Guiado

Necesito refactorizar este componente. El codigo actual funciona pero:
- Tiene demasiadas responsabilidades (300+ lineas)
- Las reglas de negocio estan mezcladas con la logica de acceso a datos
- Es dificil de testear porque depende directamente de la BD

Patron objetivo: Separar en domain service (logica pura) + repository (acceso a datos).

Codigo actual:
[pegar el codigo]

Genera la version refactorizada manteniendo el comportamiento exacto.
Incluye los tests que validan que el refactor no rompio nada.

3. Anti-Patrones (Que NO Hacer)

❌ Prompt vago

"Haz una API de reservas"
Problema: La IA no tiene contexto, va a generar algo generico que no sirve para tu proyecto.

❌ Prompt sin restricciones

"Genera un servicio de autenticacion en Node.js"
Problema: Va a elegir librarias, patrones, y convenciones que probablemente no son las tuyas.

❌ Pedir todo junto

"Genera el backend completo del sistema de turnos con auth, bookings,
notificaciones, base de datos, tests, CI/CD, y documentacion"
Problema: La calidad cae drasticamente. Mejor ir feature por feature.

❌ No validar el output

Problema mas peligroso: aceptar el codigo generado sin leerlo. La IA puede generar codigo que parece correcto pero tiene bugs sutiles en edge cases.


4. Tips para Mejores Resultados

  1. Dale contexto incremental. Empieza con el contexto del proyecto, luego la spec, luego los detalles.

  2. Usa los archivos del workspace como input. Los specs, domain models, y API contracts son excelente contexto para la IA.

  3. Pide que explique. Si no entiendes algo del codigo generado, pregunta. Es mejor entender que copiar.

  4. Itera. El primer output rara vez es perfecto. Refina con feedback especifico: "El manejo de errores no cubre el caso de..." no "hazlo mejor".

  5. Separa generacion de revision. Primero genera, luego pide una revision del codigo generado. Son tareas diferentes.

  6. Manten un archivo de prompts. Los prompts que funcionan bien son reutilizables. Guardalos.


5. Metricas de Efectividad

Como saber si tus prompts estan mejorando:

Metrica Malo Bueno
Iteraciones hasta output usable 5+ 1-2
% de codigo generado que usas tal cual < 30% > 70%
Bugs en codigo generado Frecuentes Raros (y en edge cases)
Tiempo total (prompt + revision) vs manual Mas lento 2-3x mas rapido

Checklist de Completitud

  • Framework CREST explicado
  • Patrones por tipo de tarea con ejemplos
  • Anti-patrones documentados
  • Tips practicos
  • Metricas de efectividad
  • Revisada por otro ingeniero

Archivos relacionados