Hay una creencia instalada en la comunidad dev que dice que Anthropic es "la empresa de IA que se preocupa por los developers". Y yo, con todo respeto, creo que esa narrativa está bastante incompleta.
No digo que sea mentira. Digo que es una media verdad que esconde una tensión real entre dos versiones del mismo producto: el Claude que aparece en los comunicados de prensa y el Claude que yo uso todos los días cuando estoy escribiendo código a las 2AM con tres terminales abiertas y un problema que no cierra.
Un post en Hacker News llegó a 1050 puntos esta semana hablando del diseño de Claude. El título era sobre aesthetics, sobre decisiones de UI, sobre cómo Anthropic construye la experiencia visual del producto. Y yo lo leí dos veces. No porque me importara el diseño visual. Sino porque en las discusiones de ese thread había algo más interesante: la gente hablando del Claude que ve versus el Claude que usa.
Esa distinción me parece la clave de todo.
Claude Design: lo que Anthropic muestra vs. lo que entrega
Cuando Anthropic presenta Claude, hay una coherencia estética impresionante. La voz del modelo es cuidada. Los ejemplos en la documentación son pulidos. El sitio web tiene esa sensación de producto serio, pensado, responsable. El "claude design" como concepto general —la forma en que construyen la experiencia— es deliberado hasta en los detalles más pequeños.
Y después abrís Claude Code en la terminal y algo cambia.
No de manera dramática. No hay un momento donde todo se rompe. Es más sutil. Es una acumulación de decisiones pequeñas que, después de meses de uso intensivo, empezás a ver como un patrón.
El modelo interrumpe su propio razonamiento cuando detecta que el contexto se está llenando, pero no te avisa de manera accionable. Te dice "el contexto está al límite" y vos tenés que adivinar qué hacer. ¿Empezar una nueva sesión? ¿Resumir manualmente lo que hiciste? ¿Confiar en que él mismo va a manejar el truncamiento? Tres opciones, cero documentación clara sobre cuál es la correcta para tu caso.
Llevo meses midiendo mis propios patrones de uso con CodeBurn precisamente porque el producto no me da esa información de manera accesible. Tengo que construir mis propias herramientas para entender cómo estoy usando la herramienta. Eso me dice algo sobre las prioridades de diseño.
// Lo que querés que pase cuando el contexto está al límite:
// Claude te dice exactamente qué hacer y te da opciones claras
// Lo que en realidad pasa:
console.log("Context window approaching limit");
// ...y después seguís en el limbo
// Mi workaround actual: trackear tokens manualmente
const estimarTokens = (texto: string): number => {
// Aproximación: 1 token ≈ 4 caracteres en inglés
// En español es un poco peor, ~3.5 chars por token
return Math.ceil(texto.length / 3.5);
};
// No debería tener que hacer esto. Debería ser nativo.
La tensión real: enterprise vs. developer en la terminal
Aquí está la lectura política que prometí: creo que Anthropic está en este momento optimizando para enterprise adoption y para el usuario de Claude.ai web, no para el developer que vive en la CLI.
Tiene sentido de negocios. El enterprise es donde está el dinero grande. Las integraciones corporativas, los contratos, los equipos de 200 personas que necesitan una interfaz controlada y auditable. El "claude design" que ves en HN —prolijo, considerado, con esa estética de startup seria— habla directo a ese mercado.
El developer que hace agentes que tocan hardware físico con un osciloscopio a las 11PM es, para ese modelo de negocio, un edge case ruidoso.
No es que Anthropic no se preocupe por los developers. Es que el developer que tienen en mente cuando diseñan es el developer que usa la API de manera prolija, dentro de los límites documentados, con casos de uso predecibles. No el developer que empuja los límites del contexto, que encadena herramientas de maneras que nadie previó, que necesita entender exactamente qué está pasando bajo el capó para poder debuggear.
Yo caigo en la segunda categoría. Y sospecho que la mayoría de las personas que siguen este blog también.
# Ejemplo concreto de decisión de diseño opaca:
# Cuando Claude Code usa herramientas en modo automático,
# el logging de qué herramienta ejecutó y con qué parámetros
# es inconsistente entre versiones
# A veces ves esto:
# > Executing: read_file({"path": "./src/index.ts"})
# A veces no ves nada y el resultado simplemente aparece
# Para un developer que quiere entender el flujo de ejecución
# esto es frustrante. Para alguien que solo quiere el resultado,
# probablemente no importa.
# La diferencia en audience es exactamente el problema.
Esto se conecta con algo que noté cuando empecé a usar Claude como parte de sistemas más grandes, incluyendo integraciones con Cloudflare para agentes distribuidos: las abstracciones de alto nivel están muy bien pensadas, pero cuando necesitás control granular, el producto te resiste.
Los gotchas que el diseño bonito no te muestra
Voy a ser específico, porque las críticas vagas no sirven de nada.
El problema del "helpful refusal": Claude tiene una tendencia a rechazar operaciones que considera potencialmente destructivas, pero el criterio no es consistente ni documentado. En un proyecto tuve que formatear explícitamente mis instrucciones tres veces distintas para que ejecutara la misma operación de filesystem que en otro contexto ejecutó sin preguntar. El modelo aprende de mis instrucciones en la sesión, pero ese aprendizaje no persiste ni es exportable. Cada conversación nueva empieza desde cero.
El problema de la verbosidad performativa: Hay una diferencia entre un modelo que explica su razonamiento porque eso es útil para el debug, y un modelo que agrega párrafos de contexto porque eso suena más "responsable". Claude a veces cae en el segundo patrón. Me dice que va a hacer algo, describe por qué lo va a hacer, menciona consideraciones alternativas, y después hace exactamente lo que yo le pedí desde el principio. Es teatro de transparencia, no transparencia real.
El costo real de ese teatro no es solo cognitivo. Son tokens. Son segundos de latencia. Es fricción acumulada.
El problema del contexto como caja negra: No sé exactamente qué incluye Claude en su "ventana" en un momento dado cuando estamos en una sesión larga. Sé que hay algún mecanismo de compresión o selección, pero no es observable desde afuera. Para una herramienta que uso para escribir código crítico, esa opacidad me incomoda. Quiero saber si "recuerda" la decisión de arquitectura que tomamos hace 40 mensajes o si ya la perdió.
# Lo que necesito para trabajar con confianza:
class SesionClaude:
def __init__(self):
self.contexto_activo = [] # ¿Qué hay acá? No lo sé.
self.tokens_usados = 0 # Esto sí lo puedo estimar
self.tokens_limite = 200000 # Esto sí lo sé
def que_recorda_ahora(self) -> list[str]:
"""
Esta función no existe en la API.
Debería existir.
No para todos los usuarios. Para developers.
"""
raise NotImplementedError("Bienvenido a la caja negra")
No es un problema imposible de resolver. Es una decisión de no resolverlo para este segmento de usuarios.
El problema de las awesome lists y la documentación que envejece
Hay algo más que me molesta del ecosistema Claude y que el post viral no toca: la documentación oficial y los recursos de la comunidad tienen una tasa de obsolescencia altísima.
Esto lo viví en carne propia cuando construí un sistema para curar listas de recursos de IA: la mitad de los links a documentación de Claude de hace 6 meses ya no funcionan o apuntan a APIs deprecadas. Los nombres de los modelos cambian. Los parámetros cambian. Las "mejores prácticas" que Anthropic publicó en Q3 2024 a veces contradicen las de Q1 2025.
Eso no es solo un problema de mantenimiento. Es un síntoma de un producto que evoluciona rápido pero no considera el costo que esa velocidad le impone a las personas que construyen sobre él.
El diseño visual de Claude puede ser impecable. Pero el diseño del contrato con el developer —la promesa de estabilidad, de documentación confiable, de comportamiento predecible— tiene agujeros.
FAQ: Claude Design y la experiencia real del developer
¿Qué es "Claude Design" en el contexto de Anthropic?
El término abarca tanto las decisiones estéticas y de UX de los productos de Anthropic (Claude.ai, la documentación, el branding) como las decisiones más profundas sobre cómo el modelo se comporta como herramienta de trabajo. El post viral en HN se enfocó en lo visual, pero la conversación más interesante está en el segundo nivel: cómo Anthropic diseña la experiencia de usar Claude para construir cosas.
¿Claude Code es bueno para desarrollo profesional?
Sí, con matices importantes. Para tareas dentro de un rango "normal" de complejidad, Claude Code es genuinamente útil y en muchos casos superior a alternativas. El problema aparece en los bordes: sesiones largas, proyectos complejos con mucho contexto acumulado, casos de uso que no entraron en el design space original de Anthropic. Ahí la experiencia se degrada y el developer queda solo.
¿Por qué Anthropic no mejora la experiencia para developers avanzados?
Mi lectura es de prioridades, no de ignorancia. El segmento enterprise paga más y tiene requerimientos más predecibles. Los developers que empujan los límites son ruidosos pero representan una fracción pequeña del revenue. Eso no quiere decir que no vayan a mejorar esas áreas, pero sí que no son la prioridad hoy.
¿Tiene sentido construir sistemas críticos sobre Claude Code?
Depende de qué tan crítico y de qué tan bien estés dispuesto a instrumentar el sistema. Si vas a depender de Claude Code para algo que no puede fallar, necesitás logging propio, fallbacks, y una comprensión muy clara de los límites. La herramienta no va a hacer ese trabajo por vos. Yo lo aprendí de la manera difícil.
¿El comportamiento de Claude es consistente entre versiones del modelo?
No completamente. Hay regresiones de comportamiento entre versiones que Anthropic no siempre documenta como breaking changes. Un prompt que funcionaba perfecto con claude-3-5-sonnet puede comportarse diferente con la versión siguiente. Para producción, esto es un problema real. La recomendación general (pinear versión del modelo) es correcta pero incompleta: incluso dentro de la misma versión hay variabilidad que no es predecible.
¿Vale la pena el costo de Opus para desarrollo comparado con Sonnet?
Para la mayoría de las tareas de desarrollo cotidiano, no. Sonnet cubre el 85% de los casos a una fracción del costo. Opus vale la pena para razonamiento complejo, arquitectura de sistemas grandes, o cuando necesitás que el modelo mantenga coherencia en contextos muy largos. Pero ese 15% de casos donde Opus genuinamente importa coincide exactamente con los casos donde el diseño actual del producto más te frustra.
Lo que me queda después de 1050 puntos en HN
Miro el score de ese post y pienso: hay mucha gente que tiene algo que decir sobre Claude. El engagement no es casualidad. Es acumulación de experiencia, de opiniones formadas en el uso real.
La paradoja de Anthropic es que construyeron el modelo de IA que más respeto intelectualmente —hay algo en la forma en que Claude razona que todavía me parece genuinamente diferente— y al mismo tiempo un producto que en los bordes me resulta opaco de maneras que me cuestan tiempo y dinero reales.
Recuerdo que la primera vez que entendí Docker de verdad fue cuando migré una app y funcionó en 10 minutos en vez de 2 días. Ese momento de claridad fue posible porque Docker diseñó una interfaz que hacía visible exactamente lo que estaba pasando debajo. El Dockerfile era la documentación. El build log era el debug.
Eso es lo que le falta al Claude que uso en la terminal: hacer visible lo que está pasando debajo. No para todos. Para mí. Para el developer que quiere entender, no solo obtener resultados.
Quizás ese Claude exista en alguna versión futura. Quizás Anthropic decida que ese segmento vale la inversión. Por ahora, sigo construyendo mis propias herramientas de observabilidad encima de la caja negra.
Y eso, en sí mismo, es una declaración de diseño.
Este artículo fue publicado originalmente en juanchi.dev
Top comments (0)