<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/pretty-feed-v3.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>quesocaliente.dev</title><description>quesocaliente.dev es un blog personal de un desarrollador web que comparte sus experiencias y aprendizajes en el mundo de la programación.</description><link>https://www.quesocaliente.dev/</link><item><title>La IA es el medio, no el fin: cómo usarla sin dejar de entender</title><link>https://www.quesocaliente.dev/blog/la-ia-es-el-medio-no-el-fin-como-usarla-sin-dejar-de-entender/</link><guid isPermaLink="true">https://www.quesocaliente.dev/blog/la-ia-es-el-medio-no-el-fin-como-usarla-sin-dejar-de-entender/</guid><description>Un análisis personal sobre cómo integrar la inteligencia artificial en el trabajo diario sin perderse entre tanta información, delegar decisiones a ciegas ni confundir velocidad con aprendizaje.</description><pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { MountainExperienceComparisonDemo } from &quot;@/components/react/ComponentComparison/MountainExperienceComparisonDemo&quot;;&lt;/p&gt;
&lt;h2&gt;Un caso concreto: construir un playground&lt;/h2&gt;
&lt;p&gt;Quería comparar un componente de experiencia de montaña antes y después de una refactorización. La petición parecía sencilla: mostrar el código, permitir editarlo y renderizar el resultado en un sandbox.&lt;/p&gt;
&lt;p&gt;La pieza que se quería comparar era React, pero se usaba desde Astro. Esa diferencia importa. &lt;code&gt;Experience.astro&lt;/code&gt; no es la montaña ni contiene la interacción de las flags. Es el componente de página que prepara los datos y monta &lt;code&gt;MountainExperience&lt;/code&gt; con &lt;code&gt;client:load&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;La relación original se parecía a esto:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Experience.astro
└── MountainExperience.tsx
    ├── Popover.tsx
    ├── icons/FlagIcon.tsx
    └── style.module.css
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;El antes: un consumidor Astro y un componente React&lt;/h3&gt;
&lt;p&gt;En el proyecto, &lt;code&gt;Experience.astro&lt;/code&gt; importaba el componente React así:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
import { MountainExperience } from &quot;../react/MountainExperience/MountainExperience&quot;;
import dataExperiences from &quot;@/utils/data/experience.json&quot;;
---

&amp;lt;MountainExperience client:load experiences={dataExperiences} /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para mostrar el “Antes” en Sandpack había que decidir qué se quería ejecutar. Sandpack podía ejecutar &lt;code&gt;MountainExperience.tsx&lt;/code&gt; con React, pero no el archivo Astro que lo consumía. Por eso el archivo &lt;code&gt;Experience.astro&lt;/code&gt; podía aparecer como referencia en el editor, mientras que el preview necesitaba un &lt;code&gt;App.js&lt;/code&gt; equivalente:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;App.js                  ← punto de entrada ejecutable del sandbox React
MountainExperience.tsx  ← componente original
Popover.tsx             ← dependencia del componente
FlagIcon.tsx            ← dependencia del componente
old-style.module.css    ← estilos originales
Experience.astro        ← referencia del consumidor real
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este es el ejemplo real que acompaña al artículo. El bloque incluye el editor y el preview del “Antes”, además de &lt;code&gt;Experience.astro&lt;/code&gt; como archivo de referencia.&lt;/p&gt;
&lt;p&gt;&amp;lt;MountainExperienceComparisonDemo client:load /&amp;gt;&lt;/p&gt;
&lt;p&gt;La primera propuesta mezcló esos dos entornos. Intentaba ejecutar un componente Astro dentro de un sandbox configurado para React. El archivo podía aparecer en el editor, pero el servidor no sabía cómo arrancarlo. Después de cambiar la plantilla, Astro seguía cayéndose con una página mínima.&lt;/p&gt;
&lt;p&gt;Ese no fue el único problema. El sandbox nuevo no cargaba el SVG de la montaña porque la ruta pública no se resolvía como esperaba. En otra prueba, la navegación interna reemplazaba la página antes de que algunos estilos del playground estuvieran disponibles. El resultado funcionaba después de recargar, pero no al llegar desde el menú.&lt;/p&gt;
&lt;h3&gt;El después: una demo autocontenida&lt;/h3&gt;
&lt;p&gt;El “Después” ya no reutiliza la estructura antigua. &lt;code&gt;MountainExperienceLab.tsx&lt;/code&gt; concentra la interacción, la lista y los estados de selección. &lt;code&gt;style.module.css&lt;/code&gt; contiene sus estilos, y &lt;code&gt;App.js&lt;/code&gt; solo le pasa los datos y el título de la demo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;App.js                    ← consumidor React del sandbox
MountainExperienceLab.tsx ← componente refactorizado
style.module.css           ← estilos del componente
styles.css                 ← estilos generales del preview
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En la página del laboratorio, estos dos bloques pueden colocarse uno debajo del otro: primero el “Antes”, con el árbol y la pantalla del componente original, y después el “Después”, con la versión autocontenida. Así se compara el resultado sin hacer pasar un archivo Astro por un archivo React ejecutable.&lt;/p&gt;
&lt;p&gt;La IA produjo código válido en partes, pero no entendió todas las fronteras del sistema: qué ejecuta Sandpack, qué archivos sirve como públicos, cómo se hidrata un island de Astro y qué ocurre durante una navegación cliente. Leer el diff y reproducir cada fallo fue más útil que pedir otra implementación completa.&lt;/p&gt;
&lt;h2&gt;La pregunta correcta reduce el problema&lt;/h2&gt;
&lt;p&gt;Una respuesta extensa puede abrir más caminos de los que cierra. Añade bibliotecas, patrones y supuestos que no estaban en la pregunta original. En ese punto, pedir otra alternativa suele empeorar la decisión.&lt;/p&gt;
&lt;p&gt;Antes de usar IA conviene escribir tres cosas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Qué resultado debe ver la persona usuaria.&lt;/li&gt;
&lt;li&gt;Qué tecnología y archivos forman parte del problema.&lt;/li&gt;
&lt;li&gt;Cómo sabremos que la solución funciona.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;En el playground, esa tercera respuesta podía ser concreta: el sandbox debía iniciar, el componente debía mostrar la montaña, el SVG debía cargar y la navegación desde el menú debía conservar los estilos. La IA debería reducir una incertidumbre concreta, no acumular posibilidades.&lt;/p&gt;
&lt;h2&gt;Comprender no significa hacerlo todo a mano&lt;/h2&gt;
&lt;p&gt;No hace falta escribir cada línea para revisar un cambio. Sí hace falta entender lo suficiente para hacer preguntas útiles y detectar una solución que solo funciona en el caso feliz.&lt;/p&gt;
&lt;p&gt;En el ejemplo anterior, conocer la diferencia entre un archivo fuente y un archivo ejecutable permitió separar dos necesidades. &lt;code&gt;Experience.astro&lt;/code&gt; podía mostrarse como referencia, pero no podía ejecutarse dentro de un sandbox React. También hizo falta distinguir entre una ruta de importación y una URL pública. Son detalles pequeños, pero de ellos dependía que la demo funcionara.&lt;/p&gt;
&lt;p&gt;Cuando todavía estás aprendiendo una tecnología, la IA puede servir para explorar. Pídele una explicación, un ejemplo pequeño y una forma de comprobarlo. Cuando ya conoces el entorno, puede preparar una implementación más amplia. En ambos casos, la revisión sigue siendo tuya.&lt;/p&gt;
&lt;h2&gt;La explicación no es la prueba&lt;/h2&gt;
&lt;p&gt;Una respuesta bien redactada puede ser falsa, contradictoria o estar respaldada por referencias inexistentes. El &lt;a href=&quot;https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=958388&quot;&gt;perfil de riesgos de IA generativa de NIST&lt;/a&gt; incluye la producción de contenido erróneo o inconsistente entre los riesgos de estos sistemas.&lt;/p&gt;
&lt;p&gt;En software, que el código compile tampoco basta. Hay que mirar el diff, abrir la pantalla, probar los casos importantes y repetir el recorrido que fallaba. En este caso, la prueba decisiva no era &quot;el componente compila&quot;. Era entrar al laboratorio desde la navegación y comprobar que el editor, el preview, el SVG y los estilos aparecían juntos.&lt;/p&gt;
&lt;p&gt;Una explicación de la IA puede señalar dónde mirar. No puede reemplazar esa comprobación.&lt;/p&gt;
&lt;h2&gt;Un flujo corto para trabajar con IA&lt;/h2&gt;
&lt;p&gt;Este proceso me resulta suficiente para cambios de este tamaño:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Definir:&lt;/strong&gt; escribir el resultado esperado y el contexto que no puede perderse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Acotar:&lt;/strong&gt; separar los archivos que puede modificar de los que solo debe consultar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dividir:&lt;/strong&gt; pedir primero una parte que pueda ejecutarse o revisarse por separado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inspeccionar:&lt;/strong&gt; leer el diff y comprobar que no aparecieron decisiones nuevas sin explicar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificar:&lt;/strong&gt; ejecutar la prueba que representa el riesgo real, incluida la navegación o el caso límite.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decidir:&lt;/strong&gt; aceptar, corregir o descartar según la evidencia.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La productividad de estas herramientas depende de la tarea y del entorno. En un experimento controlado sobre una tarea acotada, quienes usaron GitHub Copilot terminaron un &lt;strong&gt;55,8 % más rápido&lt;/strong&gt; (&lt;a href=&quot;https://arxiv.org/abs/2302.06590&quot;&gt;Peng et al., 2023&lt;/a&gt;). En cambio, un ensayo de METR con desarrolladores experimentados en repositorios maduros encontró que el uso de herramientas de IA aumentó el tiempo de resolución en un &lt;strong&gt;19 %&lt;/strong&gt;, aunque los participantes creían haber sido más rápidos (&lt;a href=&quot;https://arxiv.org/abs/2507.09089&quot;&gt;Becker et al., 2025&lt;/a&gt;). Son resultados de escenarios concretos, no una promesa general.&lt;/p&gt;
&lt;p&gt;Antes de aceptar un resultado, comprueba:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;¿Resuelve el problema definido?&lt;/li&gt;
&lt;li&gt;¿Respeta las tecnologías y los límites del proyecto?&lt;/li&gt;
&lt;li&gt;¿Puedo explicar las decisiones importantes?&lt;/li&gt;
&lt;li&gt;¿Probé el comportamiento que más riesgo tiene?&lt;/li&gt;
&lt;li&gt;¿Sé qué queda sin verificar?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La IA puede escribir más rápido que nosotros. La decisión de qué conservar sigue necesitando una persona que entienda el problema.&lt;/p&gt;
</content:encoded><category>Inteligencia Artificial</category><category>Desarrollo de software</category><category>Productividad</category><category>Aprendizaje</category><category>Pensamiento crítico</category></item></channel></rss>