Módulo 7: Strategy To Roadmap
De la estrategia a las apuestas
Descripción
Una estrategia bien escrita —"ganamos con descubrimiento curado y confianza en el vendedor, no con el precio más bajo"— no le dice a nadie, por sí sola, qué construir el próximo trimestre. Entre la frase de la estrategia y la línea del código hay un paso intermedio que casi ningún equipo hace explícito: convertir esa frase en un conjunto de apuestas —candidatos concretos a construir, cada uno con una afirmación implícita o explícita de qué parte de la estrategia sirve—. Esta lección enseña a dar ese paso con disciplina, no a ojo.
Conexión con el módulo. El módulo 1 abrió con el mapa completo: filtro antes de RICE. Esta lección construye la primera mitad de la maquinaria que hace posible ese filtro —la etiqueta, servesDimensions, que convierte una idea vaga ("deberíamos mejorar el checkout") en una afirmación verificable ("esta apuesta sirve la dimensión convenience")—. Sin esa etiqueta, no hay nada que el filtro pueda evaluar. La lección 3 toma esa etiqueta y construye el filtro completo.
Una analogía cotidiana: el arquitecto y la lista de materiales
Un arquitecto entrega un plano con una frase de intención escrita en la primera página: "esta casa gana con luz natural abundante y espacios abiertos que fluyen entre sí". Esa frase, sola, no le sirve de nada al maestro de obra el lunes a las siete de la mañana — no le dice qué ladrillo comprar, ni qué ventana pedir, ni si la pared del fondo se tira abajo o se queda. Antes de que la obra pueda empezar, alguien tiene que traducir esa intención en una lista de materiales concreta: ventanas grandes en las fachadas norte y sur (sirve "luz natural"), sin columnas centrales en la sala principal (sirve "espacios abiertos"), y —esto es la parte incómoda— no un cuarto extra en el sótano con una sola ventana chica, por más que el cliente lo pida y por más barato que salga, porque esa partida no sirve a ninguna de las dos intenciones del plano.
Cada línea de esa lista de materiales es una apuesta: una decisión concreta que reclama servir a una intención específica del plano. Una lista de materiales sin esa trazabilidad —sin que cada línea pueda señalar a qué intención del plano responde— no es una lista de materiales de esta casa; es una lista de materiales de cualquier casa, elegida por costumbre o por conveniencia. Eso es exactamente lo que le pasa a un roadmap cuando sus apuestas no cargan la etiqueta de qué parte de la estrategia dicen servir.
Ejemplo trabajado: tres apuestas, la misma etiqueta que las hace comparables
Tomamos tres candidatos del backlog de Mercado y les asignamos la dimensión estratégica que cada uno dice servir —servesDimensions— antes de preguntar si esa afirmación se sostiene contra la estrategia real. Es, deliberadamente, el mismo mecanismo de traducción que hizo el maestro de obra con la lista de materiales: nombrar, para cada apuesta, qué parte del plano dice atender.
function riceScore({ reach, impact, confidence, effort }) {
return (reach * impact * confidence) / effort;
}
// Modelo pedagogico: una apuesta "pertenece a la estrategia" si al menos una
// de las dimensiones que sirve esta en strategy.winOn (lo que la estrategia
// eligio para GANAR, modulos 3-4) Y ninguna esta en strategy.avoid (lo que
// la estrategia eligio explicitamente NO pelear, modulo 2/5). Servir una
// dimension neutral (ni winOn ni avoid) no alcanza para pertenecer: la
// coherencia estrategica exige REFORZAR el juego elegido, no solo no estorbarlo.
function strategicFilter(backlog, strategy) {
return backlog.map((bet) => {
const reinforces = bet.servesDimensions.filter((d) => strategy.winOn.includes(d));
const conflicts = bet.servesDimensions.filter((d) => strategy.avoid.includes(d));
return {
feature: bet.feature,
servesDimensions: bet.servesDimensions,
reinforces,
conflicts,
inStrategy: reinforces.length > 0 && conflicts.length === 0,
riceScore: Number(riceScore(bet.rice).toFixed(2)),
};
});
}
const mercadoStrategy = { winOn: ['curatedDiscovery', 'sellerTrust'], avoid: ['price'] };
// Tres apuestas candidatas, cada una etiquetada con la dimension estrategica
// que DICE servir -- esa etiqueta es la traduccion misma de "apuesta".
const candidateBets = [
{ feature: 'sellerTools', servesDimensions: ['sellerTrust'], rice: { reach: 1200, impact: 2, confidence: 0.8, effort: 2 } },
{ feature: 'recommendations', servesDimensions: ['curatedDiscovery'], rice: { reach: 5000, impact: 1, confidence: 0.5, effort: 3 } },
{ feature: 'lowestPriceMatch', servesDimensions: ['price'], rice: { reach: 9500, impact: 3, confidence: 0.8, effort: 3 } },
];
console.log('=== De la estrategia a las apuestas: que dimension dice servir cada una ===\n');
console.table(strategicFilter(candidateBets, mercadoStrategy));
Qué esperar. Al correr el archivo con Node, la salida es exactamente esta:
=== De la estrategia a las apuestas: que dimension dice servir cada una ===
┌─────────┬────────────────────┬────────────────────────┬────────────────────────┬─────────────┬────────────┬───────────┐
│ (index) │ feature │ servesDimensions │ reinforces │ conflicts │ inStrategy │ riceScore │
├─────────┼────────────────────┼────────────────────────┼────────────────────────┼─────────────┼────────────┼───────────┤
│ 0 │ 'sellerTools' │ [ 'sellerTrust' ] │ [ 'sellerTrust' ] │ [] │ true │ 960 │
│ 1 │ 'recommendations' │ [ 'curatedDiscovery' ] │ [ 'curatedDiscovery' ] │ [] │ true │ 833.33 │
│ 2 │ 'lowestPriceMatch' │ [ 'price' ] │ [] │ [ 'price' ] │ false │ 7600 │
└─────────┴────────────────────┴────────────────────────┴────────────────────────┴─────────────┴────────────┴───────────┘
Fíjate en algo que se te va a repetir todo el módulo: la columna servesDimensions no es una opinión, es una afirmación verificable. sellerTools afirma servir sellerTrust, y esa afirmación se puede debatir en una reunión de producto ("¿de verdad una herramienta para vendedores construye confianza del comprador, o solo les facilita la vida a los vendedores?") — pero, una vez que el equipo la acuerda, queda escrita, no flotando en la cabeza de quien la propuso. lowestPriceMatch afirma servir price, y esa afirmación también es clara y honesta: nadie está fingiendo que igualar precios sirve al descubrimiento curado. La honestidad de la etiqueta es, precisamente, lo que hace posible que el filtro de la lección 3 pueda evaluarla sin ambigüedad.
Profundización: la etiqueta no es el filtro, es su insumo
Una confusión común en esta primera etapa: pensar que con solo escribir servesDimensions ya "se hizo" el trabajo estratégico. No es así — la tabla de arriba todavía muestra el riceScore de cada apuesta, y todavía calcula inStrategy, porque el modelo completo (strategicFilter, construido a fondo en la lección 3) ya corre por debajo. Lo que esta lección aísla es el paso anterior, el que casi nadie hace explícito: decidir, con honestidad, qué dimensión de la estrategia dice servir cada candidato, antes de mirar si esa afirmación se sostiene.
Ese paso tiene una trampa fácil de caer: etiquetar una apuesta con la dimensión que uno querría que sirviera, no con la que realmente sirve. Es tentador etiquetar lowestPriceMatch como curatedDiscovery —"si igualamos precio, la gente confía más en explorar con nosotros"— para que pase el filtro sin resistencia. Esa es exactamente la etiqueta deshonesta que el resto del módulo (en particular la lección 4) enseña a detectar: cuando la etiqueta de una apuesta empieza a sonar forzada, generalmente es porque alguien ya sabe, en el fondo, que esa apuesta no pertenece, y está tratando de maquillar la traducción en vez de aceptar el resultado.
Errores comunes
Entregar un roadmap que es una lista de features sin hilo estratégico. Qué pasa: el roadmap del trimestre se arma como una lista de nombres de features —fasterCheckout, recommendations, sellerTools—, cada uno con su fecha estimada, pero sin que ninguna línea diga a qué parte de la estrategia responde. Por qué pasa: escribir el nombre de la feature y una fecha es rápido; escribir explícitamente qué dimensión estratégica sirve exige el trabajo de traducción de esta lección, que muchos equipos se saltan porque "ya se entiende". Cómo detectarlo: pregunta, para cualquier línea del roadmap actual de tu equipo, "¿qué dimensión de nuestra estrategia sirve esto?" — si nadie puede responder en una palabra, sin dudar, el roadmap es una lista de features, no un roadmap estratégico. Cómo corregirlo: exige que cada apuesta cargue su servesDimensions antes de entrar siquiera a la conversación de prioridad, tal como hiciste con las tres apuestas de esta lección.
Etiquetar una apuesta con la dimensión que uno quisiera que sirviera, no con la que realmente sirve. Qué pasa: alguien convencido de una apuesta —por la razón que sea, entusiasmo técnico, presión de un cliente puntual— la etiqueta con la dimensión estratégica que la haría pasar el filtro, en vez de con la dimensión que honestamente cumple. Por qué pasa: el filtro de la lección 3 crea un incentivo perverso si nadie vigila la honestidad de la etiqueta — es más fácil maquillar la traducción que aceptar que la apuesta favorita no pertenece. Cómo detectarlo: si la conexión entre una apuesta y la dimensión que dice servir necesita una explicación larga y elaborada para sonar convincente, sospecha — las conexiones honestas, como sellerTools → sellerTrust de este ejemplo, se explican en una frase corta. Cómo corregirlo: pide que alguien fuera del equipo que propuso la apuesta revise la etiqueta antes de que entre al filtro — la misma disciplina de auditoría externa que ya usaste en el módulo 4 para separar diferenciación real de paridad.
No etiquetar en absoluto, y dejar la conexión con la estrategia implícita "en la cabeza de todos". Qué pasa: el equipo decide que "todos sabemos hacia dónde vamos", y ninguna apuesta se etiqueta formalmente con la dimensión que sirve — la estrategia queda como un consenso tácito, no como un criterio escrito y verificable. Por qué pasa: etiquetar se siente como burocracia innecesaria cuando el equipo es chico y la estrategia parece obvia para todos los presentes. Cómo detectarlo: pide a dos personas distintas del equipo que etiqueten la misma apuesta con la dimensión que sirve, sin que se consulten entre sí — si dan respuestas distintas, "todos sabemos hacia dónde vamos" era una ilusión. Cómo corregirlo: la etiqueta escrita no es burocracia — es la única forma de que el filtro estratégico de la lección 3 tenga algo objetivo que evaluar, en vez de depender de que la memoria colectiva del equipo nunca se desalinee.
Ejercicios
Ejercicio 1 — Etiqueta una apuesta nueva. Un ingeniero propone construir un sistema de notificaciones push que avisa a un comprador cuando un vendedor que sigue publica un producto nuevo. ¿Qué dimensión de servesDimensions le asignarías —curatedDiscovery, sellerTrust, catalogBreadth, price, deliverySpeed o convenience— y por qué, en una frase?
Ver solución
curatedDiscovery es la etiqueta más honesta: un sistema de notificaciones basado en seguir a vendedores específicos es, literalmente, una forma de descubrimiento curado —le muestra al comprador algo relevante sin que tenga que buscarlo activamente—, no una mejora de conveniencia general ni de velocidad de entrega. Una etiqueta razonable alternativa sería sellerTrust si el argumento central fuera "profundiza la relación con vendedores de confianza ya establecida" — lo importante del ejercicio no es la respuesta única, sino que la justificación se sostenga en una frase corta, sin necesitar un párrafo de justificación forzada.
Ejercicio 2 — Encuentra la etiqueta deshonesta. Un compañero etiqueta una apuesta de "descuentos por volumen para compradores frecuentes" como curatedDiscovery, argumentando que "un comprador frecuente ya confía en nuestra curaduría, así que el descuento la refuerza". ¿Por qué esta etiqueta es sospechosa según el criterio de esta lección?
Ver solución
Es sospechosa porque la conexión necesita una cadena de razonamiento larga y elaborada ("ya confía, entonces el descuento refuerza") en vez de una conexión directa y corta. Un descuento por volumen es, en su naturaleza, una palanca de precio —exactamente la dimensión que la estrategia de Mercado decidió no pelear—, no de descubrimiento curado. La etiqueta honesta sería price, lo cual, correctamente, haría que la apuesta se cayera en el filtro de la lección 3 — y es precisamente esa caída la que el compañero está tratando de evitar disfrazando la etiqueta.
Ejercicio 3 — Diseña la lista de materiales de tu propio equipo. Piensa en tres iniciativas reales que estén en el radar de un equipo que conozcas (el tuyo, o uno hipotético). Para cada una, escribe una etiqueta de una sola palabra o frase corta que indique qué parte de la estrategia de ese equipo dice servir. Si no puedes escribir una etiqueta corta y honesta para alguna, ¿qué te dice eso?
Ver solución
No hay una respuesta única — el ejercicio evalúa el ejercicio de traducción en sí. La señal más importante: si para alguna de las tres iniciativas no lograste escribir una etiqueta corta y honesta, eso generalmente significa una de dos cosas — o la iniciativa no tiene, en realidad, una conexión clara con la estrategia (y es candidata a caerse en un filtro real), o la estrategia del equipo todavía no está lo bastante definida como para servir de criterio, en cuyo caso el trabajo pendiente no es etiquetar mejor, sino volver a los módulos 2 a 6 de esta guía y precisar primero el "dónde jugamos y cómo ganamos".
Resumen y siguiente paso
Esta lección aisló el primer paso, casi siempre invisible, entre la estrategia escrita y el roadmap construido: traducir cada apuesta candidata en una etiqueta honesta —servesDimensions— que declara qué parte de la estrategia dice servir. Viste, con tres apuestas, que esa etiqueta ya deja ver el patrón completo del módulo: sellerTools y recommendations declaran dimensiones que la estrategia de Mercado eligió para ganar; lowestPriceMatch declara, con total honestidad, una dimensión que la estrategia decidió no pelear.
Antes de avanzar deberías poder: explicar por qué un roadmap sin esta etiqueta es solo una lista de nombres, y reconocer cuándo una etiqueta suena forzada en vez de honesta.
La lección 3 toma esta etiqueta como insumo y construye el filtro completo: la regla exacta que separa una apuesta que pertenece a la estrategia de una que no, sin importar cuán bueno sea su riceScore.
Recursos
- Roger Martin, "Decoding the Strategy Choice Cascade" — rogermartin.medium.com/decoding-the-strategy-choice-cascade-475d40555eb1. La cascada de Martin exige, en cada nivel, traducir la elección de arriba en algo concreto y accionable en el nivel de abajo — la misma disciplina de traducción de esta lección, aplicada a las cinco elecciones completas de Playing to Win. En inglés.
- Marty Cagan (Silicon Valley Product Group), "Product Strategy" — svpg.com/product-strategy-overview. Cagan insiste en que la estrategia de producto solo vale si se traduce en decisiones concretas de qué construir — la traducción exacta que esta lección enseña a hacer con honestidad. En inglés.
- Itamar Gilad, "Why You Should Stop Using Product Roadmaps and Try GIST Planning" — itamargilad.medium.com/why-i-stopped-using-product-roadmaps-and-switched-to-gist-planning-3b7f54e271d1. El marco GIST de Gilad exige que cada Idea trace, explícitamente, a qué Goal responde — la misma trazabilidad que
servesDimensionsfuerza en esta lección. En inglés.