<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Blog ITDO - Agencia de desarrollo Web, APPs y Marketing en Barcelona]]></title><description><![CDATA[Blog de ITDO - Agencia digital de desarrollo Web, APPs, Transformación y Marketing Digital en Barcelona]]></description><link>https://www.itdo.com/blog/</link><image><url>https://www.itdo.com/blog/favicon.png</url><title>Blog ITDO - Agencia de desarrollo Web, APPs y Marketing en Barcelona</title><link>https://www.itdo.com/blog/</link></image><generator>Ghost 5.80</generator><lastBuildDate>Tue, 11 Aug 2026 08:00:04 GMT</lastBuildDate><atom:link href="https://www.itdo.com/blog/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Arquitectura backend: El Monolito modular en 2026]]></title><description><![CDATA[Durante casi una década, la respuesta por defecto a cualquier problema de arquitectura de software fue la misma: microservicios.]]></description><link>https://www.itdo.com/blog/arquitectura-backend-el-monolito-modular-en-2026/</link><guid isPermaLink="false">6a743c13f87e750664d5e2cd</guid><category><![CDATA[Microservicios]]></category><category><![CDATA[Aplicaciones Monolíticas]]></category><category><![CDATA[Desarrollo]]></category><dc:creator><![CDATA[Sergio Vergara]]></dc:creator><pubDate>Tue, 11 Aug 2026 08:00:02 GMT</pubDate><media:content url="https://www.itdo.com/blog/content/images/2026/08/ITDO-arquitectura-backend-el-monolito-modular-en-2026.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.itdo.com/blog/content/images/2026/08/ITDO-arquitectura-backend-el-monolito-modular-en-2026.jpg" alt="Arquitectura backend: El Monolito modular en 2026"><p>La realidad de la producci&#xF3;n ha demostrado que para el 90% de los productos digitales, la micro-servicializaci&#xF3;n prematura introdujo una complejidad operativa desmedida, costes de infraestructura elevados y la temida latencia de red en llamadas distribuidas.</p><p>En 2026, las organizaciones tecnol&#xF3;gicas m&#xE1;s eficientes est&#xE1;n adoptando una estrategia hacia el retorno del monolito, pero en este caso modular.</p><p>Un monolito modular ofrece la simplicidad de despliegue, refactorizaci&#xF3;n y prueba de un sistema unificado, combinada con el aislamiento riguroso y la claridad de l&#xED;mites que hicieron atractivos a los microservicios.</p><h2 id="1-el-coste-oculto-del-microservicio-prematuro">1. El coste oculto del Microservicio prematuro</h2><p>El modelo distribuido promete escalabilidad independiente, pero impone un &quot;impuesto de complejidad&quot; desde el d&#xED;a uno:</p><ul><li><strong>Complejidad de red vs. Llamadas en memoria:</strong> Una llamada entre m&#xF3;dulos dentro de la misma aplicaci&#xF3;n tarda microsegundos ($\mu s$). Un salto de red entre dos microservicios a&#xF1;ade de 5 a 50 milisegundos ($ms$), adem&#xE1;s del riesgo de fallos de red.</li><li><strong>Consistencia eventual e inconsistencia de datos:</strong> Gestionar transacciones que involucran m&#xFA;ltiples bases de datos requiere patrones complejos como <em>Saga</em> o dos fases de <em>commit</em> (2PC), multiplicando el riesgo de bugs silenciosos.</li><li><strong>Carga cognitiva y Ops:</strong> Mantener decenas de pipelines de CI/CD, cl&#xFA;steres de Kubernetes y mapas de trazabilidad distribuida para un equipo de ingenier&#xED;a mediano consume tiempo que deber&#xED;a dedicarse al valor de negocio.</li></ul><h2 id="2-anatom%C3%ADa-de-un-monolito-modular-exitoso">2. Anatom&#xED;a de un monolito modular exitoso</h2><p>Un monolito modular no es una &apos;<em>Big Ball of Mud&apos;</em>. Es un &#xFA;nico ejecutable, un &#xFA;nico despliegue, cuya base de c&#xF3;digo est&#xE1; estrictamente dividida en m&#xF3;dulos independientes que reflejan los dominios de negocio (<a href="https://www.itdo.com/blog/como-abordar-un-nuevo-proyecto-de-desarrollo-de-software-de-forma-eficiente/" rel="noreferrer">Bounded Contexts de DDD</a>).</p><pre><code>/src
  /Billing         --&gt; Bounded Context: Facturaci&#xF3;n
    /Domain        --&gt; Reglas puras de negocio
    /Infrastructure --&gt; Persistencia (SQL), adaptadores
    /PublicApi     --&gt; &#xDA;nica interfaz expuesta a otros m&#xF3;dulos
  /Orders          --&gt; Bounded Context: Pedidos
  /Users           --&gt; Bounded Context: Usuarios
</code></pre><h3 id="las-3-reglas-para-un-monolito-modular">Las 3 reglas para un monolito modular:</h3><ol><li><strong>Aislamiento de m&#xF3;dulos:</strong> El m&#xF3;dulo <code>Orders</code> jam&#xE1;s puede instanciar o acceder directamente a las clases internas del m&#xF3;dulo <code>Billing</code>. Solo puede comunicarse a trav&#xE9;s de eventos.</li><li><strong>L&#xED;mites en la base de datos:</strong> Aunque compartan la misma instancia de base de datos (para simplificar operaciones), cada m&#xF3;dulo es due&#xF1;o exclusivo de sus tablas. Est&#xE1; prohibido realizar <code>JOINs</code> entre tablas de m&#xF3;dulos diferentes. Si un m&#xF3;dulo necesita datos de otro, debe solicitarlos por contrato o sincronizarlos mediante eventos internos.</li><li><strong>Invocaci&#xF3;n en memoria:</strong> Las comunicaciones entre m&#xF3;dulos son llamadas a funciones en memoria altamente eficientes, eliminando la latencia de red y la serializaci&#xF3;n JSON.</li></ol><h2 id="3-estrategias-de-comunicaci%C3%B3n-de-s%C3%ADncrono-a-eventos-in-memory">3. Estrategias de comunicaci&#xF3;n: De s&#xED;ncrono a eventos In-memory</h2><p>Para mantener los m&#xF3;dulos desacoplados, la comunicaci&#xF3;n entre ellos adopta dos patrones dentro del mismo proceso:</p><pre><code>[M&#xF3;dulo Orders] --(Invocaci&#xF3;n directa de Interfaz)--&gt; [Billing Public API] (S&#xED;ncrono en memoria)
[M&#xF3;dulo Orders] --(Publica OrderPlacedEvent)--------&gt; [Internal Event Bus] --&gt; [M&#xF3;dulo Shipping] (As&#xED;ncrono en memoria)
</code></pre><ul><li><strong>Interfaz p&#xFA;blica (S&#xED;ncrona):</strong> M&#xE9;todos simples expuestos por el m&#xF3;dulo receptor que devuelven DTOs (<em>Data Transfer Objects</em>) puros.</li><li><strong>Eventos de dominio en memoria (As&#xED;ncronos):</strong> Cuando ocurre un cambio relevante (<code>OrderPlaced</code>), el m&#xF3;dulo emite un evento interno. Un gestor de eventos en memoria (<em>In-Memory Event Bus</em>) notifica a los suscriptores sin requerir infraestructura externa como Kafka o RabbitMQ en etapas iniciales.</li></ul><h2 id="4-la-ruta-de-salida">4. La ruta de salida</h2><p><strong>La mayor ventaja estrat&#xE9;gica del monolito modular es que es la mejor rampa de lanzamiento hacia los microservicios.</strong></p><p>Si el d&#xED;a de ma&#xF1;ana el m&#xF3;dulo <code>Billing</code> requiere escalar horizontalmente por un pico masivo de carga independiente, extraerlo a un microservicio independiente es trivial, sus l&#xED;mites de c&#xF3;digo, sus contratos y sus l&#xED;mites de base de datos ya est&#xE1;n completamente definidos e aislados.</p><h2 id="conclusi%C3%B3n">Conclusi&#xF3;n</h2><p>El monolito modular representa la madurez de la ingenier&#xED;a de software moderna, priorizar la simplicidad operativa y la velocidad de desarrollo sin sacrificar el buen dise&#xF1;o. Permite a los equipos centrarse en el producto, mantener costes de infraestructura contenidos y evolucionar la arquitectura de manera pragm&#xE1;tica.</p><p>En el pr&#xF3;ximo art&#xED;culo analizaremos c&#xF3;mo dar el siguiente paso, la<strong> Capa As&#xED;ncrona (Event-Driven Architecture)</strong> para gestionar tareas pesadas y tr&#xE1;fico masivo sin bloquear la experiencia del usuario.</p>]]></content:encoded></item><item><title><![CDATA[Diseño para atención fragmentada]]></title><description><![CDATA[Una interacción de cinco segundos no tiene por qué ser una experiencia incompleta. Puede ofrecer la información necesaria, permitir una decisión clara y respetar el contexto en el que se encuentra la persona.]]></description><link>https://www.itdo.com/blog/diseno-para-atencion-fragmentada/</link><guid isPermaLink="false">6a671a5ff87e750664d5e1fa</guid><category><![CDATA[Diseño]]></category><category><![CDATA[Atención]]></category><category><![CDATA[Experiencia digital]]></category><dc:creator><![CDATA[Chiyana Simões]]></dc:creator><pubDate>Mon, 10 Aug 2026 08:00:30 GMT</pubDate><media:content url="https://www.itdo.com/blog/content/images/2026/07/itdo-diseno-atencion-fragmentada.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.itdo.com/blog/content/images/2026/07/itdo-diseno-atencion-fragmentada.png" alt="Dise&#xF1;o para atenci&#xF3;n fragmentada"><p>Durante mucho tiempo, muchas <a href="https://www.itdo.com/blog/tag/experiencia-digital/"><u>experiencias digitales</u></a> se dise&#xF1;aron pensando en sesiones relativamente completas: una persona entra en una aplicaci&#xF3;n, dispone de unos minutos, consulta informaci&#xF3;n y termina una tarea de principio a fin.</p><p>Ese contexto sigue existiendo, pero ya no es el &#xFA;nico.</p><p>Cada vez m&#xE1;s interacciones ocurren en momentos breves y fragmentados: al consultar una notificaci&#xF3;n, responder desde la pantalla de bloqueo, revisar un dato mientras se realiza otra tarea o completar una acci&#xF3;n r&#xE1;pida desde el m&#xF3;vil. La persona no siempre llega con toda su atenci&#xF3;n disponible ni con intenci&#xF3;n de permanecer mucho tiempo.</p><p>Dise&#xF1;ar para estos momentos no consiste en reducirlo todo al m&#xED;nimo ni en asumir que el usuario no quiere pensar. Consiste en reconocer que el tiempo, el contexto y el nivel de atenci&#xF3;n cambian, y que la interfaz debe ayudar a avanzar sin exigir una concentraci&#xF3;n que quiz&#xE1; no est&#xE1; disponible.</p><p>Esto obliga a plantear una pregunta distinta. No solo qu&#xE9; puede hacer una persona dentro del producto, sino qu&#xE9; necesita entender y resolver en los pocos segundos que tiene ahora.</p><p>Cuando este cambio de enfoque se aplica bien, la experiencia deja de depender de sesiones largas y empieza a adaptarse mejor a la forma real en que las personas utilizan los productos digitales.</p><h2 id="atenci%C3%B3n-fragmentada-no-significa-falta-de-inter%C3%A9s">Atenci&#xF3;n fragmentada no significa falta de inter&#xE9;s</h2><p>Una interacci&#xF3;n breve no siempre indica desinter&#xE9;s. Muchas veces, la persona s&#xED; quiere avanzar, pero lo hace en un contexto con poco tiempo, interrupciones o atenci&#xF3;n compartida.</p><p>No es lo mismo dise&#xF1;ar para alguien distra&#xED;do que para alguien ocupado. En el primer caso, quiz&#xE1; sea necesario reforzar la orientaci&#xF3;n y reducir est&#xED;mulos. En el segundo, lo importante es facilitar una acci&#xF3;n concreta sin obligar a recorrer informaci&#xF3;n que no necesita en ese momento.</p><p>Confundir ambas situaciones puede llevar a simplificar demasiado la experiencia, ocultar opciones relevantes o tratar al usuario como si no pudiera tomar decisiones. La brevedad no deber&#xED;a eliminar el contexto necesario para entender qu&#xE9; est&#xE1; ocurriendo y qu&#xE9; consecuencias tendr&#xE1; una acci&#xF3;n.</p><p>El dise&#xF1;o debe adaptarse al momento sin rebajar la calidad de la interacci&#xF3;n. Esto implica priorizar la informaci&#xF3;n, presentar decisiones claras y permitir que quien necesite m&#xE1;s contexto pueda acceder a &#xE9;l sin bloquear a quien solo quiere completar una tarea r&#xE1;pida.</p><p>Dise&#xF1;ar para una atenci&#xF3;n fragmentada no significa pensar menos por el usuario, sino ayudarle a concentrar su atenci&#xF3;n en lo que realmente importa en ese instante.</p><h2 id="una-interacci%C3%B3n-breve-necesita-un-objetivo-claro">Una interacci&#xF3;n breve necesita un objetivo claro</h2><p>Cuanto menos tiempo tiene una persona, m&#xE1;s claro debe ser el prop&#xF3;sito de la interacci&#xF3;n. Una pantalla, una notificaci&#xF3;n o una acci&#xF3;n r&#xE1;pida no deber&#xED;a obligarla a interpretar qu&#xE9; est&#xE1; ocurriendo ni a descubrir qu&#xE9; se espera de ella.</p><p>En pocos segundos, la interfaz debe responder a tres preguntas: qu&#xE9; ha pasado, qu&#xE9; se puede hacer ahora y qu&#xE9; ocurrir&#xE1; despu&#xE9;s. Cuando alguna de estas respuestas no est&#xE1; clara, incluso una tarea sencilla puede generar dudas, errores o abandonos.</p><p>Esto exige eliminar mensajes ambiguos, acciones poco descriptivas y opciones con consecuencias dif&#xED;ciles de anticipar. Un bot&#xF3;n como &#xAB;Continuar&#xBB; puede ser insuficiente si no explica si la acci&#xF3;n confirmar&#xE1; una compra, enviar&#xE1; informaci&#xF3;n o llevar&#xE1; a una nueva pantalla.</p><p>La claridad no depende de a&#xF1;adir m&#xE1;s texto, sino de mostrar la informaci&#xF3;n adecuada en el momento correcto. Un mensaje directo, una acci&#xF3;n principal reconocible y una consecuencia comprensible pueden convertir una interacci&#xF3;n breve en una experiencia segura y eficaz.</p><p>Dise&#xF1;ar para pocos segundos significa reducir el esfuerzo necesario para comprender la situaci&#xF3;n, no reducir la informaci&#xF3;n que la persona necesita para decidir.</p><h2 id="reducir-pasos-sin-eliminar-decisiones-importantes">Reducir pasos sin eliminar decisiones importantes</h2><p>Simplificar una interacci&#xF3;n no significa eliminar cualquier paso que parezca prescindible. Algunos existen para ayudar a comprender una decisi&#xF3;n, revisar informaci&#xF3;n o evitar consecuencias no deseadas.</p><p>El problema aparece cuando la b&#xFA;squeda de rapidez lleva a ocultar condiciones, seleccionar opciones por defecto o ejecutar acciones sin una confirmaci&#xF3;n suficiente. Un recorrido puede ser muy corto y, al mismo tiempo, resultar confuso o poco transparente.</p><p>La simplificaci&#xF3;n deber&#xED;a centrarse en reducir repeticiones, eliminar campos innecesarios y anticipar informaci&#xF3;n &#xFA;til. No en suprimir decisiones que afectan al coste, la privacidad, la seguridad o el resultado final de la tarea.</p><p>Tambi&#xE9;n conviene diferenciar entre acciones reversibles y acciones dif&#xED;ciles de deshacer. En las primeras, puede ser &#xFA;til permitir una ejecuci&#xF3;n r&#xE1;pida y ofrecer despu&#xE9;s la opci&#xF3;n de corregirla. En las segundas, una pausa breve para revisar o confirmar puede evitar errores importantes.</p><p>Dise&#xF1;ar interacciones r&#xE1;pidas no consiste en hacer que la persona avance a cualquier precio, sino en ayudarla a decidir con claridad utilizando el menor esfuerzo posible.</p><h2 id="dise%C3%B1ar-continuidad-entre-momentos">Dise&#xF1;ar continuidad entre momentos</h2><p>Las interacciones breves no siempre permiten terminar una tarea. Una llamada, un cambio de contexto o la falta de tiempo pueden interrumpir el proceso antes de completarlo. Por eso, el dise&#xF1;o tambi&#xE9;n debe facilitar la vuelta.</p><p>Guardar autom&#xE1;ticamente el progreso, conservar los datos introducidos y mostrar con claridad en qu&#xE9; punto se qued&#xF3; la persona evita que tenga que empezar de nuevo. Al retomar la tarea, la interfaz deber&#xED;a recordarle qu&#xE9; estaba haciendo, qu&#xE9; pasos ha completado y qu&#xE9; queda pendiente.</p><p>Esta continuidad tambi&#xE9;n debe mantenerse entre dispositivos y canales. Una gesti&#xF3;n iniciada desde una notificaci&#xF3;n puede necesitar completarse m&#xE1;s tarde en la aplicaci&#xF3;n o en la web, sin perder informaci&#xF3;n ni obligar a repetir decisiones.</p><p>Las interrupciones forman parte del uso real de los productos digitales. Dise&#xF1;ar para ellas no significa alargar los recorridos, sino asegurar que una pausa no se convierta en p&#xE9;rdida de progreso, contexto o confianza.</p><h2 id="notificaciones-widgets-y-acciones-r%C3%A1pidas-con-criterio">Notificaciones, widgets y acciones r&#xE1;pidas con criterio</h2><p>Las notificaciones, los widgets y las acciones r&#xE1;pidas pueden reducir mucho la fricci&#xF3;n cuando muestran informaci&#xF3;n relevante o permiten resolver una tarea sin abrir por completo la aplicaci&#xF3;n. Pero tambi&#xE9;n pueden convertirse f&#xE1;cilmente en una fuente constante de interrupciones.</p><p>Para que estas superficies aporten valor, deben responder a una necesidad concreta. No todo cambio merece una notificaci&#xF3;n, ni toda funci&#xF3;n necesita estar disponible como acceso r&#xE1;pido. La prioridad deber&#xED;a depender de la urgencia, la relevancia y la utilidad real para la persona.</p><p>La frecuencia tambi&#xE9;n importa. Incluso un mensaje &#xFA;til pierde valor si aparece demasiadas veces o en momentos inadecuados. Agrupar avisos, evitar repeticiones y respetar los periodos de silencio ayuda a mantener la atenci&#xF3;n sin saturarla.</p><p>Adem&#xE1;s, el usuario debe conservar el control. Poder elegir qu&#xE9; avisos recibe, ajustar su frecuencia o desactivar determinados accesos refuerza la confianza y evita que la conveniencia se convierta en invasi&#xF3;n.</p><p>Estas superficies funcionan mejor cuando ahorran tiempo sin reclamar atenci&#xF3;n innecesaria. Su objetivo no deber&#xED;a ser atraer a la persona de vuelta al producto, sino ayudarla a resolver algo importante en el momento adecuado.</p><h2 id="conclusi%C3%B3n">Conclusi&#xF3;n</h2><p>Una interacci&#xF3;n de cinco segundos no tiene por qu&#xE9; ser una experiencia incompleta. Puede ofrecer la informaci&#xF3;n necesaria, permitir una decisi&#xF3;n clara y respetar el contexto en el que se encuentra la persona.</p><p>La brevedad funciona cuando responde a una necesidad concreta. Esto exige priorizar bien, reducir fricci&#xF3;n y mostrar las consecuencias de cada acci&#xF3;n sin obligar a recorrer pasos innecesarios. Tambi&#xE9;n implica reconocer cu&#xE1;ndo una tarea necesita m&#xE1;s tiempo y facilitar que pueda retomarse despu&#xE9;s.</p><p>Dise&#xF1;ar para una atenci&#xF3;n fragmentada no consiste en empobrecer la experiencia, sino en adaptarla a momentos distintos. Algunas personas querr&#xE1;n resolver algo de inmediato; otras necesitar&#xE1;n m&#xE1;s contexto antes de decidir. Un buen dise&#xF1;o permite ambas posibilidades sin a&#xF1;adir ruido ni presi&#xF3;n.</p><p>La calidad de una interacci&#xF3;n no depende de cu&#xE1;nto dura, sino de si ayuda a comprender, decidir y avanzar con confianza.</p><p><strong>&#xBF;Qu&#xE9; interacci&#xF3;n de tu producto podr&#xED;a resolverse en pocos segundos sin perder claridad, contexto ni control para el usuario?</strong></p>]]></content:encoded></item><item><title><![CDATA[El marketing también necesita vacaciones]]></title><description><![CDATA[Una marca no pierde relevancia por guardar silencio durante unos días. Puede perderla cuando habla constantemente sin tener nada que decir.]]></description><link>https://www.itdo.com/blog/el-marketing-tambien-necesita-vacaciones/</link><guid isPermaLink="false">6a6b276df87e750664d5e232</guid><category><![CDATA[Marketing Digital]]></category><category><![CDATA[Verano]]></category><dc:creator><![CDATA[Chiyana Simões]]></dc:creator><pubDate>Thu, 06 Aug 2026 08:00:23 GMT</pubDate><media:content url="https://www.itdo.com/blog/content/images/2026/07/itdo-marketing-vacaciones.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.itdo.com/blog/content/images/2026/07/itdo-marketing-vacaciones.jpg" alt="El marketing tambi&#xE9;n necesita vacaciones"><p>Llega agosto y el ritmo cambia.</p><p>Parte del equipo est&#xE1; de vacaciones, disminuyen las reuniones, algunos proyectos se ralentizan y muchas decisiones quedan aplazadas hasta septiembre. Sin embargo, el calendario de contenidos contin&#xFA;a avanzando como si nada hubiera cambiado.</p><p>El martes sigue necesitando una publicaci&#xF3;n. El jueves todav&#xED;a espera un art&#xED;culo. Las redes sociales mantienen sus espacios vac&#xED;os y alguien siente que debe llenarlos.</p><p>As&#xED;, muchas marcas contin&#xFA;an comunicando por inercia. No porque tengan una novedad importante, una idea especialmente &#xFA;til o una conversaci&#xF3;n en la que puedan aportar algo, sino porque existe una planificaci&#xF3;n previa que indica que ese d&#xED;a toca publicar.</p><p>Cumplir el calendario puede ofrecer una sensaci&#xF3;n de orden y constancia. Tambi&#xE9;n evita que la marca desaparezca durante varias semanas. Pero cuando el objetivo principal pasa a ser ocupar un espacio, el contenido corre el riesgo de convertirse en una obligaci&#xF3;n desconectada de su prop&#xF3;sito.</p><p>Aparecen entonces publicaciones que repiten mensajes ya utilizados, efem&#xE9;rides con una relaci&#xF3;n d&#xE9;bil con la actividad de la organizaci&#xF3;n o piezas gen&#xE9;ricas que podr&#xED;an pertenecer a cualquier marca. El contenido existe, pero cuesta identificar por qu&#xE9; deb&#xED;a publicarse precisamente ahora.</p><p>El problema no es que una organizaci&#xF3;n mantenga su comunicaci&#xF3;n durante el verano. Agosto tambi&#xE9;n puede contener historias, aprendizajes y oportunidades relevantes. La cuesti&#xF3;n es si cada publicaci&#xF3;n responde a una intenci&#xF3;n o &#xFA;nicamente a una casilla pendiente.</p><p>Porque una estrategia de contenidos no deber&#xED;a consistir en hablar siempre, sino en saber por qu&#xE9; hablamos.</p><p>La pregunta, por tanto, es sencilla: &#xBF;publicamos porque tenemos algo que aportar o porque el calendario indica que debemos hacerlo?</p><h2 id="constancia-no-significa-presencia-permanente">Constancia no significa presencia permanente</h2><p>Durante a&#xF1;os, muchas estrategias de contenido han asociado la constancia con una frecuencia estable: publicar varias veces por semana, mantener activos todos los canales y evitar cualquier periodo de silencio.</p><p>Pero ser constante no significa estar presente de forma permanente.</p><p>Una marca es constante cuando mantiene una direcci&#xF3;n reconocible a lo largo del tiempo. Cuando su voz, sus prioridades y la manera en que se relaciona con su audiencia conservan una cierta coherencia, aunque el ritmo de publicaci&#xF3;n cambie.</p><p>La frecuencia puede formar parte de esa constancia, pero no deber&#xED;a ser su &#xFA;nica medida.</p><p>Publicar todos los d&#xED;as no garantiza una estrategia s&#xF3;lida si los mensajes son repetitivos, improvisados o desconectados entre s&#xED;. Del mismo modo, reducir temporalmente la actividad no significa necesariamente perder relevancia si la marca contin&#xFA;a comunicando con claridad cuando tiene algo importante que decir.</p><p>La relaci&#xF3;n con una audiencia no se construye &#xFA;nicamente mediante la acumulaci&#xF3;n de publicaciones. Tambi&#xE9;n depende de la confianza, de la utilidad de los contenidos y de la capacidad de mantener una identidad reconocible.</p><p>Una marca puede bajar el ritmo durante algunas semanas sin desaparecer. Puede priorizar menos piezas, elegir mejor los temas o concentrar sus esfuerzos en aquellos canales que siguen teniendo sentido durante ese periodo.</p><p>Lo importante es que la reducci&#xF3;n sea consciente y no una consecuencia del abandono.</p><p>La constancia no consiste en llenar cada espacio disponible, sino en sostener una forma de estar presente que la audiencia pueda reconocer, incluso cuando la marca decide hablar menos.</p><h2 id="el-contenido-producido-por-inercia">El contenido producido por inercia</h2><p>El contenido producido por inercia no siempre es f&#xE1;cil de reconocer.</p><p>Puede estar bien dise&#xF1;ado, respetar el tono de la marca y publicarse en el momento previsto. A simple vista, cumple con todo lo que se esperaba de &#xE9;l. Sin embargo, cuando intentamos identificar qu&#xE9; aporta, la respuesta resulta menos evidente.</p><p>Una de las se&#xF1;ales m&#xE1;s habituales es la repetici&#xF3;n. La marca vuelve sobre ideas que ya ha compartido, pero sin a&#xF1;adir una nueva perspectiva, un dato, una experiencia o una conclusi&#xF3;n distinta. El mensaje cambia de formato, aunque el contenido permanezca pr&#xE1;cticamente igual.</p><p>Tambi&#xE9;n ocurre cuando se recurre a efem&#xE9;rides sin una relaci&#xF3;n real con la actividad, los valores o la comunidad de la organizaci&#xF3;n. La fecha ofrece una excusa para publicar, pero no una raz&#xF3;n suficiente para participar en la conversaci&#xF3;n.</p><p>Otra se&#xF1;al aparece en los mensajes gen&#xE9;ricos. Frases sobre innovaci&#xF3;n, compromiso, excelencia o futuro que podr&#xED;an pertenecer a cualquier empresa y que no ayudan a comprender qu&#xE9; hace diferente a esa marca, qu&#xE9; ha aprendido o qu&#xE9; posici&#xF3;n quiere defender.</p><p>La inercia tambi&#xE9;n mantiene vivos formatos que dejaron de funcionar hace tiempo. Se contin&#xFA;an produciendo porque forman parte de la rutina, aunque ya no generen inter&#xE9;s, conversaci&#xF3;n ni una respuesta significativa por parte de la audiencia.</p><p>En todos estos casos, el contenido ocupa espacio, pero no aporta utilidad, emoci&#xF3;n ni conocimiento. Mantiene activo el canal, aunque no fortalece necesariamente la relaci&#xF3;n con quienes lo siguen.</p><p>El problema no es publicar poco. Una frecuencia reducida puede ser suficiente cuando cada pieza tiene una intenci&#xF3;n clara. El verdadero problema es dedicar tiempo y recursos a producir contenidos que nadie echar&#xED;a de menos si no existieran.</p><h2 id="mantener-la-actividad-no-siempre-mantiene-la-relevancia">Mantener la actividad no siempre mantiene la relevancia</h2><p>Una frecuencia elevada puede transmitir sensaci&#xF3;n de movimiento. El canal est&#xE1; activo, las publicaciones se suceden y la marca parece estar presente de forma constante.</p><p>Pero actividad y relevancia no son lo mismo.</p><p>Publicar con frecuencia puede aumentar las oportunidades de aparecer ante la audiencia, aunque no garantiza que esa presencia despierte atenci&#xF3;n, inter&#xE9;s o conexi&#xF3;n. Una marca puede comunicar mucho y, aun as&#xED;, decir muy poco.</p><p>Cuando cada d&#xED;a aparece un nuevo mensaje sin una raz&#xF3;n clara, el contenido empieza a confundirse con el ruido. La audiencia aprende r&#xE1;pidamente qu&#xE9; publicaciones merecen detenerse y cu&#xE1;les puede ignorar sin perder nada importante.</p><p>Ese aprendizaje tiene consecuencias. Si una marca acostumbra a publicar piezas previsibles, gen&#xE9;ricas o poco &#xFA;tiles, sus seguidores dejan de esperar algo valioso de ella. Ya no eval&#xFA;an cada contenido por separado: anticipan que probablemente no les aportar&#xE1; demasiado y pasan de largo.</p><p>La relevancia no depende &#xFA;nicamente de ocupar espacio en el calendario ni de mantener una visibilidad continua. Depende de la capacidad de aparecer con una idea, una historia, una informaci&#xF3;n o una perspectiva que justifique la atenci&#xF3;n solicitada.</p><p>Esto no significa que cada publicaci&#xF3;n tenga que ser extraordinaria. Pero s&#xED; deber&#xED;a existir una raz&#xF3;n reconocible para compartirla: resolver una duda, explicar algo complejo, abrir una conversaci&#xF3;n, mostrar una experiencia o ayudar a la audiencia a comprender mejor un tema.</p><p>A veces, reducir la frecuencia puede incluso mejorar la percepci&#xF3;n de una marca. Cuando hay menos contenido, cada pieza puede recibir m&#xE1;s cuidado, responder a una intenci&#xF3;n m&#xE1;s clara y resultar m&#xE1;s f&#xE1;cil de distinguir entre todo lo que compite por la atenci&#xF3;n.</p><p>La presencia constante puede mantener un canal activo. La relevancia, en cambio, se construye cuando una marca aparece con algo que merece ser escuchado.</p><h2 id="reducir-el-ritmo-sin-desaparecer">Reducir el ritmo sin desaparecer</h2><p>Reducir la actividad no tiene por qu&#xE9; significar abandonar la comunicaci&#xF3;n.</p><p>Una pausa puede formar parte de la estrategia cuando responde a una decisi&#xF3;n consciente: adaptar el ritmo al contexto, concentrar los recursos disponibles y evitar producir contenidos &#xFA;nicamente para mantener una apariencia de continuidad.</p><p>Durante agosto, una marca puede disminuir la frecuencia sin dejar de estar presente. En lugar de sostener el mismo calendario del resto del a&#xF1;o, puede seleccionar mejor los temas, espaciar las publicaciones y reservar la energ&#xED;a del equipo para aquellas comunicaciones que realmente necesitan atenci&#xF3;n.</p><p>Tambi&#xE9;n puede priorizar formatos m&#xE1;s sencillos. No todas las ideas requieren una campa&#xF1;a completa, un v&#xED;deo elaborado o una producci&#xF3;n especialmente compleja. Una reflexi&#xF3;n breve, una recomendaci&#xF3;n &#xFA;til o una actualizaci&#xF3;n clara pueden resultar m&#xE1;s adecuadas para un periodo en el que tanto la audiencia como los equipos trabajan a otro ritmo.</p><p>Otra posibilidad consiste en recuperar contenidos que siguen siendo relevantes. Un art&#xED;culo, una gu&#xED;a o un recurso publicado meses atr&#xE1;s puede volver a ser &#xFA;til si se presenta en un nuevo contexto, se actualizan algunos datos o se incorpora una perspectiva distinta.</p><p>Agosto tambi&#xE9;n permite revisar materiales anteriores. Actualizar una p&#xE1;gina, mejorar una explicaci&#xF3;n o reorganizar un recurso puede aportar m&#xE1;s valor que producir una nueva pieza desde cero.</p><p>En algunos casos, bastar&#xE1; con mantener las comunicaciones necesarias: informaci&#xF3;n de servicio, cambios de horario, novedades importantes o contenidos que respondan a preguntas reales de la audiencia. La reducci&#xF3;n no tiene por qu&#xE9; ocultarse. Una marca puede explicar con naturalidad que el equipo trabaja a otro ritmo o que durante unas semanas publicar&#xE1; con menor frecuencia.</p><p>Lo importante es que la pausa sea visible como una elecci&#xF3;n y no como una se&#xF1;al de desorden o abandono.</p><p>Reducir conscientemente la actividad permite conservar la presencia sin sostener una producci&#xF3;n artificial. No se trata de desaparecer, sino de encontrar una forma m&#xE1;s honesta y sostenible de seguir comunicando.</p><h2 id="agosto-tambi%C3%A9n-puede-servir-para-escuchar">Agosto tambi&#xE9;n puede servir para escuchar</h2><p>Cuando la producci&#xF3;n disminuye, aparece un espacio que durante el resto del a&#xF1;o suele quedar ocupado por la urgencia: el espacio para observar.</p><p>Muchas estrategias de contenidos avanzan de una publicaci&#xF3;n a la siguiente sin detenerse a revisar qu&#xE9; ha ocurrido con todo lo publicado. Se planifica, se produce, se distribuye y, antes de analizar los resultados, ya es necesario empezar la siguiente pieza.</p><p>Agosto puede ofrecer una pausa &#xFA;til para romper esa din&#xE1;mica.</p><p>Es un buen momento para revisar resultados, identificar qu&#xE9; contenidos han generado m&#xE1;s inter&#xE9;s y entender por qu&#xE9; algunas piezas han funcionado mejor que otras. No se trata &#xFA;nicamente de observar m&#xE9;tricas aisladas, sino de buscar patrones: qu&#xE9; temas despiertan preguntas, qu&#xE9; formatos facilitan la interacci&#xF3;n, qu&#xE9; mensajes se recuerdan y cu&#xE1;les pasan desapercibidos.</p><p>Tambi&#xE9;n puede servir para escuchar de forma m&#xE1;s atenta las conversaciones de clientes, usuarios y comunidades. Las dudas que se repiten en correos, reuniones, comentarios o consultas de soporte suelen revelar oportunidades de contenido m&#xE1;s valiosas que muchas sesiones de brainstorming.</p><p>La reducci&#xF3;n del ritmo permite adem&#xE1;s ordenar recursos, actualizar documentos, clasificar ideas y recuperar materiales que hab&#xED;an quedado dispersos. Este trabajo, poco visible desde fuera, puede mejorar considerablemente la calidad de lo que se publicar&#xE1; despu&#xE9;s.</p><p>Escuchar tambi&#xE9;n implica detectar lo que ya no aporta valor. Algunos formatos contin&#xFA;an activos por costumbre, aunque hayan dejado de responder a las necesidades de la audiencia. Algunas acciones consumen tiempo sin generar aprendizaje, conexi&#xF3;n ni resultados significativos. Agosto puede ser un buen momento para decidir qu&#xE9; conviene mantener, transformar o eliminar.</p><p>Preparar los pr&#xF3;ximos meses no consiste solo en llenar un nuevo calendario. Tambi&#xE9;n requiere comprender mejor qu&#xE9; merece ocuparlo.</p><p>Una estrategia de contenidos no se construye &#xFA;nicamente produciendo m&#xE1;s. Necesita tiempo para observar, aprender y decidir con mayor criterio.</p><h2 id="conclusi%C3%B3n">Conclusi&#xF3;n</h2><p>Guardar silencio durante unos d&#xED;as no significa perder relevancia.</p><p>Una marca puede reducir su actividad, descansar y adaptarse a un ritmo distinto sin desaparecer ni debilitar necesariamente la relaci&#xF3;n con su audiencia. En algunos casos, esa pausa puede ayudarla a regresar con m&#xE1;s claridad, mejores ideas y una intenci&#xF3;n m&#xE1;s definida.</p><p>Lo importante es que la reducci&#xF3;n no sea improvisada ni responda &#xFA;nicamente a la falta de recursos. Una pausa puede formar parte de la estrategia cuando est&#xE1; conectada con una decisi&#xF3;n editorial: publicar menos, revisar mejor, escuchar con m&#xE1;s atenci&#xF3;n y reservar la comunicaci&#xF3;n para aquello que realmente merece ser compartido.</p><p>Esto exige abandonar la idea de que todos los espacios disponibles deben ocuparse. No cada d&#xED;a necesita una publicaci&#xF3;n, ni cada tendencia exige una respuesta, ni cada silencio representa una oportunidad perdida.</p><p>La estrategia tambi&#xE9;n consiste en elegir cu&#xE1;ndo no intervenir.</p><p>Una marca relevante no es necesariamente la que habla m&#xE1;s, sino la que sabe reconocer cu&#xE1;ndo tiene algo &#xFA;til, oportuno o significativo que aportar. Y, para hacerlo, necesita aceptar que la atenci&#xF3;n de la audiencia no se conserva mediante la repetici&#xF3;n constante, sino mediante la expectativa de encontrar algo valioso.</p><p>Por eso, reducir el ritmo no deber&#xED;a entenderse siempre como una renuncia. Puede ser una forma de cuidar la calidad, proteger al equipo y recuperar el prop&#xF3;sito de la comunicaci&#xF3;n.</p><p>La pregunta no es &#xFA;nicamente cu&#xE1;nto publica una marca, sino por qu&#xE9; lo hace.</p><p><strong>&#xBF;Cu&#xE1;ntos contenidos publica tu marca porque tiene algo que aportar y cu&#xE1;ntos porque el calendario dice que toca?</strong></p><p>Una marca no pierde relevancia por guardar silencio durante unos d&#xED;as. Puede perderla cuando habla constantemente sin tener nada que decir.</p>]]></content:encoded></item><item><title><![CDATA[Soberanía y rendimiento en IA]]></title><description><![CDATA[¿Sigues dependiendo al 100% de APIs externas para tu infraestructura de IA? La combinación de modelos locales (Qwen, DeepSeek, Llama 3.3) y Gateways te permite construir ecosistemas de IA propios: privados, rápidos y con mejor control de costes.]]></description><link>https://www.itdo.com/blog/soberania-y-rendimiento-en-ia/</link><guid isPermaLink="false">6a6b5457f87e750664d5e243</guid><category><![CDATA[Inteligencia Artificial]]></category><category><![CDATA[Soberanía digital]]></category><dc:creator><![CDATA[Sergio Vergara]]></dc:creator><pubDate>Tue, 04 Aug 2026 08:00:06 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1697577418970-95d99b5a55cf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDQyfHxsb2NhbCUyMEFJfGVufDB8fHx8MTc4NTQxOTM3NXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1697577418970-95d99b5a55cf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDQyfHxsb2NhbCUyMEFJfGVufDB8fHx8MTc4NTQxOTM3NXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="Soberan&#xED;a y rendimiento en IA"><p>Durante los &#xFA;ltimos a&#xF1;os, la adopci&#xF3;n de la Inteligencia Artificial en las empresas ha seguido un patr&#xF3;n casi universal: una integraci&#xF3;n r&#xE1;pida mediante llamadas a APIs de proveedores en la nube como OpenAI, Anthropic o Google. Sin embargo, a medida que los proyectos pasan de la fase de prototipo a entornos de producci&#xF3;n con tr&#xE1;fico real, este modelo &quot;Cloud-First&quot; comienza a mostrar grietas invisibles pero costosas: facturas desorbitadas, problemas de privacidad de datos (soberan&#xED;a), latencias impredecibles y dependencia de cuotas de terceros.</p><p>La maduraci&#xF3;n de los modelos de c&#xF3;digo abierto y la evoluci&#xF3;n de la infraestructura middleware permiten a las organizaciones construir un ecosistema de IA propio, privado, infinitamente escalable y de baja latencia.</p><p>Es por ello que en este art&#xED;culo quiero compartirte la arquitectura, las familias de modelos y la capa de infraestructura necesarias para tomar el control de tu stack de IA.</p><h2 id="1-el-coste-invisible-y-la-necesidad-de-soberan%C3%ADa">1. El coste invisible y la necesidad de soberan&#xED;a</h2><p>Escribir c&#xF3;digo o automatizar flujos complejos utilizando agentes de IA en la nube puede costar entre 50$ y 200$ mensuales por usuario, o de 3$ a 8$ por hora de uso intensivo. Cuando escalamos esto a un equipo completo de ingenier&#xED;a o a un enjambre de agentes (<em>agent swarms</em>) ejecutando tareas en segundo plano, la factura se vuelve insostenible.</p><p>M&#xE1;s all&#xE1; del factor econ&#xF3;mico, existe la soberan&#xED;a de datos. Para industrias reguladas (financiera, salud, legal) o empresas que manejan bases de c&#xF3;digo propietarias, enviar cada <em>prompt</em>, funci&#xF3;n o archivo sensible a servidores de terceros representa un riesgo inaceptable. Un ecosistema <em>on-premise</em> o en nube privada garantiza que los datos nunca abandonen el per&#xED;metro de la empresa.</p><h2 id="2-los-modelos-locales">2. Los modelos locales</h2><p>Ya no es necesario recurrir a modelos externos para tareas cotidianas. Los modelos <em>open-weight</em> actuales compiten directamente en casos de uso de programaci&#xF3;n, l&#xF3;gica y automatizaci&#xF3;n, funcionando en hardware accesible.</p><h3 id="modelos-llm">Modelos LLM:</h3><ul><li><strong>Qwen (Alibaba):</strong> Se ha consolidado como la referencia para programaci&#xF3;n y agentes multiling&#xFC;es. El modelo Qwen 32B (en cuantizaci&#xF3;n Q4_K_M) representa el punto dulce para agentes complejos en tarjetas gr&#xE1;ficas de 24 GB de VRAM o chips Apple Silicon (M3/M4 Max).</li><li><strong>DeepSeek-Coder V3:</strong> Dise&#xF1;ado espec&#xED;ficamente para tareas puras de c&#xF3;digo (generaci&#xF3;n, refactorizaci&#xF3;n y <em>code review</em>). Con su arquitectura MoE (<em>Mixture of Experts</em>), activa solo una fracci&#xF3;n de sus par&#xE1;metros durante la inferencia, ofreciendo el rendimiento de un modelo masivo con requisitos de c&#xF3;mputo contenidos.</li><li><strong>Llama 3.3 (Meta):</strong> La columna vertebral del ecosistema. Aunque no siempre lidera los <em>benchmarks</em> puros, es el est&#xE1;ndar sobre el que se construyen la mayor&#xED;a de fine-tunes y herramientas. Su variante de 8B corre en hardware b&#xE1;sico, mientras que la de 70B es la opci&#xF3;n preferida para razonamientos complejos en infraestructura dedicada.</li><li><strong>Phi-4 (Microsoft):</strong> Ideal para entornos con restricciones extremas de memoria (CI/CD pipelines, dispositivos Edge o IoT). Su variante <em>mini</em> (3.8B) ofrece una relaci&#xF3;n rendimiento/memoria imbatible para tareas de un solo objetivo.</li><li><strong>GLM-4.7:</strong> Destaca en flujos de trabajo ag&#xE9;nticos multimodales, capaces de procesar im&#xE1;genes (diagramas, capturas de pantalla, maquetas UI) e interactuar con el c&#xF3;digo de forma nativa sin requerir un modelo de visi&#xF3;n independiente.</li></ul><h2 id="3-el-gateway-de-ia">3. El Gateway de IA</h2><p>Tener buenos modelos no sirve de nada si la capa de comunicaci&#xF3;n es un cuello de botella. Muchas empresas invierten semanas optimizando <em>prompts</em> pero ignoran la capa intermedia (<em>LLM Gateway</em>) que gestiona las peticiones.</p><p>Las pasarelas tradicionales escritas en lenguajes como Python (por ejemplo, LiteLLM) sufren limitaciones de concurrencia debido a restricciones de tiempo de ejecuci&#xF3;n (como el GIL). Bajo tr&#xE1;fico masivo en producci&#xF3;n, estas capas pueden a&#xF1;adir decenas de milisegundos de latencia y llegar a perder peticiones por saturaci&#xF3;n.</p><h3 id="el-salto-a-gateways-de-alto-rendimiento">El salto a Gateways de alto rendimiento</h3><p>La adopci&#xF3;n de gateways modernos construidos en lenguajes concurrentes como  cambia por completo el rendimiento de la arquitectura:</p><ul><li><strong>Latencia cercana a cero:</strong> Tiempos de procesamiento del gateway en el rango de los microsegundos (&#xB5;s) en lugar de milisegundos (ms).</li><li><strong>Cero ca&#xED;da de peticiones:</strong> Manejo eficiente de miles de peticiones por segundo sin p&#xE9;rdida de datos.</li><li><strong>Conmutaci&#xF3;n por error (<em>Automatic Failover</em>):</strong> Si un modelo local o proveedor secundario sufre una ca&#xED;da o un error 429 (<em>Rate Limit</em>), la pasarela redirige la petici&#xF3;n de forma transparente a un modelo de respaldo sin alterar la experiencia del usuario.</li><li><strong>Cach&#xE9; Sem&#xE1;ntica (<em>Semantic Caching</em>):</strong> A diferencia de la cach&#xE9; exacta, la cach&#xE9; sem&#xE1;ntica eval&#xFA;a el <em>significado</em> de la consulta. Si dos usuarios preguntan lo mismo de forma diferente, el gateway devuelve la respuesta almacenada sin consumir c&#xF3;mputo ni invocar al modelo.</li></ul><pre><code class="language-JSON">// Configuraci&#xF3;n de Fallback en un Gateway moderno
{
  &quot;model&quot;: &quot;local/qwen3-32b&quot;,
  &quot;messages&quot;: [{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Optimiza esta consulta SQL...&quot;}],
  &quot;fallbacks&quot;: [
    &quot;local/deepseek-coder-14b&quot;,
    &quot;cloud/claude-sonnet&quot;
  ]
}
</code></pre><h2 id="4-estrategia-de-enrutamiento-inteligente-smart-routing">4. Estrategia de enrutamiento inteligente (<em>Smart Routing</em>)</h2><p>Construir un ecosistema propio no significa erradicar por completo las APIs en la nube, sino usarlas de forma consciente y deliberada. La arquitectura &#xF3;ptima pasa por un sistema de enrutamiento basado en la complejidad de la tarea:</p><ol><li><strong>Tareas ligeras y automatizaci&#xF3;n (Local - Phi-4 / Llama 8B):</strong> Revisiones de c&#xF3;digo en CI/CD, formateo de datos, clasificaci&#xF3;n de tickets.</li><li><strong>Desarrollo diario y agentes (Local - Qwen 32B / DeepSeek 14B):</strong> Refactorizaci&#xF3;n, generaci&#xF3;n de tests, asistentes en el IDE, an&#xE1;lisis de arquitectura.</li><li><strong>Casos l&#xED;mite y razonamiento extremo (Cloud - Modelos Frontier):</strong> Invocados mediante la pasarela solo cuando los modelos locales detectan una complejidad extraordinaria o fallan en la tarea.</li></ol><h2 id="conclusi%C3%B3n">Conclusi&#xF3;n</h2><p>El verdadero valor estrat&#xE9;gico de la Inteligencia Artificial en las empresas no reside en consumir la API m&#xE1;s de moda, sino en integrar la IA en la infraestructura propia como un componente soberano, r&#xE1;pido y eficiente.</p><p>Al combinar modelos <em>open-source</em> especializados ejecutados en hardware adecuado con gateways de alta velocidad, las organizaciones pueden reducir sus costes operativos hasta en un 90%, proteger su propiedad intelectual y ofrecer una experiencia de usuario con una velocidad inalcanzable para las arquitecturas tradicionales basadas 100% en la nube.</p>]]></content:encoded></item><item><title><![CDATA[El manifiesto del Design Engineer]]></title><description><![CDATA[El Design Engineer se consolida como el rol híbrido clave en empresas como Vercel, Stripe o Figma.]]></description><link>https://www.itdo.com/blog/el-manifiesto-del-design-engineer/</link><guid isPermaLink="false">6a6b5727f87e750664d5e274</guid><category><![CDATA[Diseño]]></category><dc:creator><![CDATA[Sergio Vergara]]></dc:creator><pubDate>Mon, 03 Aug 2026 08:00:23 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1553877522-43269d4ea984?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDZ8fGRpc2UlQzMlQjFvfGVufDB8fHx8MTc4NTQ4NDM3N3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1553877522-43269d4ea984?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDZ8fGRpc2UlQzMlQjFvfGVufDB8fHx8MTc4NTQ4NDM3N3ww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="El manifiesto del Design Engineer"><p>Durante a&#xF1;os, la frontera entre el dise&#xF1;o de producto (UI/UX) y la ingenier&#xED;a de software ha estado delimitada por un muro de traspaso manual: archivos de Figma enviados a trav&#xE9;s del abismo a los desarrolladores de frontend. Sin embargo, en el contexto de desarrollo actual en 2026, donde la IA generativa acelera la creaci&#xF3;n de prototipos y la infraestructura evoluciona a ritmo vertiginoso, esa separaci&#xF3;n ha dejado de ser funcional.</p><p>Articulos relacionados antes de seguir con la lectura:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itdo.com/blog/ax-design-agentic-experience-disenando-para-la-inteligencia-artificial/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">AX Design (Agentic Experience): Dise&#xF1;ando para la Inteligencia Artificial</div><div class="kg-bookmark-description">La adopci&#xF3;n de herramientas de IA est&#xE1; pasando r&#xE1;pidamente de la experimentaci&#xF3;n a la expansi&#xF3;n y la autonom&#xED;a.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itdo.com/img/ico/apple-icon-180x180.png" alt="El manifiesto del Design Engineer"><span class="kg-bookmark-author">Blog ITDO - Agencia de desarrollo Web, APPs y Marketing en Barcelona</span><span class="kg-bookmark-publisher">Sergio Vergara</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://images.unsplash.com/photo-1476357471311-43c0db9fb2b4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDI5fHxkaXNlJUMzJUIxbyUyMElBfGVufDB8fHx8MTc4NDI5ODI4Mnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="El manifiesto del Design Engineer"></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itdo.com/blog/design-ops-2026/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Design Ops 2026</div><div class="kg-bookmark-description">La gobernanza de un sistema de dise&#xF1;o no deber&#xED;a convertirse en una cadena de aprobaciones que ralentiza cada cambio. Su funci&#xF3;n es ofrecer un marco claro para que los equipos puedan avanzar con autonom&#xED;a sin perder consistencia.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itdo.com/img/ico/apple-icon-180x180.png" alt="El manifiesto del Design Engineer"><span class="kg-bookmark-author">Blog ITDO - Agencia de desarrollo Web, APPs y Marketing en Barcelona</span><span class="kg-bookmark-publisher">Chiyana Sim&#xF5;es</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.itdo.com/blog/content/images/2026/07/itdo-design-ops-2026.png" alt="El manifiesto del Design Engineer"></div></a></figure><p>Ha emergido con fuerza la figura del Design Engineer, un perfil h&#xED;brido que no solo dise&#xF1;a c&#xF3;mo se ve y se siente una interfaz, sino que escribe el c&#xF3;digo que la lleva a producci&#xF3;n y comprende la arquitectura subyacente.</p><p>Compa&#xF1;&#xED;as referentes en cultura de producto como Vercel, Stripe, Figma o Airbnb han formalizado este rol a trav&#xE9;s de principios y manifiestos que redefinen c&#xF3;mo se construyen los productos digitales modernos.</p><h2 id="los-principios-fundamentales-del-design-engineer">Los principios fundamentales del Design Engineer</h2><p>Basado en el <a href="https://vercel.com/design/engineer" rel="noreferrer">manifiesto publicado por Vercel</a> y referentes de la industria como <a href="https://www.linkedin.com/pulse/attributes-design-engineer-kathryn-gonzalez-1r3ac/" rel="noreferrer">Kathryn Gonzalez (Stripe/Figma)</a>, el perfil de Design Engineer se rige por seis pilares operativos:</p><h3 id="1-propiedad-de-extremo-a-extremo-end-to-end-ownership">1. Propiedad de Extremo a Extremo (<em>End-to-End Ownership</em>)</h3><p>El Design Engineer no &quot;entrega maquetas&quot;. Moldea el producto, dise&#xF1;a la interfaz, escribe el c&#xF3;digo, ajusta la tipograf&#xED;a y los estados l&#xED;mite (<em>edge cases</em>), e incluso redacta la documentaci&#xF3;n. Si la experiencia del usuario falla en alg&#xFA;n punto, es su responsabilidad.</p><h3 id="2-obsesi%C3%B3n-por-la-utilidad-y-el-detalle">2. Obsesi&#xF3;n por la utilidad y el detalle</h3><p>Hacer que cosas complejas parezcan sencillas requiere cuidar cada interacci&#xF3;n, microanimaci&#xF3;n, tiempo de respuesta y palabra en pantalla. La calidad de un producto no es un a&#xF1;adido est&#xE9;tico; es el resultado de reducir la fricci&#xF3;n al m&#xED;nimo.</p><h3 id="3-comprensi%C3%B3n-de-las-restricciones-reales">3. Comprensi&#xF3;n de las restricciones reales</h3><p>Antes de proponer una soluci&#xF3;n visual, un Design Engineer busca la restricci&#xF3;n t&#xE9;cnica o de negocio real: &#xBF;Es un problema de latencia del servidor? &#xBF;De renderizado en el navegador? &#xBF;De la API del modelo de IA? Dise&#xF1;a conociendo la viabilidad del c&#xF3;digo.</p><h3 id="4-construir-para-todos">4. Construir para todos</h3><p>Hacer que la complejidad est&#xE9; disponible pero no sea obligatoria. Dise&#xF1;a y programa teniendo en cuenta la accesibilidad, el rendimiento en dispositivos con conectividad limitada y la diversidad de contextos de uso.</p><h3 id="5-definir-la-claridad-y-la-artesan%C3%ADa-craft">5. Definir la claridad y la artesan&#xED;a (<em>Craft</em>)</h3><p>Saber recortar el alcance (<em>scope</em>) lo suficiente como para ejecutar con excelencia. Rechazar soluciones intermedias cuando la claridad de la interfaz, el rendimiento o la confianza del usuario est&#xE1;n en riesgo.</p><h3 id="6-elevar-el-nivel-del-equipo">6. Elevar el nivel del equipo</h3><p>Compartir el trabajo de forma temprana, aceptar y dar <em>feedback</em> directo sin ego, y convertir la retroalimentaci&#xF3;n repetida en mejores componentes, sistemas de dise&#xF1;o y herramientas para todo el equipo de ingenier&#xED;a.</p><h2 id="la-convergencia-con-la-ia-del-hazlo-t%C3%BA-mismo-al-sistemas-de-delegaci%C3%B3n">La Convergencia con la IA: Del &quot;Hazlo T&#xFA; Mismo&quot; al &quot;Sistemas de Delegaci&#xF3;n&quot;</h2><p>La aparici&#xF3;n de la ingenier&#xED;a de IA no ha reemplazado al Design Engineer, sino que ha elevado su impacto. Como se&#xF1;alan manifiestos de la comunidad como el <em>AI Craftspeople Guild</em> o los principios de ingenier&#xED;a de Anthropic y Kubiya:</p><ul><li><strong>Menos c&#xF3;digo repetitivo, m&#xE1;s dise&#xF1;o de sistemas:</strong> La IA puede generar el c&#xF3;digo CSS o JSX inicial, pero el Design Engineer es quien asegura la coherencia del sistema de dise&#xF1;o, la gesti&#xF3;n del estado, la seguridad y la latencia.</li><li><strong>Dise&#xF1;ar para la incertidumbre:</strong> Las interfaces impulsadas por LLMs no son est&#xE1;ticas; responden con incertidumbre y tiempos de generaci&#xF3;n variables. El Design Engineer debe dise&#xF1;ar y programar estados de carga (<em>skeletons</em>), fallos (<em>fallbacks</em>) y retroalimentaci&#xF3;n interactiva para que la experiencia sea fluida.</li></ul><h2 id="3-la-matriz-de-roles-%C2%BFd%C3%B3nde-encaja-en-el-equipo">3. La Matriz de Roles: &#xBF;D&#xF3;nde encaja en el equipo?</h2>
<!--kg-card-begin: html-->
<table data-path-to-node="28" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 32px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><thead style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-header-group; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><tr style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-row; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><strong style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px !important; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">Rol</strong></td><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><strong style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px !important; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">Enfoque Principal</strong></td><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><strong style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px !important; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">Herramienta Clave</strong></td><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><strong style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px !important; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">Entregable</strong></td></tr></thead><tbody style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-row-group; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><tr style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-row; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><span data-path-to-node="28,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><b data-path-to-node="28,1,0,0" data-index-in-node="0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">Product Designer</b></span></td><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><span data-path-to-node="28,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">Investigaci&#xF3;n, Flujos, Layouts</span></td><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><span data-path-to-node="28,1,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">Figma, User Research</span></td><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><span data-path-to-node="28,1,3,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">Prototipos y Wireframes</span></td></tr><tr style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-row; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><span data-path-to-node="28,2,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><b data-path-to-node="28,2,0,0" data-index-in-node="0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">Design Engineer</b></span></td><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><span data-path-to-node="28,2,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><b data-path-to-node="28,2,1,0" data-index-in-node="0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">Interacci&#xF3;n, UI, Craft, Frontend</b></span></td><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><span data-path-to-node="28,2,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><b data-path-to-node="28,2,2,0" data-index-in-node="0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">React/Next.js, CSS, AI SDKs, Figma</b></span></td><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><span data-path-to-node="28,2,3,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><b data-path-to-node="28,2,3,0" data-index-in-node="0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">C&#xF3;digo en Producci&#xF3;n y Componentes</b></span></td></tr><tr style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-row; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><span data-path-to-node="28,3,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><b data-path-to-node="28,3,0,0" data-index-in-node="0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">Software Engineer</b></span></td><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><span data-path-to-node="28,3,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">Arquitectura, APIs, Base de datos</span></td><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><span data-path-to-node="28,3,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">Go, Rust, Node.js, SQL</span></td><td style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 1px solid rgb(196, 199, 197); inset: 0px; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: table-cell; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;"><span data-path-to-node="28,3,3,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); inset: auto; clear: none; clip: auto; color: rgb(31, 31, 31); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex: 0 1 auto; flex-direction: row; float: none; gap: normal; hyphens: manual; interactivity: auto; isolation: auto; margin-top: 0px !important; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; marker: none; mask: none; offset: normal; opacity: 1; order: 0; orphans: 2; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 1.5px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; widows: 2; x: 0px; y: 0px; zoom: 1; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important;">Servicios y L&#xF3;gica de Negocio</span></td></tr></tbody></table>
<!--kg-card-end: html-->
<h2 id="conclusi%C3%B3n">Conclusi&#xF3;n</h2><p>El resurgimiento del artesanado digital (<em>digital craft</em>) demuestra que la velocidad de desarrollo no debe estar enfrentada con la excelencia est&#xE9;tica y t&#xE9;cnica.</p><p>La adopci&#xF3;n de la filosof&#xED;a del Design Engineer permite eliminar los cuellos de botella de comunicaci&#xF3;n entre dise&#xF1;o y desarrollo. Al integrar dise&#xF1;o, c&#xF3;digo e IA bajo una misma visi&#xF3;n hol&#xED;stica, acortamos los ciclos de iteraci&#xF3;n y entregamos productos digitales que no solo son t&#xE9;cnicamente robustos, sino intuitivos y cuidados hasta el &#xFA;ltimo detalle.</p>]]></content:encoded></item><item><title><![CDATA[La comodidad de no decidir]]></title><description><![CDATA[La pregunta no es si estas herramientas son útiles. Lo son. La cuestión es en qué momento una recomendación deja de ayudarnos a decidir y empieza a decidir por nosotros.]]></description><link>https://www.itdo.com/blog/la-comodidad-de-no-decidir/</link><guid isPermaLink="false">6a6a1a64f87e750664d5e21d</guid><category><![CDATA[Inteligencia Artificial]]></category><category><![CDATA[AI]]></category><category><![CDATA[decisiones]]></category><dc:creator><![CDATA[Chiyana Simões]]></dc:creator><pubDate>Thu, 30 Jul 2026 08:00:06 GMT</pubDate><media:content url="https://www.itdo.com/blog/content/images/2026/07/itdo-la-comodidad-de-no-decidir-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.itdo.com/blog/content/images/2026/07/itdo-la-comodidad-de-no-decidir-1.jpg" alt="La comodidad de no decidir"><p>Cada vez tomamos m&#xE1;s decisiones acompa&#xF1;ados por una recomendaci&#xF3;n autom&#xE1;tica.</p><p>Una plataforma elige qu&#xE9; v&#xED;deo veremos a continuaci&#xF3;n. Una aplicaci&#xF3;n nos propone c&#xF3;mo responder a un mensaje. Un asistente redacta el correo que necesitamos enviar. Una tienda destaca el producto que, en teor&#xED;a, mejor encaja con nosotros. Incluso cuando buscamos una ruta, una noticia o un restaurante, rara vez partimos de una p&#xE1;gina en blanco: el sistema ya ha ordenado las opciones y ha colocado una de ellas delante de nosotros.</p><p>En muchos casos, esta ayuda resulta &#xFA;til. Reduce tiempo, simplifica procesos y evita dedicar energ&#xED;a a decisiones poco importantes. No tendr&#xED;a sentido rechazar una herramienta &#xFA;nicamente porque nos facilita una elecci&#xF3;n.</p><p>Sin embargo, esa comodidad tambi&#xE9;n puede ocultar un cambio m&#xE1;s profundo. Cada vez que aceptamos una recomendaci&#xF3;n sin examinarla, dejamos de tomar una peque&#xF1;a decisi&#xF3;n. Una sola elecci&#xF3;n delegada parece irrelevante, pero el h&#xE1;bito de aceptar sistem&#xE1;ticamente la opci&#xF3;n propuesta puede modificar poco a poco nuestra relaci&#xF3;n con el criterio, la duda y la responsabilidad.</p><p>La frontera no siempre es evidente. Podemos pensar que seguimos decidiendo porque somos nosotros quienes pulsamos el bot&#xF3;n, confirmamos la respuesta o realizamos la compra. Pero elegir entre opciones que ya han sido filtradas, ordenadas y presentadas por un sistema no es exactamente lo mismo que construir una decisi&#xF3;n desde el principio.</p><p>La pregunta, por tanto, no es si estas herramientas son &#xFA;tiles. Lo son. La cuesti&#xF3;n es en qu&#xE9; momento una recomendaci&#xF3;n deja de ayudarnos a decidir y empieza a decidir por nosotros.</p><h2 id="automatizar-una-tarea-no-es-delegar-una-decisi%C3%B3n">Automatizar una tarea no es delegar una decisi&#xF3;n</h2><p>Automatizar una tarea y delegar una decisi&#xF3;n pueden parecer acciones similares, pero no implican lo mismo.</p><p>Automatizar consiste en encargar a una herramienta la ejecuci&#xF3;n de algo que ya hemos decidido. Sabemos qu&#xE9; queremos conseguir y utilizamos la tecnolog&#xED;a para hacerlo de una forma m&#xE1;s r&#xE1;pida, precisa o eficiente. Podemos pedir a una aplicaci&#xF3;n que calcule la ruta m&#xE1;s corta, a una hoja de c&#xE1;lculo que ordene unos datos o a un asistente que resuma varios documentos. En todos estos casos, la herramienta facilita el proceso, pero el objetivo contin&#xFA;a siendo nuestro.</p><p>Delegar una decisi&#xF3;n supone ir un paso m&#xE1;s all&#xE1;. Ya no pedimos &#xFA;nicamente que se ejecute una instrucci&#xF3;n, sino que el sistema determine qu&#xE9; conviene hacer. No solo calcula c&#xF3;mo llegar, sino ad&#xF3;nde deber&#xED;amos ir. No solo compara varias opciones, sino que se&#xF1;ala cu&#xE1;l deber&#xED;amos escoger. No solo redacta una respuesta, sino que define qu&#xE9; posici&#xF3;n deber&#xED;amos adoptar.</p><p>La diferencia est&#xE1; en qui&#xE9;n establece el criterio.</p><p>Cuando automatizamos, la herramienta trabaja dentro de una decisi&#xF3;n previa. Cuando delegamos, permitimos que participe en la definici&#xF3;n de la decisi&#xF3;n misma. Y aunque esa frontera no siempre sea visible, resulta importante reconocerla.</p><p>Una recomendaci&#xF3;n puede ayudarnos a valorar alternativas, detectar informaci&#xF3;n que hab&#xED;amos pasado por alto o reducir la complejidad de una elecci&#xF3;n. El problema aparece cuando dejamos de utilizarla como apoyo y empezamos a tratarla como una respuesta definitiva.</p><p>Porque una herramienta puede calcular qu&#xE9; opci&#xF3;n es m&#xE1;s r&#xE1;pida, m&#xE1;s barata o m&#xE1;s probable. Lo que no puede determinar por s&#xED; sola es qu&#xE9; merece la pena, qu&#xE9; se ajusta mejor a nuestros valores o qu&#xE9; responsabilidad estamos dispuestos a asumir.</p><h2 id="los-sistemas-que-aprenden-lo-que-probablemente-elegiremos">Los sistemas que aprenden lo que probablemente elegiremos</h2><p>Las recomendaciones autom&#xE1;ticas no aparecen de forma neutral. Detr&#xE1;s de cada contenido sugerido, producto destacado o respuesta propuesta existe un sistema que intenta anticipar qu&#xE9; opci&#xF3;n tiene m&#xE1;s probabilidades de interesarnos.</p><p>Para hacerlo, analiza nuestro comportamiento: qu&#xE9; hemos visto, cu&#xE1;nto tiempo hemos permanecido en una p&#xE1;gina, qu&#xE9; hemos comprado, qu&#xE9; hemos ignorado, qu&#xE9; hemos buscado o qu&#xE9; decisiones hemos tomado antes. Tambi&#xE9;n compara esos datos con los de otras personas que presentan patrones similares y utiliza esa informaci&#xF3;n para ordenar las opciones que nos muestra.</p><p>Pero el sistema no solo intenta entendernos. Tambi&#xE9;n responde a los objetivos de la plataforma que lo ha dise&#xF1;ado.</p><p>Una recomendaci&#xF3;n puede estar optimizada para que permanezcamos m&#xE1;s tiempo conectados, compremos un producto, hagamos clic en un enlace o consumamos un contenido m&#xE1;s. Lo que aparece primero no tiene por qu&#xE9; ser lo mejor para nosotros, sino aquello que el sistema considera m&#xE1;s eficaz para conseguir una determinada reacci&#xF3;n.</p><p>Cuanto m&#xE1;s precisas se vuelven estas recomendaciones, menos visible resulta su influencia. No sentimos que alguien est&#xE9; decidiendo por nosotros. Seguimos teniendo la posibilidad de rechazar la propuesta, buscar otra opci&#xF3;n o abandonar la plataforma.</p><p>Sin embargo, la opci&#xF3;n recomendada ya cuenta con una ventaja importante: aparece antes, parece m&#xE1;s relevante y exige menos esfuerzo que las dem&#xE1;s.</p><p>Los sistemas no necesitan obligarnos a elegir. Les basta con colocar una posibilidad delante de nosotros en el momento adecuado. Y cuando una opci&#xF3;n encaja suficientemente bien con lo que esper&#xE1;bamos encontrar, disminuye la probabilidad de que sigamos buscando.</p><p>As&#xED;, la influencia no se produce mediante una imposici&#xF3;n evidente, sino a trav&#xE9;s de la selecci&#xF3;n, el orden y la oportunidad. La decisi&#xF3;n contin&#xFA;a pareciendo nuestra, aunque el espacio en el que decidimos haya sido previamente organizado por otro criterio.</p><h2 id="el-riesgo-de-aceptar-siempre-la-primera-opci%C3%B3n">El riesgo de aceptar siempre la primera opci&#xF3;n</h2><p>La primera opci&#xF3;n suele tener una ventaja que no depende necesariamente de su calidad: es la que requiere menos esfuerzo.</p><p>El primer texto generado puede parecer suficientemente correcto. La primera respuesta sugerida puede encajar con lo que quer&#xED;amos decir. El primer producto recomendado puede cumplir nuestros requisitos. La primera explicaci&#xF3;n plausible puede resolver una duda. La ruta que una aplicaci&#xF3;n presenta como &#xF3;ptima puede ahorrarnos unos minutos.</p><p>En muchas ocasiones, aceptar esa propuesta resulta razonable. No todas las decisiones exigen una investigaci&#xF3;n exhaustiva ni una comparaci&#xF3;n entre m&#xFA;ltiples alternativas. Elegir la primera opci&#xF3;n no es, por s&#xED; mismo, un problema.</p><p>El riesgo aparece cuando deja de ser una elecci&#xF3;n puntual y se convierte en un h&#xE1;bito.</p><p>Cuando aceptamos sistem&#xE1;ticamente la primera propuesta, podemos perder la costumbre de revisar, contrastar y formular alternativas. Dejamos de preguntarnos si el texto expresa realmente lo que queremos decir, si la respuesta representa nuestra posici&#xF3;n, si el producto recomendado es el que m&#xE1;s nos conviene o si la explicaci&#xF3;n recibida contempla otras posibilidades.</p><p>La primera opci&#xF3;n funciona entonces como una respuesta predeterminada. No la elegimos porque hayamos llegado a la conclusi&#xF3;n de que es la mejor, sino porque ya est&#xE1; disponible, parece adecuada y evita el esfuerzo de seguir pensando.</p><p>Este mecanismo puede resultar especialmente dif&#xED;cil de detectar cuando la propuesta es buena. Una recomendaci&#xF3;n claramente equivocada provoca dudas. Una opci&#xF3;n razonable, en cambio, invita a aceptarla sin m&#xE1;s. Y precisamente por eso puede influir m&#xE1;s: no necesita convencernos por completo, solo parecer suficientemente v&#xE1;lida.</p><p>Conservar la capacidad de decidir no significa desconfiar de cada sugerencia ni rechazar autom&#xE1;ticamente la primera alternativa. Significa mantener vivo el h&#xE1;bito de preguntarnos por qu&#xE9; esa opci&#xF3;n deber&#xED;a ser aceptada, qu&#xE9; criterios la sostienen y qu&#xE9; podr&#xED;amos estar dejando fuera al no considerar otras posibilidades.</p><h2 id="la-dependencia-que-no-parece-dependencia">La dependencia que no parece dependencia</h2><p>Cuando pensamos en dependencia tecnol&#xF3;gica, solemos imaginar una incapacidad evidente: no saber orientarnos sin una aplicaci&#xF3;n, no poder escribir sin un asistente o no ser capaces de resolver una tarea sin recurrir a una herramienta.</p><p>Pero la dependencia no siempre aparece cuando perdemos una capacidad. Tambi&#xE9;n puede comenzar cuando todav&#xED;a la conservamos, pero dejamos de utilizarla.</p><p>Podemos seguir siendo capaces de comparar opciones, redactar una respuesta, buscar informaci&#xF3;n o tomar una decisi&#xF3;n por nuestra cuenta. Sin embargo, hacerlo exige m&#xE1;s tiempo, m&#xE1;s atenci&#xF3;n y, a menudo, m&#xE1;s incomodidad. Frente a una recomendaci&#xF3;n inmediata, pensar por nosotros mismos puede parecer innecesariamente lento.</p><p>Ah&#xED; es donde la comodidad empieza a transformar nuestra conducta.</p><p>Cada decisi&#xF3;n delegada parece insignificante. Aceptar una respuesta sugerida, seguir una recomendaci&#xF3;n o escoger una opci&#xF3;n ya preparada apenas modifica nada por s&#xED; solo. Pero, cuando ese gesto se repite, podemos acostumbrarnos a recibir decisiones casi terminadas.</p><p>El criterio tambi&#xE9;n necesita ejercicio. Se fortalece cuando comparamos, dudamos, interpretamos y asumimos las consecuencias de elegir. Si dejamos de practicar esas acciones porque una herramienta las resuelve antes, nuestra capacidad de decidir no desaparece de un d&#xED;a para otro, pero puede volverse menos activa, menos exigente y m&#xE1;s dependiente de est&#xED;mulos externos.</p><p><strong>La forma m&#xE1;s silenciosa de dependencia no consiste en no poder decidir. Consiste en dejar de sentir que vale la pena hacerlo.</strong></p><p>Y cuando vivir entre opciones ya preparadas se convierte en lo habitual, la comodidad deja de ser &#xFA;nicamente una ventaja. Empieza a definir el modo en que nos relacionamos con nuestra propia libertad.</p><h2 id="una-recomendaci%C3%B3n-no-elimina-nuestra-responsabilidad">Una recomendaci&#xF3;n no elimina nuestra responsabilidad</h2><p>Que una herramienta proponga una acci&#xF3;n no significa que asuma sus consecuencias.</p><p>Un sistema puede recomendar a qui&#xE9;n contratar, qu&#xE9; paciente requiere m&#xE1;s atenci&#xF3;n, qu&#xE9; estudiante necesita apoyo, qu&#xE9; mensaje conviene enviar o qu&#xE9; prioridad deber&#xED;a ocupar el primer lugar. Puede ordenar informaci&#xF3;n, detectar patrones y sugerir una respuesta. Pero la decisi&#xF3;n final contin&#xFA;a produciendo efectos sobre personas reales.</p><p>Por eso, la responsabilidad no desaparece cuando interviene un algoritmo.</p><p>Podemos sentir que una elecci&#xF3;n es m&#xE1;s objetiva porque ha sido calculada por una herramienta, pero todo sistema trabaja a partir de datos, criterios y objetivos definidos previamente. Tambi&#xE9;n puede reproducir errores, ignorar matices o no comprender circunstancias que resultan esenciales para interpretar correctamente una situaci&#xF3;n.</p><p>Cuando una decisi&#xF3;n afecta a otras personas, no basta con saber qu&#xE9; opci&#xF3;n recomienda el sistema. Tambi&#xE9;n necesitamos preguntarnos por qu&#xE9; la recomienda, qu&#xE9; informaci&#xF3;n ha tenido en cuenta, qu&#xE9; elementos ha dejado fuera y qui&#xE9;n asumir&#xE1; las consecuencias si se equivoca.</p><p>Esto resulta especialmente importante en decisiones que implican valores, relaciones o posibles da&#xF1;os. Contratar o despedir a una persona, evaluar su rendimiento, educar a un ni&#xF1;o, realizar un diagn&#xF3;stico, cuidar a alguien vulnerable o comunicar una noticia delicada no son simples problemas de optimizaci&#xF3;n.</p><p>En estos casos, decidir exige interpretar el contexto, escuchar, reconocer excepciones y considerar aspectos que no siempre pueden convertirse en datos. Tambi&#xE9;n requiere empat&#xED;a, prudencia y la capacidad de responder ante la persona afectada.</p><p>La <a href="https://www.itdo.com/blog/tag/inteligencia-artificial/"><u>inteligencia artificial</u></a> puede aportar informaci&#xF3;n valiosa y ayudarnos a detectar elementos que hab&#xED;amos pasado por alto. Sin embargo, deber&#xED;a servir para ampliar nuestra deliberaci&#xF3;n, no para sustituirla.</p><p>Cuanto m&#xE1;s importante sea una decisi&#xF3;n y mayores sean sus consecuencias, menos razonable resulta aceptar una recomendaci&#xF3;n sin comprenderla. Podemos apoyarnos en una herramienta, pero no utilizarla como excusa para evitar la responsabilidad de elegir.</p><h2 id="conclusi%C3%B3n">Conclusi&#xF3;n</h2><p>Utilizar recomendaciones no significa renunciar autom&#xE1;ticamente a nuestra libertad. Las herramientas pueden ayudarnos a ordenar informaci&#xF3;n, reducir la complejidad y encontrar opciones que quiz&#xE1; no habr&#xED;amos considerado por nuestra cuenta.</p><p>El problema no est&#xE1; en recibir ayuda, sino en dejar de participar activamente en la decisi&#xF3;n.</p><p>Conservar la capacidad de elegir exige mantener algunos h&#xE1;bitos sencillos: pedir alternativas, revisar los criterios utilizados, entender qu&#xE9; objetivo est&#xE1; optimizando el sistema y detenernos cuando una decisi&#xF3;n tiene consecuencias importantes. Tambi&#xE9;n implica ser capaces de explicar por qu&#xE9; hemos elegido una opci&#xF3;n y no otra.</p><p>No todas las decisiones requieren el mismo nivel de reflexi&#xF3;n. Podemos aceptar una ruta sugerida, una recomendaci&#xF3;n de contenido o una respuesta autom&#xE1;tica sin convertir cada gesto cotidiano en un ejercicio complejo. Pero cuanto m&#xE1;s afecta una decisi&#xF3;n a nuestros valores, a otras personas o al rumbo que queremos seguir, menos sentido tiene delegarla sin examen.</p><p>La cuesti&#xF3;n no es tomar todas las decisiones sin ayuda. Es impedir que la facilidad de recibir una respuesta sustituya nuestra responsabilidad de decidir.</p><p>Porque decidir no consiste &#xFA;nicamente en escoger entre opciones. Tambi&#xE9;n significa reconocer qu&#xE9; estamos priorizando, qu&#xE9; consecuencias estamos dispuestos a asumir y qu&#xE9; tipo de persona, organizaci&#xF3;n o sociedad queremos llegar a ser.</p><p>Podemos delegar c&#xE1;lculos, b&#xFA;squedas y procesos, pero no deber&#xED;amos delegar con la misma facilidad la responsabilidad de decidir qu&#xE9; merece hacerse.</p><p><strong>&#xBF;Qu&#xE9; decisiones est&#xE1;s delegando por comodidad que todav&#xED;a deber&#xED;as ser capaz de explicar como propias?</strong></p><p><em>Fuentes</em>:</p><ul><li><a href="https://www.unesco.org/en/legal-affairs/recommendation-ethics-artificial-intelligence"><u>Recommendation on the Ethics of Artificial Intelligence - Legal Affairs</u></a></li><li><a href="https://www.nature.com/articles/s41598-021-87480-9"><u>Humans rely more on algorithms than social influence as a task becomes more difficult | Scientific Reports</u></a></li><li><a href="https://www.nature.com/articles/s41598-023-34192-x"><u>Tailoring recommendation algorithms to ideal preferences makes users better off | Scientific Reports</u></a><br><br><br></li></ul>]]></content:encoded></item><item><title><![CDATA[La nueva era de PHP: Escalabilidad, gobernanza y la polling API]]></title><description><![CDATA[PHP acaba de dar su salto de rendimiento más importante desde PHP 7
]]></description><link>https://www.itdo.com/blog/la-nueva-era-de-php-escalabilidad-gobernanza-y-la-polling-api/</link><guid isPermaLink="false">6a61e9a8f87e750664d5e1cd</guid><category><![CDATA[PHP]]></category><category><![CDATA[PHP 8]]></category><dc:creator><![CDATA[Sergio Vergara]]></dc:creator><pubDate>Tue, 28 Jul 2026 08:00:09 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1599507593499-a3f7d7d97667?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDJ8fFBIUHxlbnwwfHx8fDE3ODQ4MDE5MDR8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1599507593499-a3f7d7d97667?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDJ8fFBIUHxlbnwwfHx8fDE3ODQ4MDE5MDR8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="La nueva era de PHP: Escalabilidad, gobernanza y la polling API"><p>En la comunidad de desarrollo backend existe un contraste fascinante. Mientras el debate p&#xFA;blico se pierde en discusiones te&#xF3;ricas sobre la sintaxis de los gen&#xE9;ricos (<em>Bound-Erased Generics</em>) o en conceptos anticuados sobre el lenguaje, la plataforma real de PHP contin&#xFA;a su evoluci&#xF3;n t&#xE9;cnica m&#xE1;s radical en una d&#xE9;cada.</p><p>A trav&#xE9;s de las novedades aprobadas para PHP 8.6 (como la hist&#xF3;rica <a href="https://php.watch/rfcs/poll_api"><u>RFC del Polling API</u></a>), el rendimiento mejorado de PHP 8.5, el soporte de IA y una nueva etapa en la PHP Foundation, el lenguaje ha eliminado sus &#xFA;ltimos cuellos de botella hist&#xF3;ricos.</p><p>Es por ello que hoy analizamos las claves de esta transformaci&#xF3;n y c&#xF3;mo impacta en la arquitectura de software moderno.</p><h2 id="1-el-rfc-silencioso-que-cambia-las-reglas-del-juego-polling-api-iopoll">1. El RFC silencioso que cambia las reglas del juego: Polling API (Io\Poll)</h2><p>Durante a&#xF1;os, las librer&#xED;as as&#xED;ncronas en PHP (como ReactPHP, AMPHP o Revolt) deb&#xED;an lidiar con un l&#xED;mite, la funci&#xF3;n nativa stream_select. Basada en la llamada de sistema select() de Unix (que data de 1983), esta funci&#xF3;n padec&#xED;a tres grandes problemas:</p><ol><li><strong>L&#xED;mite de 1024 File Descriptors (FD):</strong> En una app real donde cada conexi&#xF3;n consume recursos (sockets HTTP, Redis, base de datos), el l&#xED;mite pr&#xE1;ctico apenas alcanzaba los ~250 usuarios concurrentes sin fallar.</li><li><strong>Degradaci&#xF3;n $O(n)$:</strong> En cada iteraci&#xF3;n del bucle de eventos (<em>event loop</em>), el kernel escaneaba toda la lista de conexiones para comprobar su estado, ralentizando dr&#xE1;sticamente el rendimiento a medida que crec&#xED;a el tr&#xE1;fico.</li><li><strong>Dependencia de extensiones externas:</strong> Para superar esto en producci&#xF3;n, los equipos deb&#xED;an instalar extensiones compiladas de PECL (ext-uv o ext-event), complejas de mantener en entornos compartidos o Docker ligeros.</li></ol><h3 id="la-soluci%C3%B3n-nativa-epoll-y-kqueue-en-el-n%C3%BAcleo">La soluci&#xF3;n nativa: epoll y kqueue en el n&#xFA;cleo</h3><p>El nuevo <strong>Polling API (</strong>Io\Poll<strong>)</strong>, aprobado por unanimidad para PHP 8.6, introduce primitivas de E/S nativas de alto rendimiento:</p><ul><li><strong>Linux:</strong> epoll</li><li><strong>macOS / BSD:</strong> kqueue</li><li><strong>Windows:</strong> WSAPoll</li></ul><p>Con epoll/kqueue, la complejidad pasa de $O(n)$ a <strong>$O(1)$</strong>. El kernel notifica al proceso <em>&#xFA;nicamente</em> cuando una conexi&#xF3;n est&#xE1; lista.</p><pre><code>[stream_select (O(n))] -&gt; Copia y escanea TODOS los FDs en cada iteraci&#xF3;n (L&#xED;mite: 1024 FDs)
[Io\Poll / epoll (O(1))] -&gt; El Kernel notifica SOLO los FDs activos (L&#xED;mite: Millones)
</code></pre><p>Junto a los <a href="https://www.php.net/manual/es/language.fibers.php"><u>Fibers</u></a> introducidos en PHP 8.1, PHP 8.6 permite abordar el famoso problema C10K (10.000 conexiones concurrentes) de forma nativa en servidores modestos, igualando en arquitectura de E/S as&#xED;ncrona a entornos como Node.js (libuv) o Go.</p><h2 id="2-php-85-tipado-estricto-optimizaci%C3%B3n-y-orquestaci%C3%B3n-de-ia">2. PHP 8.5: Tipado estricto, optimizaci&#xF3;n y orquestaci&#xF3;n de IA</h2><p>Mientras que PHP 8.6 reescribe la infraestructura as&#xED;ncrona, la versi&#xF3;n PHP 8.5 consolida la madurez del lenguaje en ejecuci&#xF3;n s&#xED;ncrona y microservicios:</p><ul><li><strong>Property Hooks:</strong> Reducci&#xF3;n dr&#xE1;stica del c&#xF3;digo <em>boilerplate</em> en modelos de dominio (como Eloquent en Laravel o entidades en Symfony), permitiendo definir l&#xF3;gica de validaci&#xF3;n y formateo directamente en la declaraci&#xF3;n de propiedades.</li><li><strong>Tipado estricto y an&#xE1;lisis est&#xE1;tico:</strong> La adopci&#xF3;n de tipos estrictos mejora el rendimiento del compilador JIT y del almacenamiento en memoria Opcache.</li><li><strong>El orquestador ideal para inteligencia artificial:</strong> Gracias a su ciclo de vida de petici&#xF3;n r&#xE1;pido y ligero (<em>stateless</em>), PHP se ha convertido en una de las capas de orquestaci&#xF3;n de APIs m&#xE1;s eficientes para conectar servicios de modelos de lenguaje (OpenAI, Claude, modelos locales) con colas de procesamiento en segundo plano (Redis, RabbitMQ).</li></ul><pre><code class="language-PHP">// Ejemplo de dise&#xF1;o limpio en PHP moderno
class AIResponseService 
{
    public function __construct(
        private readonly HttpClientInterface $client
    ) {}

    public function generateResponse(string $prompt): string 
    {
        return $this-&gt;client-&gt;request(&apos;POST&apos;, &apos;/v1/chat/completions&apos;, [
            &apos;json&apos; =&gt; [&apos;prompt&apos; =&gt; $prompt]
        ])-&gt;toArray()[&apos;choices&apos;][0][&apos;text&apos;] ?? &apos;&apos;;
    }
}
</code></pre><h2 id="3-gobernanza-y-comunidad-la-visi%C3%B3n-de-la-php-foundation">3. Gobernanza y comunidad: La visi&#xF3;n de la PHP Foundation</h2><p>Toda esta aceleraci&#xF3;n t&#xE9;cnica no ocurre por accidente. La consolidaci&#xF3;n de The PHP Foundation, reforzada con <a href="https://thephp.foundation/blog/2026/02/27/welcoming-elizabeth-barron-new-executive-director/"><u>la incorporaci&#xF3;n de Elizabeth Barron</u></a> como Directora Ejecutiva, ha profesionalizado el mantenimiento del lenguaje.</p><p>Frente a los retos del ecosistema, la estrategia se centra en tres ejes:</p><ol><li><strong>Financiaci&#xF3;n de mantenedores core:</strong> Garantizar que los desarrolladores que optimizan el motor C de PHP tengan estabilidad financiera para priorizar seguridad y rendimiento.</li><li><strong>Seguridad y criba de IA:</strong> Con programas como el <em>Ecosystem AI Security Engineer</em>, la Fundaci&#xF3;n aborda el volumen masivo de reportes de vulnerabilidades generados de forma automatizada por herramientas de IA, filtrando el ruido para proteger el c&#xF3;digo abierto.</li><li><strong>Narrativa fuera del &quot;Bubble&quot;:</strong> Cambiar la percepci&#xF3;n p&#xFA;blica mostrando casos de uso reales de gran escala empresarial (WordPress, Laravel, plataformas SaaS de tr&#xE1;fico masivo) en lugar de defender el lenguaje frente a antiguos memes.</li></ol><h2 id="comparativa-de-la-evoluci%C3%B3n-appsec-y-runtime">Comparativa de la Evoluci&#xF3;n AppSec y Runtime</h2>
<!--kg-card-begin: html-->
<table style="border:none;border-collapse:collapse;"><colgroup><col width="152"><col width="208"><col width="241"></colgroup><tbody><tr style="height:41.25pt"><td style="border-left:solid #c4c7c5 0.75pt;border-right:solid #c4c7c5 0.75pt;border-bottom:solid #c4c7c5 0.75pt;border-top:solid #c4c7c5 0.75pt;vertical-align:top;padding:6pt 9pt 6pt 9pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:24pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">&#xC1;rea</span></p></td><td style="border-left:solid #c4c7c5 0.75pt;border-right:solid #c4c7c5 0.75pt;border-bottom:solid #c4c7c5 0.75pt;border-top:solid #c4c7c5 0.75pt;vertical-align:top;padding:6pt 9pt 6pt 9pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:24pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">PHP Tradicional (PHP 5/7)</span></p></td><td style="border-left:solid #c4c7c5 0.75pt;border-right:solid #c4c7c5 0.75pt;border-bottom:solid #c4c7c5 0.75pt;border-top:solid #c4c7c5 0.75pt;vertical-align:top;padding:6pt 9pt 6pt 9pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:24pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">PHP Moderno (PHP 8.5 / 8.6)</span></p></td></tr><tr style="height:41.25pt"><td style="border-left:solid #c4c7c5 0.75pt;border-right:solid #c4c7c5 0.75pt;border-bottom:solid #c4c7c5 0.75pt;border-top:solid #c4c7c5 0.75pt;vertical-align:top;padding:6pt 9pt 6pt 9pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:24pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Manejo de E/S</span></p></td><td style="border-left:solid #c4c7c5 0.75pt;border-right:solid #c4c7c5 0.75pt;border-bottom:solid #c4c7c5 0.75pt;border-top:solid #c4c7c5 0.75pt;vertical-align:top;padding:6pt 9pt 6pt 9pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:24pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Bloqueante o </span><span style="font-size:11.5pt;font-family:Arial,sans-serif;color:#188038;background-color:#f2f0f0;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">stream_select</span><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> ($O(n)$)</span></p></td><td style="border-left:solid #c4c7c5 0.75pt;border-right:solid #c4c7c5 0.75pt;border-bottom:solid #c4c7c5 0.75pt;border-top:solid #c4c7c5 0.75pt;vertical-align:top;padding:6pt 9pt 6pt 9pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:24pt;"><span style="font-size:11.5pt;font-family:Arial,sans-serif;color:#188038;background-color:#f2f0f0;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Io\Poll</span><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> nativo con </span><span style="font-size:11.5pt;font-family:Arial,sans-serif;color:#188038;background-color:#f2f0f0;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">epoll</span><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">/</span><span style="font-size:11.5pt;font-family:Arial,sans-serif;color:#188038;background-color:#f2f0f0;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">kqueue</span><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"> ($O(1)$)</span></p></td></tr><tr style="height:41.25pt"><td style="border-left:solid #c4c7c5 0.75pt;border-right:solid #c4c7c5 0.75pt;border-bottom:solid #c4c7c5 0.75pt;border-top:solid #c4c7c5 0.75pt;vertical-align:top;padding:6pt 9pt 6pt 9pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:24pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">L&#xED;mite de Conexiones</span></p></td><td style="border-left:solid #c4c7c5 0.75pt;border-right:solid #c4c7c5 0.75pt;border-bottom:solid #c4c7c5 0.75pt;border-top:solid #c4c7c5 0.75pt;vertical-align:top;padding:6pt 9pt 6pt 9pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:24pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">~1024 FDs por proceso</span></p></td><td style="border-left:solid #c4c7c5 0.75pt;border-right:solid #c4c7c5 0.75pt;border-bottom:solid #c4c7c5 0.75pt;border-top:solid #c4c7c5 0.75pt;vertical-align:top;padding:6pt 9pt 6pt 9pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:24pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Escala a decenas de miles (C10K)</span></p></td></tr><tr style="height:41.25pt"><td style="border-left:solid #c4c7c5 0.75pt;border-right:solid #c4c7c5 0.75pt;border-bottom:solid #c4c7c5 0.75pt;border-top:solid #c4c7c5 0.75pt;vertical-align:top;padding:6pt 9pt 6pt 9pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:24pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Sintaxis y Tipado</span></p></td><td style="border-left:solid #c4c7c5 0.75pt;border-right:solid #c4c7c5 0.75pt;border-bottom:solid #c4c7c5 0.75pt;border-top:solid #c4c7c5 0.75pt;vertical-align:top;padding:6pt 9pt 6pt 9pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:24pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">D&#xE9;bil o din&#xE1;mico</span></p></td><td style="border-left:solid #c4c7c5 0.75pt;border-right:solid #c4c7c5 0.75pt;border-bottom:solid #c4c7c5 0.75pt;border-top:solid #c4c7c5 0.75pt;vertical-align:top;padding:6pt 9pt 6pt 9pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:24pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Tipado estricto, Property Hooks, JIT optimizado</span></p></td></tr><tr style="height:41.25pt"><td style="border-left:solid #c4c7c5 0.75pt;border-right:solid #c4c7c5 0.75pt;border-bottom:solid #c4c7c5 0.75pt;border-top:solid #c4c7c5 0.75pt;vertical-align:top;padding:6pt 9pt 6pt 9pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:24pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Casos de Uso</span></p></td><td style="border-left:solid #c4c7c5 0.75pt;border-right:solid #c4c7c5 0.75pt;border-bottom:solid #c4c7c5 0.75pt;border-top:solid #c4c7c5 0.75pt;vertical-align:top;padding:6pt 9pt 6pt 9pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:24pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">P&#xE1;ginas din&#xE1;micas tradicionales</span></p></td><td style="border-left:solid #c4c7c5 0.75pt;border-right:solid #c4c7c5 0.75pt;border-bottom:solid #c4c7c5 0.75pt;border-top:solid #c4c7c5 0.75pt;vertical-align:top;padding:6pt 9pt 6pt 9pt;overflow:hidden;overflow-wrap:break-word;"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:24pt;"><span style="font-size:11pt;font-family:Arial,sans-serif;color:#1f1f1f;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">APIs de alta concurrencia, Microservicios, IA</span></p></td></tr></tbody></table>
<!--kg-card-end: html-->
<h2 id="conclusi%C3%B3n">Conclusi&#xF3;n</h2><p>El ecosistema PHP ya no est&#xE1; compitiendo por &quot;sobrevivir&quot;, sino por ofrecer una de las experiencias de desarrollo (<em>Developer Experience</em>) m&#xE1;s productivas y eficientes del mercado.</p><p>La combinaci&#xF3;n de Frameworks robustos (Laravel, Symfony), E/S as&#xED;ncrona nativa de alto rendimiento (Io\Poll) y un soporte institucional s&#xF3;lido (PHP Foundation) posicionan a la plataforma como una elecci&#xF3;n estrat&#xE9;gica para arquitecturas escalables de alto rendimiento en 2026.</p>]]></content:encoded></item><item><title><![CDATA[Design Ops 2026]]></title><description><![CDATA[La gobernanza de un sistema de diseño no debería convertirse en una cadena de aprobaciones que ralentiza cada cambio. Su función es ofrecer un marco claro para que los equipos puedan avanzar con autonomía sin perder consistencia.]]></description><link>https://www.itdo.com/blog/design-ops-2026/</link><guid isPermaLink="false">6a6711a0f87e750664d5e1e4</guid><category><![CDATA[Diseño]]></category><category><![CDATA[Ops]]></category><category><![CDATA[Design Ops]]></category><dc:creator><![CDATA[Chiyana Simões]]></dc:creator><pubDate>Mon, 27 Jul 2026 08:10:12 GMT</pubDate><media:content url="https://www.itdo.com/blog/content/images/2026/07/itdo-design-ops-2026.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.itdo.com/blog/content/images/2026/07/itdo-design-ops-2026.png" alt="Design Ops 2026"><p>Un sistema de dise&#xF1;o suele empezar con una intenci&#xF3;n clara: reducir inconsistencias, facilitar la reutilizaci&#xF3;n y ayudar a que <a href="https://www.itdo.com/blog/tag/diseno/"><u>dise&#xF1;o</u></a> y <a href="http://www.itdo.com/"><u>desarrollo</u></a> trabajen con un lenguaje compartido. Durante las primeras etapas, la biblioteca es manejable, los componentes resultan f&#xE1;ciles de identificar y las decisiones todav&#xED;a pueden resolverse entre pocas personas.</p><p>El problema aparece cuando el producto, el equipo y las necesidades empiezan a crecer.</p><p>Surgen nuevas variantes para responder a casos concretos, algunos componentes se duplican porque no se encuentra la opci&#xF3;n adecuada y ciertas excepciones, inicialmente temporales, terminan convirti&#xE9;ndose en parte habitual de la interfaz. Mientras tanto, la documentaci&#xF3;n deja de reflejar lo que ocurre en producci&#xF3;n y dise&#xF1;o y desarrollo empiezan a trabajar con versiones diferentes de un mismo patr&#xF3;n.</p><p>Este desorden no suele aparecer de forma repentina. Se acumula poco a poco, a trav&#xE9;s de peque&#xF1;as decisiones que parecen razonables por separado: copiar un componente para avanzar m&#xE1;s r&#xE1;pido, a&#xF1;adir una propiedad que solo necesita un equipo o aplazar una actualizaci&#xF3;n porque hay otras prioridades. Con el tiempo, la biblioteca crece, pero no necesariamente mejora.</p><p>Entonces, el sistema que deb&#xED;a reducir decisiones empieza a generarlas. Los dise&#xF1;adores dudan sobre qu&#xE9; componente utilizar, los desarrolladores encuentran diferencias entre los archivos de dise&#xF1;o y el c&#xF3;digo, y cada modificaci&#xF3;n requiere comprobar dependencias que nadie conoce del todo. La consistencia deja de estar garantizada por el sistema y vuelve a depender del esfuerzo individual de cada persona.</p><p>Llegados a este punto, el reto ya no consiste en dise&#xF1;ar m&#xE1;s componentes. Consiste en crear una forma sostenible de mantenerlos, hacerlos evolucionar y decidir qu&#xE9; debe permanecer, cambiar o desaparecer. Es aqu&#xED; donde <a href="https://www.uxerschool.com/blog/designops-que-es-para-que-sirve/"><u>Design Ops</u></a> y la gobernanza dejan de ser cuestiones organizativas secundarias y se convierten en una parte esencial del propio sistema de dise&#xF1;o.</p><h2 id="design-ops-el-sistema-operativo-detr%C3%A1s-del-sistema-de-dise%C3%B1o">Design Ops: el sistema operativo detr&#xE1;s del sistema de dise&#xF1;o</h2><p>Un sistema de dise&#xF1;o no se mantiene por s&#xED; solo. Puede tener una biblioteca bien construida, componentes reutilizables, tokens coherentes y una documentaci&#xF3;n inicial completa, pero todo eso pierde valor si no existe una forma clara de gestionar su evoluci&#xF3;n.</p><p>Aqu&#xED; es donde entra Design Ops.</p><p>Design Ops no consiste &#xFA;nicamente en organizar archivos, coordinar reuniones o mantener un calendario de entregas. Su funci&#xF3;n es crear las condiciones para que el trabajo de dise&#xF1;o sea sostenible a medida que aumentan los equipos, los productos y las necesidades. Es, en cierto modo, el sistema operativo que permite que el sistema de dise&#xF1;o siga funcionando.</p><p>Mientras el sistema de dise&#xF1;o define qu&#xE9; componentes, patrones y principios deben utilizarse, Design Ops establece c&#xF3;mo se crean, qui&#xE9;n los mantiene, de qu&#xE9; manera se revisan y cu&#xE1;ndo deben actualizarse o retirarse. Tambi&#xE9;n ayuda a decidir c&#xF3;mo pueden contribuir otros equipos y qu&#xE9; criterios deben cumplirse antes de incorporar una nueva soluci&#xF3;n a la biblioteca compartida.</p><p>Sin estas reglas, cada cambio depende de conversaciones improvisadas. No queda claro qui&#xE9;n puede aprobar una variante, qu&#xE9; hacer cuando dise&#xF1;o y c&#xF3;digo no coinciden o c&#xF3;mo actuar cuando un componente ya no responde a las necesidades del producto. El resultado suele ser una mezcla de decisiones locales, duplicidades y soluciones que avanzan en paralelo.</p><p>Para evitarlo, hacen falta al menos tres elementos: responsabilidades, procesos y criterios compartidos.</p><p>Las responsabilidades permiten saber qui&#xE9;n mantiene cada parte del sistema, qui&#xE9;n valida los cambios y qui&#xE9;n debe intervenir cuando aparece un problema. Los procesos ofrecen un recorrido comprensible para proponer, revisar, probar y publicar mejoras. Los criterios ayudan a distinguir cu&#xE1;ndo una necesidad justifica un nuevo componente, cu&#xE1;ndo puede resolverse con una variante y cu&#xE1;ndo conviene mantener una soluci&#xF3;n fuera del sistema global.</p><p>Esto no significa convertir cada decisi&#xF3;n en un tr&#xE1;mite lento ni centralizar todo el control en un &#xFA;nico equipo. Al contrario, una buena estructura de Design Ops deber&#xED;a reducir la dependencia de conversaciones constantes y facilitar que las personas puedan avanzar con autonom&#xED;a dentro de unos l&#xED;mites conocidos.</p><p>El objetivo no es a&#xF1;adir m&#xE1;s gesti&#xF3;n alrededor del dise&#xF1;o, sino evitar que la falta de gesti&#xF3;n termine creando m&#xE1;s trabajo. Cuando las responsabilidades, los procesos y los criterios est&#xE1;n claros, el sistema de dise&#xF1;o puede crecer sin depender de la memoria, la disponibilidad o el criterio individual de unas pocas personas.</p><h2 id="ownership-y-gobernanza-qui%C3%A9n-decide-qu%C3%A9-cambia">Ownership y gobernanza: qui&#xE9;n decide qu&#xE9; cambia</h2><p>A medida que un sistema de dise&#xF1;o crece, tambi&#xE9;n crece el n&#xFA;mero de personas que lo utilizan, lo modifican y detectan nuevas necesidades. Por eso, no basta con permitir contribuciones: tambi&#xE9;n debe quedar claro qui&#xE9;n puede tomar decisiones sobre el sistema.</p><p>El <em>ownership</em> define qui&#xE9;n mantiene cada componente, qui&#xE9;n revisa los cambios, qui&#xE9;n valida su implementaci&#xF3;n y qui&#xE9;n decide cu&#xE1;ndo una soluci&#xF3;n debe actualizarse o retirarse. No implica que una sola persona controle todo, sino que cada decisi&#xF3;n tenga un responsable reconocible.</p><p>Existen distintos modelos de gobernanza. En un modelo centralizado, un equipo espec&#xED;fico mantiene el sistema y aprueba las contribuciones. En uno federado, distintos equipos participan de forma m&#xE1;s aut&#xF3;noma bajo unas reglas comunes. El modelo h&#xED;brido combina ambos enfoques: un n&#xFA;cleo central protege los fundamentos mientras otros equipos contribuyen en &#xE1;reas concretas.</p><p>No existe un modelo v&#xE1;lido para todas las organizaciones. La elecci&#xF3;n depende del tama&#xF1;o del equipo, la variedad de productos y el nivel de madurez del sistema. Lo importante es evitar dos extremos: que todo dependa de unas pocas personas o que cualquiera pueda introducir cambios sin coordinaci&#xF3;n.</p><p>Una gobernanza eficaz no busca controlar cada detalle, sino asegurar que las decisiones tengan contexto, criterios compartidos y seguimiento. As&#xED;, el sistema puede evolucionar sin perder coherencia ni convertirse en un freno para quienes lo utilizan.</p><h2 id="evitar-el-component-sprawl">Evitar el component sprawl</h2><p>El <em>component sprawl</em> aparece cuando la biblioteca crece sin suficiente control y empieza a llenarse de componentes duplicados, variantes casi id&#xE9;nticas y soluciones creadas para resolver casos muy concretos.</p><p>Muchas veces no se debe a una falta de criterio. Los equipos necesitan avanzar y, si no encuentran una soluci&#xF3;n adecuada o el proceso para solicitar cambios es demasiado lento, terminan creando una alternativa local. Lo que parec&#xED;a una soluci&#xF3;n temporal puede acabar consolid&#xE1;ndose y conviviendo con otras versiones similares.</p><p>Antes de crear un nuevo componente conviene comprobar si responde a una necesidad compartida, si puede resolverse mediante una variante existente o si solo afecta a un contexto espec&#xED;fico. Tambi&#xE9;n es importante valorar si su comportamiento, contenido y prop&#xF3;sito son realmente diferentes, y no solo su apariencia.</p><p>Una soluci&#xF3;n local no es necesariamente un problema. Puede servir para experimentar y validar una necesidad antes de incorporarla al sistema global. El riesgo aparece cuando estas excepciones no se revisan y terminan multiplic&#xE1;ndose sin que nadie sepa cu&#xE1;les deben utilizarse.</p><p>Evitar el <em>component sprawl</em> no consiste en limitar el crecimiento, sino en asegurar que cada nueva pieza tenga una raz&#xF3;n clara para existir y un lugar definido dentro del sistema.</p><h2 id="versionado-y-documentaci%C3%B3n-viva">Versionado y documentaci&#xF3;n viva</h2><p>Cuando un componente cambia, no basta con publicar una nueva versi&#xF3;n. Las personas que lo utilizan necesitan saber qu&#xE9; se ha modificado, por qu&#xE9;, a qui&#xE9;n afecta y si deben realizar alguna acci&#xF3;n para adaptarse.</p><p>Por eso, el versionado debe comunicar el estado de cada componente: si est&#xE1; en fase experimental, si es estable, si va a quedar obsoleto o si ser&#xE1; retirado. Cuando un cambio rompe comportamientos anteriores, tambi&#xE9;n debe incluir instrucciones de migraci&#xF3;n y un plazo razonable para aplicarlas.</p><p>La documentaci&#xF3;n forma parte de este proceso. No deber&#xED;a limitarse a describir propiedades, tama&#xF1;os o variantes, sino explicar para qu&#xE9; sirve el componente, cu&#xE1;ndo debe utilizarse, qu&#xE9; limitaciones tiene y qu&#xE9; decisiones justifican su funcionamiento.</p><p>Para mantenerse &#xFA;til, la documentaci&#xF3;n debe actualizarse al mismo tiempo que el dise&#xF1;o y el c&#xF3;digo. Si se deja para despu&#xE9;s, es f&#xE1;cil que termine describiendo una versi&#xF3;n que ya no existe.</p><p>Una documentaci&#xF3;n viva reduce dudas, evita interpretaciones distintas y conserva el contexto detr&#xE1;s de cada decisi&#xF3;n. As&#xED;, el sistema no depende &#xFA;nicamente de quienes lo crearon, sino que puede ser entendido y mantenido por todo el equipo.</p><h2 id="deuda-de-dise%C3%B1o-y-ritmos-de-mantenimiento">Deuda de dise&#xF1;o y ritmos de mantenimiento</h2><p>La deuda de dise&#xF1;o aparece cuando decisiones temporales, excepciones o componentes antiguos empiezan a dificultar la evoluci&#xF3;n del producto. Puede manifestarse en patrones duplicados, valores aplicados manualmente, diferencias entre dise&#xF1;o y c&#xF3;digo o soluciones que nadie se atreve a retirar por miedo a romper algo.</p><p>No toda deuda tiene la misma urgencia. Conviene priorizarla seg&#xFA;n su impacto: cu&#xE1;nto afecta a la experiencia, cu&#xE1;ntos equipos dependen de ella, qu&#xE9; riesgos genera y cu&#xE1;nto trabajo adicional provoca. As&#xED; se evita dedicar tiempo a corregir detalles menores mientras permanecen problemas estructurales.</p><p>Para gestionarla no hace falta llenar el calendario de reuniones. Es m&#xE1;s &#xFA;til establecer ritmos sencillos y previsibles: revisiones peri&#xF3;dicas del backlog, peque&#xF1;as auditor&#xED;as de componentes, ventanas de publicaci&#xF3;n y planes claros para retirar versiones obsoletas.</p><p>Tambi&#xE9;n es importante registrar la deuda cuando se acepta conscientemente. Una soluci&#xF3;n provisional puede ser v&#xE1;lida si se conoce su alcance, tiene una persona responsable y existe un momento previsto para revisarla.</p><p>El mantenimiento funciona mejor cuando forma parte del trabajo habitual y no depende de una gran limpieza ocasional. Un sistema cuidado con frecuencia acumula menos deuda y permite que los cambios futuros sean m&#xE1;s r&#xE1;pidos, seguros y comprensibles.</p><h2 id="conclusi%C3%B3n">Conclusi&#xF3;n</h2><p>La gobernanza de un sistema de dise&#xF1;o no deber&#xED;a convertirse en una cadena de aprobaciones que ralentiza cada cambio. Su funci&#xF3;n es ofrecer un marco claro para que los equipos puedan avanzar con autonom&#xED;a sin perder consistencia.</p><p>Cuando las responsabilidades, los criterios y los procesos son comprensibles, resulta m&#xE1;s f&#xE1;cil saber cu&#xE1;ndo reutilizar un componente, cu&#xE1;ndo proponer una mejora y cu&#xE1;ndo experimentar con una soluci&#xF3;n local. La gobernanza deja de ser una capa de control y se convierte en una herramienta para tomar decisiones con menos fricci&#xF3;n.</p><p>Tambi&#xE9;n debe existir espacio para evolucionar. Un sistema demasiado r&#xED;gido puede obligar a los equipos a trabajar al margen de &#xE9;l, mientras que uno sin l&#xED;mites termina fragment&#xE1;ndose. El equilibrio consiste en proteger los principios comunes y, al mismo tiempo, permitir que aparezcan nuevas soluciones cuando el producto las necesita.</p><p>Un sistema de dise&#xF1;o saludable no es el que nunca cambia, sino el que puede hacerlo de forma comprensible y sostenible. Gobernar bien significa facilitar esa evoluci&#xF3;n, reducir decisiones repetidas y mantener la coherencia sin convertir el sistema en un obst&#xE1;culo.</p><p><strong>&#xBF;Qu&#xE9; parte de vuestro sistema de dise&#xF1;o depende todav&#xED;a de decisiones informales o del conocimiento de unas pocas personas?</strong><br><br></p>]]></content:encoded></item><item><title><![CDATA[Cuando la perfección deja de diferenciarnos]]></title><description><![CDATA[La perfección técnica seguirá teniendo valor. La inteligencia artificial continuará mejorando y producir contenidos con un acabado profesional será cada vez más rápido, accesible y habitual.]]></description><link>https://www.itdo.com/blog/cuando-la-perfeccion-deja-de-diferenciarnos/</link><guid isPermaLink="false">6a609e15f87e750664d5e1bc</guid><category><![CDATA[Inteligencia Artificial]]></category><category><![CDATA[AI]]></category><dc:creator><![CDATA[Chiyana Simões]]></dc:creator><pubDate>Thu, 23 Jul 2026 08:00:13 GMT</pubDate><media:content url="https://www.itdo.com/blog/content/images/2026/07/itdo-perfeccion-ai-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.itdo.com/blog/content/images/2026/07/itdo-perfeccion-ai-1.jpg" alt="Cuando la perfecci&#xF3;n deja de diferenciarnos"><p>Cada vez resulta m&#xE1;s f&#xE1;cil producir textos fluidos, im&#xE1;genes espectaculares, v&#xED;deos pulidos, voces convincentes o presentaciones con un acabado profesional. Lo que hasta hace poco pod&#xED;a sugerir talento, experiencia, inversi&#xF3;n o muchas horas de trabajo, hoy puede generarse en cuesti&#xF3;n de segundos.</p><p>Esto no significa que esos contenidos carezcan de valor. La cuesti&#xF3;n es otra: cuando casi cualquier pieza puede parecer impecable, la perfecci&#xF3;n t&#xE9;cnica deja de ayudarnos a reconocer qu&#xE9; hay detr&#xE1;s.</p><p>Una imagen puede impresionar sin responder a una mirada propia. Un texto puede sonar convincente sin partir de una experiencia real. Una campa&#xF1;a puede estar perfectamente ejecutada y, aun as&#xED;, no tener demasiado que decir.</p><p>La pregunta, por tanto, no es si el contenido generado por <a href="https://www.itdo.com/blog/tag/inteligencia-artificial/"><u>inteligencia artificial</u></a> es bueno o malo, sino qu&#xE9; sucede cuando la apariencia profesional ya no permite distinguir entre una pieza correcta y una idea con verdadero significado.</p><h2 id="la-perfecci%C3%B3n-t%C3%A9cnica-ya-no-demuestra-lo-mismo">La perfecci&#xF3;n t&#xE9;cnica ya no demuestra lo mismo</h2><p>Una pieza impecable sigue teniendo valor. Un texto bien escrito, una imagen cuidada o un v&#xED;deo correctamente editado contin&#xFA;an siendo se&#xF1;ales de profesionalidad. Lo que ha cambiado es su capacidad para diferenciar.</p><p>Cuando una herramienta hace accesible una habilidad, esa habilidad deja de funcionar por s&#xED; sola como prueba de excelencia. Ya ocurri&#xF3; con muchas otras tecnolog&#xED;as: escribir sin errores, dise&#xF1;ar una composici&#xF3;n limpia o producir un v&#xED;deo con buen acabado pas&#xF3; de ser algo excepcional a convertirse en una expectativa b&#xE1;sica.</p><p>La inteligencia artificial acelera ahora ese mismo proceso. La calidad t&#xE9;cnica deja de ser necesariamente una ventaja competitiva y empieza a parecerse m&#xE1;s a un requisito de entrada.</p><p>Por eso, el valor ya no depende solo de que una pieza est&#xE9; bien hecha, sino de lo que aporta m&#xE1;s all&#xE1; de su acabado: una idea, una intenci&#xF3;n, una perspectiva o una forma propia de mirar.</p><h2 id="producir-algo-correcto-no-significa-tener-algo-que-decir">Producir algo correcto no significa tener algo que decir</h2><p>La inteligencia artificial puede generar una pieza coherente, ordenada y convincente. Puede estructurar un argumento, encontrar el tono adecuado y presentar una idea con claridad. Pero la correcci&#xF3;n formal no garantiza que exista una idea relevante detr&#xE1;s.</p><p>Generar una pieza no es lo mismo que formular una mirada. Tampoco equivale a expresar algo nacido de una experiencia, asumir una posici&#xF3;n o aportar una interpretaci&#xF3;n que no podr&#xED;a firmar cualquier otra persona o marca.</p><p>El problema no es que la IA produzca contenidos correctos. El problema aparece cuando confundimos esa correcci&#xF3;n con profundidad, originalidad o significado.</p><p>Una pieza puede estar perfectamente construida y, aun as&#xED;, no contener nada que merezca ser recordado.</p><h2 id="cuando-generar-deja-de-ser-dif%C3%ADcil-elegir-se-vuelve-m%C3%A1s-importante">Cuando generar deja de ser dif&#xED;cil, elegir se vuelve m&#xE1;s importante</h2><p>La creatividad no desaparece cuando producir se vuelve m&#xE1;s f&#xE1;cil. Se desplaza.</p><p>Durante mucho tiempo, una parte importante del trabajo creativo consist&#xED;a en ejecutar: escribir, dibujar, grabar, editar, dise&#xF1;ar o probar distintas versiones. Hoy, la inteligencia artificial puede acelerar buena parte de ese proceso y generar cientos de posibilidades en muy poco tiempo.</p><p>En ese contexto, el valor se concentra cada vez m&#xE1;s en las decisiones: qu&#xE9; merece crearse, qu&#xE9; perspectiva queremos aportar, qu&#xE9; conviene descartar y por qu&#xE9; elegimos una opci&#xF3;n entre muchas otras.</p><p><strong>La abundancia no reduce la necesidad de creatividad.</strong> Aumenta la importancia del criterio. Cuando generar deja de ser el principal obst&#xE1;culo, pensar, seleccionar y dar sentido se convierten en una parte todav&#xED;a m&#xE1;s decisiva del proceso.</p><h2 id="lo-aut%C3%A9ntico-no-es-necesariamente-lo-artesanal">Lo aut&#xE9;ntico no es necesariamente lo artesanal</h2><p>Hablar de autenticidad no significa defender que todo deba hacerse de forma manual ni rechazar el uso de la tecnolog&#xED;a. Tampoco implica mostrar una espontaneidad constante, publicar errores de manera deliberada o convertir la intimidad en una estrategia de comunicaci&#xF3;n.</p><p>Una pieza puede estar cuidadosamente editada, utilizar inteligencia artificial en distintas fases y seguir siendo aut&#xE9;ntica. La cuesti&#xF3;n no est&#xE1; &#xFA;nicamente en las herramientas empleadas, sino en la relaci&#xF3;n entre aquello que se expresa y lo que realmente se piensa, se conoce, se ha vivido o se pretende hacer.</p><p>Lo aut&#xE9;ntico no es necesariamente improvisado ni imperfecto. Es aquello que mantiene una correspondencia entre el contenido, la intenci&#xF3;n y la realidad que representa.</p><p>Por eso, la autenticidad no depende tanto de c&#xF3;mo se produce una pieza como de si detr&#xE1;s existe una voz, una experiencia o una convicci&#xF3;n reconocible.</p><h2 id="la-experiencia-como-origen-de-una-mirada-propia">La experiencia como origen de una mirada propia</h2><p>La experiencia humana no garantiza por s&#xED; sola una buena idea. Pero puede aportar algo que no nace &#xFA;nicamente de combinar patrones: memoria, contexto, contradicciones, relaciones, consecuencias reales y conocimiento adquirido mediante la pr&#xE1;ctica.</p><p>Una m&#xE1;quina puede describir una situaci&#xF3;n, resumir cientos de testimonios o reproducir determinados estilos. Lo que no puede hacer es haber atravesado esa experiencia, asumir sus efectos o responder por lo que afirma.</p><p>Tener una mirada personal no significa hablar constantemente de uno mismo. Significa interpretar la realidad desde una posici&#xF3;n concreta, con una historia, unos l&#xED;mites y una responsabilidad detr&#xE1;s.</p><p>Por eso, lo diferencial no siempre estar&#xE1; en lo que somos capaces de producir, sino en el lugar desde el que observamos, comprendemos y decidimos contar algo.</p><h2 id="la-imperfecci%C3%B3n-como-se%C3%B1al-de-humanidad">La imperfecci&#xF3;n como se&#xF1;al de humanidad</h2><p>No toda imperfecci&#xF3;n tiene valor. Una errata, una mala experiencia o una ejecuci&#xF3;n descuidada no se vuelven aut&#xE9;nticas simplemente porque hayan sido producidas por una persona.</p><p>Sin embargo, ciertos rasgos pueden revelar que detr&#xE1;s existe una presencia real: una voz reconocible, una duda formulada con honestidad, una historia concreta, un cambio de opini&#xF3;n o una imagen que no parece excesivamente producida.</p><p>Cuando todo est&#xE1; optimizado para resultar impecable, una peque&#xF1;a irregularidad puede convertirse en la huella de una decisi&#xF3;n. Puede mostrar que alguien ha elegido una forma de expresarse, ha asumido una posici&#xF3;n o ha preferido conservar algo propio antes que agradar a todo el mundo.</p><p>La imperfecci&#xF3;n importa cuando revela humanidad, no cuando sustituye al cuidado.</p><h2 id="c%C3%B3mo-demostrar-que-detr%C3%A1s-de-una-marca-existe-una-perspectiva-real">C&#xF3;mo demostrar que detr&#xE1;s de una marca existe una perspectiva real</h2><p>Una marca puede utilizar inteligencia artificial y seguir construyendo una voz aut&#xE9;ntica. Pero, para hacerlo, necesita demostrar que detr&#xE1;s de sus contenidos existe algo m&#xE1;s que una ejecuci&#xF3;n correcta.</p><p>Eso implica compartir aprendizajes obtenidos en proyectos reales, explicar decisiones y no &#xFA;nicamente mostrar resultados, expresar criterios propios y hablar desde un conocimiento espec&#xED;fico del sector. Tambi&#xE9;n puede significar incorporar las voces de trabajadores, clientes o colaboradores, reconocer l&#xED;mites y hacer visibles los cambios de opini&#xF3;n o de rumbo.</p><p>Cuanto m&#xE1;s gen&#xE9;rico es un contenido, m&#xE1;s f&#xE1;cil resulta intercambiarlo por el de cualquier competidor. Una perspectiva real, en cambio, se reconoce en los detalles, en la experiencia acumulada y en la coherencia entre lo que una marca dice y lo que hace.</p><p>No se trata de repetir que una marca es humana, sino de mostrar c&#xF3;mo observa, decide, aprende y act&#xFA;a. La autenticidad no se declara: se demuestra.</p><h2 id="el-riesgo-de-producir-m%C3%A1s-sin-aumentar-el-significado">El riesgo de producir m&#xE1;s sin aumentar el significado</h2><p>La inteligencia artificial permite multiplicar publicaciones, im&#xE1;genes, v&#xED;deos, versiones y campa&#xF1;as con una rapidez dif&#xED;cil de imaginar hace apenas unos a&#xF1;os. Pero producir m&#xE1;s no significa necesariamente aportar m&#xE1;s valor.</p><p>Puede ocurrir lo contrario. Cuanto mayor es el volumen de contenido irrelevante, m&#xE1;s dif&#xED;cil resulta reconocer aquello que merece atenci&#xF3;n. La abundancia termina generando ruido y convierte la capacidad de publicar en una actividad casi autom&#xE1;tica.</p><p>Para una marca, el riesgo no consiste &#xFA;nicamente en saturar a la audiencia. Tambi&#xE9;n puede diluir su propia voz, repetir ideas sin profundidad y perder claridad sobre aquello que realmente quiere comunicar.</p><p>Si la inteligencia artificial ampl&#xED;a nuestra capacidad de producir, tambi&#xE9;n deber&#xED;a aumentar nuestra exigencia para decidir qu&#xE9; merece publicarse y qu&#xE9; conviene dejar fuera.</p><h2 id="conclusi%C3%B3n">Conclusi&#xF3;n</h2><p>La perfecci&#xF3;n t&#xE9;cnica seguir&#xE1; teniendo valor. La inteligencia artificial continuar&#xE1; mejorando y producir contenidos con un acabado profesional ser&#xE1; cada vez m&#xE1;s r&#xE1;pido, accesible y habitual.</p><p>Precisamente por eso, el valor se desplazar&#xE1; hacia otros lugares: la <strong>intenci&#xF3;n</strong> con la que se crea, el <strong>criterio</strong> con el que se elige, la <strong>experiencia</strong> desde la que se habla y la <strong>perspectiva</strong> que permite interpretar la realidad de una manera propia.</p><p>El reto no ser&#xE1; demostrar que sabemos producir una pieza impecable, sino que detr&#xE1;s de ella existe una idea, una decisi&#xF3;n y una voz que no podr&#xED;an intercambiarse f&#xE1;cilmente por cualquier otra.</p><p>Quiz&#xE1; el futuro de la creatividad no consista en competir con las m&#xE1;quinas para alcanzar una perfecci&#xF3;n mayor, sino en ofrecer algo que ninguna m&#xE1;quina puede haber vivido: una mirada propia sobre el mundo.</p><p><strong>Cuando cualquier contenido puede parecer profesional, &#xBF;qu&#xE9; demuestra que detr&#xE1;s existe realmente alguien con algo que decir?</strong></p>]]></content:encoded></item><item><title><![CDATA[Las búsquedas complejas en API ya no tienen que fingir ser POST con el nuevo método HTTP QUERY]]></title><description><![CDATA[Durante años, los desarrolladores de APIs REST hemos enfrentado un dilema técnico fundamental a la hora de implementar sistemas de búsquedas avanzadas.]]></description><link>https://www.itdo.com/blog/el-metodo-http-query-cuando-las-busquedas-complejas-ya-no-tienen-que-fingir-ser-post/</link><guid isPermaLink="false">6a59db67f87e750664d5e16b</guid><category><![CDATA[HTTP]]></category><category><![CDATA[API]]></category><category><![CDATA[JSONAPI]]></category><dc:creator><![CDATA[Sergio Vergara]]></dc:creator><pubDate>Tue, 21 Jul 2026 08:00:04 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1516382799247-87df95d790b7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fHNlYXJjaCUyMGRhdGF0YWJsZXxlbnwwfHx8fDE3ODQyNzQyNzN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1516382799247-87df95d790b7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fHNlYXJjaCUyMGRhdGF0YWJsZXxlbnwwfHx8fDE3ODQyNzQyNzN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="Las b&#xFA;squedas complejas en API ya no tienen que fingir ser POST con el nuevo m&#xE9;todo HTTP QUERY"><p>Las reglas del protocolo HTTP siempre han sido claras, si vas a solicitar datos sin modificar el servidor (una operaci&#xF3;n segura o idempotente), debes usar el m&#xE9;todo <code>GET</code>. Pero, &#xBF;qu&#xE9; ocurre cuando los par&#xE1;metros de tu consulta son demasiado grandes o complejos?</p><h2 id="el-problema-hist%C3%B3rico-entre-get-y-post">El problema hist&#xF3;rico entre GET y POST</h2><p>El m&#xE9;todo <code>GET</code> est&#xE1; dise&#xF1;ado para enviar sus par&#xE1;metros exclusivamente a trav&#xE9;s de la URL (el <em>Query String</em>). Esto siempre ha presentado importantes limitaciones en el desarrollo web moderno:</p><ol><li><strong>L&#xED;mites de longitud:</strong> Los navegadores, proxies y servidores suelen limitar las URLs (generalmente a unos 2000 caracteres). Una b&#xFA;squeda con m&#xFA;ltiples filtros anidados simplemente no cabe.</li><li><strong>Estructuras de datos complejas:</strong> Enviar un JSON profundo, consultas de GraphQL o largas listas de identificadores a trav&#xE9;s de par&#xE1;metros de URL es poco pr&#xE1;ctico, dif&#xED;cil de codificar y propenso a errores.</li><li><strong>Seguridad y privacidad:</strong> Las URLs quedan registradas en los <em>logs</em> de los servidores, en monitores de red y en el historial del navegador. Enviar datos sensibles en un <code>GET</code> supone un riesgo de exposici&#xF3;n.</li></ol><p>Para solucionar este callej&#xF3;n sin salida, la industria adopt&#xF3; una soluci&#xF3;n temporal que se volvi&#xF3; un est&#xE1;ndar de facto: usar el m&#xE9;todo <code>POST</code>. Al hacer esto, los desarrolladores pueden enviar un cuerpo (Payload) con un documento JSON gigante que contenga toda la l&#xF3;gica de la b&#xFA;squeda. Sin embargo, esto tiene un precio, <code>POST</code> fue dise&#xF1;ado para <em>crear</em> o <em>modificar</em> recursos. Sem&#xE1;nticamente no es idempotente y, lo que es peor, rompe los mecanismos autom&#xE1;ticos de cach&#xE9;, dificultando la optimizaci&#xF3;n de las aplicaciones.</p><h2 id="el-m%C3%A9todo-http-query">El m&#xE9;todo HTTP QUERY</h2><p>Para acabar con esta disonancia, el <a href="https://www.ietf.org/" rel="noreferrer">IETF (Internet Engineering Task Force)</a> ha propuesto el nuevo m&#xE9;todo HTTP <code>QUERY</code>. Este m&#xE9;todo nace como una pieza que encaja perfectamente en el rompecabezas del protocolo web, tomando los mejores atributos de sus predecesores.</p><p>El m&#xE9;todo <code>QUERY</code> indica expl&#xED;citamente al servidor que el cliente est&#xE1; realizando una consulta de solo lectura, pero le permite incluir un Payload en el cuerpo de la petici&#xF3;n.</p><h3 id="ventajas-principales-que-transformar%C3%A1n-las-apis">Ventajas principales que transformar&#xE1;n las APIs</h3><p>El impacto de oficializar <code>QUERY</code> dentro del ecosistema HTTP soluciona los problemas arrastrados durante a&#xF1;os:</p><ul><li><strong>Sem&#xE1;ntica correcta y Cach&#xE9;:</strong> Al igual que <code>GET</code>, <code>QUERY</code> es seguro e idempotente. La principal revoluci&#xF3;n es que sus respuestas pueden ser cacheadas eficazmente utilizando las cabeceras est&#xE1;ndar (como <code>Cache-Control</code>), lo que mejorar&#xE1; el rendimiento general sin necesidad de soluciones a medida complejas.</li><li><strong>Sin l&#xED;mites en la carga de datos:</strong> Puedes enviar las consultas GraphQL m&#xE1;s pesadas, las b&#xFA;squedas geoespaciales m&#xE1;s complejas o filtros JSON masivos dentro del cuerpo de la petici&#xF3;n, evadiendo las restricciones de longitud de la URL.</li><li><strong>Privacidad y limpieza:</strong> Al viajar en el <em>body</em>, las consultas de los usuarios no se filtran en los registros de acceso convencionales, manteniendo los logs del servidor limpios y seguros.</li></ul><h2 id="conclusi%C3%B3n">Conclusi&#xF3;n</h2><p>La introducci&#xF3;n de <code>QUERY</code> representa un acto de madurez para el protocolo HTTP. Aunque tomar&#xE1; un tiempo que la adopci&#xF3;n llegue a todos los <em>proxies</em>, navegadores, <em>frameworks</em> de desarrollo e infraestructuras de red, el camino est&#xE1; trazado. Las b&#xFA;squedas complejas pronto podr&#xE1;n dejar de utilizar <code>POST</code> como un parche, permitiendo un desarrollo de APIs m&#xE1;s elegante, r&#xE1;pido y fiel a las bases de la arquitectura web.</p>]]></content:encoded></item><item><title><![CDATA[AX Design (Agentic Experience): Diseñando para la Inteligencia Artificial]]></title><description><![CDATA[La adopción de herramientas de IA está pasando rápidamente de la experimentación a la expansión y la autonomía. ]]></description><link>https://www.itdo.com/blog/ax-design-agentic-experience-disenando-para-la-inteligencia-artificial/</link><guid isPermaLink="false">6a5a275ef87e750664d5e18b</guid><category><![CDATA[Diseño]]></category><category><![CDATA[AI]]></category><dc:creator><![CDATA[Sergio Vergara]]></dc:creator><pubDate>Mon, 20 Jul 2026 08:00:13 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1476357471311-43c0db9fb2b4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDI5fHxkaXNlJUMzJUIxbyUyMElBfGVufDB8fHx8MTc4NDI5ODI4Mnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1476357471311-43c0db9fb2b4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDI5fHxkaXNlJUMzJUIxbyUyMElBfGVufDB8fHx8MTc4NDI5ODI4Mnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="AX Design (Agentic Experience): Dise&#xF1;ando para la Inteligencia Artificial"><p>Durante d&#xE9;cadas, el dise&#xF1;o digital se ha centrado en el UX (User Experience), optimizando interfaces para la psicolog&#xED;a y el comportamiento humano. Sin embargo, estamos entrando en una nueva ola, la era de la <a href="https://www.itdo.com/blog/agentic-ai-de-la-automatizacion-de-tareas-a-la-autonomia-de-procesos/" rel="noreferrer">IA Ag&#xE9;ntica</a>. </p><p>En este nuevo paradigma, los sistemas inteligentes ya no solo sugieren o asisten, sino que razonan, deciden y act&#xFA;an de forma aut&#xF3;noma. Es aqu&#xED; donde nace el nuevo rol y enfoque del AX (Agent o Agentic Experience), un concepto base que est&#xE1; siendo impulsado por iniciativas globales como <a href="https://agentexperience.ax/" rel="noreferrer">AgentExperience</a>.</p><h2 id="%C2%BFqu%C3%A9-es-el-dise%C3%B1o-ax">&#xBF;Qu&#xE9; es el dise&#xF1;o AX?</h2><p>El dise&#xF1;o AX es la disciplina que se centra en optimizar entornos digitales, flujos de trabajo y estructuras de datos para que sean consumidos y operados por agentes de Inteligencia Artificial (AI Agents). Tal como detalla <a href="https://www.pixelmojo.io/blogs/what-is-ax-design-complete-guide-agentic-experience-2026" rel="noreferrer">PixelMojo en su gu&#xED;a completa sobre AX Design</a>, mientras que un usuario humano necesita jerarqu&#xED;a visual, animaciones fluidas y botones contrastantes, un agente de IA requiere APIs bien documentadas, marcado sem&#xE1;ntico, metadatos claros y <em>endpoints</em> predecibles.</p><p>El dise&#xF1;o AX asegura que la tecnolog&#xED;a no solo sea usable para las personas, sino &quot;legible&quot; y accionable para las m&#xE1;quinas. En el ecosistema de desarrollo web, esta tendencia ya est&#xE1; comenzando a abordarse formalmente bajo el concepto de &quot;dise&#xF1;o web orientado a agentes&quot;.</p><h3 id="de-la-asistencia-a-la-autonom%C3%ADa">De la asistencia a la autonom&#xED;a</h3><p>Tal como reflejan los recientes reportes del estado de la industria &#xE1;gil, la IA Ag&#xE9;ntica representa un cambio fundamental: los agentes ya no son ayudantes pasivos, ahora ejecutan, coordinan y aprenden dentro de los l&#xED;mites que definen los equipos. Las empresas est&#xE1;n adoptando r&#xE1;pidamente agentes de IA capaces de automatizar procesos, analizar datos en tiempo real y tomar decisiones aut&#xF3;nomas que se integran directamente en los flujos de trabajo diarios.</p><p>Para que estos agentes puedan ejecutar sus tareas (como coordinar agendas, realizar compras, leer registros de servidores o extraer informaci&#xF3;n), los ecosistemas digitales deben redise&#xF1;arse pensando exclusivamente en ellos.</p><h2 id="%C2%BFpor-qu%C3%A9-necesitamos-el-rol-de-dise%C3%B1ador-ax">&#xBF;Por qu&#xE9; necesitamos el rol de Dise&#xF1;ador AX?</h2><p>La introducci&#xF3;n de agentes aut&#xF3;nomos trae consigo nuevos desaf&#xED;os que justifican la creaci&#xF3;n de un rol especializado. Como se expone en la reflexi&#xF3;n de <a href="https://medium.com/design-bootcamp/what-is-ax-design-why-do-we-need-this-new-role-e21dff4dd541" rel="noreferrer">Design Bootcamp sobre la necesidad de este nuevo rol</a>, las prioridades cambian radicalmente:</p><ol><li><strong>Dise&#xF1;o de interacci&#xF3;n m&#xE1;quina a m&#xE1;quina:</strong> El dise&#xF1;ador AX debe pensar en c&#xF3;mo un LLM (Large Language Model) procesa una plataforma y asegurar que las respuestas del sistema sean estructuradas y carentes de ambig&#xFC;edad.</li><li><strong>Previsibilidad y gobernanza:</strong> Al delegar la ejecuci&#xF3;n de tareas a un agente de IA, el entorno debe estar dise&#xF1;ado con &quot;barreras de seguridad&quot; o <em>guardrails</em> claros para asegurar el cumplimiento de normativas. El dise&#xF1;ador AX ayuda a definir de manera t&#xE9;cnica hasta d&#xF3;nde puede llegar el agente y en qu&#xE9; punto exacto debe solicitar aprobaci&#xF3;n humana.</li><li><strong>Eficiencia de tokens y recursos:</strong> Un entorno optimizado para AX entrega la informaci&#xF3;n exacta que el agente necesita sin c&#xF3;digo basura, ahorrando tokens, tiempo de procesamiento y costes operativos.</li></ol><h2 id="conclusi%C3%B3n">Conclusi&#xF3;n</h2><p>La adopci&#xF3;n de herramientas de IA est&#xE1; pasando r&#xE1;pidamente de la experimentaci&#xF3;n a la expansi&#xF3;n y la autonom&#xED;a. As&#xED; como el dise&#xF1;o UX se volvi&#xF3; indispensable cuando el software lleg&#xF3; a las masas, el dise&#xF1;o AX ser&#xE1; la disciplina clave para construir los puentes entre nuestros servicios digitales y la pr&#xF3;xima generaci&#xF3;n de usuarios: las inteligencias artificiales.</p><p>Referencias:</p><ul><li><a href="https://www.google.com/url?sa=E&amp;q=https%3A%2F%2Fagentexperience.ax%2F" rel="noopener noreferrer">AgentExperience - El portal dedicado a la experiencia ag&#xE9;ntica</a></li><li><a href="https://www.google.com/url?sa=E&amp;q=https%3A%2F%2Fwww.pixelmojo.io%2Fblogs%2Fwhat-is-ax-design-complete-guide-agentic-experience-2026" rel="noopener noreferrer">PixelMojo: What is AX Design? Complete Guide to Agentic Experience 2026</a></li><li><a href="https://www.google.com/url?sa=E&amp;q=https%3A%2F%2Fmedium.com%2Fdesign-bootcamp%2Fwhat-is-ax-design-why-do-we-need-this-new-role-e21dff4dd541" rel="noopener noreferrer">Medium (Design Bootcamp): What is AX design &amp; why do we need this new role?</a></li><li><a href="https://digital.ai/resource-center/analyst-reports/18th-state-of-agile-report/" rel="noreferrer">The 18th Edition - State of Agile Report (2025)</a></li></ul>]]></content:encoded></item><item><title><![CDATA[Cuando pensar deja de ser obligatorio]]></title><description><![CDATA[ La cuestión no es si la IA participará en nuestros procesos, sino qué papel queremos conservar dentro de ellos. Podemos utilizarla como apoyo para explorar mejor una pregunta o permitir que sustituya progresivamente nuestra implicación en la búsqueda de una respuesta.]]></description><link>https://www.itdo.com/blog/cuando-pensar-deja-de-ser-obligatorio/</link><guid isPermaLink="false">6a576595f87e750664d5e13b</guid><category><![CDATA[Inteligencia Artificial]]></category><category><![CDATA[pensamiento crítico]]></category><category><![CDATA[inteligencia artificial generativa]]></category><category><![CDATA[criterio humano]]></category><category><![CDATA[futuro del trabajo]]></category><category><![CDATA[Automatización]]></category><dc:creator><![CDATA[Chiyana Simões]]></dc:creator><pubDate>Thu, 16 Jul 2026 08:00:07 GMT</pubDate><media:content url="https://www.itdo.com/blog/content/images/2026/07/itdo-cuando-pensar-deja-de-ser-obligatorio.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.itdo.com/blog/content/images/2026/07/itdo-cuando-pensar-deja-de-ser-obligatorio.jpg" alt="Cuando pensar deja de ser obligatorio"><p>Hasta hace poco, escribir un texto, comparar varias opciones o resolver una duda exig&#xED;a recorrer un proceso: buscar informaci&#xF3;n, ordenar ideas, descartar posibilidades y construir una conclusi&#xF3;n.</p><p>Ahora podemos pedirle a una <a href="https://es.wikipedia.org/wiki/Inteligencia_artificial"><u>inteligencia artificial</u></a> que haga buena parte de ese recorrido por nosotros. En cuesti&#xF3;n de segundos obtenemos una respuesta clara, estructurada y, muchas veces, m&#xE1;s completa que la que habr&#xED;amos elaborado solos.</p><p>El problema no es necesariamente la calidad del resultado. La respuesta puede ser &#xFA;til, correcta y ayudarnos a avanzar. La cuesti&#xF3;n aparece cuando empezamos a confundir el acceso inmediato a una conclusi&#xF3;n con el hecho de haber pensado.</p><p>La inteligencia artificial no solo acelera el pensamiento. Tambi&#xE9;n puede permitirnos evitar algunas de las tareas que lo construyen: <strong>formular preguntas, contrastar argumentos, detectar contradicciones o convivir durante un tiempo con la incertidumbre</strong>. Una investigaci&#xF3;n de <a href="https://www.microsoft.com/en-us/research/publication/the-impact-of-generative-ai-on-critical-thinking-self-reported-reductions-in-cognitive-effort-and-confidence-effects-from-a-survey-of-knowledge-workers"><u>Microsoft Research</u></a> sobre el uso de IA generativa entre trabajadores del conocimiento observ&#xF3; que una mayor confianza en estas herramientas pod&#xED;a asociarse con un menor esfuerzo de pensamiento cr&#xED;tico durante determinadas tareas.</p><p><strong>&#xBF;Qu&#xE9; ocurre con nuestra capacidad de comprender cuando cada vez necesitamos participar menos en la construcci&#xF3;n de las respuestas?</strong></p><h2 id="obtener-una-respuesta-no-es-comprenderla">Obtener una respuesta no es comprenderla</h2><p>Tener una respuesta correcta no significa necesariamente entender por qu&#xE9; lo es. Podemos repetir una conclusi&#xF3;n, presentar un an&#xE1;lisis o defender una recomendaci&#xF3;n sin saber con claridad qu&#xE9; datos la sostienen, qu&#xE9; supuestos incorpora, qu&#xE9; alternativas se descartaron o en qu&#xE9; circunstancias dejar&#xED;a de ser v&#xE1;lida.</p><p>La inteligencia artificial hace esta diferencia menos visible porque puede producir respuestas bien estructuradas, seguras y convincentes. Su fluidez puede llevarnos a interpretar la facilidad de lectura como una se&#xF1;al de verdad o profundidad. La investigaci&#xF3;n sobre la<a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC3339024/"> <u>fluidez de procesamiento</u></a> muestra que tendemos a considerar m&#xE1;s fiables las afirmaciones que nuestro cerebro procesa con mayor facilidad.</p><p>Por eso, una respuesta puede parecernos clara sin que hayamos comprendido realmente el problema. Reconocemos el argumento, seguimos su l&#xF3;gica y quiz&#xE1; incluso estamos de acuerdo con &#xE9;l, pero no siempre ser&#xED;amos capaces de explicarlo con nuestras propias palabras, identificar sus l&#xED;mites o reconstruir el razonamiento que conduce hasta &#xE9;l.</p><p>Comprender no consiste en reconocer que una respuesta suena bien. Consiste en poder explicarla, cuestionarla y saber qu&#xE9; tendr&#xED;a que cambiar para que dejara de ser v&#xE1;lida.</p><h2 id="pensar-no-consiste-%C3%BAnicamente-en-llegar-a-una-conclusi%C3%B3n">Pensar no consiste &#xFA;nicamente en llegar a una conclusi&#xF3;n</h2><p>Pensar no es solo encontrar una respuesta. Tambi&#xE9;n implica formular bien el problema, relacionar ideas, detectar contradicciones, revisar nuestras propias suposiciones y aceptar que, a veces, todav&#xED;a no sabemos lo suficiente.</p><p>Buena parte de este proceso no produce resultados inmediatos. Dudar, cambiar de opini&#xF3;n o permanecer durante un tiempo dentro de una pregunta puede parecer poco productivo, pero es precisamente ah&#xED; donde se construye el criterio. No solo descubrimos qu&#xE9; pensamos, sino tambi&#xE9;n por qu&#xE9; lo pensamos y qu&#xE9; podr&#xED;a hacernos reconsiderarlo.</p><p>La inteligencia artificial tiende a ofrecernos una salida: una explicaci&#xF3;n, una s&#xED;ntesis o una propuesta con apariencia de cierre. Eso puede ser muy &#xFA;til, pero tambi&#xE9;n puede llevarnos a abandonar demasiado pronto preguntas que todav&#xED;a necesitan tiempo, contexto o discusi&#xF3;n.</p><p>El pensamiento humano no siempre avanza en l&#xED;nea recta. A veces necesita detenerse, volver atr&#xE1;s y reconocer que una primera respuesta era insuficiente.</p><p>El valor de pensar no est&#xE1; &#xFA;nicamente en la conclusi&#xF3;n alcanzada, sino tambi&#xE9;n en la transformaci&#xF3;n que se produce mientras intentamos llegar hasta ella.</p><h2 id="el-riesgo-de-confundir-velocidad-con-inteligencia">El riesgo de confundir velocidad con inteligencia</h2><p>Vivimos en una cultura donde responder r&#xE1;pido suele interpretarse como una se&#xF1;al de competencia. Quien escribe antes, analiza m&#xE1;s datos o propone una soluci&#xF3;n inmediata parece dominar mejor el problema.</p><p>La inteligencia artificial refuerza esa expectativa. Permite generar m&#xE1;s textos, comparar m&#xE1;s opciones y producir m&#xE1;s an&#xE1;lisis en mucho menos tiempo. En muchas tareas, esta aceleraci&#xF3;n es claramente positiva: elimina trabajo repetitivo, facilita el acceso a la informaci&#xF3;n y nos ayuda a avanzar.</p><p>Pero ejecutar m&#xE1;s r&#xE1;pido no significa necesariamente juzgar mejor. La investigaci&#xF3;n sobre el<a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC4052662/"> <u>equilibrio entre velocidad y precisi&#xF3;n</u></a> muestra que decidir con mayor rapidez suele implicar disponer de menos tiempo para acumular y valorar la informaci&#xF3;n.</p><p>La IA puede reducir el tiempo necesario para producir una respuesta, pero no siempre reduce el tiempo necesario para comprender un problema. Algunas cuestiones siguen exigiendo contexto, contraste y una reflexi&#xF3;n que no puede acelerarse sin perder matices importantes.</p><p>La verdadera oportunidad no est&#xE1; &#xFA;nicamente en hacer lo mismo m&#xE1;s deprisa, sino en decidir qu&#xE9; hacer con el tiempo que hemos ganado.</p><p>&#xBF;Lo estamos utilizando para pensar mejor o simplemente para producir m&#xE1;s?</p><h2 id="la-comodidad-intelectual-y-el-debilitamiento-del-criterio">La comodidad intelectual y el debilitamiento del criterio</h2><p>Cuando una herramienta ofrece de forma constante una respuesta razonable, resulta f&#xE1;cil acostumbrarse a aceptar la primera propuesta, dejar de comparar alternativas o pedir una s&#xED;ntesis antes de haber le&#xED;do y pensado por cuenta propia.</p><p>Esta delegaci&#xF3;n no siempre es negativa. La llamada<a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC8358584/"> <u>descarga cognitiva</u></a> nos permite trasladar ciertas tareas a herramientas externas y reservar recursos mentales para otras cuestiones. El problema aparece cuando dejamos de distinguir entre aquello que conviene automatizar y aquello que necesitamos seguir practicando.</p><p>Si recurrimos a la IA antes de formular una posici&#xF3;n propia, podemos empezar a utilizar sus respuestas como punto de llegada y no como punto de partida. Poco a poco, dejamos de preguntarnos qu&#xE9; falta, qu&#xE9; alternativas existen o qu&#xE9; parte del razonamiento no termina de convencernos.</p><p>El riesgo no consiste &#xFA;nicamente en recibir informaci&#xF3;n incorrecta. Tambi&#xE9;n podemos perder la capacidad de reconocer cu&#xE1;ndo una respuesta es superficial, insuficiente o simplemente demasiado c&#xF3;moda para ser cuestionada.</p><p>El criterio no se debilita porque una m&#xE1;quina se equivoque. Se debilita cuando dejamos de ejercitar nuestra capacidad de juzgar lo que nos propone.</p><h2 id="el-poder-de-las-respuestas-plausibles">El poder de las respuestas plausibles</h2><p>Uno de los rasgos m&#xE1;s persuasivos de la inteligencia artificial es su capacidad para producir respuestas que parecen razonables. Est&#xE1;n bien escritas, mantienen una l&#xF3;gica interna y suelen adoptar un tono seguro. Esa calidad formal puede hacer que bajemos la guardia.</p><p>Una respuesta plausible puede ocultar una premisa d&#xE9;bil, simplificar una cuesti&#xF3;n compleja o presentar una interpretaci&#xF3;n como si fuera un hecho. Tambi&#xE9;n puede reforzar nuestras preferencias previas, especialmente cuando confirma aquello que ya esper&#xE1;bamos encontrar.</p><p>No es un fen&#xF3;meno completamente nuevo. La investigaci&#xF3;n sobre la<a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC4816661/"> <u>fluidez de procesamiento</u></a> muestra que tendemos a considerar m&#xE1;s fiables las afirmaciones que resultan f&#xE1;ciles de procesar. Cuando algo se entiende r&#xE1;pidamente, nos parece m&#xE1;s familiar, coherente y, en ocasiones, m&#xE1;s verdadero.</p><p>Con la IA, este efecto adquiere una nueva dimensi&#xF3;n. Una respuesta no necesita ser abiertamente falsa para inducirnos a error. Basta con que elimine matices importantes, cierre demasiado pronto una cuesti&#xF3;n abierta o presente una conclusi&#xF3;n discutible con una seguridad que no le corresponde.</p><p>El problema, por tanto, no est&#xE1; &#xFA;nicamente en los errores que pueda cometer el sistema, sino en nuestra disposici&#xF3;n a aceptar aquello que encaja, suena bien y nos permite seguir adelante sin detenernos a comprobarlo.</p><p>Cuando una respuesta parece inteligente, tendemos a exigirle menos pruebas de que realmente lo sea.</p><h2 id="utilizar-la-ia-para-pensar-mejor-no-para-dejar-de-pensar">Utilizar la IA para pensar mejor, no para dejar de pensar</h2><p>La respuesta no pasa por renunciar a la inteligencia artificial, sino por utilizarla de una forma m&#xE1;s exigente. La cuesti&#xF3;n no es cu&#xE1;nto podemos delegar, sino qu&#xE9; tipo de participaci&#xF3;n queremos conservar dentro del proceso.</p><p>Podemos empezar formulando una primera respuesta antes de consultar la herramienta, pedirle argumentos contrarios a nuestra posici&#xF3;n o solicitar que identifique los supuestos y puntos d&#xE9;biles de una conclusi&#xF3;n. Tambi&#xE9;n podemos comparar interpretaciones, comprobar las afirmaciones importantes y explicar con nuestras propias palabras aquello que hemos obtenido.</p><p>Una de las formas m&#xE1;s &#xFA;tiles de trabajar con IA consiste en pedirle preguntas, no solo respuestas. Una buena pregunta puede revelar lo que no hab&#xED;amos considerado, ampliar el problema o ayudarnos a detectar una simplificaci&#xF3;n prematura.</p><p>Tambi&#xE9;n conviene decidir de antemano qu&#xE9; partes del proceso no queremos delegar. La definici&#xF3;n del problema, la valoraci&#xF3;n de las consecuencias o la decisi&#xF3;n final pueden requerir una implicaci&#xF3;n humana que ninguna respuesta autom&#xE1;tica deber&#xED;a sustituir.</p><p>La IA aporta m&#xE1;s valor cuando ampl&#xED;a el pensamiento que ya estamos realizando que cuando reemplaza por completo nuestra participaci&#xF3;n. Utilizada as&#xED;, no elimina el esfuerzo intelectual: lo orienta, lo contrasta y, en el mejor de los casos, lo hace m&#xE1;s profundo.</p><h2 id="el-proceso-tambi%C3%A9n-forma-parte-del-resultado">El proceso tambi&#xE9;n forma parte del resultado</h2><p>En determinados &#xE1;mbitos, el recorrido no es un obst&#xE1;culo que debamos eliminar. Es precisamente aquello que nos permite aprender.</p><p>Escribir, estudiar, investigar, dise&#xF1;ar o resolver un problema no solo conduce a un resultado visible. Durante ese proceso aprendemos a ordenar ideas, reconocer errores, relacionar conceptos y tomar decisiones con mayor fundamento. Incluso los intentos que descartamos contribuyen a construir una comprensi&#xF3;n m&#xE1;s s&#xF3;lida.</p><p>La inteligencia artificial puede acortar muchas de estas tareas y liberar tiempo valioso. Sin embargo, si delegamos siempre el recorrido completo, podemos obtener mejores resultados inmediatos y, al mismo tiempo, desarrollar menos capacidad para afrontar el siguiente problema sin ayuda.</p><p>Esto resulta especialmente importante en aquellas actividades en las que el objetivo no es &#xFA;nicamente entregar algo, sino aprender a hacerlo: formar una opini&#xF3;n propia, comprender un tema, escribir con una voz reconocible o tomar una decisi&#xF3;n dif&#xED;cil.</p><p><strong>Hay procesos que no solo producen una respuesta. Tambi&#xE9;n producen a la persona capaz de comprenderla.</strong></p><p>Por eso, no todo esfuerzo debe interpretarse como una ineficiencia. A veces, aquello que parece una demora es precisamente lo que transforma la informaci&#xF3;n en conocimiento y la experiencia en criterio.</p><h2 id="conclusi%C3%B3n">Conclusi&#xF3;n</h2><p>La inteligencia artificial puede ayudarnos a buscar, ordenar, contrastar, ampliar y reformular ideas. Puede mostrarnos caminos que no hab&#xED;amos considerado, acelerar tareas que antes consum&#xED;an mucho tiempo y ofrecernos una primera estructura desde la que empezar a trabajar.</p><p>No necesitamos defender una separaci&#xF3;n artificial entre el pensamiento humano y estas herramientas. Cada vez pensaremos m&#xE1;s con ellas, del mismo modo que ya pensamos con libros, buscadores, mapas, calculadoras o conversaciones con otras personas.</p><p>La cuesti&#xF3;n no es si la IA participar&#xE1; en nuestros procesos, sino qu&#xE9; papel queremos conservar dentro de ellos. Podemos utilizarla como apoyo para explorar mejor una pregunta o permitir que sustituya progresivamente nuestra implicaci&#xF3;n en la b&#xFA;squeda de una respuesta.</p><p>Esa diferencia no siempre ser&#xE1; visible en el resultado final. Dos textos pueden parecer igualmente correctos, aunque uno sea fruto de una reflexi&#xF3;n real y el otro haya sido aceptado sin apenas examen. Pero la diferencia s&#xED; aparecer&#xE1; cuando sea necesario justificar una decisi&#xF3;n, responder a una objeci&#xF3;n, detectar un error o enfrentarse a un problema nuevo.</p><p>Pienso que el reto no consiste en evitar que la inteligencia artificial piense con nosotros, sino en impedir que termine pensando siempre en nuestro lugar. Porque una respuesta puede ahorrarnos tiempo, pero solo el esfuerzo de comprender puede convertirla en criterio.</p><p><strong>&#xBF;Qu&#xE9; parte de tu proceso de pensamiento no est&#xE1;s dispuesto a delegar?</strong></p>]]></content:encoded></item><item><title><![CDATA[Cómo orquestar SAST, DAST, IAST, SCA y RASP con una estrategia AppSec]]></title><description><![CDATA[¿SAST, DAST, IAST, SCA, RASP? El ecosistema de seguridad de aplicaciones puede parecer un mar de siglas confuso.]]></description><link>https://www.itdo.com/blog/como-orquestar-sast-dast-iast-sca-y-rasp-con-una-estrategia-appsec/</link><guid isPermaLink="false">6a4f6a51f87e750664d5e0ff</guid><category><![CDATA[Seguridad Web]]></category><category><![CDATA[Seguridad]]></category><category><![CDATA[DevOps]]></category><dc:creator><![CDATA[Sergio Vergara]]></dc:creator><pubDate>Tue, 14 Jul 2026 08:00:21 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1549605659-32d82da3a059?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDZ8fHNlY3VyaXR5JTIwZGV2fGVufDB8fHx8MTc4MzU5MDE5MHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1549605659-32d82da3a059?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDZ8fHNlY3VyaXR5JTIwZGV2fGVufDB8fHx8MTc4MzU5MDE5MHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="C&#xF3;mo orquestar SAST, DAST, IAST, SCA y RASP con una estrategia AppSec"><p>En el desarrollo de software moderno, la velocidad es una exigencia no negociable. Sin embargo, acelerar los despliegues sin una estrategia de Seguridad de Aplicaciones (AppSec) s&#xF3;lida es el equivalente tecnol&#xF3;gico a conducir un b&#xF3;lido de carreras sin frenos.</p><p>A lo largo de nuestra serie de art&#xED;culos, hemos desglosado las herramientas individuales que componen el arsenal de seguridad: <a href="https://www.itdo.com/blog/sast-el-pilar-de-la-seguridad-proactiva-en-el-ciclo-de-vida-del-software/" rel="noreferrer"><strong>SAST</strong></a><strong>, </strong><a href="https://www.itdo.com/blog/dast-protegiendo-tus-aplicaciones-desde-la-perspectiva-del-atacante/" rel="noreferrer"><strong>DAST</strong></a><strong>, </strong><a href="https://www.itdo.com/blog/iast-la-evolucion-hibrida-de-la-seguridad-de-aplicaciones/" rel="noreferrer"><strong>IAST</strong></a><strong>, </strong><a href="https://www.itdo.com/blog/sca-protegiendo-la-cadena-de-suministro-de-software-en-la-era-del-codigo-abierto/" rel="noreferrer"><strong>SCA</strong></a><strong> y </strong><a href="https://www.itdo.com/blog/runtime-application-self-protection-rasp/" rel="noreferrer"><strong>RASP</strong></a>. Pero el verdadero reto de un CTO no es elegir una de ellas, es saber combinarlas de forma estrat&#xE9;gica a lo largo del <a href="https://www.itdo.com/blog/ciclo-de-vida-de-desarrollo-de-software-sdlc-ingenieria-estrategia-y-adaptabilidad/" rel="noreferrer">ciclo de vida del desarrollo de software (SDLC)</a>.</p><p>A continuaci&#xF3;n, analizamos c&#xF3;mo encaja cada pieza del rompecabezas para construir una defensa en profundidad robusta y eficiente.</p><h2 id="%C2%BFd%C3%B3nde-act%C3%BAa-cada-herramienta">&#xBF;D&#xF3;nde act&#xFA;a cada herramienta?</h2><p>Para que la seguridad sea efectiva y econ&#xF3;micamente viable, debe aplicarse bajo el paradigma del <strong>&quot;Shift Left&quot;</strong> (mover la seguridad a la izquierda, es decir, a las fases m&#xE1;s tempranas del desarrollo). Cada fase del SDLC requiere un tipo de an&#xE1;lisis espec&#xED;fico.</p><h3 id="1-fase-de-codificaci%C3%B3n-y-construcci%C3%B3n-build">1. Fase de codificaci&#xF3;n y construcci&#xF3;n (Build)</h3><ul><li><strong>SAST (Static Application Security Testing):</strong> Nuestro an&#xE1;lisis de &quot;caja blanca&quot;. Escanea el c&#xF3;digo fuente en reposo (e incluso dentro del IDE del desarrollador) buscando fallos de dise&#xF1;o o vulnerabilidades como inyecciones antes de que el c&#xF3;digo se compile.</li><li><strong>SCA (Software Composition Analysis):</strong> Dado que no escribes todo tu c&#xF3;digo, el SCA audita las bibliotecas de terceros y de c&#xF3;digo abierto que importas. Genera la SBOM (lista de materiales) y te protege de ataques a la cadena de suministro y de riesgos legales por licencias <em>copyleft</em>.</li><li><strong>El enfoque estrat&#xE9;gico:</strong> En esta fase, el coste de corregir un error es el m&#xE1;s bajo. SAST y SCA act&#xFA;an como el primer filtro de calidad higi&#xE9;nica del software.</li></ul><h3 id="2-fase-de-pruebas-testing-y-qa">2. Fase de pruebas (Testing y QA)</h3><ul><li><strong>DAST (Dynamic Application Security Testing):</strong> Nuestra prueba de &quot;caja negra&quot;. Ataca la aplicaci&#xF3;n desde fuera simulando el comportamiento de un hacker real. No ve el c&#xF3;digo, pero detecta fallos de configuraci&#xF3;n del servidor, problemas en endpoints de APIs y vulnerabilidades que solo afloran en entornos din&#xE1;micos.</li><li><strong>IAST (Interactive Application Security Testing):</strong> El enfoque h&#xED;brido de &quot;caja gris&quot;. Mediante sensores integrados en el servidor de pruebas, el IAST observa el comportamiento interno del c&#xF3;digo mientras se ejecutan los tests funcionales de QA. Une la precisi&#xF3;n del SAST (te da la l&#xED;nea exacta de c&#xF3;digo) con la realidad del DAST (valida que la vulnerabilidad es explotable en vivo), eliminando el ruido de los falsos positivos.</li></ul><h3 id="3-fase-de-operaciones-y-producci%C3%B3n-run">3. Fase de operaciones y producci&#xF3;n (Run)</h3><ul><li><strong>RASP (Runtime Application Self-Protection):</strong> El guardaespalda interno de tu aplicaci&#xF3;n. Una vez que el software est&#xE1; en producci&#xF3;n en la nube, el RASP vive dentro del entorno de ejecuci&#xF3;n interceptando llamadas cr&#xED;ticas del sistema. Si una vulnerabilidad desconocida (d&#xED;a cero) se salt&#xF3; los filtros anteriores y es atacada, el RASP bloquea la acci&#xF3;n en tiempo real directamente en la capa de ejecuci&#xF3;n o la base de datos.</li></ul><h2 id="matriz-comparativa">Matriz comparativa</h2>
<!--kg-card-begin: html-->
<table data-path-to-node="17" style="margin-bottom: 32px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><thead style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><tr style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><strong style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important; margin-bottom: 0px !important;">Herramienta</strong></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><strong style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important; margin-bottom: 0px !important;">Tipo de Enfoque</strong></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><strong style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important; margin-bottom: 0px !important;">Principal Virtud</strong></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><strong style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important; margin-bottom: 0px !important;">Punto Ciego</strong></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><strong style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important; margin-bottom: 0px !important;">Objetivo Clave</strong></td></tr></thead><tbody style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><tr style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,1,0,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><b data-path-to-node="17,1,0,0" data-index-in-node="0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">SAST</b></span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,1,1,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">Caja Blanca (Interno)</span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,1,2,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">Encuentra fallos en el c&#xF3;digo de forma ultra-temprana.</span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,1,3,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">Falsos positivos elevados; no ve el entorno de ejecuci&#xF3;n.</span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,1,4,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">Desarrolladores</span></td></tr><tr style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,2,0,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><b data-path-to-node="17,2,0,0" data-index-in-node="0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">SCA</b></span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,2,1,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">Caja Blanca (Terceros)</span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,2,2,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">Gestiona el riesgo legal de licencias y vulnerabilidades en librer&#xED;as (OSS).</span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,2,3,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">No analiza el c&#xF3;digo propio escrito.</span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,2,4,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">DevOps / Legal</span></td></tr><tr style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,3,0,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><b data-path-to-node="17,3,0,0" data-index-in-node="0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">IAST</b></span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,3,1,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">Caja Gris (H&#xED;brido)</span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,3,2,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">M&#xE1;xima precisi&#xF3;n, cero falsos positivos y contexto en tiempo real.</span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,3,3,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">Depende del lenguaje; consume recursos en test.</span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,3,4,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">QA / DevSecOps</span></td></tr><tr style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,4,0,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><b data-path-to-node="17,4,0,0" data-index-in-node="0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">DAST</b></span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,4,1,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">Caja Negra (Externo)</span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,4,2,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">Encuentra fallos de configuraci&#xF3;n e infraestructura; agn&#xF3;stico del lenguaje.</span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,4,3,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">No indica la l&#xED;nea de c&#xF3;digo; se ejecuta tarde en el SDLC.</span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,4,4,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">Equipos de Seguridad</span></td></tr><tr style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,5,0,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><b data-path-to-node="17,5,0,0" data-index-in-node="0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">RASP</b></span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,5,1,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">Inmunidad Activa</span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,5,2,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">Bloquea ataques reales y vulnerabilidades de d&#xED;a cero en producci&#xF3;n.</span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,5,3,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">Puede a&#xF1;adir latencia si no est&#xE1; bien optimizado.</span></td><td style="border: 1px solid rgb(196, 199, 197); padding: 8px 12px; font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"><span data-path-to-node="17,5,4,0" style="font-family: &quot;Google Sans Text&quot;, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">Operaciones / Cloud</span></td></tr></tbody></table>
<!--kg-card-end: html-->
<h2 id="%C2%BFc%C3%B3mo-dise%C3%B1ar-tu-estrategia-appsec">&#xBF;C&#xF3;mo dise&#xF1;ar tu estrategia AppSec?</h2><p>Implementar todas las herramientas a la vez solo generar&#xE1; fatiga de alertas y bloquear&#xE1; a tus desarrolladores. Te recomendamos una adopci&#xF3;n gradual:</p><ol><li><strong>Establece la l&#xED;nea base (Fase 1):</strong> Comienza automatizando SCA y SAST ligeros en tus pipelines de CI/CD. Limpia tus dependencias y educa a tu equipo en pr&#xE1;cticas de c&#xF3;digo seguro.</li><li><strong>Optimiza tus pruebas (Fase 2):</strong> Introduce IAST en tus entornos de Staging/QA aprovechando tus pruebas automatizadas actuales para erradicar los fallos cr&#xED;ticos de l&#xF3;gica antes del despliegue.</li><li><strong>Protege el entorno de producci&#xF3;n (Fase 3):</strong> Despliega un WAF perimetral complementado con RASP para tus aplicaciones e infraestructuras cr&#xED;ticas en la nube, asegurando que tu negocio sea resiliente ante ataques imprevistos.</li></ol><h2 id="conclusi%C3%B3n">Conclusi&#xF3;n</h2><p>Una estrategia AppSec moderna no busca encontrar culpables o malas decisiones, sino crear un sistema automatizado de confianza. Ninguna herramienta por s&#xED; sola es infalible, pero orquestadas de manera inteligente, transforman la seguridad de ser un cuello de botella a convertirse en una ventaja competitiva que genera software robusto, r&#xE1;pido y confiable.</p>]]></content:encoded></item><item><title><![CDATA[Personalizar sin complicar: UX para productos modulares]]></title><description><![CDATA[La modularidad puede hacer que un producto sea más flexible, escalable y útil para perfiles muy distintos. Pero esa riqueza interna no debería convertirse en una obligación constante de configurar, elegir y entender cómo está construido el sistema.]]></description><link>https://www.itdo.com/blog/personalizar-sin-complicar-ux-para-productos-modulares/</link><guid isPermaLink="false">6a54916df87e750664d5e129</guid><category><![CDATA[Diseño]]></category><category><![CDATA[UX]]></category><category><![CDATA[Diseño UX]]></category><dc:creator><![CDATA[Chiyana Simões]]></dc:creator><pubDate>Mon, 13 Jul 2026 08:00:57 GMT</pubDate><media:content url="https://www.itdo.com/blog/content/images/2026/07/itdo-personalizar-sin-coplicar-ux-productos-modulares.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.itdo.com/blog/content/images/2026/07/itdo-personalizar-sin-coplicar-ux-productos-modulares.png" alt="Personalizar sin complicar: UX para productos modulares"><p>La personalizaci&#xF3;n se ha convertido en una promesa habitual en muchos productos digitales. Poder elegir c&#xF3;mo organizar la informaci&#xF3;n, qu&#xE9; m&#xF3;dulos utilizar, qu&#xE9; funciones activar o c&#xF3;mo adaptar la interfaz parece, en principio, una mejora evidente de la experiencia.</p><p>El problema aparece cuando esa flexibilidad obliga al usuario a tomar demasiadas decisiones antes de haber entendido siquiera c&#xF3;mo funciona el producto.</p><p>Una cosa es poder adaptar una herramienta y otra muy distinta tener que configurarla desde cero para empezar a obtener valor. Cuando cada paso inicial exige elegir entre m&#xFA;ltiples opciones, definir preferencias, establecer permisos o decidir entre distintos modos de uso, la personalizaci&#xF3;n deja de sentirse como una ventaja y empieza a convertirse en trabajo.</p><p>Aqu&#xED; surge una paradoja: los usuarios valoran tener control, pero no necesariamente quieren ejercerlo todo el tiempo. Quieren saber que pueden cambiar las cosas cuando lo necesiten, no verse obligados a decidirlo todo desde el primer momento.</p><p>Adem&#xE1;s, m&#xE1;s opciones no siempre generan una mayor sensaci&#xF3;n de libertad. A menudo producen dudas, ralentizan la toma de decisiones y aumentan el miedo a elegir mal. Cuanto menos conoce el usuario el producto, menos preparado est&#xE1; para entender las consecuencias de cada configuraci&#xF3;n.</p><p>Por eso, <a href="https://www.itdo.com/blog/disenar-accesible-a-escala/"><u>dise&#xF1;ar</u></a> una experiencia personalizable no consiste simplemente en a&#xF1;adir controles. Consiste en decidir qu&#xE9; debe venir resuelto, qu&#xE9; puede modificarse m&#xE1;s adelante y qu&#xE9; opciones solo deber&#xED;an aparecer cuando exista una necesidad real.</p><p>La flexibilidad resulta &#xFA;til cuando acompa&#xF1;a al usuario. Cuando se presenta demasiado pronto o sin contexto, solo expone la complejidad del sistema.</p><h2 id="cuando-la-modularidad-interna-invade-la-interfaz">Cuando la modularidad interna invade la interfaz</h2><p>Muchos productos digitales est&#xE1;n construidos a partir de <a href="https://www.itdo.com/blog/tag/modularidad/"><u>m&#xF3;dulos</u></a>, permisos, reglas, integraciones y capas de configuraci&#xF3;n. Esa arquitectura puede ser necesaria para que el sistema sea escalable, flexible y capaz de responder a distintos casos de uso.</p><p>El problema aparece cuando toda esa complejidad interna se traslada directamente a la interfaz.</p><p>En lugar de encontrarse con tareas, objetivos o resultados comprensibles, el usuario se encuentra con nombres de m&#xF3;dulos, par&#xE1;metros t&#xE9;cnicos, estructuras jer&#xE1;rquicas o dependencias que solo tienen sentido para quienes han dise&#xF1;ado el producto. La experiencia termina reproduciendo la l&#xF3;gica del sistema, no la l&#xF3;gica de la persona que intenta utilizarlo.</p><p>Esto ocurre, por ejemplo, cuando para completar una acci&#xF3;n sencilla hay que activar previamente varias funciones, definir permisos, elegir entre categor&#xED;as ambiguas o comprender c&#xF3;mo se relacionan distintos apartados. El usuario no solo debe aprender a utilizar el producto: tambi&#xE9;n debe descifrar c&#xF3;mo est&#xE1; construido.</p><p>En estos casos, la modularidad deja de ser una ventaja invisible y se convierte en una carga visible.</p><p>Una buena interfaz no deber&#xED;a obligar a entender la arquitectura t&#xE9;cnica para realizar una tarea cotidiana. Puede apoyarse en una estructura modular internamente, pero debe traducirla en decisiones claras, recorridos comprensibles y acciones vinculadas a objetivos concretos.</p><p>No se trata de ocultar informaci&#xF3;n importante, sino de presentarla con el nivel de detalle adecuado. Los conceptos t&#xE9;cnicos pueden seguir existiendo, pero no deber&#xED;an ocupar el centro de la experiencia si no son necesarios para avanzar.</p><p>La modularidad pertenece a la arquitectura del producto. La simplicidad, en cambio, pertenece a la experiencia del usuario. Confundir ambas cosas suele producir herramientas muy potentes, pero innecesariamente dif&#xED;ciles de utilizar.</p><h2 id="empezar-con-una-experiencia-que-ya-funciona">Empezar con una experiencia que ya funciona</h2><p>Una de las mejores formas de reducir la complejidad en productos modulares es evitar que el usuario tenga que construir su experiencia desde cero.</p><p>Cuando alguien entra por primera vez en una herramienta, todav&#xED;a no conoce bien sus posibilidades, no sabe qu&#xE9; configuraci&#xF3;n le conviene y dif&#xED;cilmente puede anticipar c&#xF3;mo afectar&#xE1; cada decisi&#xF3;n a su forma de trabajar. Pedirle que defina desde el inicio todos los m&#xF3;dulos, permisos, vistas y preferencias supone trasladarle una responsabilidad para la que a&#xFA;n no tiene suficiente contexto.</p><p>Por eso, el punto de partida deber&#xED;a ser una experiencia &#xFA;til desde el primer momento.</p><p>Los valores predeterminados, las configuraciones recomendadas y los recorridos iniciales no son decisiones menores. Funcionan como una primera propuesta de uso: muestran c&#xF3;mo puede organizarse el producto, reducen el n&#xFA;mero de elecciones necesarias y permiten que el usuario aprenda mientras avanza.</p><p>Un buen estado inicial no tiene que ser perfecto para todos, pero s&#xED; suficientemente claro y funcional para la mayor&#xED;a. Puede incluir una estructura b&#xE1;sica, una selecci&#xF3;n razonable de m&#xF3;dulos, una vista preparada o ejemplos que ayuden a comprender el potencial de la herramienta sin necesidad de configurar cada detalle.</p><p>Esto no elimina la personalizaci&#xF3;n. La desplaza al momento en que realmente tiene sentido.</p><p>A medida que el usuario conoce mejor el producto, puede adaptar la experiencia, sustituir opciones, reorganizar elementos o activar funciones m&#xE1;s avanzadas. La diferencia es que ya no decide a ciegas, sino a partir de una necesidad concreta.</p><p>Dise&#xF1;ar buenos valores predeterminados tambi&#xE9;n implica asumir responsabilidad. El equipo de producto debe tomar decisiones, priorizar escenarios y proponer una forma inicial de uso, en lugar de dejar todas las posibilidades abiertas por miedo a limitar.</p><p>Una experiencia modular funciona mejor cuando primero demuestra su valor y despu&#xE9;s ofrece profundidad. El usuario deber&#xED;a poder empezar utilizando el producto, no empezar dise&#xF1;&#xE1;ndolo.</p><h2 id="presets-y-modos">Presets y modos</h2><p>Cuando un producto ofrece muchas posibilidades de configuraci&#xF3;n, una forma eficaz de reducir la carga de decisi&#xF3;n es agruparlas en presets o modos comprensibles.</p><p>En lugar de pedir al usuario que ajuste una larga lista de par&#xE1;metros, el sistema puede plantearle una elecci&#xF3;n m&#xE1;s cercana a su objetivo: trabajar de forma r&#xE1;pida, colaborar con un equipo, priorizar el control, simplificar la vista o activar funciones avanzadas.</p><p>La diferencia es importante. Los par&#xE1;metros describen c&#xF3;mo funciona el sistema. Los presets explican para qu&#xE9; puede servir.</p><p>Un buen preset traduce decisiones t&#xE9;cnicas en una propuesta de uso reconocible. Puede configurar autom&#xE1;ticamente vistas, permisos, m&#xF3;dulos o automatizaciones, pero el usuario no necesita entender cada ajuste desde el principio. Lo que necesita es saber qu&#xE9; opci&#xF3;n encaja mejor con su situaci&#xF3;n.</p><p>Los modos cumplen una funci&#xF3;n similar cuando existen formas de trabajar claramente diferenciadas. Un modo guiado, por ejemplo, puede acompa&#xF1;ar a quienes empiezan, mientras que uno avanzado ofrece mayor control a usuarios con m&#xE1;s experiencia. Tambi&#xE9;n pueden existir modos orientados a tareas concretas, como edici&#xF3;n, presentaci&#xF3;n, an&#xE1;lisis o colaboraci&#xF3;n.</p><p>Sin embargo, estas soluciones solo simplifican cuando est&#xE1;n bien definidas.</p><p>Si los nombres son ambiguos, si existen demasiadas variantes o si cambiar de modo transforma por completo la interfaz sin explicarlo, el problema reaparece bajo otra forma. El usuario deja de elegir entre par&#xE1;metros, pero sigue sin comprender las consecuencias de su decisi&#xF3;n.</p><p>Por eso, los presets y modos deber&#xED;an responder a necesidades reales, mostrar con claridad qu&#xE9; cambia y permitir ajustes posteriores. Tambi&#xE9;n conviene evitar que funcionen como configuraciones cerradas. Su valor est&#xE1; en ofrecer un punto de partida, no en imponer una &#xFA;nica manera de utilizar el producto.</p><p>Agrupar opciones no significa ocultar complejidad sin criterio. Significa organizarla alrededor de objetivos que el usuario pueda reconocer y comprender.</p><h2 id="simplicidad-progresiva">Simplicidad progresiva</h2><p>Simplificar una interfaz no significa eliminar funciones ni esconderlas de forma arbitraria. Significa decidir cu&#xE1;ndo necesita verlas el usuario y en qu&#xE9; contexto puede comprenderlas mejor.</p><p>En un producto modular, no todas las opciones tienen la misma importancia ni se utilizan con la misma frecuencia. Algunas son esenciales para completar una tarea cotidiana; otras solo resultan &#xFA;tiles en situaciones concretas; y otras est&#xE1;n pensadas para usuarios avanzados que necesitan un mayor nivel de control.</p><p>Mostrar todas esas posibilidades al mismo tiempo sit&#xFA;a cada decisi&#xF3;n al mismo nivel, aunque en la pr&#xE1;ctica no lo est&#xE9;n. El resultado suele ser una interfaz densa, dif&#xED;cil de recorrer y llena de controles que la mayor&#xED;a de los usuarios apenas utiliza.</p><p>La simplicidad progresiva permite organizar esa complejidad por capas.</p><p>Los controles esenciales deben estar visibles y ser f&#xE1;ciles de reconocer. Son las acciones que permiten avanzar y que forman parte del uso habitual del producto. Las opciones contextuales, en cambio, pueden aparecer cuando el usuario trabaja sobre un elemento determinado o realiza una tarea en la que realmente son relevantes. Las funciones avanzadas pueden permanecer accesibles sin ocupar permanentemente el centro de la experiencia.</p><p>Por ejemplo, no es necesario mostrar todas las opciones de configuraci&#xF3;n de una tabla antes de que el usuario haya creado una. Tiene m&#xE1;s sentido presentar controles para ordenar columnas, aplicar filtros o modificar la visualizaci&#xF3;n dentro de la propia tabla, cuando esas decisiones tienen un efecto inmediato y comprensible.</p><p>Este enfoque tambi&#xE9;n facilita el aprendizaje. En lugar de tener que entender el producto completo desde el principio, el usuario descubre nuevas posibilidades a medida que las necesita. Cada funci&#xF3;n aparece asociada a una acci&#xF3;n, un problema o un objetivo concreto, por lo que resulta m&#xE1;s f&#xE1;cil comprender su utilidad.</p><p>Sin embargo, la simplicidad progresiva no deber&#xED;a convertirse en una b&#xFA;squeda constante de funciones ocultas. Las opciones deben ser encontrables, seguir patrones coherentes y aparecer en lugares previsibles. Ocultar sin criterio puede reducir el ruido visual, pero tambi&#xE9;n generar frustraci&#xF3;n y hacer que el producto parezca m&#xE1;s limitado de lo que realmente es.</p><p>El objetivo no es mostrar menos por principio, sino mostrar mejor. Una interfaz modular funciona cuando presenta cada nivel de control en el momento adecuado, sin abrumar a quien empieza ni limitar a quien necesita profundizar.</p><h2 id="personalizaci%C3%B3n-con-l%C3%ADmites-contexto-y-reversibilidad">Personalizaci&#xF3;n con l&#xED;mites, contexto y reversibilidad</h2><p>Permitir que el usuario adapte un producto no significa convertir cada elemento en una decisi&#xF3;n abierta. De hecho, una experiencia demasiado configurable puede resultar tan dif&#xED;cil de utilizar como una interfaz r&#xED;gida.</p><p>No todo necesita ser personalizable. Algunas decisiones deben mantenerse estables para proteger la accesibilidad, la seguridad, el rendimiento, la coherencia visual o la integridad de los datos. Dejar estos aspectos completamente en manos del usuario puede generar experiencias inconsistentes, errores dif&#xED;ciles de detectar o configuraciones que perjudiquen el uso del producto.</p><p>Por eso, dise&#xF1;ar personalizaci&#xF3;n tambi&#xE9;n implica establecer l&#xED;mites.</p><p>Esos l&#xED;mites no deber&#xED;an percibirse como restricciones arbitrarias, sino como una forma de orientar la experiencia. El usuario puede elegir entre opciones relevantes, pero dentro de un marco que mantiene el producto comprensible y fiable. La flexibilidad funciona mejor cuando existe una base s&#xF3;lida que no cambia constantemente.</p><p>El contexto tambi&#xE9;n es importante. Muchas decisiones se entienden mejor en el lugar donde producen sus efectos. Cambiar la visualizaci&#xF3;n de un gr&#xE1;fico desde el propio gr&#xE1;fico, reorganizar una tabla desde sus columnas o ajustar una notificaci&#xF3;n desde el mensaje recibido resulta m&#xE1;s natural que buscar cada opci&#xF3;n en una larga p&#xE1;gina de configuraci&#xF3;n.</p><p>Adem&#xE1;s, el usuario deber&#xED;a poder anticipar qu&#xE9; ocurrir&#xE1; antes de confirmar un cambio. Las previsualizaciones, los ejemplos y los res&#xFA;menes ayudan a comprender las consecuencias de una configuraci&#xF3;n sin necesidad de probarla a ciegas.</p><p>Esta seguridad aumenta cuando las decisiones son reversibles. Poder deshacer un cambio, restaurar los valores predeterminados o recuperar una configuraci&#xF3;n anterior anima a explorar y reduce el miedo a equivocarse.</p><p>La sensaci&#xF3;n de control no depende &#xFA;nicamente de poder modificar algo. Tambi&#xE9;n depende de saber que ese cambio no es definitivo y de que el sistema permitir&#xE1; volver atr&#xE1;s si el resultado no es el esperado.</p><p>Una personalizaci&#xF3;n bien dise&#xF1;ada ofrece libertad, pero no abandona al usuario frente a todas las posibilidades. Define l&#xED;mites razonables, sit&#xFA;a las decisiones en contexto y permite experimentar sin miedo a romper la experiencia.</p><h2 id="conclusi%C3%B3n">Conclusi&#xF3;n</h2><p>La modularidad puede hacer que un producto sea m&#xE1;s flexible, escalable y &#xFA;til para perfiles muy distintos. Pero esa riqueza interna no deber&#xED;a convertirse en una obligaci&#xF3;n constante de configurar, elegir y entender c&#xF3;mo est&#xE1; construido el sistema.</p><p>La mejor personalizaci&#xF3;n no consiste en exponer todas las posibilidades disponibles. Consiste en ofrecer una experiencia inicial clara, permitir que el usuario avance sin fricci&#xF3;n y abrir nuevos niveles de control cuando existe una necesidad real.</p><p>Eso exige tomar decisiones desde dise&#xF1;o y producto. Definir buenos valores predeterminados, agrupar opciones en presets comprensibles, introducir funciones de forma progresiva y establecer l&#xED;mites que protejan la coherencia, la accesibilidad y la seguridad.</p><p>Tambi&#xE9;n implica aceptar que personalizar no siempre significa a&#xF1;adir m&#xE1;s controles. A veces significa resolver mejor lo esencial, reducir decisiones innecesarias y situar cada opci&#xF3;n en el momento y el contexto adecuados.</p><p>Un producto modular no deber&#xED;a pedir al usuario que comprenda toda su arquitectura para poder utilizarlo. Deber&#xED;a traducir esa complejidad en recorridos sencillos, decisiones claras y una sensaci&#xF3;n real de control.</p><p>En &#xFA;ltima instancia, adaptar bien una experiencia consiste en permitir que cada persona encuentre su forma de trabajar sin obligarla a dise&#xF1;ar primero el producto que necesita.</p><p><strong>&#xBF;Cu&#xE1;ntas decisiones debe tomar hoy un usuario antes de empezar a obtener valor de tu producto?</strong></p>]]></content:encoded></item><item><title><![CDATA[El futuro del marketing medible]]></title><description><![CDATA[El marketing maduro no mide solo para reportar. Mide para acumular conocimiento operativo.]]></description><link>https://www.itdo.com/blog/el-futuro-del-marketing-medible/</link><guid isPermaLink="false">6a4e4176f87e750664d5e0ee</guid><category><![CDATA[Marketing Digital]]></category><dc:creator><![CDATA[Chiyana Simões]]></dc:creator><pubDate>Thu, 09 Jul 2026 08:00:01 GMT</pubDate><media:content url="https://www.itdo.com/blog/content/images/2026/07/itdo-futuro-marketing-medible.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.itdo.com/blog/content/images/2026/07/itdo-futuro-marketing-medible.png" alt="El futuro del marketing medible"><p>La <a href="https://www.itdo.com/blog/la-medicion-como-ventaja-competitiva/"><u>medici&#xF3;n</u></a> en marketing ha servido muchas veces para mirar hacia atr&#xE1;s: revisar resultados, explicar qu&#xE9; hab&#xED;a funcionado, justificar la inversi&#xF3;n y repartir el m&#xE9;rito entre canales, formatos o audiencias.</p><p>Ese enfoque sigue siendo necesario, pero ya no es suficiente.</p><p>En un entorno donde la inversi&#xF3;n se analiza con m&#xE1;s exigencia, los ciclos de decisi&#xF3;n son m&#xE1;s r&#xE1;pidos y las se&#xF1;ales disponibles son cada vez m&#xE1;s fragmentadas, medir no puede limitarse a construir una explicaci&#xF3;n razonable de lo que ya ha ocurrido. La medici&#xF3;n tiene que ayudar a mejorar lo que vendr&#xE1; despu&#xE9;s.</p><p>La pregunta ya no deber&#xED;a ser solo: qu&#xE9; canal gener&#xF3; esta conversi&#xF3;n, qu&#xE9; campa&#xF1;a consigui&#xF3; m&#xE1;s leads o qu&#xE9; pieza obtuvo mejor rendimiento. Esas preguntas siguen siendo &#xFA;tiles, pero pertenecen a una l&#xF3;gica incompleta si no van acompa&#xF1;adas de otra cuesti&#xF3;n m&#xE1;s importante: qu&#xE9; hemos aprendido que nos permita invertir, crear y decidir mejor la pr&#xF3;xima vez.</p><p>Ah&#xED; est&#xE1; el cambio de fondo. La medici&#xF3;n deja de ser &#xFA;nicamente una herramienta de auditor&#xED;a para convertirse en un sistema de aprendizaje. No sirve solo para cerrar campa&#xF1;as con un informe, sino para abrir conversaciones m&#xE1;s inteligentes sobre estrategia, presupuesto, creatividad, segmentaci&#xF3;n y crecimiento.</p><p>Cuando marketing mide solo para justificar, mira el dato como una defensa. Cuando mide para aprender, lo convierte en criterio.</p><p>Y ese cambio marcar&#xE1; buena parte del futuro del marketing medible.</p><h2 id="el-l%C3%ADmite-de-la-atribuci%C3%B3n">El l&#xED;mite de la atribuci&#xF3;n</h2><p>La atribuci&#xF3;n ha sido una de las grandes promesas del <a href="https://www.itdo.com/blog/tag/marketing-digital/"><u>marketing digital</u></a>: identificar qu&#xE9; canal, campa&#xF1;a o punto de contacto ha contribuido a una conversi&#xF3;n y asignar valor a cada interacci&#xF3;n. Bien utilizada, aporta orden. Ayuda a comparar rendimientos, detectar se&#xF1;ales relevantes y orientar decisiones t&#xE1;cticas con m&#xE1;s informaci&#xF3;n.</p><p>Pero la atribuci&#xF3;n tiene un l&#xED;mite evidente: no siempre explica si una campa&#xF1;a ha generado valor real.</p><p>Una conversi&#xF3;n atribuida no equivale necesariamente a una venta incremental. Puede indicar que un usuario ha pasado por un canal antes de comprar, pero no siempre demuestra que esa compra no habr&#xED;a ocurrido de todos modos. Del mismo modo, una campa&#xF1;a puede capturar demanda existente sin haberla creado, mejorar el rendimiento a corto plazo sin construir preferencia de marca, o mostrar eficiencia aparente mientras deja fuera efectos m&#xE1;s lentos, menos visibles y m&#xE1;s dif&#xED;ciles de medir.</p><p>Por eso, el futuro del marketing medible exige mirar m&#xE1;s all&#xE1; del reparto de m&#xE9;rito entre canales. La pregunta no puede quedarse en qu&#xE9; punto de contacto se lleva la conversi&#xF3;n. Tambi&#xE9;n debe preguntarse qu&#xE9; parte del resultado es realmente nueva, qu&#xE9; demanda se ha generado, qu&#xE9; comportamiento ha cambiado y qu&#xE9; aprendizaje deja esa inversi&#xF3;n para futuras decisiones.</p><p>Esta diferencia es clave. La <a href="https://www.itdo.com/blog/que-son-los-modelos-de-atribucion-en-un-e-commerce/"><u>atribuci&#xF3;n</u></a> puede ayudar a entender el recorrido observable de un usuario, pero no siempre revela la causalidad completa. Puede mostrar qu&#xE9; ocurri&#xF3; antes de una compra, pero no siempre explica por qu&#xE9; ocurri&#xF3;, qu&#xE9; habr&#xED;a pasado sin la campa&#xF1;a o qu&#xE9; efecto tendr&#xE1; esa acci&#xF3;n en la relaci&#xF3;n futura con la marca.</p><p>Ah&#xED; aparece una de las tensiones centrales del marketing actual: conversiones atribuidas frente a ventas incrementales, demanda capturada frente a demanda generada, impacto inmediato frente a construcci&#xF3;n de valor a largo plazo.</p><p>Medir mejor no significa atribuirlo todo con m&#xE1;s precisi&#xF3;n aparente. Significa reconocer qu&#xE9; puede explicar cada m&#xE9;trica, qu&#xE9; no puede explicar y qu&#xE9; decisiones deber&#xED;an tomarse a partir de ella.</p><p><strong>Porque atribuir no es lo mismo que entender.</strong></p><h2 id="el-futuro-ser%C3%A1-h%C3%ADbrido">El futuro ser&#xE1; h&#xED;brido</h2><p>El futuro de la medici&#xF3;n no pasar&#xE1; por encontrar un &#xFA;nico modelo capaz de explicarlo todo. Esa expectativa, adem&#xE1;s de poco realista, puede ser peligrosa. Cada metodolog&#xED;a observa una parte distinta del problema, responde a preguntas diferentes y tiene l&#xED;mites propios.</p><p>La atribuci&#xF3;n puede seguir siendo &#xFA;til para leer se&#xF1;ales t&#xE1;cticas: qu&#xE9; canales intervienen en determinados recorridos, qu&#xE9; campa&#xF1;as generan interacci&#xF3;n, qu&#xE9; formatos activan mejor ciertos comportamientos o d&#xF3;nde aparecen fricciones en el camino hacia la conversi&#xF3;n. Pero no deber&#xED;a cargar con la responsabilidad de explicar por s&#xED; sola todo el impacto del marketing.</p><p>El <a href="https://www.deloitte.com/es/es/services/consulting/perspectives/marketing-mix-modeling-herramienta-analytics-eficacia-publicitaria.html"><u>marketing mix modeling</u></a> aporta otra capa: una visi&#xF3;n m&#xE1;s agregada, &#xFA;til para entender la contribuci&#xF3;n de distintos canales, la relaci&#xF3;n entre inversi&#xF3;n y resultados, los efectos externos del mercado y la planificaci&#xF3;n presupuestaria. No ofrece la misma granularidad que otros enfoques, pero ayuda a tomar distancia y a interpretar el rendimiento desde una perspectiva m&#xE1;s amplia.</p><p>La experimentaci&#xF3;n y los tests de incrementalidad a&#xF1;aden una pregunta todav&#xED;a m&#xE1;s exigente: qu&#xE9; habr&#xED;a ocurrido si no hubi&#xE9;ramos activado esa campa&#xF1;a, ese canal o esa inversi&#xF3;n. Ah&#xED; la medici&#xF3;n se acerca m&#xE1;s a la causalidad y permite distinguir mejor entre resultados atribuidos y resultados realmente generados.</p><p>A esto se suma el valor creciente de los datos <em>first-party</em> y del <em>commerce data</em>. En un entorno donde la trazabilidad individual es m&#xE1;s limitada y la privacidad ocupa un lugar central, tu marca necesita apoyarse en se&#xF1;ales propias, datos transaccionales, relaciones directas con clientes y ecosistemas de medici&#xF3;n m&#xE1;s seguros. No se trata solo de tener m&#xE1;s datos, sino de tener datos m&#xE1;s conectados con el negocio.</p><p>Pero incluso esa combinaci&#xF3;n sigue necesitando una &#xFA;ltima capa: interpretaci&#xF3;n. El an&#xE1;lisis cualitativo, el conocimiento del mercado, la lectura de la creatividad, la comprensi&#xF3;n del cliente y el criterio estrat&#xE9;gico siguen siendo necesarios para explicar lo que los modelos no capturan del todo.</p><p>Por eso, la medici&#xF3;n del futuro ser&#xE1; h&#xED;brida. Combinar&#xE1; atribuci&#xF3;n, MMM, experimentaci&#xF3;n, incrementalidad, datos propios y an&#xE1;lisis humano. No buscar&#xE1; una &#xFA;nica fuente de verdad absoluta, sino un sistema de se&#xF1;ales suficientemente robusto para tomar mejores decisiones.</p><p>La madurez no estar&#xE1; en elegir un modelo y defenderlo como si fuera infalible. Estar&#xE1; en saber qu&#xE9; pregunta responde cada enfoque, qu&#xE9; parte de la realidad ilumina y qu&#xE9; decisiones permite mejorar.</p><h2 id="de-medir-campa%C3%B1as-a-aprender-como-organizaci%C3%B3n">De medir campa&#xF1;as a aprender como organizaci&#xF3;n</h2><p>El verdadero salto no est&#xE1; solo en medir mejor cada campa&#xF1;a, sino en conseguir que cada campa&#xF1;a deje aprendizaje dentro de la organizaci&#xF3;n.</p><p>Muchas empresas ya tienen dashboards, informes peri&#xF3;dicos, cuadros de mando y herramientas de visualizaci&#xF3;n. Eso puede ayudar, pero no garantiza por s&#xED; solo una cultura de aprendizaje. Un dashboard puede mostrar resultados sin cambiar decisiones. Puede ordenar datos sin generar criterio. Puede incluso dar una falsa sensaci&#xF3;n de control si nadie se pregunta qu&#xE9; significa realmente lo que est&#xE1; viendo.</p><p>Una organizaci&#xF3;n aprende cuando la medici&#xF3;n deja de ser un documento final y se convierte en un h&#xE1;bito de trabajo. Antes de lanzar una campa&#xF1;a, se formulan hip&#xF3;tesis. Se define qu&#xE9; se quiere validar, qu&#xE9; comportamiento se espera provocar, qu&#xE9; se&#xF1;ales ser&#xE1;n relevantes y qu&#xE9; decisi&#xF3;n se tomar&#xE1; en funci&#xF3;n de los resultados.</p><p>Despu&#xE9;s, los datos no se interpretan de forma aislada ni solo desde la urgencia del rendimiento inmediato. Se conectan con el contexto: el momento de mercado, la presi&#xF3;n competitiva, la propuesta creativa, la calidad de la audiencia, el ciclo de compra, el margen del producto o la relaci&#xF3;n con otros canales.</p><p>Ese aprendizaje tambi&#xE9;n necesita circular. Si los insights se quedan en un informe que solo lee el equipo de marketing, su valor se reduce. La medici&#xF3;n madura deber&#xED;a alimentar conversaciones con ventas, producto, direcci&#xF3;n, finanzas y atenci&#xF3;n al cliente. Porque una campa&#xF1;a no solo revela si una pieza ha funcionado. Tambi&#xE9;n puede mostrar qu&#xE9; propuesta genera m&#xE1;s confianza, qu&#xE9; objeciones frenan la conversi&#xF3;n, qu&#xE9; segmentos responden mejor o qu&#xE9; mensajes necesitan m&#xE1;s claridad.</p><p>Aprender como organizaci&#xF3;n implica evitar que cada campa&#xF1;a empiece desde cero. Significa construir memoria: qu&#xE9; se ha probado, qu&#xE9; funcion&#xF3;, qu&#xE9; no funcion&#xF3;, en qu&#xE9; condiciones, con qu&#xE9; p&#xFA;blicos y con qu&#xE9; implicaciones. Esa memoria permite invertir mejor, dise&#xF1;ar mejor, priorizar mejor y cometer menos veces los mismos errores.</p><p><strong>El marketing maduro no mide solo para reportar. Mide para acumular conocimiento operativo. Y ese conocimiento, bien utilizado, se convierte en una ventaja dif&#xED;cil de copiar.</strong></p><h2 id="la-ia-acelerar%C3%A1-el-an%C3%A1lisis-pero-no-sustituir%C3%A1-el-criterio">La IA acelerar&#xE1; el an&#xE1;lisis, pero no sustituir&#xE1; el criterio</h2><p>La <a href="https://www.itdo.com/blog/tag/inteligencia-artificial/"><u>inteligencia artificial</u></a> tendr&#xE1; un papel cada vez m&#xE1;s relevante en la medici&#xF3;n del marketing. Puede ayudar a procesar grandes vol&#xFA;menes de datos, detectar patrones dif&#xED;ciles de ver manualmente, resumir resultados, generar escenarios, identificar anomal&#xED;as y acelerar tareas que antes consum&#xED;an mucho tiempo en an&#xE1;lisis y reporting.</p><p>Ese avance es importante. Bien utilizada, la IA puede liberar a los equipos de trabajo repetitivo y permitirles dedicar m&#xE1;s energ&#xED;a a interpretar, decidir y actuar. Tambi&#xE9;n puede ayudar a conectar se&#xF1;ales dispersas, comparar comportamientos entre campa&#xF1;as o formular nuevas preguntas a partir de datos que, de otro modo, quedar&#xED;an enterrados en un informe.</p><p>Pero el riesgo aparece cuando se confunde velocidad de an&#xE1;lisis con calidad de decisi&#xF3;n.</p><p>La IA puede encontrar correlaciones m&#xE1;s r&#xE1;pido, pero no siempre sabe qu&#xE9; decisiones tienen sentido para una marca, un mercado o una estrategia concreta. Puede detectar que un canal rinde mejor, que una audiencia convierte m&#xE1;s o que una pieza obtiene mejores resultados, pero necesita contexto para interpretar si ese rendimiento es sostenible, si est&#xE1; alineado con el posicionamiento de la marca o si responde simplemente a una oportunidad t&#xE1;ctica de corto plazo.</p><p>Por eso, automatizar el an&#xE1;lisis no deber&#xED;a significar delegar el criterio. En marketing, muchas decisiones no dependen solo de lo que los datos muestran, sino de c&#xF3;mo se interpretan: qu&#xE9; objetivo se prioriza, qu&#xE9; riesgo se acepta, qu&#xE9; tipo de crecimiento se busca, qu&#xE9; relaci&#xF3;n se quiere construir con el cliente y qu&#xE9; papel debe jugar la marca en el mercado.</p><p><strong>La IA puede acelerar el reporting, pero no deber&#xED;a empobrecer la conversaci&#xF3;n.</strong> Puede ayudar a formular hip&#xF3;tesis, pero no sustituir la responsabilidad de decidir cu&#xE1;les merecen ser probadas. Puede sugerir optimizaciones, pero no definir por s&#xED; sola qu&#xE9; significa avanzar en la direcci&#xF3;n correcta.</p><p>El futuro del marketing medible no ser&#xE1; menos humano por incorporar m&#xE1;s tecnolog&#xED;a. Al contrario: cuanto m&#xE1;s autom&#xE1;tica sea la generaci&#xF3;n de datos, m&#xE1;s importante ser&#xE1; el criterio para distinguir lo relevante de lo accesorio, lo urgente de lo importante y lo eficiente de lo verdaderamente valioso.</p><h2 id="la-cultura-de-evidencia-no-elimina-la-intuici%C3%B3n-la-educa"><strong>La cultura de evidencia no elimina la intuici&#xF3;n: la educa</strong></h2><p>Hablar de medici&#xF3;n, evidencia y aprendizaje continuo no significa defender un marketing sin intuici&#xF3;n. Esa ser&#xED;a una lectura demasiado pobre del problema. Las marcas no crecen solo por optimizar m&#xE9;tricas, ni las mejores decisiones estrat&#xE9;gicas nacen siempre de una hoja de c&#xE1;lculo.</p><p>La intuici&#xF3;n sigue siendo necesaria. Ayuda a detectar oportunidades antes de que sean evidentes, a leer tensiones culturales, a interpretar se&#xF1;ales d&#xE9;biles, a imaginar territorios creativos y a tomar decisiones cuando la informaci&#xF3;n disponible todav&#xED;a es incompleta.</p><p>El problema no es la intuici&#xF3;n, sino la intuici&#xF3;n aislada.</p><p>Cuando una decisi&#xF3;n se apoya solo en preferencias personales, percepciones internas o ideas no contrastadas, puede convertirse f&#xE1;cilmente en una apuesta arbitraria. Pero cuando esa intuici&#xF3;n se forma con evidencia, experiencia, tests, conversaci&#xF3;n con el mercado y aprendizaje acumulado, deja de ser un impulso y empieza a parecerse mucho m&#xE1;s al criterio.</p><p>Por eso, una cultura de evidencia no deber&#xED;a apagar el juicio humano. Deber&#xED;a hacerlo m&#xE1;s responsable. Los datos no sustituyen la mirada estrat&#xE9;gica, pero pueden corregir sus sesgos, ampliar su campo de visi&#xF3;n y obligarla a formular mejores preguntas.</p><p>Tambi&#xE9;n sucede al rev&#xE9;s: el criterio humano ayuda a evitar que los datos se interpreten de forma mec&#xE1;nica. Una m&#xE9;trica puede se&#xF1;alar un cambio, pero no siempre explica su significado. Puede mostrar una mejora de rendimiento, pero no decir si esa mejora construye marca, deteriora margen, atrae al cliente adecuado o simplemente explota una oportunidad puntual.</p><p>La madurez est&#xE1; en esa combinaci&#xF3;n. Usar los datos para contrastar intuiciones, y usar el criterio para interpretar los datos. Ni fe ciega en el n&#xFA;mero ni confianza ingenua en la corazonada.</p><p>El objetivo no es que marketing deje de intuir, sino que aprenda a intuir mejor.</p><h2 id="conclusi%C3%B3n">Conclusi&#xF3;n</h2><p>La medici&#xF3;n del futuro no ser&#xE1; solo m&#xE1;s sofisticada desde el punto de vista t&#xE9;cnico. Tambi&#xE9;n ser&#xE1; m&#xE1;s exigente desde el punto de vista cultural.</p><p>No bastar&#xE1; con tener m&#xE1;s dashboards, m&#xE1;s herramientas, m&#xE1;s modelos o m&#xE1;s automatizaciones si todo eso no ayuda a tomar mejores decisiones. La madurez no estar&#xE1; &#xFA;nicamente en acumular datos, sino en saber qu&#xE9; preguntas hacerles.</p><p>Qu&#xE9; estamos intentando demostrar. Qu&#xE9; parte del resultado es realmente incremental. Qu&#xE9; hemos aprendido que no sab&#xED;amos antes. Qu&#xE9; decisi&#xF3;n cambia a partir de este dato. Qu&#xE9; se&#xF1;ales estamos sobrevalorando. Qu&#xE9; no sabemos todav&#xED;a.</p><p>Estas preguntas ser&#xE1;n cada vez m&#xE1;s importantes en un marketing donde la presi&#xF3;n por demostrar impacto seguir&#xE1; creciendo, pero donde la medici&#xF3;n perfecta seguir&#xE1; siendo una promesa dif&#xED;cil de cumplir. Precisamente por eso, las organizaciones m&#xE1;s preparadas no ser&#xE1;n las que busquen una certeza absoluta en cada informe, sino las que construyan sistemas de aprendizaje m&#xE1;s s&#xF3;lidos, honestos y accionables.</p><p>Medir mejor no significa eliminar toda incertidumbre. Significa reducir la improvisaci&#xF3;n, contrastar hip&#xF3;tesis, aprender de la experiencia y mejorar la calidad de las decisiones. Significa entender que cada campa&#xF1;a no termina cuando se entrega un reporte, sino cuando deja una lecci&#xF3;n &#xFA;til para la siguiente decisi&#xF3;n de inversi&#xF3;n, creatividad, canal, producto o crecimiento.</p><p>Ese es, probablemente, el gran cambio del marketing medible: pasar de la obsesi&#xF3;n por atribuir resultados a la capacidad de aprender de forma continua.</p><p>El futuro no est&#xE1; en atribuirlo todo con aparente precisi&#xF3;n, sino en construir una cultura capaz de interpretar mejor, decidir mejor y crecer con m&#xE1;s evidencia. Medir no deber&#xED;a servir solo para cerrar campa&#xF1;as, sino para abrir conversaciones m&#xE1;s inteligentes sobre negocio, creatividad, inversi&#xF3;n y valor real.</p><p><strong>&#xBF;Estamos midiendo solo para justificar lo que ya hemos hecho, o para aprender a decidir mejor lo que haremos despu&#xE9;s?</strong></p>]]></content:encoded></item></channel></rss>