Cómo programo en 2026 #8: Postdata - UI, Limites, Miedos
🇺🇸 Click here to read this article in English.
Después de participar del Claude Code Hack night organizado por LLM Native, me dí cuenta de que habían quedado algunas cosas afuera de la serie que quería mencionar. Así que acá van, sin orden ni criterio alguno.
ASCII para diseñar interfaces
Como comenté antes, empecé a programar en QuickBasic a los 8 años, sin interfaz gráfica, en DOS. En esa época las pocas interfaces que había eran ANSI, con caracteres y colores. Siempre sostuve que usar ASCII para explorar interfaces era una forma digital del lápiz y papel: no prestás atención a cosas que te distraen, solo layout y experiencia de usuario.
Por eso cuando empecé a trabajar con agentes de código fue natural para mí usar ASCII para comunicar ideas de interfaz. Es rápido, no salís de la interfaz del agente, y fuerza a pensar en lo esencial.
Por ejemplo, para una app de orquestación de agentes le doy este prompt:
I'd need to create an ASCII art mockup for an agent orchestration application, it should have the list of agents on the left, we need to put some way to determine if they need attention, in the center we'll see the "selected" agent and a small conversation that you can invent, or maybe we can show a conversation about creating an ASCII art mockup, turtles all the way down.
Y me genera algo así:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Agent Orchestrator [_] [□] [X] │
├──────────────────────┬──────────────────────────────────────────────────────┤
│ AGENTS │ claude-frontend │
│ │ Status: Waiting for input │
│ ● claude-frontend ├──────────────────────────────────────────────────────┤
│ ○ claude-backend │ │
│ ⚠ claude-docs │ YOU: I need an ASCII mockup for an agent │
│ ○ claude-tests │ orchestration app │
│ │ │
│ │ AGENT: I'll create a mockup. What sections │
│ │ do you need? │
│ │ │
│ │ YOU: List of agents on the left, selected │
│ │ agent's conversation in the center │
│ │ │
│ │ AGENT: Perfect. Should agents show status │
│ │ indicators for attention needed? │
│ │ │
│ │ YOU: Yes, something simple like a dot or icon │
│ │ │
│ ├──────────────────────────────────────────────────────┤
│ ────────────────── │ │
│ + New Agent │ > Write your message... [Send] │
│ │ │
└──────────────────────┴──────────────────────────────────────────────────────┘
LEGEND:
● = selected ○ = idle ⚠ = needs attention
Esto es muy útil para layouts web, diagramas de arquitectura, flujos de datos, interfaces CLI, UI de juegos o apps, lo que venga. No solo eso Claude es bastante bueno entendiendo dimensiones, ponele si queres hacer un mockup de una app mobile, te hace el aspect ratio bien, y los tamaños de los objetos tienen sentido.
Límites actuales de los agentes
Seguridad
El código generado por agentes no es confiable para contextos críticos de seguridad. Hace un tiempo leí un estudio de Veracode que testeó más de 100 modelos de lenguaje, no volví a revisar esto con los modelos nuevos pero los resultados eran preocupantes.
- 45% del código generado tiene fallas de seguridad
- El código AI tiene 2.74x más probabilidad de tener vulnerabilidades XSS
- 1.91x más probabilidad de referencias inseguras a objetos
- 1.88x más probabilidad de manejo inseguro de passwords y credenciales
La recomendación es simple: code review manual de las partes críticas y no aprobar ciegamente el código que nos manda. También podemos agregar un paso automatizado de code review enfocado en seguridad, donde damos contexto muy fuerte de los problemas recurrentes (Injection, XSS, etc), pero también hay que hacer revisión manual.
Visual y temporalidad
Incluso usando herramientas como Playwright MCP o Chrome Tools para automatizar el browser y sacar screenshots, hay un límite muy real: la temporalidad.
No es posible testear automáticamente animaciones. Se pueden sacar screenshots y ya. Estoy experimentando con esto en mi motor de juegos LLM-first: tengo la idea de hacer un endpoint MCP donde el LLM pida una serie de frames, y el runtime genere una imagen mosaico con cada frame para expresar animaciones. Pero esto es un workaround, la cuestión temporal no está resuelta, es muy dificil razonar temporalidad con el agente, porque el texto es estático.
Más allá de eso, muchas veces le pasás un mockup y lo que genera es parecido pero no respeta cosas muy básicas que los humanos respetaríamos: tamaños de fuentes, gradientes, proporciones. El razonamiento visual todavía está muy atrasado cuando necesitás precisión. Si no necesitás precisión y solo querés "que haga X", zafa. Pero para cosas cuidadas sigue siendo mejor hacerlo uno.
Otro problema es que comunicar ideas visuales en texto es muy difícil. Por ejemplo, estuve trabajando en un efecto visual en WebGL donde quería una curva muy específica, pero no encontré la forma de explicarle a Claude cómo tenía que ser esa curva, le pasaba mockups y no pegaba una. La terminé implementando a mano editando el código que generó Claude.
Alguien podría pensar en los niños?
Esto es algo que me preocupa realmente...
"When juniors never write real code, will we run out of future seniors who actually understand computers?"
Es duro pensar esto, no se puede predecir cómo se va a dar todo esto, pero las pocas investigaciones al respecto no son muy alentadoras.
Tu cerebro en ChatGPT
El MIT Media Lab publicó un estudio donde usaron EEG para medir la actividad cerebral mientras participantes escribían ensayos. Los dividieron en tres grupos: LLM, Search Engine, y Brain-only (sin herramientas).
Los resultados:
- El grupo LLM mostró la conectividad cerebral más débil
- 83% del grupo ChatGPT no podía recordar puntos clave de sus propios ensayos
- Lo más preocupante: el declive cognitivo continuó después de dejar de usar ChatGPT
El estudio sugiere retrasar la integración de AI hasta haber hecho suficiente esfuerzo cognitivo propio. (Nota: el estudio aún no está peer-reviewed, o sea que puede ser fruta, pero al menos me llama la atención y estoy atento a qué otras cosas surgen).
Captura tecnológica
Hay que ser conscientes de que todo lo que hagamos con agentes va a tender a una pérdida de habilidades y una captura por parte de la tecnología de nuestras capacidades.
Este problema no es nuevo. La tecnología nos captura desde los orígenes de las herramientas. Pero hasta ahora nuestro cerebro estaba bastante a salvo. Con la captura atencional por parte de las redes sociales y la captura de habilidades por parte de la IA, podría ser catastrófico en algunas generaciones.
Por eso creo que hay que usar la IA siendo conscientes de esto, e implementar algún tipo de mitigación que nos permita desarrollar y mantener sanos a nuestros cerebros.
Dicho esto, la IA también es un camino a la liberación de las tareas repetitivas y deshumanizantes. No debuggeo un null pointer exception nunca más en mi vida a mano, no da.
Mitigaciones
Estoy pensando mucho en qué tipo de actividades o formas de mantener el cerebro activo podría implementar, por ahora estoy forzándome a haver code review manual de código crítico (ignoro el boilerplate, y me concentro en funciones importantes), escribiendo lo más que puedo (tengo un journal donde escribo a mano, el blog, y estoy escribiendo una novela de ciencia ficción), usando d10 como tirada de salvación y si sale 9 o 10 hago el issue a mano (si, programar solo es así de aburrido a veces). Y por último y lo más interesante: esforzarse por entender temas difíciles en profundidad. Ahora estoy estudiando un poco de probabilidad y estadística (no es tan dificil) y leyendo a Popper y Deutsch y pensando mucho en las implicancias que tienen sus ideas en la IA.
La clave está en el balance: usar AI para lo que hace bien (tareas repetitivas, boilerplate, exploración rápida) y mantener activas las capacidades que queremos conservar.
Creo que eso era todo lo que me quedó por decir por ahora. Hasta la próxima.