:root {
–primary-color: #4a6da7;
–secondary-color: #6c757d;
–accent-color: #ffc107;
–text-color: #333;
–background-color: #f8f9fa;
–card-background: #fff;
–border-color: #dee2e6;
–success-color: #28a745;
–warning-color: #dc3545;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: ‘Segoe UI’, Tahoma, Geneva, Verdana, sans-serif;
line-height: 1.6;
color: var(–text-color);
background-color: var(–background-color);
padding: 20px;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
background-color: var(–card-background);
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
h1, h2, h3, h4 {
color: var(–primary-color);
margin-bottom: 15px;
border-bottom: 2px solid var(–border-color);
padding-bottom: 10px;
}
h1 {
font-size: 2.5rem;
text-align: center;
margin-bottom: 30px;
}
h2 {
font-size: 1.8rem;
margin-top: 30px;
}
h3 {
font-size: 1.4rem;
margin-top: 25px;
border-bottom: 1px solid var(–border-color);
}
p {
margin-bottom: 20px;
}
ul, ol {
margin-bottom: 20px;
padding-left: 30px;
}
li {
margin-bottom: 10px;
}
.image-container {
text-align: center;
margin: 20px 0;
position: relative;
}
.image-container img {
max-width: 100%;
height: auto;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
.image-fallback {
padding: 20px;
background-color: #f2f2f2;
border: 2px dashed #ccc;
border-radius: 8px;
text-align: center;
margin: 20px 0;
color: #666;
}
.code-block {
background-color: #272822;
color: #f8f8f2;
padding: 15px;
border-radius: 5px;
font-family: ‘Courier New’, Courier, monospace;
margin-bottom: 20px;
overflow-x: auto;
}
.note {
background-color: #fff3cd;
border-left: 4px solid var(–accent-color);
padding: 15px;
margin-bottom: 20px;
border-radius: 4px;
}
.tip {
background-color: #d4edda;
border-left: 4px solid var(–success-color);
padding: 15px;
margin-bottom: 20px;
border-radius: 4px;
}
.warning {
background-color: #f8d7da;
border-left: 4px solid var(–warning-color);
padding: 15px;
margin-bottom: 20px;
border-radius: 4px;
}
.resource-card {
border: 1px solid var(–border-color);
border-radius: 8px;
padding: 15px;
margin-bottom: 20px;
transition: transform 0.3s ease;
background-color: var(–card-background);
}
.resource-card:hover {
transform: translateY(-5px);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
}
.exercise {
background-color: #e6f3ff;
border-radius: 8px;
padding: 20px;
margin: 30px 0;
border-left: 5px solid var(–primary-color);
}
.video-container {
position: relative;
padding-bottom: 56.25%; /* 16:9 Aspect Ratio */
height: 0;
overflow: hidden;
margin-bottom: 20px;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
.video-container iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: none;
}
.video-fallback {
padding: 30px;
background-color: #f2f2f2;
border: 2px dashed #ccc;
border-radius: 8px;
text-align: center;
margin: 20px 0;
color: #666;
}
table {
width: 100%;
border-collapse: collapse;
margin-bottom: 20px;
}
table, th, td {
border: 1px solid var(–border-color);
}
th {
background-color: var(–primary-color);
color: white;
padding: 12px;
text-align: left;
}
td {
padding: 12px;
}
tr:nth-child(even) {
background-color: #f2f2f2;
}
@media (max-width: 768px) {
.container {
padding: 10px;
}
h1 {
font-size: 2rem;
}
h2 {
font-size: 1.5rem;
}
h3 {
font-size: 1.2rem;
}
}
Lección 3: Principios de Prompting Efectivo
<img src="https://images.unsplash.com/photo-1589254065878-42c9da997008" alt="Comunicación efectiva con IA" onerror="this.onerror=null; this.parentElement.innerHTML='
Imagina una ilustración que representa la comunicación entre un humano y una inteligencia artificial, simbolizando el intercambio claro de información para obtener resultados precisos.
‘»>
Una de las habilidades más importantes para aprovechar al máximo las herramientas de IA en programación es la capacidad de comunicarse efectivamente con ellas. Aprender a crear prompts efectivos es fundamental para obtener respuestas útiles y precisas que realmente resuelvan tus problemas de desarrollo.
¿Qué es un Prompt?
Un prompt es la instrucción o consulta que proporcionas a una herramienta de IA para obtener una respuesta. En el contexto de la programación, un prompt efectivo debe comunicar claramente:
- Tu objetivo o problema
- El contexto técnico necesario
- Las restricciones o requisitos específicos
- El formato de respuesta esperado
Nota: La calidad del código generado por una herramienta de IA depende directamente de la calidad del prompt que proporciones. Un prompt bien estructurado puede reducir drásticamente el tiempo de desarrollo.
Principios de Prompting Efectivo
1. Especificidad y Claridad
Cuanto más específico seas en tu prompt, más precisa será la respuesta. Evita ambigüedades y sé claro sobre tus necesidades.
# Prompt poco efectivo
«Crea un formulario de contacto»
# Prompt efectivo
«Crea un formulario de contacto en React con campos para nombre, email, asunto y mensaje. Incluye validación para el email y todos los campos deben ser obligatorios. El diseño debe ser responsive y seguir los principios de accesibilidad WCAG 2.1.»
2. Proporcionar Contexto
Incluye información sobre el entorno de desarrollo, versiones de lenguajes o frameworks, y cualquier detalle técnico relevante.
# Prompt poco efectivo
«Escribe código para conectar a una base de datos»
# Prompt efectivo
«Escribe código en Node.js (v14.17.0) para conectar a una base de datos MongoDB utilizando mongoose. La aplicación usa Express y necesito implementar un patrón singleton para la conexión. La cadena de conexión se debe obtener de variables de entorno.»
3. Estructuración del Prompt
Organiza tu prompt de manera lógica, separando claramente las diferentes partes de tu solicitud.
Estructura recomendada:
- Objetivo: Define claramente qué quieres lograr.
- Contexto técnico: Describe el entorno, lenguajes, frameworks, etc.
- Requisitos: Lista las funcionalidades o características necesarias.
- Restricciones: Menciona limitaciones o consideraciones especiales.
- Formato esperado: Especifica cómo quieres recibir la respuesta.
4. Iteración y Refinamiento
El prompting efectivo es un proceso iterativo. Si la respuesta inicial no es satisfactoria, refina tu prompt basándote en lo que recibiste.
# Primer prompt
«Crea una función para ordenar un array de objetos por una propiedad específica»
# Refinamiento
«Gracias, pero necesito que la función también acepte un parámetro para ordenar de forma ascendente o descendente, y debe manejar propiedades anidadas como ‘user.profile.age'»
5. Uso de Ejemplos
Proporcionar ejemplos concretos de entrada/salida o del comportamiento esperado mejora significativamente la precisión de las respuestas.
# Prompt con ejemplos
«Crea una función en JavaScript que formatee números como precios. Ejemplos:
formatPrice(1000) → ‘$1,000.00’
formatPrice(1000.5) → ‘$1,000.50’
formatPrice(1000.54) → ‘$1,000.54’
formatPrice(1000.546) → ‘$1,000.55’ (redondeo a 2 decimales)»
Técnicas Avanzadas de Prompting
Chain-of-Thought (Cadena de Pensamiento)
Solicita a la IA que razone paso a paso, especialmente útil para problemas complejos.
«Necesito implementar un algoritmo de búsqueda en un árbol binario. Por favor, explica paso a paso cómo desarrollarías esta solución, incluyendo la definición de la estructura de datos, la implementación del algoritmo y los casos especiales que debería manejar.»
Role Prompting (Prompting de Rol)
Asigna un rol específico a la IA para obtener respuestas desde una perspectiva determinada.
«Actúa como un arquitecto de software experimentado especializado en sistemas distribuidos. Revisa esta arquitectura propuesta para una aplicación de comercio electrónico y sugiere mejoras en términos de escalabilidad y resistencia a fallos.»
Descomposición de Problemas
Divide problemas complejos en partes más pequeñas y abordables.
«Estoy desarrollando una aplicación de gestión de tareas y necesito implementar la funcionalidad de arrastrar y soltar. Dividamos esto en subtareas:
1. Primero, explícame cómo implementar la estructura básica de los componentes de lista y tarjeta en React
2. Luego, muéstrame cómo integrar la biblioteca react-dnd para la funcionalidad de arrastrar y soltar
3. Por último, explícame cómo persistir el orden modificado en una base de datos»
Ejemplos de Prompts Efectivos por Herramienta
Para Cursor AI
«Revisa el siguiente código de autenticación en Express.js y sugiere mejoras en términos de seguridad y manejo de errores. Ten en cuenta que estamos utilizando JWT para la autenticación y bcrypt para el hash de contraseñas:
[Código actual aquí]»
Para Windsurf AI
«Necesito diseñar un sistema de caché distribuido para una aplicación de microservicios en Go. Requisitos: (1) Latencia máxima de 50ms, (2) Invalidación automática tras 30 minutos, (3) Debe manejar fallos de red graciosamente, (4) Preferencia por usar Redis como backend. Por favor, muéstrame una implementación que siga patrones de diseño sólidos y prácticas de programación defensiva.»
Para Bolt.new
«Crea una aplicación web MERN para gestionar una biblioteca personal. Funcionalidades: (1) Registro e inicio de sesión de usuarios, (2) CRUD de libros con título, autor, categoría, y estado (leído/por leer), (3) Búsqueda y filtrado, (4) Estadísticas básicas como libros leídos por mes. El frontend debe usar Material-UI y ser responsive. Para la base de datos, utiliza MongoDB Atlas.»
Para Lovable
«Diseña y desarrolla una landing page para una startup de entrega de comida a domicilio. La página debe tener: (1) Hero section con una imagen atractiva de comida y un call-to-action para descargar la app, (2) Sección de cómo funciona en 3 pasos, (3) Presentación de restaurantes destacados, (4) Testimonios de usuarios, (5) Formulario de contacto. El diseño debe ser moderno, minimalista y usar una paleta de colores cálidos. Implementa la solución con Next.js y TailwindCSS.»
Errores Comunes a Evitar
- Ser demasiado vago: «Haz una API» vs «Desarrolla una API RESTful en Express.js para gestionar productos de un e-commerce»
- Ignorar el contexto técnico: No mencionar versiones de lenguajes, frameworks o restricciones importantes
- Sobrecarga de información irrelevante: Incluir detalles que no aportan valor a la solicitud
- No especificar el formato deseado: No indicar si quieres pseudocódigo, código completo, explicación, etc.
- Falta de ejemplos: No proporcionar casos de uso o ejemplos concretos cuando son útiles
¡Atención! Recuerda que incluso con prompts perfectos, las herramientas de IA pueden cometer errores. Siempre verifica y prueba el código generado antes de implementarlo en producción.
Recursos Adicionales
📚 Lecturas Recomendadas
🎥 Videos Tutoriales
Principios de Prompting Efectivo para Desarrollo
Este video tutorial mostraría técnicas avanzadas para crear prompts efectivos en el contexto de desarrollo de software.
Puedes buscar videos similares en YouTube con las palabras clave: «effective prompting for developers» o «prompt engineering for coding».
Algunos canales recomendados: «Prompt Engineering Institute», «AI Engineering» o «The AI Advantage».
Ejercicio Práctico
Ejercicio: Mejora de Prompts
Toma los siguientes prompts inefectivos y mejóralos aplicando los principios que hemos aprendido:
- «Haz una página web»
- «Código para login»
- «Arregla este bug: [código con error]»
- «Crea una base de datos»
- «Escribe tests»
Para cada uno, identifica qué principios aplicaste y por qué tu versión mejorada sería más efectiva.
Utiliza diferentes herramientas (Cursor AI, Windsurf AI, etc.) para probar tus prompts mejorados y compara los resultados.
En la próxima lección, exploraremos en profundidad cómo aprovechar específicamente Cursor AI, una de las herramientas más potentes para el desarrollo asistido por IA.