Módulo 8: Proyecto Integrador

Proyecto Integrador: Code Review, Debugging y Corrección de un Codebase FastAPI

Proyecto Integrador: Code Review, Debugging y Corrección de un Codebase FastAPI

Descripción de la cápsula

Has llegado al proyecto integrador de la guía. Todo lo que aprendiste en los módulos 1-7 — awareness del problema de confianza en AI code, mental models para supervisar output, detección de hallucinations, code review profesional con checklist, reconocimiento de patrones de error, debugging con Claude Code, y decisiones de regenerar vs editar — se aplica aquí en un escenario completo y realista.

El escenario: recibes un codebase de una API de gestión de tareas construida con FastAPI. El código fue "generado por AI" y contiene entre 15 y 20 problemas distribuidos en múltiples categorías. Tu trabajo no es generar código nuevo — es validar, diagnosticar y corregir el código existente. Exactamente lo que un senior developer hace cuando recibe código de un junior o de una herramienta AI.

Esta cápsula establece el scope completo del proyecto, te entrega los requisitos de negocio contra los cuales evaluar el código, describe la estructura del codebase, y define exactamente qué debes entregar.


Contexto del Proyecto

Lo que simula este proyecto

En tu trabajo diario con Claude Code, vas a generar código constantemente. A veces será perfecto. A veces tendrá problemas sutiles que pasan desapercibidos hasta producción. Este proyecto simula la segunda situación: código que se ve razonable pero tiene problemas reales.

La diferencia con un ejercicio de módulo individual es la escala. En el módulo 3 detectaste hallucinations en snippets aislados. En el módulo 5 identificaste patrones en funciones individuales. Aquí tienes un codebase completo con 8-12 archivos interconectados, donde los problemas se esconden en la interacción entre módulos, en la lógica que cruza archivos, y en los detalles que son fáciles de ignorar cuando estás revisando un sistema completo.

El rol que asumes

Eres un senior developer que recibe un codebase para code review antes de que se haga merge a la rama principal. El código fue generado usando Claude Code por un compañero de equipo. Tu responsabilidad:

  1. Revisar el código contra los requisitos de negocio
  2. Identificar todos los problemas (seguridad, lógica, edge cases, hallucinations, runtime bugs)
  3. Debuggear los problemas que requieren ejecución para confirmar
  4. Corregir cada problema con justificación
  5. Documentar todo el proceso con un findings document profesional
  6. Reflexionar sobre tu proceso con una retrospectiva

Requisitos de Negocio: Task Management API

Este es el documento de requisitos funcionales contra el cual debes evaluar el código. Léelo con atención — cada divergencia entre estos requisitos y la implementación es un problema que debes documentar.

Documento de Requisitos Funcionales

Producto: TaskFlow API Versión: 1.0 Fecha: Marzo 2026


RF-01: Gestión de Usuarios

IDRequisitoPrioridad
RF-01.1El sistema debe permitir registrar usuarios con email, nombre y contraseñaAlta
RF-01.2La contraseña debe almacenarse hasheada con bcrypt, nunca en texto planoCrítica
RF-01.3El email debe ser único en el sistemaAlta
RF-01.4El sistema debe validar formato de email y longitud mínima de contraseña (8 caracteres)Alta

RF-02: Autenticación

IDRequisitoPrioridad
RF-02.1Login con email y contraseña, retornando un JWT tokenAlta
RF-02.2El JWT debe expirar en 30 minutosAlta
RF-02.3El JWT secret key debe cargarse desde variables de entorno, sin fallback hardcodedCrítica
RF-02.4Endpoints protegidos deben requerir token válido en header AuthorizationCrítica

RF-03: Gestión de Tareas (CRUD)

IDRequisitoPrioridad
RF-03.1Crear tarea con título (obligatorio), descripción (opcional), prioridad (low/medium/high), y estado (pending/in_progress/completed)Alta
RF-03.2Listar tareas del usuario autenticado con paginación (10 por página por defecto)Alta
RF-03.3Filtrar tareas por estado y/o prioridadMedia
RF-03.4Obtener detalle de una tarea por ID (solo si pertenece al usuario)Alta
RF-03.5Actualizar tarea (solo el propietario puede modificarla)Alta
RF-03.6Eliminar tarea (solo el propietario, soft delete cambiando estado a "deleted")Alta
RF-03.7Un usuario NO debe poder ver, editar ni eliminar tareas de otro usuarioCrítica

RF-04: Estadísticas

IDRequisitoPrioridad
RF-04.1Endpoint que retorna estadísticas del usuario: total de tareas, tareas por estado, tareas por prioridadMedia
RF-04.2Las estadísticas deben calcularse solo sobre las tareas activas (no las eliminadas/soft-deleted)Media
RF-04.3Incluir porcentaje de tareas completadas sobre el total activoMedia

RF-05: Validaciones y Edge Cases

IDRequisitoPrioridad
RF-05.1Títulos de tarea: mínimo 3 caracteres, máximo 100Media
RF-05.2Prioridad solo acepta valores: "low", "medium", "high"Media
RF-05.3Estado solo acepta valores: "pending", "in_progress", "completed"Media
RF-05.4Paginación: page debe ser >= 1, size debe ser entre 1 y 100Media
RF-05.5IDs de tarea inexistentes deben retornar 404 con mensaje descriptivoMedia
RF-05.6Intentar acceder a tarea de otro usuario debe retornar 403, no 404Media

RF-06: Requisitos No Funcionales

IDRequisitoPrioridad
RF-06.1Configuración sensible (DB URL, JWT secret) desde variables de entornoCrítica
RF-06.2Queries SQL deben usar parámetros, nunca concatenación de stringsCrítica
RF-06.3Errores internos no deben exponer stack traces al clienteAlta
RF-06.4La API debe retornar respuestas consistentes en formato JSONMedia

Estructura del Codebase

El codebase que recibirás en la siguiente cápsula tiene esta estructura:

taskflow-api/
├── main.py                    # Punto de entrada de la aplicación FastAPI
├── config.py                  # Configuración y variables de entorno
├── database.py                # Conexión y operaciones de base de datos
├── models.py                  # Modelos Pydantic (request/response)
├── routes/
│   ├── auth.py                # Endpoints de registro y login
│   ├── tasks.py               # Endpoints CRUD de tareas
│   └── users.py               # Endpoints de perfil y estadísticas
├── services/
│   ├── auth_service.py        # Lógica de autenticación y JWT
│   └── task_service.py        # Lógica de negocio de tareas
└── requirements.txt           # Dependencias del proyecto

Descripción de cada archivo

main.py — Configuración de la aplicación FastAPI, registro de routers, y middleware. Es donde todo se conecta.

config.py — Clase de configuración que carga variables de entorno. Incluye configuración de base de datos, JWT, y parámetros de la aplicación.

database.py — Funciones para crear la base de datos SQLite, obtener conexiones, y ejecutar queries. Este archivo es crítico: contiene la interacción directa con la base de datos.

models.py — Modelos Pydantic para validar request bodies y formatear responses. Define los schemas de usuario, tarea, autenticación, y estadísticas.

routes/auth.py — Endpoints de POST /register y POST /login. Maneja la creación de usuarios y la generación de tokens.

routes/tasks.py — Endpoints CRUD: crear, listar, obtener, actualizar, y eliminar tareas. Incluye filtros y paginación.

routes/users.py — Endpoint de estadísticas del usuario y perfil.

services/auth_service.py — Funciones de hashing de contraseñas, generación y verificación de JWT, y extracción del usuario actual.

services/task_service.py — Lógica de negocio: crear tarea, obtener tareas con filtros, calcular estadísticas, y validaciones.


Cómo Leer los Requisitos: Guía Práctica

Los requisitos funcionales no son solo una lista de features — son tu herramienta principal de verificación. Aquí te explico cómo usarlos efectivamente durante el code review.

Técnica: Mapear requisito → código → verificación

Para cada requisito, sigue este proceso:

1. LEE el requisito (e.g., RF-01.2: contraseña hasheada con bcrypt)
2. BUSCA el código que lo implementa (¿dónde se guarda la contraseña?)
3. VERIFICA que la implementación cumple el requisito
4. DOCUMENTA si cumple o no (y por qué)

Ejemplo práctico

Requisito RF-01.2: La contraseña debe almacenarse hasheada 
con bcrypt, nunca en texto plano.

1. ¿Dónde se almacena la contraseña?
   → routes/auth.py, función register()
   → Ejecuta INSERT con el campo password

2. ¿Se hashea antes de insertar?
   → ¿Llama a hash_password() o bcrypt.hashpw()?
   → ¿O inserta user.password directamente?

3. ¿La función de hash existe y es correcta?
   → services/auth_service.py tiene hash_password()
   → ¿Se llama en el flujo de registro?

4. Resultado: [CUMPLE / NO CUMPLE]
   → Documentar en findings document si no cumple

Requisitos que son fáciles de pasar por alto

Algunos requisitos no son evidentes con solo leer el código:

RF-03.6: Soft delete — La palabra "delete" es engañosa. El requisito dice que eliminar debe cambiar el estado a "deleted", no borrar la fila de la base de datos. Necesitas verificar la implementación de delete, no solo que "funciona."

RF-04.2: Estadísticas sobre tareas activas — Si el delete no implementa soft delete correctamente, las estadísticas podrían estar afectadas también. Los requisitos están interconectados.

RF-05.6: 403 vs 404 — La diferencia es sutil: 404 dice "no existe," 403 dice "existe pero no tienes permiso." La implementación de autorización determina cuál se retorna. Muchos developers lo implementan como 404 para ambos casos, pero el requisito específicamente pide 403 cuando la tarea existe pero pertenece a otro usuario.

RF-06.2: Parámetros en SQL — No basta con verificar que hay un ? en la query principal. Necesitas verificar TODAS las queries del codebase, incluyendo las de filtros dinámicos y búsquedas.

La importancia de los requisitos de prioridad "Media"

Los requisitos marcados como "Media" parecen menos importantes, pero en este proyecto representan la diferencia entre una entrega buena y una excelente. Los problemas más sutiles del codebase están en los requisitos de prioridad media:

  • ✅ Validación de longitud de título (RF-05.1)
  • ✅ Validación de valores de prioridad y estado (RF-05.2, RF-05.3)
  • ✅ Parámetros de paginación (RF-05.4)
  • ✅ Estadísticas sobre tareas activas (RF-04.2)

Un developer junior encuentra los Critical (secrets hardcoded, SQL injection). Un developer senior también encuentra los Medium (validaciones incorrectas, cálculos erróneos).


Tipos de Problemas que Encontrarás

El codebase contiene entre 15 y 20 problemas distribuidos en 5 categorías. No se te dice dónde están — encontrarlos es parte del ejercicio. Lo que sí se te dice es qué tipos de problemas buscar:

Categoría 1: Hallucinations (3-4 problemas)

Código que referencia algo que no existe o que usa una API incorrectamente:

  • ✅ Imports de módulos o funciones que no existen
  • ✅ Funciones de librerías con parámetros que no acepta
  • ✅ APIs con signatures inventadas que parecen correctas

Módulo de referencia: Módulo 3 — Detectar Hallucinations en Código

Categoría 2: Security Holes (3-4 problemas)

Vulnerabilidades que exponen el sistema a ataques o acceso no autorizado:

  • ✅ Secrets hardcoded en el código fuente
  • ✅ SQL injection por concatenación de strings
  • ✅ Endpoints sin protección de autenticación
  • ✅ Contraseñas almacenadas sin protección adecuada

Módulo de referencia: Módulo 5, Cápsula 04 — Security Holes Típicos

Categoría 3: Edge Cases No Manejados (3-4 problemas)

Inputs o condiciones que causan comportamiento inesperado:

  • ✅ Valores null/None no manejados
  • ✅ Listas vacías que causan errores
  • ✅ Errores de off-by-one en paginación

Módulo de referencia: Módulo 5, Cápsula 03 — Edge Cases No Manejados

Categoría 4: Lógica Incorrecta (3-4 problemas)

Código que se ejecuta sin errores pero produce resultados incorrectos:

  • ✅ Filtros que incluyen en vez de excluir (o viceversa)
  • ✅ Cálculos de estadísticas incorrectos
  • ✅ Validaciones que aceptan datos que deberían rechazar

Módulo de referencia: Módulo 4, Cápsula 05 — Verificar Lógica de Negocio

Categoría 5: Runtime Bugs (2-3 problemas)

Errores que solo aparecen al ejecutar el código con ciertos inputs:

  • ✅ Type mismatches que solo se manifiestan con datos específicos
  • ✅ Errores que solo aparecen con combinaciones particulares de parámetros

Módulo de referencia: Módulo 6 — Debugging con Claude Code


Formato de Entrega

Tu entrega debe contener exactamente estos 4 componentes:

1. Findings Document (40% de la evaluación)

Una tabla documentando cada problema encontrado:

# Findings Document — TaskFlow API Code Review

## Resumen Ejecutivo
[2-3 oraciones describiendo el estado general del codebase]

## Findings

| # | Severidad | Categoría | Archivo | Línea(s) | Descripción | Impacto |
|---|-----------|-----------|---------|----------|-------------|---------|
| 1 | Critical  | Security  | config.py | 12 | JWT secret hardcoded en código fuente | Cualquier atacante puede forjar tokens válidos |
| 2 | High      | Logic     | services/task_service.py | 45-52 | [descripción] | [impacto] |
| ... | ... | ... | ... | ... | ... | ... |

## Estadísticas
- Total findings: X
- Critical: X
- High: X
- Medium: X
- Low: X

Guía de severidades

SeveridadCriterioEjemplos
CriticalVulnerabilidad de seguridad explotable o pérdida de datosSQL injection, secrets expuestos, auth bypass
HighFuncionalidad incorrecta que afecta a los usuariosLógica de negocio mal implementada, datos devueltos incorrectamente
MediumEdge case no manejado o problema de robustezCrash con inputs específicos, paginación incorrecta
LowProblema de calidad o mantenibilidadImport inexistente que no se usa, naming confuso

2. Código Corregido (30% de la evaluación)

El codebase completo con todas las correcciones aplicadas. Cada archivo corregido debe tener un comentario al inicio indicando qué se cambió:

# CORRECCIONES EN ESTE ARCHIVO:
# - Línea 12: Removido JWT secret hardcoded, ahora usa os.environ
# - Línea 45: Corregido filtro de estado (incluía deleted, ahora los excluye)
# - Línea 78: Agregado manejo de lista vacía en cálculo de estadísticas

3. Justificaciones (20% de la evaluación)

Para cada corrección, explica:

  • Qué cambió (el fix concreto)
  • Por qué el código original era incorrecto (referenciando el requisito funcional que viola)
  • Por qué tu corrección es correcta (cómo verificaste que soluciona el problema)
  • Decisión regenerar vs editar (si decidiste regenerar el fragmento con Claude Code o editarlo manualmente, y por qué)
## Justificación Finding #1: JWT Secret Hardcoded

**Qué cambié:** Reemplacé `SECRET_KEY = "mi-clave-secreta"` 
con `SECRET_KEY = os.environ["JWT_SECRET_KEY"]`

**Por qué era incorrecto:** Viola RF-06.1 (configuración sensible 
desde variables de entorno) y RF-02.3 (JWT secret sin fallback 
hardcoded). Un atacante con acceso al código fuente podría 
forjar tokens válidos.

**Por qué mi fix es correcto:** `os.environ[]` lanza KeyError 
si la variable no existe, lo cual es el comportamiento deseado: 
la app no debe iniciar si falta configuración crítica.

**Decisión:** Editar manualmente. El fix es puntual (una línea) 
y el contexto es claro. Regenerar sería desproporcionado.

4. Retrospectiva (10% de la evaluación)

Documento de 300-500 palabras. Detalle completo en la Cápsula 05 de este módulo.


Timeline y Enfoque Sugerido

El proyecto está diseñado para completarse en 3-4 horas. Esta es la distribución sugerida:

Fase 1: Code Review (60-90 min)

  1. Lectura inicial (15 min): Lee todos los archivos para entender la estructura general
  2. Review contra requisitos (30-45 min): Compara cada archivo contra los requisitos funcionales
  3. Checklist de seguridad (15-20 min): Aplica los items de seguridad del checklist del módulo 4
  4. Documentar findings (10-15 min): Registra cada problema encontrado en el formato del findings document

Fase 2: Debugging (30-45 min)

  1. Setup local (10 min): Instalar dependencias y levantar la aplicación
  2. Reproducir bugs (15-20 min): Ejecutar los endpoints que sospechas tienen problemas
  3. Confirmar findings (10-15 min): Verificar los hallazgos del code review con pruebas reales

Fase 3: Corrección (45-60 min)

  1. Priorizar (5 min): Ordenar findings por severidad
  2. Corregir Critical y High (25-30 min): Implementar fixes para los problemas más graves
  3. Corregir Medium y Low (15-20 min): Implementar fixes restantes
  4. Verificar correcciones (10 min): Probar que cada fix funciona

Fase 4: Documentación y Retrospectiva (30-45 min)

  1. Completar findings document (10-15 min): Asegurar que cada finding tiene toda la información
  2. Escribir justificaciones (15-20 min): Documentar el razonamiento de cada fix
  3. Escribir retrospectiva (10-15 min): Reflexionar sobre el proceso

Herramientas y Técnicas a Usar

Del Módulo 2: Mental Models

Aplica los tres mental models durante todo el proyecto:

  • Managing an Intern: Enfócate en revisar la lógica de negocio y las decisiones de arquitectura, no cada línea de código
  • Circuit Breaker: Define checkpoints claros: "No paso a debugging hasta que termine el code review completo"
  • Trust Calibration: Confía más en el boilerplate (rutas, config básica) y desconfía más de la lógica de negocio y seguridad

Del Módulo 3: Detección de Hallucinations

Para cada import en el codebase:
1. ¿El paquete existe? → pip show <paquete>
2. ¿La función/clase existe en ese paquete? → documentación oficial
3. ¿Los parámetros son correctos? → verificar signature real

Del Módulo 4: Code Review Checklist

Usa el checklist de 20 items del módulo 4, priorizando:

  1. Seguridad primero: Items 1-5 del checklist (secrets, SQL injection, auth, permisos)
  2. Lógica de negocio: Items 6-10 (resultados correctos, edge cases, validaciones)
  3. Robustez: Items 11-15 (error handling, null checks, boundary conditions)
  4. Calidad: Items 16-20 (naming, estructura, mantenibilidad)

Del Módulo 5: Patrones de Error

Busca activamente los 4 tipos de patrones de error comunes:

  • Naming y abstracciones incorrectas
  • Edge cases no manejados
  • Security holes típicos
  • Código que "funciona" pero produce resultados incorrectos

Del Módulo 6: Debugging Sistemático

Para los runtime bugs, sigue el proceso de 5 pasos:

1. REPRODUCIR → Crear el input que causa el error
2. AISLAR    → Encontrar la línea/función exacta
3. DIAGNOSTICAR → Entender POR QUÉ falla
4. FIX       → Implementar la corrección
5. VERIFICAR → Confirmar que el fix funciona y no rompe nada

Del Módulo 7: Claude Code como Herramienta

Puedes usar Claude Code durante el proyecto para:

  • ✅ Analizar stack traces y logs de error
  • ✅ Investigar si un import o API existe
  • ✅ Obtener hipótesis de diagnóstico para bugs difíciles
  • ✅ Generar fixes puntuales para problemas claros

No uses Claude Code para:

  • ❌ "Encuentra todos los bugs" — eso es tu trabajo
  • ❌ Aceptar diagnósticos sin verificar
  • ❌ Regenerar el codebase completo

Del Módulo 7: Framework Regenerar vs Editar

Para cada fix, decide:

Regenerar cuando...Editar cuando...
El approach completo es incorrectoEl 90% del código está bien
La función entera tiene problemasEl fix es puntual (1-5 líneas)
Hay demasiados cambios interconectadosEl cambio es claro y localizado
La lógica base está equivocadaSolo necesitas ajustar un detalle

Criterios de Evaluación

ComponentePesoExcelente (90-100%)Bueno (70-89%)Necesita mejora (<70%)
Findings40%Encuentra 15+ de 18 problemas con severidad correctaEncuentra 12-14 con severidad mayormente correctaEncuentra <12 o severidades incorrectas
Correcciones30%Todas las correcciones son correctas y justificadasLa mayoría son correctas, algunas justificaciones débilesCorrecciones parciales o incorrectas
Proceso20%Proceso sistemático, documentado, uso apropiado de herramientasProceso razonable, documentación incompletaProceso desorganizado, sin documentación
Retrospectiva10%Reflexiva, específica, con actionables concretosReflexiva pero genéricaSuperficial o ausente

Antes de Empezar

Checklist de preparación

Antes de pasar a la siguiente cápsula (donde recibirás el codebase), verifica:

  • ✅ Leíste los requisitos funcionales completos (sección anterior)
  • ✅ Entiendes la estructura del codebase (8 archivos + requirements.txt)
  • ✅ Sabes qué tipos de problemas buscar (5 categorías)
  • ✅ Tienes claro el formato de entrega (4 componentes)
  • ✅ Tienes Python 3.10+ instalado
  • ✅ Tienes acceso a Claude Code
  • ✅ Tienes el checklist del módulo 4 a la mano
  • ✅ Reservaste 3-4 horas de tiempo sin interrupciones

Mentalidad correcta

Este proyecto no es un examen de velocidad. Es una simulación de trabajo profesional. En el trabajo real:

  • No te premian por encontrar los bugs más rápido — te premian por no dejar pasar ninguno
  • La documentación es tan importante como el fix
  • La reflexión sobre tu proceso te hace mejor la próxima vez
  • Pedir ayuda a herramientas (como Claude Code) es inteligente, no trampa

Aborda el proyecto con la mentalidad de un senior developer haciendo code review antes de un deploy a producción. Cada problema que dejas pasar es un problema que tus usuarios van a encontrar.

Preparación del entorno

Antes de empezar, asegúrate de tener todo listo:

# Verificar versión de Python
python --version
# Debe ser 3.10 o superior

# Verificar que pip está disponible
pip --version

# Verificar que tienes SQLite
sqlite3 --version

# Verificar Claude Code
claude --version

Si algo falta, instálalo antes de empezar. No quieres perder tiempo debuggeando tu entorno cuando deberías estar debuggeando el codebase.

Organización sugerida de archivos

Crea esta estructura para tu entrega:

proyecto-integrador/
├── taskflow-api/            # El codebase original (para referencia)
├── taskflow-api-fixed/      # Tu versión corregida
├── findings-document.md     # Tabla de findings
├── justifications.md        # Justificación de cada fix
├── debugging-log.md         # Log del proceso de debugging
└── retrospectiva.md         # Tu retrospectiva

Tener el codebase original y el corregido por separado te permite comparar fácilmente qué cambió y documentar cada cambio con referencia a las líneas originales.


Mapa Visual del Proyecto

Para que tengas clara la secuencia completa del proyecto, este es el flujo de trabajo que seguirás:

┌─────────────────────────────────────────────────────────┐
│                    FASE 1: CODE REVIEW                   │
│                                                          │
│  Leer requisitos → Leer código → Comparar → Documentar  │
│                                                          │
│  Outputs: Findings document (draft)                      │
└───────────────────────┬─────────────────────────────────┘
                        │
                        ▼
┌─────────────────────────────────────────────────────────┐
│                    FASE 2: DEBUGGING                     │
│                                                          │
│  Setup local → Ejecutar API → Reproducir bugs →          │
│  Confirmar findings → Buscar runtime bugs adicionales    │
│                                                          │
│  Outputs: Findings document (actualizado), Debugging log │
└───────────────────────┬─────────────────────────────────┘
                        │
                        ▼
┌─────────────────────────────────────────────────────────┐
│                   FASE 3: CORRECCIÓN                     │
│                                                          │
│  Priorizar → Corregir Critical → Corregir High →        │
│  Corregir Medium/Low → Verificar → Justificar           │
│                                                          │
│  Outputs: Código corregido, Justificaciones              │
└───────────────────────┬─────────────────────────────────┘
                        │
                        ▼
┌─────────────────────────────────────────────────────────┐
│                FASE 4: ENTREGA + RETROSPECTIVA           │
│                                                          │
│  Compilar entregables → Escribir retrospectiva →         │
│  Auto-evaluar → Entregar                                 │
│                                                          │
│  Outputs: Entrega completa con 4 documentos              │
└─────────────────────────────────────────────────────────┘

Cada fase tiene su propia cápsula con instrucciones detalladas. No necesitas memorizar todo ahora — solo entiende el flujo general y confía en que cada cápsula te guiará paso a paso.


Por Qué Este Formato de Proyecto

Tal vez te preguntes por qué el proyecto es "recibir código con problemas" en vez de "generar algo con Claude Code." La respuesta es simple: si el proyecto fuera generar código, tendrías incentivo de generar algo simple sin problemas. No practicarías la habilidad real.

La habilidad real es esta: recibir código que alguien más (o AI) generó, evaluarlo con criterio profesional, y mejorarlo. Es lo que hacen los senior developers todos los días. Es lo que harás con cada PR que revises de un compañero que usa Claude Code. Es lo que harás con tu propio código generado por AI la próxima vez que algo se sienta "raro."

Este proyecto te fuerza a practicar exactamente eso. No es un accidente — es deliberado.


Notas Importantes

Sobre el uso de Claude Code en el proyecto

Puedes (y debes) usar Claude Code durante el proyecto. La guía completa se trata de usar Claude Code con criterio profesional — y el proyecto es donde demuestras ese criterio.

Lo que se evalúa no es si usaste Claude Code, sino cómo lo usaste:

  • ¿Le diste contexto suficiente o le pediste que "arregle todo"?
  • ¿Verificaste sus sugerencias o las aplicaste ciegamente?
  • ¿Usaste la herramienta correcta para cada situación?
  • ¿Documentaste cuándo te ayudó y cuándo tuviste que hacer el trabajo manualmente?

Sobre la dificultad

Algunos problemas son evidentes (un import que falla al ejecutar). Otros son sutiles (una query que devuelve resultados correctos excepto en un edge case específico). No te frustres si no encuentras todo en la primera pasada. Los developers senior hacen múltiples pasadas de code review por una razón.

Sobre la honestidad

La retrospectiva es donde más se nota la diferencia entre alguien que completó el ejercicio con honestidad y alguien que no. No hay respuesta incorrecta en la retrospectiva — pero sí hay respuestas superficiales. "Todo fue fácil" no es una reflexión útil. "Me costó encontrar el SQL injection porque no revisé las queries con suficiente detalle en la primera pasada" sí lo es.


Siguiente cápsula: Fase de Code Review — El codebase completo de TaskFlow API con los problemas plantados, y las instrucciones para aplicar tu checklist profesional.


Debugging & Code Review with Claude Code — Módulo 8, Cápsula 01 Claude Code Agentic Development Path — Guía #6 de 11