HTML semántico: el 80% de la accesibilidad empieza aquí

Si tuvieras que apostar por una sola mejora para subir el nivel de accesibilidad de una web sin meterte todavía en ARIA, JavaScript complejo o auditorías eternas, sería esta: usar HTML semántico de verdad.

Y no por romanticismo “old school”, sino por algo muy práctico: la semántica reduce el trabajo de interpretación que tienen que hacer tanto las personas como las tecnologías de asistencia (lectores de pantalla, navegación por teclado, control por voz, etc.). Dicho de otra forma: mejora el tiempo de decisión (la gente entiende antes qué está pasando) y baja la carga cognitiva (hay menos ambigüedad y menos esfuerzo mental para navegar y actuar).

En este artículo vamos a construir una idea clara: la accesibilidad no empieza en ARIA; empieza en el marcado. Y sí, vas a ver ejemplos aplicables, patrones de interacción típicos (menús, modales, acordeones, formularios) y una checklist para aterrizarlo en proyectos reales.

Por qué la semántica “hace accesible” antes que cualquier otra cosa

La accesibilidad web no es un “extra” que se añade al final como una capa. Se construye desde el principio con decisiones pequeñas y constantes: estructura, nombres, jerarquías, foco, estados y mensajes de feedback. Por eso el HTML semántico juega con ventaja: no solo “pinta” contenido, declara qué es cada cosa y para qué sirve; es decir, codifica la intención.

Cuando escribes:

  • <button> estás declarando: “esto es accionable y se puede activar con teclado”.
  • <a href="..."> estás diciendo: “esto es navegación”.
  • <h2> estás marcando: “este bloque tiene un tema y está en una jerarquía”.
  • <main> estás señalando: “aquí está el contenido principal”.

Eso permite que el navegador, el lector de pantalla y el usuario formen un modelo mental consistente. Menos dudas, menos ensayo-error, menos “¿dónde estoy?”.

Tiempo de decisión vs. carga cognitiva (la comparación clave)

  • Tiempo de decisión: cuánto tardas en decidir “qué puedo hacer aquí” y “dónde debo ir”.
  • Carga cognitiva: cuánta energía mental te cuesta mantenerte orientada, entender la estructura, recordar opciones y estados.

El HTML semántico reduce ambos porque:

  1. Acelera el reconocimiento (lo que ves/oyes coincide con lo esperado).
  2. Da pistas estructurales (landmarks, headings, listas, regiones).
  3. Evita ambigüedades (no todo es un <div> clicable).

Landmarks: el mapa de una web para lectores de pantalla (y para ti)

Los landmarks son regiones semánticas que permiten saltar por la página como si tuvieras un índice. Son esenciales para navegar rápido, sobre todo cuando no usas ratón o cuando la página es larga.

Los landmarks básicos que deberías usar siempre

  • <header>: cabecera de la página o de una sección.
  • <nav>: navegación (principal o secundaria).
  • <main>: contenido principal (debe haber solo uno por página).
  • <aside>: contenido complementario (relacionado, pero no central).
  • <footer>: pie de página o de sección.
  • <section> / <article>: para agrupar contenido con sentido (y no “porque sí”).

Regla útil: si una persona no puede ponerle un título a ese bloque, probablemente no es una <section>.

Ejemplo recomendado de estructura (con “skip link”)

El skip link es un enlace al principio que permite saltar el menú y aterrizar en el contenido. Es pequeñísimo… y cambia la vida cuando navegas con teclado.

<a class="skip-link" href="#contenido">Saltar al contenido</a>

<header>
  <nav aria-label="Navegación principal">
    <ul>
      <li><a href="/blog">Blog</a></li>
      <li><a href="/proyectos">Proyectos</a></li>
      <li><a href="/contacto">Contacto</a></li>
    </ul>
  </nav>
</header>

<main id="contenido">
  <h1>HTML semántico: el 80% de la accesibilidad empieza aquí</h1>
  ...
</main>

<footer>
  <p>© 2026</p>
</footer>

Qué ganas aquí:

  • Navegación rápida por regiones.
  • Menos tabulaciones para llegar al contenido.
  • Mejor comprensión para lectores de pantalla.
  • Mejor SEO (porque la estructura tiene significado).

Microdetalle que marca diferencia: aria-label en <nav>

Si tienes más de una navegación (header, footer, lateral), nómbralas:

  • aria-label="Navegación principal"
  • aria-label="Navegación del pie"
  • aria-label="Navegación secundaria"

Eso baja la carga cognitiva: la persona no tiene que adivinar cuál es cuál.

Headings: tu jerarquía es la tabla de contenidos de la web

Si hay un “pecado mortal” frecuente es usar headings para tamaño visual en lugar de estructura lógica. Un <h2> no es “texto grande”; es una relación jerárquica con el resto del documento.

Reglas prácticas (sin volverte loca)

  • Debe haber un solo <h1> que represente el tema principal de la página.
  • Los <h2> abren secciones principales.
  • Los <h3> son subsecciones dentro de un <h2>.
  • No saltes niveles “porque queda bonito” (de <h2> a <h4>), salvo casos muy justificados.

Impacto directo en tiempo de decisión:
Muchísima gente navega “escaneando” headings. Si la jerarquía está bien, la persona tarda menos en decidir dónde está lo importante.

Truco de diseño e interacción: “headings como anclas de navegación”

Si tu artículo es largo, crea una mini tabla de contenidos con links a headings. No es solo SEO: es accesibilidad y usabilidad.

<nav aria-label="Contenido del artículo">
  <ol>
    <li><a href="#landmarks">Landmarks</a></li>
    <li><a href="#headings">Headings</a></li>
    <li><a href="#formularios">Formularios</a></li>
  </ol>
</nav>

Componentes interactivos: si no es un <button>, probablemente está mal

Aquí es donde más accesibilidad se rompe en proyectos modernos: divs clicables, spans con onClick, cards enteras que “parecen botones”, menús desplegables sin foco, etc.

Botón vs enlace (la decisión que te ahorra bugs)

  • Enlace (<a href>): navega a otro lugar.
  • Botón (<button>): ejecuta una acción en la misma vista.

Ejemplos:

✅ Correcto:

<a href="/checkout">Ir a checkout</a>
<button type="button" aria-expanded="false">Mostrar filtros</button>

❌ Problemático:

<div onclick="toggleFilters()">Mostrar filtros</div>
<span onclick="goCheckout()">Checkout</span>

Por qué es grave: un <div> no es activable por teclado por defecto, no tiene rol correcto, no tiene estados, no se anuncia como control. Estás aumentando carga cognitiva y empeorando el tiempo de decisión: la persona no sabe si eso es interactivo hasta probar.

Acordeón accesible (semántica primero)

Si puedes resolverlo con <details> y <summary>, hazlo. Es semántico, nativo y bastante accesible sin inventar la rueda.

<details>
  <summary>¿Qué incluye el patrón?</summary>
  <p>Materiales, abreviaturas, paso a paso y consejos.</p>
</details>

Si necesitas un acordeón custom (por diseño), al menos respeta: botón, aria-expanded, panel asociado, foco coherente.

Formularios: la accesibilidad se juega en los detalles

Los formularios son el lugar donde el “solo se ve bien” más rápido se convierte en frustración. Aquí la semántica es tu mejor aliada.

Labels reales (no “placeholders que hacen de label”)

El placeholder no sustituye un <label>. Se pierde al escribir, tiene contraste pobre y no se anuncia igual.

✅ Correcto:

<label for="email">Email</label>
<input id="email" name="email" type="email" autocomplete="email" />

Fieldset y legend: oro para grupos de opciones

Si tienes radios/checkboxes relacionados, agrupa:

<fieldset>
  <legend>Preferencias de contacto</legend>
  <label><input type="radio" name="contacto" value="email" /> Email</label>
  <label><input type="radio" name="contacto" value="telefono" /> Teléfono</label>
</fieldset>

Esto reduce carga cognitiva porque el grupo tiene un contexto explícito.

Errores claros, asociados y recuperables

Cuando hay error, la persona debe:

  1. entender qué pasó,
  2. saber cómo arreglarlo,
  3. recuperar sin perderse.

Ejemplo:

<label for="nombre">Nombre</label>
<input id="nombre" aria-describedby="err-nombre" />
<p id="err-nombre">Tu nombre es obligatorio.</p>

Consejo de interacción: al enviar, mueve foco al primer error o a un resumen de errores arriba. Eso reduce muchísimo el tiempo de decisión.

ARIA: úsalo como bisturí, no como maquillaje

ARIA es útil, pero tiene una regla no escrita que te salva: si existe un elemento HTML nativo que lo resuelve, úsalo. El HTML semántico suele ser más robusto, más compatible y menos propenso a bugs.

Casos típicos donde ARIA se usa mal

  • Añadir role="button" a un <div> en lugar de usar <button>.
  • Añadir aria-label para “arreglar” textos que deberían ser visibles.
  • Inventar roles en elementos que ya tienen semántica.

Resultado: sube la complejidad, sube la carga cognitiva para quien mantiene el código, y no necesariamente mejora la experiencia real.

Checklist rápida para revisar tu HTML semántico en 15 minutos

  1. ¿Hay un <main> único por página?
  2. ¿Hay un <h1> único y headings sin saltos raros?
  3. ¿Las zonas clave están en landmarks (header/nav/main/footer/aside)?
  4. ¿Los controles interactivos son botones/enlaces reales (no divs)?
  5. ¿Los formularios tienen <label> y mensajes de error asociados?
  6. ¿Existe “skip link” para saltar al contenido?
  7. ¿La navegación tiene nombres si hay más de un <nav>?
  8. ¿Las listas son listas (<ul>/<ol>) y no “párrafos con guiones”?

Preguntas frecuentes (FAQs)

1) ¿De verdad “el 80%” de la accesibilidad depende del HTML semántico?

No es un porcentaje científico, pero sí una forma útil de priorizar: con buena semántica resuelves gran parte de navegación, comprensión, foco por defecto y compatibilidad con tecnologías de asistencia. Luego vienen capas: CSS (contraste), JS (gestión de foco), contenido (lenguaje claro), y casos específicos donde ARIA ayuda.

2) ¿Puedo hacer una web accesible solo con ARIA aunque use muchos <div>?

Puedes mejorar algo, pero es como poner señalización en un edificio mal construido. ARIA añade información, sí, pero no reemplaza comportamientos nativos (teclado, estados, foco, activación). En la práctica, mantenerlo es más frágil y sube la carga cognitiva del equipo.

3) ¿Qué es lo primero que reviso si tengo poco tiempo?

Empieza por lo que más impacta el tiempo de decisión: headings + landmarks + controles correctos. Si la estructura se entiende y se navega bien, ya has ganado mucho. Luego entra a formularios y feedback de errores.


Accesibilidad es diseñar para decidir rápido y sin esfuerzo

Cuando hablamos de accesibilidad, a veces se piensa en “cumplir requisitos”. Pero el marco más potente es otro: diseñar para reducir incertidumbre.

Un HTML semántico bien hecho:

  • ayuda a que la persona entienda dónde está,
  • le deja moverse con confianza,
  • y le permite actuar sin fricción.

Eso es exactamente el equilibrio entre tiempo de decisión y carga cognitiva: cuanto menos tengas que “descifrar” una interfaz, más energía te queda para lo importante (leer, comprar, aprender, crear, contactar, disfrutar).

Así que la próxima vez que estés a punto de escribir un <div> con onClick, párate un segundo y pregúntate: ¿qué es esto, de verdad? Si lo nombras bien en HTML, ya estás haciendo accesible tu producto antes de escribir la primera línea de ARIA.

OKRs y salud del equipo: burnout, capacidad y realismo en los objetivos

Ilustración moderna de un equipo de trabajo revisando OKRs, con una persona mostrando señales de cansancio, bloques de capacidad al 50 %, 75 % y 100 %, un reloj de arena y una lista de objetivos, representando el equilibrio entre burnout, capacidad del equipo y realismo en los objetivos.

Hay una idea que se repite mucho cuando alguien empieza a trabajar con OKRs: “Esto nos va a dar foco.” Y sí, puede pasar. Pero también puede ocurrir lo contrario: que, sin darte cuenta, acabes usando OKRs como un megáfono para meter más trabajo en el mismo tiempo… y luego te preguntes por qué el equipo está quemado.

Porque seamos honestos: los OKRs no son mágicos. Son un sistema. Y como cualquier sistema, amplifica lo que ya tenéis. Si vuestro contexto tiene prisa crónica, deuda técnica, reuniones infinitas y decisiones difusas, los OKRs pueden convertirse en una máquina de presión con KPI’s disfrazados. Si, en cambio, tenéis claridad, liderazgo responsable y espacio para pensar, los OKRs se convierten en una herramienta brutal para crear impacto sin reventar a la gente.

Este artículo va de eso: de cómo diseñar OKRs que cuiden la salud del equipo (y del producto) sin caer en el autoengaño de “todo es prioridad”. Vamos a hablar de burnout, capacidad real, realismo, y de una comparación que, si trabajas en desarrollo web, vas a notar al segundo: tiempo de decisión vs. carga cognitiva. Porque el burnout no llega solo por trabajar mucho, sino por trabajar con fricción constante.

Por qué los OKRs pueden empeorar el burnout (si se usan mal)

Antes de entrar en soluciones, hay que nombrar el problema. Los OKRs se rompen cuando se convierten en “lista de entregables”. Y eso pasa con más facilidad de la que parece.

Síntomas de OKRs que están cocinando burnout

  • Objetivos redactados como tareas: “Implementar X”, “Migrar Y”, “Hacer Z”.
  • Key Results que miden outputs (cosas hechas) en vez de outcomes (impacto logrado).
  • Demasiados OKRs a la vez (por equipo, por trimestre, por persona).
  • “Stretch goals” usados como excusa para aceptar sobrecarga constante.
  • Revisión semanal que se parece a un juicio: “¿Por qué no llegamos?” en lugar de “¿Qué aprendimos?”.

¿La consecuencia? Una mezcla fea:

  • Alta carga cognitiva (muchas cosas, mucha coordinación, muchas dependencias).
  • Baja autonomía (todo está “definido”, pero nada se decide).
  • Tiempo de decisión altísimo (todo requiere reuniones, aprobaciones y “alineamientos”).

Y ahí aparece el burnout: no solo por el volumen de trabajo, sino por el contexto que te obliga a sostener incertidumbre todo el día.

La trampa: confundir ambición con presión

Ambición sana es decir: “Queremos mover esta métrica porque cambia la vida del usuario.”
Presión es decir: “Vamos a prometerlo igual aunque no tengamos capacidad.”

Un OKR ambicioso puede ser saludable si viene acompañado de:

  • foco real,
  • decisión rápida,
  • límites claros,
  • espacio para iterar,
  • y un liderazgo que protege al equipo del ruido.

Capacidad del equipo: el dato que casi nadie quiere mirar

La mayoría de equipos hace OKRs como si la capacidad fuera infinita. Y luego, sorpresa: la realidad existe.

Qué significa “capacidad” de verdad

No es “cuántas horas trabajamos”. Es: cuánto trabajo de calidad puede hacer el equipo sin comprometer salud, mantenimiento y aprendizaje.

En un equipo de desarrollo web, la capacidad real incluye:

  • trabajo en roadmap (features, mejoras),
  • soporte (bugs, incidencias, peticiones urgentes),
  • deuda técnica,
  • mantenimiento (dependencias, seguridad),
  • coordinación (reuniones, refinamiento, comunicación),
  • y lo invisible: cambios de contexto, bloqueos, esperas, re-trabajo.

Si tus OKRs ignoran todo eso, no son un sistema de enfoque. Son un sistema de fantasía.

Una regla sencilla que suele funcionar

Sin ponernos dogmáticos, una distribución típica para no morir es algo así:

  • 60–70%: trabajo planificado orientado a objetivo (OKRs).
  • 20–30%: mantenimiento + bugs + deuda técnica (mínimo).
  • 10–20%: buffer real para imprevistos.

¿Varía según el producto? Sí. ¿Depende de la madurez del equipo? También. Pero si tu OKR ocupa el 100% de la capacidad… no es un OKR, es una apuesta.

OKRs saludables: cómo redactarlos para reducir carga cognitiva

Aquí viene la parte práctica. Un OKR saludable no solo define “qué queremos lograr”, sino que reduce fricción: ayuda a decidir rápido, a priorizar sin drama y a evitar que el equipo viva en modo incendio.

Objetivos que cuidan a la gente: enfoque + claridad

Un buen objetivo no es una frase bonita. Es una guía para decisiones.

Ejemplo malo (difuso):

  • “Mejorar la experiencia de usuario del sitio.”

Ejemplo mejor (orientado a impacto y decisión):

  • “Reducir la fricción en el flujo de compra para aumentar conversión sin aumentar carga operativa.”

¿Notas la diferencia? El segundo ya te dice qué NO hacer (por ejemplo, “meter más features” que aumenten soporte).

Key Results que miden impacto (y no horas disfrazadas)

Key Results sanos:

  • son medibles,
  • indican progreso real,
  • y evitan convertir el trimestre en una lista infinita.

Ejemplo (producto web / e-commerce):

  • KR1: Aumentar la conversión del checkout de 1,8% a 2,2%.
  • KR2: Reducir el abandono en el paso de pago del 38% al 30%.
  • KR3: Reducir tickets relacionados con pagos en un 20%.

Esto te permite elegir soluciones sin casarte con una implementación concreta. Y eso es clave para bajar carga cognitiva: el equipo tiene margen para decidir.

Tiempo de decisión vs. carga cognitiva: la comparación que te cambia los OKRs

Esta es la idea central que quiero que te lleves:

  • Tiempo de decisión: cuánto tardáis en acordar “qué hacemos” y “qué no”.
  • Carga cognitiva: cuánta energía mental consume sostener el trabajo (contexto, dudas, dependencias, cambios).

Un equipo con OKRs sanos:

  • decide rápido (tiempo de decisión bajo),
  • y trabaja con claridad (carga cognitiva controlada).

Un equipo con OKRs tóxicos:

  • necesita “alinear” todo,
  • cambia de prioridad cada semana,
  • y vive en modo “no sé si esto vale o no vale”.

Cómo un OKR reduce tiempo de decisión

Un OKR bien planteado actúa como filtro. Ejemplo:

Objetivo: “Reducir el tiempo de carga percibido en mobile para mejorar retención.”

Llega una petición: “¿Podemos añadir una animación pesada al hero?”
Con OKR sano, la respuesta no es un debate interminable. Es:

  • ¿Ayuda al objetivo? probablemente no.
  • ¿Empeora el rendimiento? sí.
  • Decisión: no entra, o se redefine.

Menos reuniones, menos discusiones, menos desgaste. Eso también es salud del equipo.

Cómo baja carga cognitiva

Cuando el objetivo es claro, el equipo no tiene que “adivinar” qué se valora. Eso reduce:

  • micro-decisiones constantes,
  • ansiedad por cambios,
  • re-trabajo por malentendidos.

La salud del equipo no se cuida solo con “descansos”. Se cuida diseñando sistemas que no te expriman el cerebro.

Diseñar OKRs con “realismo valiente”: ambición sin autoengaño

El realismo no es conformismo. Es valentía para decir la verdad sobre el contexto.

Tres preguntas incómodas que deberíais hacer antes de cerrar OKRs

1) ¿Qué vamos a dejar de hacer?

Si no hay respuesta, entonces el OKR es un añadido. Y un añadido suele convertirse en burnout.

2) ¿Qué dependencia externa puede bloquearnos?

Legal, datos, infraestructura, approvals, diseño, proveedores. Si no lo contempláis, el tiempo de decisión se dispara.

3) ¿Qué parte del trabajo es incertidumbre?

Si es alta, el OKR necesita más margen (descubrimiento, experimentos, iteración), no más promesas.

Ejemplos de OKRs que cuidan la salud del equipo (con diseño e interacción)

Aquí van ejemplos que mezclan producto, frontend y salud del equipo. Lo importante no es copiarlos, sino ver la lógica.

Ejemplo 1: Performance con foco en experiencia real

Objetivo (O): Hacer que la web se sienta rápida en mobile para mejorar retención sin aumentar incidencias.

Key Results (KR):

  • KR1: Reducir LCP p75 en mobile de 3,8s a 2,5s en páginas top.
  • KR2: Reducir CLS p75 por debajo de 0,1 en templates principales.
  • KR3: Reducir tiempo medio de resolución de bugs de performance en un 20% (menos fuego, más control).

Ideas de iniciativas (no son KRs):

  • Revisar carga de fuentes e imágenes (lazy, preconnect, formatos).
  • Simplificar componentes críticos (menos JS en above-the-fold).
  • Medir con RUM, no solo Lighthouse.

Salud del equipo: menos incidentes, menos interrupciones, menos estrés reactivo.

Ejemplo 2: UX con reducción de fricción (y menos soporte)

Objetivo (O): Reducir la fricción en onboarding para aumentar activación sin saturar soporte.

Key Results (KR):

  • KR1: Aumentar activación (usuarios que completan 1ª acción clave) del 22% al 30%.
  • KR2: Reducir drop-off en paso 2 del onboarding del 45% al 30%.
  • KR3: Reducir tickets “no entiendo X” en un 25%.

Iniciativas posibles:

  • Microcopy orientado a decisiones (no a decoración).
  • Estados vacíos útiles (empty states con CTA y ejemplo).
  • Validaciones inline accesibles (a11y + feedback claro).

Salud del equipo: menos tickets repetitivos = menos carga cognitiva y menos interrupciones.

Ejemplo 3: OKR explícito de salud del equipo (sí, se puede)

Objetivo (O): Sostener un ritmo de entrega saludable reduciendo fricción operativa.

Key Results (KR):

  • KR1: Reducir el número de “trabajos urgentes” no planificados por sprint en un 30%.
  • KR2: Reducir lead time de PR (abierto → merge) de X a Y días.
  • KR3: Reducir tiempo en reuniones recurrentes un 15% manteniendo calidad de coordinación.

Esto es técnico y cultural a la vez. Y suele tener un retorno enorme.

Cómo revisar OKRs sin convertirlos en presión semanal

Revisar OKRs no debería sentirse como un examen. Debería sentirse como un tablero de aprendizaje.

Un formato simple de check-in (30 minutos)

  • ¿Qué cambió en el contexto? (mercado, prioridades, incidentes, dependencias)
  • ¿Qué aprendimos esta semana? (datos, feedback, experimentos)
  • ¿Qué decisión hay que tomar ahora? (1–2 decisiones claras)
  • ¿Qué bloqueos hay y quién los resuelve?

Fíjate: todo está orientado a reducir tiempo de decisión. Eso baja estrés y evita la espiral de reuniones.

Preguntas frecuentes (FAQs)

1) ¿Los OKRs pueden incluir métricas de salud del equipo sin “suavizar” resultados?

Sí. De hecho, es una señal de madurez. La salud del equipo es una condición de sostenibilidad, no un extra. Si ignoras la salud, los resultados se vuelven volátiles: suben un trimestre y se derrumban al siguiente.

2) ¿Qué hago si mi empresa exige OKRs “ambiciosos” aunque no haya capacidad?

Puedes mantener ambición sin mentirte. Dos tácticas:

  • Redacta KRs de impacto y deja iniciativas abiertas (no prometas “hacer X”).
  • Explicita trade-offs: “Para lograr esto, dejamos fuera A y B.”
    Si no se acepta, entonces el problema no es el OKR. Es el sistema de decisiones.

3) ¿Cómo diferencio un “stretch goal sano” de uno que lleva al burnout?

Un stretch sano viene con margen, foco y protección: menos cosas simultáneas, más autonomía, más aprendizaje.
Uno tóxico es “stretch” pero con todo lo demás igual: mismas reuniones, mismas urgencias, mismas dependencias… y además, más presión.


OKRs como sistema de cuidado (no como látigo)

Si hay algo que me gustaría que se normalizara, es esto: un OKR no es solo una herramienta para empujar rendimiento. Es una herramienta para diseñar cómo trabaja el equipo.

Y ahí está el punto. Puedes usar OKRs para:

  • aumentar foco,
  • reducir ruido,
  • bajar carga cognitiva,
  • acelerar decisiones,
  • y construir un ritmo sostenible.

O puedes usarlos para empujar a la gente a prometer lo imposible y sostenerlo con ansiedad. En ese caso, el problema no será “la falta de resiliencia”. Será el diseño del sistema.

Así que, si estás a punto de cerrar OKRs, prueba este criterio final:

“¿Estos OKRs hacen que sea más fácil decidir y trabajar… o solo hacen que sea más fácil exigir?”

Porque cuando un equipo decide más rápido y piensa con menos fricción, no solo rinde mejor: vive mejor. Y eso, en el largo plazo, es la ventaja competitiva más infravalorada.

Mi checklist anti-catástrofes: 12 preguntas antes de pegar código generado por IA en producción

la IA puede ayudarte muchísimo a programar… pero copiar y pegar sin filtro es como cambiar una pieza del coche “porque encaja” sin saber si era la correcta. Puede ir bien. O puede salir caro.

Así que aquí tienes una versión más legible y apta para público no técnico, sin perder lo importante. La idea es que cualquiera (tú, tu cliente, tu compi de producto, tu yo del futuro) pueda entender por qué este checklist existe.

Por qué “vibe coding” mola… y por qué puede ser una trampa

Cuando hablamos de vibe coding nos referimos a esa forma de trabajar donde le pides a la IA un trozo de código, lo pegas y sigues, porque “tiene buena pinta” y te ahorra tiempo.

Y sí: ahorra tiempo al principio.

El problema es que a veces el código:

  • no está pensado para tu web o tu app,
  • no cumple tus normas internas,
  • o trae consecuencias (seguridad, rendimiento, errores raros) que no se ven en el primer minuto.

Resumen: la IA te da velocidad. Pero tú necesitas seguridad y control.

La comparación clave: tiempo de decisión vs. carga mental

Esto es lo más importante del post.

  • Tiempo de decisión: lo que tardas hoy en revisar antes de subir algo.
  • Carga mental: lo que te obliga a pensar, arreglar y explicar después si algo sale mal.

Pegar código sin revisar suele ahorrar 10 minutos hoy… y costar horas (o días) mañana.

Este checklist existe para que decidas un poquito mejor ahora y no sufras después.

El checklist anti-catástrofes: 12 preguntas (explicadas “para humanos”)

Úsalo como un semáforo: si respondes “no lo sé” a varias, no es drama… pero no lo subas tal cual.

1) ¿Qué hace exactamente este código?

Si no puedes explicarlo en una frase, es que todavía no lo controlas.

Ejemplo: “Esto muestra una lista de artículos y los ordena por fecha.”
Perfecto. Si no sabes qué hace, no lo pegues.

2) ¿Entiendo lo básico de cómo lo hace?

No tienes que saberlo todo, pero sí entender:

  • qué datos entran,
  • qué cambia,
  • y qué sale.

Si es “magia negra” desde el minuto 1, te costará el triple mantenerlo.

3) ¿Encaja con mi proyecto o es una pieza de otro puzzle?

A veces la IA escribe código “genérico” que no sigue:

  • tu forma de trabajar,
  • tu estilo,
  • tu estructura.

Si tu proyecto tiene una manera clara de hacer las cosas, el código debe adaptarse a eso.

4) ¿Trae cosas extra que no pedí?

Esto pasa muchísimo.

Ejemplos típicos:

  • añade librerías nuevas,
  • mete funciones que no necesitas,
  • cambia comportamientos sin avisar.

Si el código trae “regalos”, desconfía. En programación, los regalos suelen venir con letra pequeña.

5) ¿Qué pasa si algo falla?

En el mundo real fallan cosas:

  • internet,
  • servidores,
  • datos que vienen vacíos,
  • permisos.

Si el código no contempla fallos, puede romperse justo cuando más lo necesitas.

6) ¿Hay algún riesgo de seguridad?

Pregunta sencilla:
¿Este código toca contraseñas, inicios de sesión, formularios, pagos, datos personales o permisos?

Si la respuesta es sí, necesitas doble revisión.

Ejemplos de riesgo:

  • guardar tokens en lugares inseguros,
  • mostrar datos sensibles,
  • aceptar textos sin validar (puede abrir puertas a ataques).

7) ¿Usa datos personales? ¿Los guarda? ¿Los envía?

Aquí no se trata de ser abogado/a, se trata de sentido común:

  • ¿recoge nombre, email, teléfono, ubicación?
  • ¿lo guarda sin fecha de caducidad?
  • ¿lo manda a servicios externos?

Si no lo tienes claro, hay riesgo.

8) ¿Esto puede volver la web lenta?

A veces el código funciona, pero:

  • carga demasiadas cosas,
  • repite llamadas a internet,
  • hace cálculos pesados,
  • obliga a la página a “recolocarse” todo el rato.

Si tu web se vuelve lenta, el usuario se va. Así de simple.

9) ¿La experiencia de usuario es buena?

Aquí entra lo que se siente “bien”:

  • ¿hay mensajes claros si algo falla?
  • ¿se entiende qué pasa cuando cargas?
  • ¿el botón hace lo que promete?
  • ¿no hay comportamientos raros?

Lo que parece pequeño puede convertirse en frustración.

10) ¿Es accesible para todo el mundo?

Pregunta práctica:
¿Se puede usar con teclado sin ratón?

También:

  • ¿se leen bien los textos?
  • ¿hay suficiente contraste?
  • ¿las ventanas emergentes (modales) se pueden cerrar bien?

Accesibilidad no es extra. Es parte del producto.

11) Si esto falla en producción, ¿me enteraré?

Esto es clave.

Porque hay fallos que solo se ven cuando ya está en producción.
Entonces necesitas:

  • logs útiles (sin datos sensibles),
  • avisos,
  • señales claras.

Si no hay nada, te enteras por un usuario enfadado. Y eso es lo peor.

12) Si sale mal… ¿Puedo deshacerlo rápido?

Una pregunta que salva proyectos:

¿Hay plan B?

  • ¿puedes volver a la versión anterior?
  • ¿puedes activar/desactivar la función?
  • ¿puedes revertir sin romper datos?

Si no puedes deshacer rápido, el riesgo se multiplica.

Cómo usar este checklist sin volverte lenta

Hazlo “rápido y rutinario”

No es para escribir un ensayo. Es para revisar con cabeza.

Un buen objetivo:

  • 5 minutos en cambios pequeños
  • 15–30 minutos en cambios críticos (login, pagos, seguridad)

Úsalo donde importa

  • en un checklist de revisión antes de subir cambios,
  • en una plantilla de PR (si trabajas con Git),
  • o en tu propio “antes de publicar”.

Preguntas Frecuentes (FAQs)

1) ¿Entonces está mal usar código generado por IA?

No. Lo que está mal es subirlo sin entenderlo.
La IA es una herramienta. Tú eres quien decide si entra en producción.

2) ¿Qué preguntas son las más importantes?

Si quieres ir a lo mínimo vital:
seguridad (6), fallos (5), lentitud (8), enterarte si falla (11) y poder deshacer (12).

3) ¿Esto no me hará ir más lenta?

Al revés: te hace ir más rápido en el tiempo total.
Porque evita que pierdas horas después arreglando incendios.


El vibe coding tiene algo adictivo

El vibe coding tiene algo adictivo: te da velocidad, sensación de avance y dopamina de “funciona”. Y eso no es malo. Lo que es peligroso es confundir fluidez con fiabilidad.

Este checklist no intenta frenarte. Intenta que tu rapidez no se convierta en deuda invisible. Porque en producción no gana quien escribe más rápido, gana quien escribe código que otras personas pueden entender, operar y mejorar sin miedo.

Si te quedas con una sola idea, que sea esta: invertir un poco de tiempo de decisión hoy reduce muchísimo la carga cognitiva mañana. Y eso, en un proyecto real, es la diferencia entre vivir apagando fuegos… o construir con calma.