Claude Code me ha cambiado la forma de programar: esto es lo que he aprendido
Introducción
Llevo varios meses usando Claude Code en mi día a día como desarrollador, y puedo decir que ha cambiado significativamente mi forma de trabajar. Una vez conseguí integrarlo bien en mi flujo de trabajo, mi productividad se multiplicó x2 o x3. Tiene sus limitaciones, pero si lo usas bien, es una herramienta tremendamente potente.
En este artículo comparto los consejos y aprendizajes que me hubiera gustado tener cuando empecé. No son teorías: son lecciones aprendidas a base de prueba y error en proyectos reales.
Filosofía: KISS (Keep It Simple, Stupid)
El primer consejo es el más importante: no te vuelvas loco.
Cuando empiezas con Claude Code es tentador querer configurar todo: agentes personalizados, skills, comandos, hooks, MCPs… Resiste esa tentación. Empieza simple y añade complejidad solo cuando la necesites de verdad.
He visto desarrolladores pasar más tiempo configurando Claude Code que programando. No caigas en esa trampa. La herramienta funciona muy bien out-of-the-box. Añade capas de personalización gradualmente, cuando identifiques fricciones reales en tu flujo de trabajo.
Elige tu modo de trabajo según el contexto
No todos los proyectos son iguales, y Claude Code se adapta a diferentes estilos de trabajo. He identificado dos modos principales:
Vibe Coding
Úsalo cuando:
- Estás explorando una idea nueva
- No tienes claro por dónde empezar
- Estás haciendo un prototipo rápido
- Quieres iterar rápidamente sin mucha estructura
En este modo, la conversación es fluida. Le explicas lo que quieres de forma natural, ves lo que genera, ajustas, iteras. Es perfecto para ese momento de “tengo una idea pero no sé exactamente cómo implementarla”.
Spec-driven (especificaciones formales)
Úsalo cuando:
- Trabajas en proyectos enterprise
- Hay un equipo involucrado
- Los requisitos están claros
- Necesitas consistencia y predictibilidad
Aquí la clave es definir especificaciones claras antes de pedirle que implemente. Algo tipo spec-kit: documentos con requisitos, criterios de aceptación, restricciones técnicas. Claude Code rinde mucho mejor cuando sabe exactamente qué se espera.
Mi recomendación: empieza con vibe coding para explorar, y cuando tengas claro el camino, formaliza con especificaciones.
Dile qué quieres, pero también cómo validarlo
Este es un cambio de mentalidad importante. No basta con decirle “implementa X”. Tienes que decirle también cómo asegurarte de que está correcto.
Incluye en tus prompts:
- Checklists de lo que debe cumplir
- Tests que debe pasar
- Criterios de aceptación claros
- Casos edge que debe manejar
Por ejemplo, en vez de:
“Crea un endpoint para crear usuarios”
Prueba con:
“Crea un endpoint POST /users que:
- Valide email único
- Hashee la contraseña con bcrypt
- Devuelva 201 con el usuario creado (sin password)
- Devuelva 422 si el email ya existe
- Tenga tests para cada caso”
La diferencia en la calidad del resultado es brutal.
Gestión de reglas: el sistema airules/
El archivo CLAUDE.md es poderoso, pero puede volverse inmanejable rápidamente. Mi solución: separarlo en ficheros pequeños y concretos.
Tengo un directorio airules/ con reglas específicas:
airules/
├── code-style.md
├── testing.md
├── git-commits.md
├── documentation.md
├── api-design.md
├── security.md
└── workflows/
├── add-permission.md
└── new-endpoint.md
El CLAUDE.md principal actúa como índice, indicando qué fichero leer en cada caso:
## Reglas del proyecto
- Para estilo de código, lee @airules/code-style.md
- Para tests, lee @airules/testing.md
- Para commits, lee @airules/git-commits.md
...
Cada fichero contiene reglas concretas y fáciles de leer. Cuando algo no funciona como espero, sé exactamente qué fichero modificar.
Workflows: flujos comunes del proyecto
Además de reglas, tengo workflows que describen procesos multi-paso. Por ejemplo, airules/workflows/add-permission.md describe todo lo necesario para añadir un nuevo permiso:
- Crear la migración de base de datos
- Añadir el permiso en los lugares correspondientes del código
- Crear las traducciones para todos los idiomas
- Actualizar la documentación
Así Claude Code no olvida ningún paso y mantiene la consistencia en tareas que tocan múltiples partes del proyecto.
Mantén las reglas actualizadas
Las reglas no son estáticas. Cada vez que Claude Code hace algo que no te gusta:
- Corrígelo en el momento
- Añade o modifica la regla correspondiente
- Verifica que no vuelva a pasar
No delegues la creación de reglas
Esto es crítico: no dejes que Claude Code escriba sus propias reglas sin revisarlas. Puede parecer cómodo pedirle “genera una regla para X”, pero las reglas son demasiado importantes para no revisarlas a fondo.
Durante el code review, antes de commitear, reviso los ficheros y aprovecho para afinar las reglas. Es un proceso continuo de mejora.
El patrón oficial: Explore → Plan → Code → Commit
Anthropic recomienda un flujo de trabajo secuencial que he adoptado y funciona muy bien:
-
Explore: Pide a Claude que investigue el código SIN implementar nada todavía. Que entienda la estructura, los patrones existentes, las dependencias.
-
Plan: Usa extended thinking (más sobre esto abajo) para que proponga un plan detallado. Revísalo y ajústalo antes de aprobar.
-
Code: Una vez aprobado el plan, implementa. Claude Code seguirá el plan acordado.
-
Commit: Commit limpio con mensaje descriptivo.
Este flujo evita el error más común: empezar a codificar sin entender bien el contexto. La fase de exploración es crítica.
Extended Thinking: ultrathink
Una de las características más potentes y menos conocidas. Puedes activar diferentes niveles de “pensamiento profundo” usando palabras clave en tu prompt:
think→ pensamiento básico extendidothink hard→ más profundothink harder→ aún más análisisultrathink→ máximo nivel de razonamiento
Cuándo usarlo:
- Antes de refactorizaciones grandes
- Decisiones arquitectónicas
- Bugs complejos que no encuentras
- Cuando necesitas que evalúe alternativas
Por ejemplo: “ultrathink sobre cómo debería estructurar el sistema de autenticación considerando que tendremos SSO en el futuro”.
La diferencia en la calidad del análisis es notable. No lo uses para todo (consume más tokens), pero para decisiones importantes es oro.
Flujo de trabajo: Plan Mode y subagentes
Una vez que dominas lo básico, el plan mode y los subagentes son game changers.
Plan Mode
Antes de implementar algo complejo, usa el plan mode. Claude Code analiza el problema, propone un plan de acción, y tú lo validas antes de que escriba código. Esto evita que se vaya por las ramas o tome decisiones arquitectónicas que no quieres.
Pocos agentes, muy afinados
No crees 20 agentes para cada cosa. Mi setup es simple:
- Developer: con todas mis reglas de desarrollo, es el que implementa
- Validator: revisa lo que hace el developer con otras reglas enfocadas en calidad
Dos agentes bien configurados son más efectivos que diez mediocres.
Subagentes y gestión de contexto
Un beneficio clave de los subagentes que no es obvio: cada subagente tiene su propia ventana de contexto independiente. El agente principal orquesta el flujo, delegando tareas a subagentes que trabajan de forma aislada.
¿Por qué importa esto? Porque tu conversación principal no se llena con los detalles de bajo nivel de cada tarea. El subagente hace su trabajo, devuelve el resultado, y el contexto de la conversación principal se mantiene limpio.
En proyectos grandes esto es crítico. Sin subagentes, una sesión larga agota el contexto rápidamente. Con subagentes, puedes manejar flujos mucho más complejos porque cada uno opera en su propio espacio.
Comandos maestros
Tengo comandos que orquestan flujos completos para no olvidar pasos:
- Usar subagentes en el orden correcto
- Actualizar documentación después de cambios
- Documentar endpoints nuevos en Bruno
- Ejecutar validaciones antes de commitear
Esto me asegura consistencia sin depender de mi memoria.
Gestión del contexto: sesiones cortas y enfocadas
Claude Code tiene una ventana de contexto limitada. En proyectos grandes (especialmente monorepos), puedes gastar ~20k tokens solo al iniciar sesión. Si no gestionas bien el contexto, la calidad de las respuestas degrada.
Mis reglas:
- Sesiones cortas: Una tarea, una sesión. Cuando terminas algo,
/cleary empiezas fresco. /compact: Comprime el contexto cuando llevas rato en una sesión larga. Mantiene lo relevante, descarta ruido./context: Revisa cuánto contexto llevas consumido. Útil para saber si necesitas limpiar.
El error común es tener conversaciones maratonianas donde arrastras contexto de hace una hora que ya no es relevante. Sesiones cortas y enfocadas son más eficientes.
Trabajo paralelo con Git Worktrees
Esto es avanzado pero muy potente: ejecutar múltiples instancias de Claude Code en paralelo usando git worktrees.
git worktree add ../mi-proyecto-feature feature-branch
Ahora puedes tener:
- Una instancia escribiendo código en una rama
- Otra instancia revisando o trabajando en otra feature
Multiplica tu productividad en features complejas o cuando necesitas contextos separados. Cada worktree es independiente, sin conflictos.
Nota importante: Si necesitas ejecutar tests o levantar servicios en cada worktree simultáneamente, hay consideraciones técnicas adicionales. Por ejemplo, si usas Docker, los puertos entrarán en conflicto. Nosotros lo resolvimos con un script que detecta puertos libres y genera un docker-compose.override.yml dinámico para cada worktree. No es trivial, pero una vez configurado, funciona muy bien.
Headless Mode: automatización y CI/CD
Claude Code puede ejecutarse sin interfaz interactiva:
claude -p "analiza los logs de error del último deploy" --output-format stream-json
Casos de uso:
- Análisis automático en pipelines CI/CD
- Revisión de código automatizada en PRs
- Migraciones a escala (procesar cientos de ficheros)
- Triage automático de issues
- Scripts de mantenimiento
Esto abre posibilidades que van más allá del uso interactivo. Puedes integrar Claude Code en tus workflows de automatización.
Más allá del código
Al ser una herramienta de terminal, Claude Code no se limita a programar. Se puede usar para:
- Mantenimiento de servidores: revisar logs, diagnosticar problemas, configurar servicios
- Gestión de infraestructura: scripts de despliegue, configuración de Docker, Kubernetes
- Análisis de datos: procesar CSVs, generar informes, transformar formatos
Cualquier tarea que puedas hacer en un terminal, Claude Code puede ayudarte.
Herramientas que uso a diario
MCP de Context7
Si solo pudieras instalar un MCP, que sea este. Context7 te da documentación integrada de prácticamente cualquier librería o framework. Claude Code puede consultar la documentación actualizada mientras trabaja, lo que reduce drásticamente los errores por APIs deprecadas o cambios de versión.
Lo uso a diario y la diferencia es brutal.
MCP de Playwright
Para proyectos con frontend, el MCP de Playwright es muy útil. Permite a Claude Code ejecutar y validar tests de interfaz, interactuar con el navegador, y verificar que lo que implementa funciona visualmente.
Hooks: linters y validadores
Los hooks son perfectos para automatizar validaciones:
- Ejecutar el linter antes de cada commit
- Validar tipos de TypeScript
- Correr tests unitarios
- Verificar formato de código
Si algo falla, Claude Code lo ve inmediatamente y puede corregirlo.
Bruno en vez de Postman
Nos cambiamos de Postman a Bruno para tener los endpoints documentados en local, dentro del repositorio. Esto permite que Claude Code lea las definiciones de la API, entienda los endpoints existentes, y mantenga la documentación actualizada.
Además, al estar en git, la documentación de la API evoluciona junto con el código.
Arquitectura: referencias cruzadas y monorepos
Referencia otros proyectos
Si tienes frontend y backend separados, haz que se conozcan. Cuando Claude Code trabaja en el front, puede referenciar el back para leer los endpoints reales y no inventar contratos.
Esto reduce errores de integración significativamente.
Considera monorepositorios
Si tus proyectos están muy acoplados o estás en una fase inicial donde todo cambia rápido, un monorepo puede simplificar mucho el trabajo con Claude Code. Todo el contexto está en un solo lugar, los cambios que afectan a múltiples partes se hacen de forma coherente, y las referencias cruzadas son triviales.
En fases tempranas del proyecto, tener todo junto acelera mucho la iteración. Claude Code puede ver el sistema completo y hacer cambios coordinados sin saltar entre repositorios.
Mantén el código y la documentación
Este punto parece obvio pero se olvida constantemente: Claude Code puede mantener tu documentación.
Cada vez que implemento algo nuevo, le pido que actualice:
- README si es relevante
- Documentación de API en Bruno
- Comentarios en código complejo
- Changelog si aplica
La documentación desactualizada es peor que no tener documentación. Con Claude Code, mantenerla al día es mucho más fácil.
Bonus: Claude Code para gestores y CTOs
Hasta ahora he hablado de desarrollo, pero Claude Code también ha cambiado mi forma de gestionar. Como CTO, tengo un repositorio separado solo para gestión donde trabajo con Claude Code de forma diferente.
Mi setup de gestión
Tengo una estructura de markdowns para organizar:
gestion/
├── ideas/
├── roadmap/
├── decisiones-tecnicas/
├── analisis/
└── mejoras-pendientes/
Conexión con los proyectos
Mi repositorio de gestión conoce todos los proyectos y repositorios del equipo. Si necesito analizar algo y no tengo el código en local, Claude Code conoce la estructura de directorios que uso y puede clonarlo automáticamente. Esto me permite tomar decisiones informadas sin salir del contexto de gestión.
Para qué lo uso
- Discutir ideas: Le planteo una idea y debatimos pros, contras, alternativas. Es como tener un compañero de debate disponible 24/7 que nunca se cansa.
- Investigar caminos: “¿Qué opciones tenemos para migrar de X a Y? Analiza cada una con sus trade-offs”.
- Toma de decisiones: Con ultrathink, le pido que analice una decisión técnica importante considerando múltiples factores.
- Documentar decisiones: Una vez tomada una decisión, me ayuda a documentar el ADR (Architecture Decision Record).
- Preparar reuniones: Antes de una reunión técnica importante, reviso el tema con Claude Code para llegar mejor preparado.
El valor real
No es que Claude Code tome las decisiones por mí. Es que potencia mi capacidad de análisis. Puedo explorar más alternativas, considerar más factores, y llegar a conclusiones mejor fundamentadas.
Como gestor técnico, tu tiempo es limitado. Claude Code te permite profundizar en temas que antes tenías que delegar o superficializar por falta de tiempo.
Conclusión
Claude Code no es una herramienta mágica que programa por ti. Es un amplificador: si tienes buenos procesos, los mejora; si tienes malos procesos, los hace más rápidos (que no es lo mismo que mejores).
Los consejos que más impacto han tenido en mi productividad:
- KISS: empieza simple, añade complejidad cuando la necesites
- El flujo Explore → Plan → Code → Commit: evita errores costosos
- Ultrathink: para decisiones importantes, activa el pensamiento profundo
- Sesiones cortas: gestiona el contexto, no arrastres ruido
- Reglas vivas: mantén tus reglas actualizadas y no delegues su creación
- Herramientas: Context7, Playwright, Bruno, hooks
- Más allá del código: úsalo también para gestión y toma de decisiones
La curva de aprendizaje es real, pero una vez que encuentras tu flujo, la productividad aumenta significativamente.
¿Tienes dudas o quieres que profundice en algún punto? Escríbeme por Twitter.