Módulo 2: Talking To Users

Preguntas abiertas, no líderes

Descripción

Hay una tercera forma de contaminar una respuesta que no depende del tiempo verbal ni de mencionar tu idea: la pregunta líder, la que mete la respuesta esperada dentro de la pregunta misma. "¿Verdad que sería más fácil comprar con recomendaciones?" no pide una predicción del futuro en el sentido de la lección 2 —de hecho, ni siquiera menciona explícitamente "recomendaciones personalizadas" como violación de la Regla 1 del Mom Test— pero es, quizás, la pregunta más contaminada de todas: literalmente le dice al usuario cuál es la respuesta correcta antes de que termine de leerla.

Conexión con el módulo. Esta lección agrega la tercera y última señal que necesitas para tener un clasificador completo, y ensambla classifyQuestion(q): la función que reúne detectTense() (lección 2) con una nueva detección de preguntas líderes, y etiqueta cualquier pregunta como good, leading o hypothetical. A partir de esta lección, classifyQuestion() es la herramienta que vas a reutilizar sin cambios en la lección 7 y en el proyecto final del módulo.

Una analogía cotidiana: "¿verdad que estuvo delicioso?"

Vuelve al mesero de la lección anterior. "¿Verdad que estuvo delicioso?" no es una pregunta de futuro (no pide una promesa) ni menciona ninguna idea nueva del restaurante (no rompe la Regla 1 del Mom Test) — pero es una pregunta líder clásica: la palabra "verdad" ya afirma la conclusión, y todo lo que le queda al cliente es confirmarla o, si quiere ser honesto, arriesgarse a contradecir directamente algo que el mesero acaba de dar por hecho. Casi nadie elige la segunda opción con un extraño que le está sirviendo la comida.

Compáralo con "¿qué te pareció el plato?" — una pregunta abierta, sin ninguna respuesta incrustada, que dan espacio real para que el cliente diga lo que sea, incluida una crítica. La diferencia entre las dos no está en el tiempo verbal ni en si mencionan el nombre del plato — está en si la pregunta ya contiene la respuesta que espera escuchar, o si deja el espacio genuinamente abierto.

Ejemplo trabajado: classifyQuestion(), el clasificador completo

Con la señal de preguntas líderes, ya tenemos las tres piezas que necesitamos. Ensamblamos classifyQuestion() con un orden de prioridad deliberado: primero buscamos la señal más dañina (leading, porque contamina la respuesta de la forma más directa), después la de intención futura (hypothetical), y solo si ninguna de las dos aparece, reconocemos una buena pregunta de comportamiento pasado (good).

// L4: agregamos la señal de preguntas líderes y ensamblamos el clasificador completo
// de 3 categorías: good, leading, hypothetical. Es un clasificador pedagógico por
// heurística de texto -- no NLP real -- así que el orden de las reglas importa: primero
// buscamos la señal más dañina (leading), después la de intención futura (hypothetical),
// y solo al final reconocemos una buena pregunta de comportamiento pasado (good).
function classifyQuestion(question) {
  const q = question.toLowerCase();
  const leadingSignals = ['¿verdad que', '¿no crees que', '¿no te parece', '¿cierto que', '¿no es cierto que'];
  const hypotheticalSignals = ['¿usarías', '¿comprarías', '¿te gustaría', '¿pagarías', '¿instalarías', '¿preferirías'];
  const goodSignals = ['¿qué hiciste', '¿qué hizo', '¿cuándo fue la última vez', '¿cuál fue la última vez', '¿cómo resolviste', '¿qué usaste', '¿recuerdas la última vez', '¿cómo hiciste'];

  if (leadingSignals.some((s) => q.includes(s))) {
    return { question, label: 'leading', reason: 'mete la respuesta esperada dentro de la pregunta' };
  }
  if (hypotheticalSignals.some((s) => q.includes(s))) {
    return { question, label: 'hypothetical', reason: 'pide una predicción sobre el futuro, no un hecho' };
  }
  if (goodSignals.some((s) => q.includes(s))) {
    return { question, label: 'good', reason: 'pide un hecho específico de comportamiento pasado' };
  }
  return { question, label: 'hypothetical', reason: 'sin evidencia de comportamiento pasado -- se trata como riesgo hasta reescribirla' };
}

const sampleQuestions = [
  '¿Verdad que sería más fácil comprar si Mercado te recomendara productos?',
  '¿Usarías un feed de recomendaciones personalizadas?',
  '¿Cuándo fue la última vez que compraste algo que no tenías planeado comprar?',
  '¿No te parece que las recomendaciones mejorarían tu experiencia de compra?',
  '¿Qué hiciste la última vez que dudaste entre dos productos parecidos?',
  '¿Te gustaría recibir sugerencias personalizadas en la home?',
];

console.log('=== classifyQuestion() sobre 6 preguntas de ejemplo ===\n');
const results = sampleQuestions.map(classifyQuestion);
results.forEach((r) => {
  console.log('  [' + r.label.toUpperCase().padEnd(12) + '] ' + r.question);
  console.log('  -> ' + r.reason + '\n');
});

const good = results.filter((r) => r.label === 'good').length;
const bad = results.length - good;
console.log('Resumen: ' + good + ' buena(s) / ' + bad + ' con problema (leading + hypothetical), de ' + results.length + ' totales.');

Qué esperar. Al correr el archivo con Node, la salida es exactamente esta:

=== classifyQuestion() sobre 6 preguntas de ejemplo ===

  [LEADING     ] ¿Verdad que sería más fácil comprar si Mercado te recomendara productos?
  -> mete la respuesta esperada dentro de la pregunta

  [HYPOTHETICAL] ¿Usarías un feed de recomendaciones personalizadas?
  -> pide una predicción sobre el futuro, no un hecho

  [GOOD        ] ¿Cuándo fue la última vez que compraste algo que no tenías planeado comprar?
  -> pide un hecho específico de comportamiento pasado

  [LEADING     ] ¿No te parece que las recomendaciones mejorarían tu experiencia de compra?
  -> mete la respuesta esperada dentro de la pregunta

  [GOOD        ] ¿Qué hiciste la última vez que dudaste entre dos productos parecidos?
  -> pide un hecho específico de comportamiento pasado

  [HYPOTHETICAL] ¿Te gustaría recibir sugerencias personalizadas en la home?
  -> pide una predicción sobre el futuro, no un hecho

Resumen: 2 buena(s) / 4 con problema (leading + hypothetical), de 6 totales.

Fíjate en el resultado: de seis preguntas que un equipo real podría escribir sin pensarlo dos veces, solo dos pasan. Las otras cuatro se dividen exactamente a la mitad entre leading y hypothetical — dos formas distintas de contaminar la respuesta, y classifyQuestion() las distingue con precisión porque busca patrones de texto distintos para cada una. Esto importa para lo que sigue en el módulo: no basta con "evitar preguntas malas" en general — hay que saber cuál de las dos trampas estás cayendo, porque la forma de arreglarlas es distinta. Una pregunta líder se arregla quitando el juicio incrustado ("¿verdad que...?" → "¿qué te pareció...?"); una pregunta hipotética se arregla cambiando el tiempo verbal al pasado (lección 2).

Por qué el orden de las reglas importa

classifyQuestion() revisa leadingSignals primero. Esto no es arbitrario: imagina una pregunta que combina las dos trampas a la vez, como "¿no crees que usarías más Mercado si tuviera recomendaciones?" — contiene tanto una señal líder ('¿no crees que') como, en teoría, podría sonar hipotética. El clasificador la etiqueta leading porque esa señal aparece primero en el orden de revisión, y porque, en la práctica, una pregunta líder es la forma más severa de contaminación: no solo pide una predicción, además le dice a la persona cuál predicción dar. Cuando dos problemas coexisten en la misma pregunta, el clasificador reporta el más grave, no todos — otra simplificación deliberada de un modelo heurístico, útil para priorizar qué arreglar primero cuando reescribes un guion completo, como vas a hacer en la lección 7 y en el proyecto.

Errores comunes

Preguntas líderes que plantan la respuesta. Qué pasa: alguien en el equipo redacta una pregunta que suena entusiasta y positiva —"¿no te parece que sería genial tener recomendaciones?"— sin darse cuenta de que "no te parece" ya asume que la respuesta correcta es "sí". Por qué pasa: el entusiasmo genuino por la propia idea se filtra naturalmente al lenguaje; es difícil escribir con neutralidad sobre algo que te emociona. Cómo detectarlo: busca en el guion las palabras "verdad que", "no crees que", "no te parece", "cierto que" — cada una es una bandera roja casi garantizada. Cómo corregirlo: reescribe quitando el juicio de valor incrustado — "¿no te parece que sería genial X?" se convierte en "¿qué opinas de X?" en el mejor caso, o mejor todavía, en una pregunta de comportamiento pasado siguiendo el patrón de la lección 2.

Confundir "pregunta larga y detallada" con "pregunta abierta". Qué pasa: alguien piensa que agregar más contexto o más opciones a una pregunta la hace más neutral —"¿preferirías que las recomendaciones aparecieran en la home, en el carrito, o en ambos lugares, considerando que la home es lo primero que ves al entrar?"— cuando en realidad sigue siendo una pregunta hipotética larga, no una pregunta abierta. Por qué pasa: la extensión y el detalle se sienten como rigor, cuando lo único que realmente cambia el tipo de pregunta es si pide un hecho pasado o una elección futura entre opciones inventadas por el entrevistador. Cómo detectarlo: quita todo el contexto adicional y pregúntate si lo que queda es una de las señales de hypotheticalSignals o leadingSignals — casi siempre lo es, solo estaba disfrazada con más palabras. Cómo corregirlo: la longitud de una pregunta no la mejora; el patrón que sigue sí. Prefiere preguntas cortas que apunten al pasado sobre preguntas largas que ofrecen un menú de futuros hipotéticos.

Ejercicios

Ejercicio 1 — Clasifica sin ejecutar Node. Para cada pregunta, di qué etiqueta le daría classifyQuestion():

  • (a) "¿No es cierto que comprarías más si vieras justo lo que necesitas?"
  • (b) "¿Cómo hiciste la última vez que necesitabas decidir rápido entre dos opciones parecidas?"
  • (c) "¿Instalarías una extensión del navegador que te avise de ofertas?"
Ver solución
  • (a) leading. Contiene '¿no es cierto que', que está en leadingSignals — y classifyQuestion() revisa esta lista primero, así que gana sobre cualquier otra señal presente (en este caso, también hay una intención futura, pero la etiqueta reportada es leading).
  • (b) good. Contiene '¿cómo hiciste', que está en goodSignals. Pide un hecho concreto de una decisión ya tomada.
  • (c) hypothetical. Contiene '¿instalarías', que está en hypotheticalSignals. Pide una predicción sobre una acción futura.

Ejercicio 2 — Reescribe la pregunta líder más dañina. Toma "¿verdad que sería más fácil comprar si Mercado te recomendara productos?" del ejemplo trabajado y reescríbela para que classifyQuestion() la clasifique como good.

Ver solución

Una reescritura razonable: "¿Cuándo fue la última vez que te costó decidir qué comprar en Mercado, y qué hiciste para resolverlo?". Quita por completo el juicio de valor incrustado ("verdad que sería más fácil"), no menciona la idea propia ("recomendara productos"), y usa la señal '¿cuándo fue la última vez' de goodSignals. Verificando mentalmente contra el código: no contiene ninguna frase de leadingSignals ni de hypotheticalSignals, y sí contiene una de goodSignalsclassifyQuestion() la etiquetaría good.

Ejercicio 3 — El caso de dos señales en la misma pregunta. Sin ejecutar Node, ¿qué etiqueta le daría classifyQuestion() a esta pregunta, y por qué el orden de las reglas en el código importa para la respuesta?: "¿No crees que pagarías con gusto por un plan con recomendaciones incluidas?"

Ver solución

leading. La pregunta contiene tanto '¿no crees que' (de leadingSignals) como '¿pagarías' (de hypotheticalSignals) — técnicamente combina las dos trampas. Pero classifyQuestion() revisa leadingSignals antes que hypotheticalSignals en el cuerpo de la función, así que el primer if que se cumple es el de leading, y la función retorna ahí mismo sin seguir revisando las otras listas. Si el orden de las reglas estuviera invertido, esta misma pregunta se reportaría como hypothetical en vez de leading — un recordatorio de que, en un clasificador heurístico basado en reglas secuenciales, el orden en que escribes las condiciones es parte del diseño, no un detalle sin importancia.

Resumen y siguiente paso

Esta lección agregó la tercera trampa del módulo —preguntas líderes, que meten la respuesta dentro de la pregunta misma— y con ella ensambló classifyQuestion(), el clasificador completo de tres categorías (good, leading, hypothetical) que vas a usar sin cambios en el resto del módulo. Viste ejecutado que, de seis preguntas típicas de una reunión de planeación, solo dos pasan sin problema, y que las cuatro restantes se reparten entre las dos formas distintas de contaminación que ahora sabes distinguir y nombrar.

Antes de avanzar deberías poder: reconocer una pregunta líder por sus frases de arranque ("verdad que", "no crees que"); explicar por qué el orden de las reglas en un clasificador heurístico afecta el resultado cuando una pregunta cae en más de una categoría; y clasificar de memoria cualquier pregunta simple del módulo hasta ahora.

La lección 5 se aleja de la pregunta individual y mira la entrevista completa: qué pasa cuando, sin usar ninguna pregunta líder, el entrevistador de todos modos termina vendiendo su solución en vez de indagar el problema del usuario.

Recursos

  • Rob Fitzpatrick, The Mom Testmomtestbook.com. Dedica una sección específica a preguntas líderes ("leading questions") como una de las formas más comunes en que los fundadores contaminan sus propias entrevistas sin darse cuenta. En inglés.
  • Nielsen Norman Group, "User Interviews 101" — nngroup.com/articles/user-interviews. Explica por qué "la calidad de los datos depende en gran medida de la habilidad del entrevistador", y advierte explícitamente contra las preguntas líderes como una de las principales fuentes de datos inválidos. En inglés.
  • Steve Portigal, Interviewing Users (2ª edición) — rosenfeldmedia.com/books/interviewing-users-second-edition. Cubre en detalle cómo redactar preguntas neutrales y cómo el lenguaje corporal y el tono también pueden "liderar" una respuesta, más allá de las palabras exactas. En inglés.