1. Objetivo de la semana
Al finalizar esta semana deberías ser capaz de utilizar una IA para participar activamente en el desarrollo de una aplicación.
No se trata de pedir:
"Hazme una aplicación"
sino de aprender a trabajar con la IA como si fuera un miembro de un equipo de desarrollo.
Durante esta semana aprenderás a:
- Transformar una idea en requisitos.
- Definir usuarios y casos de uso.
- Descomponer una aplicación en funcionalidades.
- Diseñar una arquitectura básica.
- Utilizar IA para generar componentes.
- Revisar código generado por IA.
- Detectar errores y pedir correcciones.
- Evitar que la IA genere una aplicación caótica.
- Documentar decisiones técnicas.
- Trabajar de forma iterativa con IA.
2. La nueva forma de desarrollar aplicaciones
Tradicionalmente un desarrollador recibía unos requisitos y posteriormente escribía código.
Con IA aparece una nueva capa:
Idea
↓
Requisitos
↓
Diseño
↓
IA
↓
Código
↓
Revisión humana
↓
Pruebas
↓
Corrección
↓
Aplicación
La IA no elimina la necesidad de entender el problema. Reduce enormemente la cantidad de trabajo mecánico necesario para convertir una solución en código.
3. La IA no es un botón de "crear aplicación"
Uno de los errores más habituales de los principiantes es pedir a la IA:
Crea una aplicación de gestión de clientes.
La IA puede generar algo, pero normalmente aparecerán problemas:
- No están claros los usuarios.
- No están definidos los permisos.
- No sabemos qué información almacenar.
- No sabemos qué pantallas necesitamos.
- No sabemos qué ocurre cuando algo falla.
- No sabemos cómo escalar la aplicación.
- El código puede quedar mal estructurado.
La alternativa
Dividir el problema.
Idea
↓
Usuarios
↓
Problemas
↓
Requisitos
↓
Funcionalidades
↓
Datos
↓
Pantallas
↓
Arquitectura
↓
Implementación
↓
Pruebas
4. Ejemplo completo: aplicación de tareas
Vamos a utilizar durante toda la semana una aplicación sencilla:
Aplicación web para gestionar tareas personales y proyectos.
Un usuario debería poder:
- Crear tareas.
- Editar tareas.
- Eliminar tareas.
- Marcar tareas como completadas.
- Asignar prioridades.
- Organizar tareas por proyectos.
- Filtrar tareas.
Esto ya es mejor que decir simplemente:
"Haz una aplicación de tareas."
5. Requisitos funcionales
Un requisito funcional describe algo que la aplicación debe poder hacer.
Ejemplos
| ID | Requisito |
|---|---|
| RF-01 | El usuario podrá crear una tarea. |
| RF-02 | El usuario podrá modificar una tarea. |
| RF-03 | El usuario podrá eliminar una tarea. |
| RF-04 | El usuario podrá marcar una tarea como completada. |
| RF-05 | El usuario podrá asignar prioridad. |
| RF-06 | El usuario podrá filtrar las tareas. |
Prompt para la IA
Actúa como analista funcional.
Tengo esta idea:
"Aplicación para gestionar tareas personales."
Ayúdame a convertirla en requisitos funcionales.
Para cada requisito proporciona:
- ID
- Nombre
- Descripción
- Actor
- Prioridad
- Criterios de aceptación
No escribas código todavía.
Le estamos diciendo explícitamente a la IA que todavía NO queremos código.
6. Criterios de aceptación
Un criterio de aceptación define cuándo podemos considerar que una funcionalidad funciona correctamente.
Ejemplo
Requisito:
El usuario podrá crear una tarea.
Criterios de aceptación:
1. El usuario introduce un título.
2. El título es obligatorio.
3. Si no introduce título se muestra un error.
4. Si introduce título se crea la tarea.
5. La tarea aparece en la lista.
6. La tarea inicialmente aparece como pendiente.
Esto es muchísimo más útil para una IA que simplemente:
"Haz que se puedan crear tareas."
7. User Stories
Una User Story expresa una necesidad desde el punto de vista del usuario.
Formato habitual:
Como [tipo de usuario]
quiero [acción]
para [beneficio].
Ejemplo
Como usuario,
quiero crear una tarea,
para poder recordar las cosas que tengo pendientes.
Otro ejemplo
Como usuario,
quiero asignar una prioridad a una tarea,
para poder identificar rápidamente qué debo hacer primero.
Prompt
Convierte estos requisitos en User Stories.
Para cada User Story incluye:
- ID
- User Story
- Criterios de aceptación
- Prioridad
No generes código.
8. Descomponer una aplicación
Una aplicación debe dividirse en piezas pequeñas.
TaskFlow
TaskFlow
│
├── Usuarios
│
├── Autenticación
│
├── Tareas
│ ├── Crear
│ ├── Editar
│ ├── Eliminar
│ └── Completar
│
├── Proyectos
│
├── Filtros
│
└── Dashboard
Esta estructura permite trabajar con la IA por partes.
Una de las mejores prácticas al trabajar con IA es reducir el tamaño de cada tarea.
9. Arquitectura básica
Antes de escribir código debemos decidir cómo se organizan las piezas.
Una aplicación web típica puede tener:
Usuario
↓
Frontend
↓
API / Backend
↓
Base de datos
Ejemplo
Browser
│
▼
React / Frontend
│
▼
API
│
▼
Backend
│
▼
PostgreSQL
La tecnología concreta es secundaria en este módulo.
Lo importante es comprender las responsabilidades.
| Capa | Responsabilidad |
|---|---|
| Frontend | Interfaz con el usuario. |
| Backend | Lógica de negocio. |
| API | Comunicación entre componentes. |
| Base de datos | Persistencia de información. |
10. Pedir a la IA que diseñe la arquitectura
Actúa como arquitecto de software.
Estoy diseñando una aplicación llamada TaskFlow.
Funcionalidades:
- Usuarios
- Login
- Tareas
- Proyectos
- Prioridades
- Filtros
- Dashboard
Quiero una arquitectura sencilla y mantenible.
Explica:
1. Componentes principales.
2. Responsabilidad de cada componente.
3. Cómo se comunican.
4. Qué datos necesita cada componente.
5. Posibles problemas de seguridad.
No escribas código todavía.
¿Por qué funciona mejor?
Porque estamos proporcionando:
- Contexto.
- Objetivo.
- Restricciones.
- Formato esperado.
- Una instrucción clara de no generar código.
11. Contexto: el elemento más importante
Una IA responde basándose en el contexto que tiene.
Si le proporcionamos poco contexto:
Haz un login.
tendrá que asumir demasiadas cosas.
Mejor:
Estamos construyendo una aplicación web llamada TaskFlow.
Arquitectura:
Frontend
↓
API
↓
Backend
↓
PostgreSQL
Necesitamos implementar el login.
Requisitos:
- Email y contraseña.
- Contraseña almacenada de forma segura.
- Mensajes de error genéricos.
- Sesión persistente.
- Logout.
Antes de escribir código:
explica qué componentes necesitamos.
12. Prompting técnico
Un buen prompt técnico puede seguir esta estructura:
ROL
↓
CONTEXTO
↓
OBJETIVO
↓
REQUISITOS
↓
RESTRICCIONES
↓
FORMATO DE RESPUESTA
↓
VALIDACIÓN
Ejemplo
ROL:
Actúa como desarrollador senior.
CONTEXTO:
Estamos construyendo TaskFlow.
OBJETIVO:
Crear el componente de formulario de tareas.
REQUISITOS:
- Título obligatorio.
- Descripción opcional.
- Prioridad.
- Fecha límite.
RESTRICCIONES:
- Código sencillo.
- Componentes reutilizables.
- Validación de entrada.
FORMATO:
1. Explica el diseño.
2. Genera el código.
3. Explica las decisiones.
4. Añade pruebas.
VALIDACIÓN:
Revisa el código antes de entregarlo.
13. La técnica "planifica antes de programar"
Una de las mejores técnicas para trabajar con IA consiste en pedir:
NO ESCRIBAS CÓDIGO TODAVÍA.
Primero:
- Analizar.
- Diseñar.
- Identificar riesgos.
- Definir pasos.
- Después implementar.
Prompt
Antes de escribir código:
1. Analiza el problema.
2. Identifica las partes necesarias.
3. Propón una solución.
4. Identifica posibles problemas.
5. Propón pruebas.
6. Espera mi aprobación antes de generar código.
14. Construir por iteraciones
Nunca es necesario pedir a la IA que construya toda la aplicación de golpe.
Podemos trabajar así:
ITERACIÓN 1
Crear proyecto
↓
ITERACIÓN 2
Crear pantalla principal
↓
ITERACIÓN 3
Crear modelo de datos
↓
ITERACIÓN 4
Crear API
↓
ITERACIÓN 5
Conectar frontend
↓
ITERACIÓN 6
Validaciones
↓
ITERACIÓN 7
Tests
↓
ITERACIÓN 8
Seguridad
↓
ITERACIÓN 9
Documentación
15. Ejemplo práctico: crear una tarea
Paso 1 — Requisito
El usuario puede crear una tarea.
Paso 2 — Datos
Task
id
title
description
priority
due_date
completed
created_at
Paso 3 — Interfaz
Título
Descripción
Prioridad
Fecha límite
[ Crear tarea ]
Paso 4 — Backend
POST /tasks
Paso 5 — Persistencia
INSERT INTO tasks (...)
Paso 6 — Validación
Título vacío → error
Título válido → crear tarea
Esta descomposición permite que la IA nos ayude en cada paso.
16. Pedir código a la IA
Implementa únicamente la funcionalidad de creación de tareas.
Contexto:
La entidad Task contiene:
- id
- title
- description
- priority
- due_date
- completed
- created_at
Requisitos:
- title obligatorio.
- priority puede ser LOW, MEDIUM o HIGH.
- completed debe comenzar en false.
Primero explica la solución.
Después genera el código.
Finalmente incluye:
- casos límite
- posibles errores
- pruebas recomendadas
17. No aceptar automáticamente el código generado
Regla de oro: que la IA genere código no significa que el código sea correcto.
Debemos revisar:
- ¿Hace realmente lo que pedimos?
- ¿Tiene errores?
- ¿Es seguro?
- ¿Es mantenible?
- ¿Está duplicando código?
- ¿Maneja errores?
- ¿Tiene tests?
- ¿Respeta nuestra arquitectura?
Prompt para revisión
Revisa este código como un desarrollador senior.
No lo reescribas todavía.
Busca:
- errores
- vulnerabilidades
- problemas de arquitectura
- código duplicado
- problemas de mantenibilidad
- casos límite
- problemas de rendimiento
Devuelve los problemas ordenados por gravedad.
18. Debugging asistido por IA
Cuando aparece un error, no debemos decir únicamente:
No funciona.
Debemos proporcionar información.
Prompt recomendado
Tengo este error:
[PEGAR ERROR]
Contexto:
Estoy implementando la creación de tareas.
Esperaba:
Que la tarea se guardase en la base de datos.
Resultado:
La API devuelve HTTP 500.
Código relevante:
[PEGAR CÓDIGO]
Analiza:
1. Qué significa el error.
2. Posibles causas.
3. Cómo comprobar cada causa.
4. Solución recomendada.
No modifiques código todavía.
19. La IA como debugger
Podemos pedirle que nos ayude a investigar de forma sistemática.
Quiero depurar este problema.
No me des directamente una solución.
Hazme preguntas para localizar la causa
y guíame paso a paso.
Esto es especialmente útil para aprender.
Si siempre dejamos que la IA solucione directamente nuestros errores, podemos terminar dependiendo de ella sin comprender el problema.
20. Tests generados por IA
La IA puede ayudarnos también a generar pruebas.
Genera una estrategia de pruebas para la funcionalidad:
"Crear tarea"
Incluye:
- casos normales
- casos límite
- entradas inválidas
- errores de base de datos
- problemas de autorización
- pruebas de seguridad
Ejemplos
| Prueba | Resultado esperado |
|---|---|
| Título válido | Tarea creada |
| Título vacío | Error de validación |
| Prioridad inválida | Error de validación |
| Usuario no autenticado | HTTP 401 |
| Base de datos caída | Error controlado |
21. Documentación generada con IA
La IA también puede generar documentación.
Ejemplo
Documenta esta API.
Incluye:
- Endpoint
- Método HTTP
- Parámetros
- Body
- Respuesta correcta
- Errores
- Ejemplos de uso
Formato Markdown.
Esto permite mantener la documentación sincronizada con el desarrollo.
22. Referencias externas
OpenAI
Anthropic
GitHub
MDN
OWASP
23. Ejercicio práctico 1 — Analizar una aplicación
Imagina que necesitas crear una aplicación para gestionar una pequeña empresa de consultoría.
La aplicación debe permitir:
- Gestionar empleados.
- Gestionar proyectos.
- Asignar empleados a proyectos.
- Consultar disponibilidad.
- Buscar empleados por habilidades.
Utiliza una IA para crear:
- Usuarios.
- Requisitos funcionales.
- User Stories.
- Criterios de aceptación.
- Módulos de la aplicación.
Ver solución orientativa
Una posible solución podría identificar:
- Administrador.
- Responsable de proyectos.
- Empleado.
Módulos:
- Autenticación.
- Empleados.
- Proyectos.
- Asignaciones.
- Skills.
- Disponibilidad.
- Dashboard.
Lo importante no es coincidir exactamente con esta solución, sino justificar las decisiones.
24. Ejercicio práctico 2 — Crear un prompt técnico
Escribe un prompt para pedir a una IA que diseñe el módulo de gestión de empleados.
El prompt debe incluir:
- Rol.
- Contexto.
- Objetivo.
- Requisitos.
- Restricciones.
- Formato de respuesta.
Ver respuesta orientativa
Actúa como arquitecto de software senior.
Contexto:
Estamos construyendo una aplicación web
para gestionar empleados de una consultora.
Objetivo:
Diseñar el módulo de empleados.
Cada empleado debe tener:
- id
- nombre
- email
- puesto
- skills
- disponibilidad
El módulo debe permitir:
- crear empleados
- editar empleados
- eliminar empleados
- buscar empleados
- filtrar por skill
Restricciones:
- arquitectura mantenible
- separación de responsabilidades
- validación de datos
- control de permisos
Antes de generar código:
1. Propón arquitectura.
2. Define modelo de datos.
3. Define API.
4. Identifica riesgos.
5. Propón estrategia de pruebas.
25. Ejercicio práctico 3 — Mejorar un prompt
Mejora este prompt:
Hazme una aplicación de empleados.
Debes conseguir que la IA tenga suficiente contexto para producir una propuesta técnica razonable.
Ver solución orientativa
Actúa como arquitecto de software.
Necesito diseñar una aplicación web
para gestionar empleados de una empresa.
Los usuarios serán:
- Administradores
- Managers
Funcionalidades:
- Crear empleados
- Editar empleados
- Consultar empleados
- Buscar por nombre
- Filtrar por skills
- Consultar disponibilidad
Antes de escribir código:
1. Define requisitos.
2. Propón arquitectura.
3. Diseña el modelo de datos.
4. Define API.
5. Propón estructura del frontend.
6. Identifica riesgos.
7. Propón pruebas.
No escribas código todavía.
26. Ejercicio práctico 4 — Debugging
La aplicación devuelve:
HTTP 500 Internal Server Error
Cuando el usuario crea una tarea.
Debes escribir un prompt para pedir ayuda a la IA sin limitarte a decir "arréglalo".
Ver respuesta
Actúa como desarrollador senior especializado
en debugging.
Problema:
Al crear una tarea recibo HTTP 500.
Comportamiento esperado:
La tarea debería almacenarse en PostgreSQL.
Comportamiento actual:
La API devuelve HTTP 500.
Código del endpoint:
[PEGAR CÓDIGO]
Error del servidor:
[PEGAR STACK TRACE]
Analiza:
1. Qué significa el error.
2. Causa probable.
3. Otras causas posibles.
4. Cómo verificar cada hipótesis.
5. Solución recomendada.
No cambies código hasta explicar primero
la causa del problema.
27. Test de conocimientos
Selecciona mentalmente la respuesta antes de abrir la solución.
Pregunta 1
¿Qué debería hacerse antes de pedir a la IA que genere una aplicación completa?
Respuesta
Definir el problema, usuarios, requisitos, funcionalidades y arquitectura básica.
Pregunta 2
¿Cuál de estos prompts es mejor?
A) Hazme un login.
B) Crea un login seguro para nuestra aplicación,
usando la arquitectura definida y teniendo en cuenta
autenticación, validación, sesiones y errores.
Respuesta
B. Proporciona contexto y requisitos.
Pregunta 3
¿Debemos aceptar automáticamente código generado por IA?
Respuesta
No. Debemos revisarlo, probarlo y comprobar seguridad y mantenibilidad.
Pregunta 4
¿Qué significa "descomponer una aplicación"?
Respuesta
Dividirla en funcionalidades y componentes más pequeños que puedan diseñarse, implementarse y probarse de forma independiente.
Pregunta 5
¿Por qué es importante proporcionar contexto a la IA?
Respuesta
Porque cuanto más contexto relevante tenga, menos tendrá que asumir y más precisa será la solución.
Pregunta 6
¿Qué es un criterio de aceptación?
Respuesta
Una condición verificable que permite determinar si una funcionalidad cumple los requisitos.
Pregunta 7
¿Qué es mejor para debugging?
A) No funciona.
B) La API devuelve HTTP 500 al crear una tarea.
Este es el stack trace y este es el código.
Respuesta
B.
Pregunta 8
¿Por qué conviene pedir a la IA que no escriba código inicialmente?
Respuesta
Para separar análisis y diseño de implementación y evitar construir una solución basada en supuestos incorrectos.
28. Test avanzado
Pregunta 9
La IA ha generado una aplicación que funciona pero contiene tres componentes enormes de más de 1.000 líneas cada uno. ¿Qué deberías hacer?
Respuesta
Pedir a la IA que analice la arquitectura y proponga una refactorización por responsabilidades, pero sin modificar todo de golpe.
Pregunta 10
La IA propone almacenar contraseñas directamente en la base de datos. ¿Qué haces?
Respuesta
Rechazar la solución. Las contraseñas deben almacenarse mediante mecanismos seguros de hashing diseñados para contraseñas. Además, conviene revisar la implementación con criterios de seguridad.
Pregunta 11
La IA genera código que funciona, pero no sabes por qué funciona. ¿Está terminado el trabajo?
Respuesta
No necesariamente. Debes comprender al menos la arquitectura, responsabilidades, riesgos y comportamiento del código crítico.
Pregunta 12
¿Qué estrategia es mejor?
A) Crear toda la aplicación en un único prompt.
B) Diseñar, implementar y probar pequeñas funcionalidades
de forma iterativa.
Respuesta
B.
29. Mini proyecto de la semana
Proyecto: diseño de una aplicación real
Durante esta semana deberás seleccionar una aplicación sencilla que te resulte interesante.
Puede ser, por ejemplo:
- Gestor de tareas.
- Gestor de notas.
- CRM sencillo.
- Gestor de entrenamientos.
- Gestor de recetas.
- Gestor de proyectos.
- Gestor de gastos.
- Gestor de clientes.
Debes producir
- Descripción del problema.
- Usuarios.
- Requisitos.
- User Stories.
- Criterios de aceptación.
- Mapa de funcionalidades.
- Arquitectura.
- Modelo de datos inicial.
- API propuesta.
- Plan de implementación.
- Estrategia de pruebas.
Todavía no es necesario construir toda la aplicación. Esta semana estamos aprendiendo a diseñarla y a dirigir a la IA.
30. Entregable de la Week 04
Al finalizar la semana deberías disponer de un documento similar a:
MI APLICACIÓN
│
├── 01-problema.md
├── 02-usuarios.md
├── 03-requisitos.md
├── 04-user-stories.md
├── 05-criterios-aceptacion.md
├── 06-arquitectura.md
├── 07-modelo-datos.md
├── 08-api.md
├── 09-plan-implementacion.md
└── 10-tests.md
Este documento será utilizado durante las próximas semanas para construir realmente la aplicación.
31. Checklist de finalización
- ☐ Sé convertir una idea en requisitos.
- ☐ Sé crear User Stories.
- ☐ Sé definir criterios de aceptación.
- ☐ Sé dividir una aplicación en módulos.
- ☐ Comprendo frontend, backend, API y base de datos.
- ☐ Sé pedir a la IA que diseñe antes de programar.
- ☐ Sé construir prompts técnicos.
- ☐ Sé proporcionar contexto a una IA.
- ☐ Sé pedir código por partes.
- ☐ Sé pedir una revisión del código.
- ☐ Sé utilizar IA para debugging.
- ☐ Sé generar casos de prueba con IA.
- ☐ Entiendo que el código generado debe revisarse.
- ☐ He diseñado mi mini proyecto.
32. Autoevaluación
¿Podrías hacer lo siguiente sin ayuda?
- Explicar qué problema resuelve tu aplicación.
- Definir sus principales usuarios.
- Crear 10 requisitos.
- Crear User Stories.
- Definir criterios de aceptación.
- Diseñar una arquitectura básica.
- Explicar cómo pedirías a una IA que construya una funcionalidad.
- Revisar críticamente código generado por IA.
Si la respuesta es "sí" en la mayoría de los puntos, estás preparado para pasar al siguiente nivel.
33. Qué has aprendido realmente
El objetivo de esta semana no era aprender un nuevo lenguaje.
El verdadero aprendizaje es cambiar tu forma de pensar:
ANTES
Problema
↓
Código
AHORA
Problema
↓
Análisis
↓
Requisitos
↓
Diseño
↓
IA
↓
Implementación
↓
Tests
↓
Revisión
↓
Iteración
Un desarrollador apoyado por IA no es la persona que consigue que la IA escriba más código.
Es la persona que sabe qué construir, por qué construirlo, cómo dividirlo, cómo comprobarlo y cómo utilizar la IA para hacerlo más rápido.