Módulo 2: Talking To Users

Comportamiento pasado, no intenciones futuras

Descripción

En la presentación del módulo viste el problema en su forma más pequeña: la misma curiosidad, hecha de dos maneras, produce datos completamente distintos según si pide una predicción o un hecho. Esta lección se detiene ahí y construye la herramienta que necesitas para reconocer la diferencia de forma sistemática, no solo por intuición: detectTense(), un clasificador que mira una pregunta de entrevista y dice si apunta al pasado (comportamiento real, ya sucedido, verificable) o al futuro (una intención, una promesa, algo que la persona todavía no hizo y quizás nunca haga).

Conexión con el módulo. Esta es la primera pieza del clasificador completo que vas a ensamblar en la lección 4 (classifyQuestion) y vas a usar sin cambios en la lección 7 y en el proyecto final. Todo lo que sigue en el módulo —el Mom Test, las preguntas líderes, la brecha say-do— es, en el fondo, una forma distinta de proteger esta misma idea: lo que alguien dice que haría no es lo que alguien hizo.

Una analogía cotidiana: pedir el recibo, no la promesa

Ya viste la analogía del gimnasio en la presentación del módulo. Llévala un paso más allá: imagina que eres cajero en una tienda y alguien te dice "voy a volver la próxima semana a comprar el doble". Puedes anotar esa promesa en un cuaderno, pero no puedes ponerla en la caja registradora — no es una venta, es una intención. Lo único que cuenta para el negocio es el recibo: la compra que ya ocurrió, con fecha, monto y producto, verificable porque quedó impresa en un papel.

Una entrevista de producto funciona igual. Cuando le preguntas a un comprador de Mercado "¿comprarías más si vieras recomendaciones?", estás pidiéndole que te extienda una promesa, no un recibo. Y las promesas, en una entrevista, casi nunca cuestan nada: decir "sí, seguro" es gratis, suena colaborador, y termina la pregunta rápido. El recibo —"la última vez que compré algo por una recomendación de otra tienda fue el mes pasado, un cargador de celular que vi en Amazon"— cuesta más esfuerzo mental para inventarlo si no es verdad, y por eso es mucho más confiable.

Ejemplo trabajado: detectTense() sobre cinco preguntas candidatas

Este es el primer borrador de preguntas que el equipo de Mercado escribió para entender si los compradores reaccionarían a las recomendaciones. Antes de usarlas con un usuario real, las pasamos por un clasificador simple que solo mira el tiempo verbal implícito de la pregunta: ¿pide algo que ya pasó, o algo que podría pasar?

// L2: distinguimos si una pregunta apunta al pasado (comportamiento real) o al futuro (intencion).
function detectTense(question) {
  const q = question.toLowerCase();
  const futureSignals = ['¿usarías', '¿comprarías', '¿te gustaría', '¿pagarías', '¿instalarías', '¿preferirías'];
  const pastSignals = ['¿qué hiciste', '¿cuándo fue la última vez', '¿cómo resolviste', '¿qué usaste', '¿recuerdas la última vez'];

  const isFuture = futureSignals.some((s) => q.includes(s));
  const isPast = pastSignals.some((s) => q.includes(s));

  if (isFuture) return { question, tense: 'future', verdict: 'riesgo: pide una predicción, no un hecho' };
  if (isPast) return { question, tense: 'past', verdict: 'bien: pide un hecho verificable' };
  return { question, tense: 'unclear', verdict: 'sin señal clara, revisar con cuidado' };
}

const candidateQuestions = [
  '¿Usarías un feed de recomendaciones personalizadas si Mercado lo lanzara?',
  '¿Cuándo fue la última vez que compraste algo por una recomendación de alguien más (un amigo, una reseña, otra tienda)?',
  '¿Te gustaría que Mercado te sugiriera productos automáticamente?',
  '¿Qué hiciste la última vez que no encontraste lo que buscabas en Mercado?',
  '¿Comprarías más si vieras recomendaciones en la página de inicio?',
];

console.log('=== detectTense() sobre 5 preguntas candidatas ===\n');
candidateQuestions.forEach((q) => {
  const r = detectTense(q);
  console.log('  [' + r.tense.toUpperCase().padEnd(7) + '] ' + r.question);
  console.log('  -> ' + r.verdict + '\n');
});

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

=== detectTense() sobre 5 preguntas candidatas ===

  [FUTURE ] ¿Usarías un feed de recomendaciones personalizadas si Mercado lo lanzara?
  -> riesgo: pide una predicción, no un hecho

  [PAST   ] ¿Cuándo fue la última vez que compraste algo por una recomendación de alguien más (un amigo, una reseña, otra tienda)?
  -> bien: pide un hecho verificable

  [FUTURE ] ¿Te gustaría que Mercado te sugiriera productos automáticamente?
  -> riesgo: pide una predicción, no un hecho

  [PAST   ] ¿Qué hiciste la última vez que no encontraste lo que buscabas en Mercado?
  -> bien: pide un hecho verificable

  [FUTURE ] ¿Comprarías más si vieras recomendaciones en la página de inicio?
  -> riesgo: pide una predicción, no un hecho

De cinco preguntas candidatas, tres piden una predicción y dos piden un hecho. Fíjate en algo importante: las cinco preguntas suenan igual de razonables leídas rápido en una reunión — ninguna sería rechazada a simple vista por "sonar mal". El valor de detectTense() no es hacer algo que un humano entrenado no podría hacer con cuidado; es hacerlo rápido y sin excepciones, sobre un guion completo, antes de sentarte frente a un usuario real. Es la misma disciplina que aplicarías a revisar ortografía: cualquiera puede detectar un error si se concentra en una sola palabra; un corrector automático lo hace sobre cien páginas sin cansarse.

Nota también qué hace isFuture con las tres primeras banderas: no le importa si la pregunta suena amable, formal, o si viene con contexto adicional ("si Mercado lo lanzara") — el patrón '¿usarías', '¿te gustaría', '¿comprarías' es suficiente para marcarla como riesgosa. Esto es intencional: en el Mom Test (siguiente lección) vas a ver que este tipo de arranque casi siempre delata una pregunta hipotética, sin importar cuánto contexto se le agregue después.

Por qué el futuro es tan barato de responder que sí

Hay una razón psicológica detrás de por qué "¿usarías X?" casi siempre recibe un "sí": responder que sí a una hipótesis no le cuesta nada a la persona en ese momento. No tiene que reorganizar su presupuesto, no tiene que cambiar un hábito, no tiene que comprometerse a nada verificable — solo tiene que imaginar una versión de sí misma que dice que sí, que es exactamente lo que casi cualquier persona educada hace frente a alguien que le está mostrando una idea con entusiasmo. El "sí" de cortesía no es mentira consciente; es la respuesta de menor fricción social a una pregunta que no tiene costo.

Preguntar por el pasado rompe esa dinámica porque el pasado ya sucedió, y no se puede negociar. La persona no puede decidir en el momento "voy a comprar más si veo recomendaciones" porque la pregunta no le pide una decisión — le pide un recuerdo. Y los recuerdos, aunque también pueden ser inexactos (la memoria falla, la gente reconstruye), son mucho más difíciles de inventar de la nada que una promesa sobre algo que nunca va a pasar realmente durante la entrevista.

Errores comunes

Preguntar "¿usarías X?" y creer en el sí de cortesía. Qué pasa: el equipo de Mercado le pregunta a diez compradores "¿usarías recomendaciones personalizadas?", los diez dicen que sí, y el equipo reporta "10 de 10 validaron la idea" en la siguiente reunión de planeación. Por qué pasa: un "sí" se siente como una validación real, especialmente cuando viene de diez personas distintas y nadie dijo que no — la unanimidad se confunde con evidencia sólida. Cómo detectarlo: si ninguna de las respuestas incluye un detalle específico, una fecha, un ejemplo concreto — solo "sí, me gustaría" repetido diez veces — no tienes diez piezas de evidencia, tienes diez cortesías. Cómo corregirlo: cada vez que la respuesta a una pregunta de futuro sea "sí", haz la pregunta de seguimiento del pasado: "¿y cuándo fue la última vez que hiciste algo parecido?". Si no hay una respuesta concreta a esa segunda pregunta, el "sí" original no vale casi nada.

Suavizar la pregunta del pasado hasta que vuelve a ser del futuro sin darse cuenta. Qué pasa: alguien empieza con una buena pregunta ("¿cuándo fue la última vez que compraste algo por una recomendación?") pero, al no recibir una respuesta inmediata, la reformula en el momento a "bueno, ¿pero te gustaría que te recomendáramos cosas?" — y termina obteniendo la respuesta hipotética de todos modos. Por qué pasa: el silencio incómodo después de una pregunta difícil genera la tentación de rescatar la conversación con una pregunta más fácil de responder — y las preguntas del futuro son, casi siempre, más fáciles de responder rápido. Cómo detectarlo: revisa la transcripción y busca patrones donde una pregunta de pasado no recibe respuesta y es seguida, en la misma intervención, por una pregunta de futuro. Cómo corregirlo: entrena la tolerancia al silencio — si la persona no recuerda de inmediato, dale unos segundos antes de reformular, o pregunta "tómate tu tiempo, ¿hay alguna vez que se te venga a la mente, aunque sea de otra tienda o app?" en vez de saltar al futuro.

Ejercicios

Ejercicio 1 — Clasifica sin ejecutar Node. Para cada pregunta, di si detectTense() la marcaría future, past o unclear, y por qué:

  • (a) "¿Pagarías por un plan de envío prioritario?"
  • (b) "¿Qué usaste la última vez que no sabías qué comprar para un regalo?"
  • (c) "¿Qué opinas de las recomendaciones personalizadas en general?"
Ver solución
  • (a) future. Contiene la señal '¿pagarías', que está en futureSignals. Pide una predicción sobre un comportamiento de pago que nunca sucedió.
  • (b) past. Contiene la señal '¿qué usaste', que está en pastSignals. Pide un hecho concreto: qué herramienta o método usó la persona en una situación real ya vivida.
  • (c) unclear. No contiene ninguna de las señales de futureSignals ni de pastSignals — no empieza pidiendo una predicción explícita, pero tampoco pide un hecho pasado específico. Es, de hecho, una pregunta de opinión general, un tipo de pregunta problemática distinto que la lección 3 (el Mom Test) va a nombrar explícitamente.

Ejercicio 2 — Reescribe tres preguntas de futuro. Convierte estas tres preguntas hipotéticas en preguntas que detectTense() marcaría como past:

  • (a) "¿Instalarías una app de Mercado solo para vendedores?"
  • (b) "¿Preferirías recibir las recomendaciones por notificación o dentro de la app?"
  • (c) "¿Te gustaría poder guardar productos para después?"
Ver solución
  • (a) → "¿Qué usaste la última vez que gestionaste tu inventario como vendedor de Mercado?"
  • (b) → "¿Cuándo fue la última vez que recibiste una notificación de una app y la abriste al toque? ¿Qué decía?"
  • (c) → "¿Recuerdas la última vez que quisiste comprar algo pero no en ese momento? ¿Qué hiciste para no perderlo de vista?"

El patrón común: cambia el verbo del condicional/futuro ("instalarías", "preferirías", "te gustaría") por una pregunta que empieza pidiendo un momento específico ya vivido — "la última vez que...", "cuándo fue...", "qué usaste...".

Ejercicio 3 — Diseña el caso límite. Escribe una pregunta que un humano reconocería fácilmente como "pregunta de futuro disfrazada de pasado", pero que detectTense() clasificaría como past (un falso positivo). Explica por qué el clasificador se equivoca en este caso.

Ver solución

Un ejemplo: "¿Qué hiciste la última vez que soñaste con tener recomendaciones perfectas en Mercado?". Contiene la señal '¿qué hiciste', así que detectTense() la marcaría past — pero en realidad está pidiendo una fantasía, no un comportamiento real. El clasificador falla porque solo busca frases de arranque, no entiende el contenido semántico de lo que viene después. Esto confirma, con un ejemplo concreto, la advertencia de la presentación del módulo: detectTense() es un clasificador heurístico por texto, no un modelo que entiende significado — una herramienta de apoyo rápido, no un reemplazo del criterio de quien redacta y escucha la pregunta.

Resumen y siguiente paso

Esta lección te dio la primera pieza real del clasificador del módulo: detectTense(), que separa preguntas de comportamiento pasado (past, el "recibo") de preguntas de intención futura (future, la "promesa"). Viste, ejecutado, que de cinco preguntas candidatas del guion de Mercado, tres pedían una predicción y solo dos pedían un hecho — y entendiste por qué el "sí" a una pregunta de futuro casi no cuesta nada, mientras que un recuerdo específico del pasado es mucho más difícil de inventar sobre la marcha.

Antes de avanzar deberías poder: reconocer, sin ayuda de código, si una pregunta pide un hecho o una predicción; y reescribir una pregunta de futuro como una pregunta de pasado, siguiendo el patrón "la última vez que...".

La lección 3 amplía este mismo principio con un marco completo: el Mom Test de Rob Fitzpatrick, que no solo protege contra preguntas de futuro, sino también contra dos trampas más — hablar de tu idea en vez de la vida del usuario, y pedir opiniones en vez de hechos.

Recursos

  • Rob Fitzpatrick, The Mom Testmomtestbook.com. El libro que la siguiente lección desarrolla a fondo; su segunda regla ("pregunta por especificos en el pasado, no por generalidades u opiniones") es exactamente el principio de esta lección. En inglés.
  • Teresa Torres, "Why You Are Asking the Wrong Customer Interview Questions" — producttalk.org/customer-interview-questions. Explica, con el ejemplo de comprar jeans, por qué preguntar "cuéntame de la última vez que..." da mejores datos que preguntar por preferencias generales. En inglés.
  • Nielsen Norman Group, "User Interviews 101" — nngroup.com/articles/user-interviews. Explica el sesgo de deseabilidad social — por qué la gente responde lo que cree que se espera de ella — la razón psicológica detrás del "sí" gratis a las preguntas de futuro. En inglés.