M0 — Producto
Transversal: no se estudia una vez, enmarca todos los demás módulos.
Outcome del módulo: poder abrir cualquier sistema con Necesidad → HU → Usuario → Criterios → Métrica y defender por qué existe cada feature — sin hablar de código.
Por qué está en un curso de backend: el ingeniero que solo ejecuta tickets construye lo que le piden; el senior/dueño pregunta para qué y cómo sabremos que funcionó. Es el mismo instinto del Paso 1 de System Design (clarificar antes de diseñar).
Concepto 1 — Necesidad → HU → producto
Idea núcleo: no se entrega software suelto. Cada cosa que construís nace de una necesidad y se expresa como historia de usuario antes de ser código.
Entender (capa 1)
Texto: la cadena es Necesidad (dolor real) → HU (quién quiere qué y para qué) → Criterios de aceptación → Producto (api/web/app = materialización). Saltarse la necesidad = construir features que nadie pidió.
Visual:
flowchart LR
N[Necesidad · dolor real] --> HU[HU · como X quiero Y para Z] --> AC[Criterios de aceptación] --> P[Producto · materialización]
Video: How To Write User Stories, Epics & Personas — freeCodeCamp.org
Ejemplo:
Necesidad: el tendero pierde ventas fiadas porque las anota en un cuaderno que se moja/pierde.
HU: como tendero quiero registrar un fiado por voz para no frenar la atención.
Criterio: registrar un fiado en < 5s sin escribir; consultar saldo por cliente.
Producto: endpoint de voz→texto + modelo de cuenta. (el código viene DESPUÉS)
Fijar (capa 2)
Nota atómica:
- Front: ¿por qué arrancar en la necesidad y no en el feature?
- Back: porque el feature sin necesidad es solución en busca de problema — se construye, no se usa. La necesidad define qué construir, la HU lo hace verificable, y los criterios dicen cuándo está listo. El código es la última capa, no la primera.
Feynman: “Nadie quiere un taladro; quiere el agujero. Si arrancás por el taladro (feature) sin pensar el agujero (necesidad), terminás con una caja de herramientas que nadie usa.”
Aplicar (capa 3)
Tomá cualquier proyecto de aplicación de otro módulo y escribí su Necesidad → HU → Criterios en 5 líneas, antes de tocar código.
Límites
- No sobre-documentar: HU claras y criterios verificables, no un PRD de 20 páginas para un CRUD.
Concepto 2 — Descubrimiento y validar demanda
Idea núcleo: validar que el problema existe y le importa a alguien antes de construir. Barato equivocarse en una hipótesis, caro en código.
Entender (compacto):
- Señales de demanda gratis: qué busca la gente (autocomplete), qué se queja (reviews, foros), qué ya pagan.
- Un lead magnet / herramienta gratis que valida > un PDF genérico.
- Construir es la parte cara; la hipótesis se prueba con lo mínimo (landing, waitlist, tool chica).
flowchart LR
I[idea] --> SG[señales gratis<br/>búsquedas · quejas · pagos] --> E[experimento mínimo<br/>landing · waitlist · tool chica] --> Q{¿señal de demanda?}
Q -->|sí| B[construir]
Q -->|no| P[pivotar / descartar]
Video: How to Validate Your Product Idea Without Building a Prototype — Predictable Designs Nota atómica: Front: ¿qué validás antes de construir y cómo, barato? Back: que el problema existe y le importa a un usuario que ya busca/paga. Se valida con señales gratis (búsquedas, reviews, foros) y experimentos mínimos (landing/waitlist/tool chica), no construyendo el producto completo. Feynman: “Descubrimiento es preguntar si hay hambre antes de abrir el restaurante, no cocinar 200 platos y rezar para que venga gente.” Aplicar: para una idea, listá 3 señales de demanda reales (búsquedas/quejas/pagos) antes de escribir una línea. Límites: la validación reduce riesgo, no lo elimina; en algún punto hay que construir para aprender de verdad.
Concepto 3 — Métricas de producto ≠ métricas de sistema
Idea núcleo: que el sistema esté sano (uptime, latencia) no significa que el producto funcione (que la gente lo use y vuelva).
Entender (compacto):
- Métricas de sistema (M5): uptime, latencia, error rate. “¿Está prendido y rápido?”
- Métricas de producto: activación (¿el usuario llegó al valor?), retención (¿vuelve?), engagement, conversión. “¿Le sirve a alguien?”
- Un servicio con 99.99% uptime y 0 usuarios activos = éxito técnico, fracaso de producto.
flowchart LR
SIS[Sistema · uptime/latencia/errores<br/>¿está sano?] --> Q{éxito real}
PROD[Producto · activación/retención/conversión<br/>¿le sirve a alguien?] --> Q
Q --> R[ambas se necesitan · miden cosas distintas]
Nota atómica: Front: ¿un servicio con 99.99% uptime es exitoso? Back: técnicamente sano, pero puede ser un fracaso de producto si nadie lo usa/vuelve. El éxito de producto se mide con activación/retención/conversión, no con métricas de sistema. Ambas se necesitan, miden cosas distintas. Feynman: “Uptime perfecto sin usuarios es un local impecable, iluminado y climatizado, con la persiana baja y nadie adentro.” Aplicar: definí 1 métrica de sistema y 1 de producto para un proyecto, y qué acción tomarías si cada una cae. Límites: vanity metrics (registros totales, page views) engañan; medí lo accionable (retención, activación).
Concepto 4 — Priorización y decir no
Idea núcleo: el criterio de producto es tanto elegir qué construir como qué NO. Impacto vs esfuerzo.
Entender (compacto):
- Matriz impacto/esfuerzo: primero lo de alto impacto y bajo esfuerzo; evitá lo de bajo impacto sin importar el esfuerzo.
- Cortar scope es una habilidad senior: el MVP correcto resuelve el dolor central, no todos los casos.
- “Decir no” a features protege el foco y la mantenibilidad.
quadrantChart
title Impacto vs Esfuerzo
x-axis Bajo esfuerzo --> Alto esfuerzo
y-axis Bajo impacto --> Alto impacto
quadrant-1 Big bets — planear
quadrant-2 Quick wins — primero
quadrant-3 Fill-ins — si sobra
quadrant-4 Time sinks — evitar
Nota atómica: Front: ¿cómo priorizás features? Back: por impacto vs esfuerzo — alto impacto/bajo esfuerzo primero; y sabiendo decir no a lo de bajo impacto aunque sea fácil o pedido. Cortar scope al dolor central es habilidad senior, no falta de ambición. Feynman: “Priorizar es empacar para un viaje con una sola valija: no entra todo, y meter lo inútil deja afuera lo esencial.” Aplicar: listá 5 features candidatas de un proyecto, ubicalas en la matriz impacto/esfuerzo, y justificá cuál cortás. Límites: priorizar sin datos es adivinar; cruzá con descubrimiento (C2) y métricas (C3).
Concepto 5 — Traducir dolor de no-tech → solución técnica
Idea núcleo: el usuario no-tech no pide una solución técnica; describe un dolor. El valor senior/FDE está en traducir ese dolor a la solución correcta.
Entender (compacto):
- El cliente dice “necesito un Excel más grande”; el problema real es “no encuentro mis datos y se me pierden”.
- Escuchar el dolor, no la solución propuesta por el cliente (a menudo equivocada).
- La solución técnica se elige por el dolor, no por la moda tecnológica.
flowchart LR
P["cliente pide una solución<br/>('un Excel más grande')"] --> L["escuchar el DOLOR real<br/>('pierdo / no encuentro mis datos')"] --> S[elegir la solución técnica<br/>por el dolor, no la moda] --> V[validar con el cliente]
Nota atómica: Front: ¿por qué no construir la solución que el cliente no-tech pide literal? Back: porque describe un dolor con la solución que se imagina, que suele ser subóptima (“un Excel más grande” cuando el dolor es “pierdo/no encuentro mis datos”). El trabajo es traducir el dolor real a la solución correcta, no ejecutar el pedido literal. Feynman: “El paciente dice ‘deme un antibiótico’; el buen médico diagnostica primero. A veces era una alergia y el antibiótico empeora todo.” Aplicar: tomá un pedido literal de un usuario (“quiero un botón que exporte todo”) y reformulalo como el dolor real + la solución correcta. Límites: traducir no es ignorar al cliente; es entenderlo mejor que su propio pedido y validarlo con él.
Concepto 6 — Comunicación técnica-ejecutiva: defender trade-offs, estimar, escalar bloqueos
Idea núcleo: el nivel senior real no se mide solo en código — se mide en si podés defender una decisión de arquitectura ante alguien no-técnico en términos de impacto de negocio, sin perder precisión técnica.
Entender (capa 1)
Texto:
- Defender un trade-off ante negocio: no es “elegí Postgres porque es mejor” — es “elegí Postgres porque necesitamos transacciones ACID para no perder pagos; la alternativa NoSQL nos daría más velocidad de escritura pero el riesgo de inconsistencia en dinero no vale ese ahorro”. Se traduce la decisión técnica a riesgo/costo/tiempo, que es el idioma del negocio.
- Estimar con rango, no con falsa precisión: “esto toma 3 días” suena preciso pero casi siempre está mal. “Entre 2 y 5 días, probablemente 3 — el riesgo es la integración con el servicio externo que no controlamos” da información real y ya avisa dónde puede fallar. La primera estimación de cualquier tarea nueva tiende a duplicarse en la práctica (planning fallacy) — plantéalo como rango, no como número falso.
- Escalar un bloqueo temprano, no cuando explota: si llevás 30 minutos trabado, ya es momento de decir algo — no esperar 2 días. La regla no es “aguantar solo”, es que un bloqueo comunicado a tiempo es barato de resolver; uno escondido hasta el deadline es caro para todos.
- Un blocker bien comunicado tiene estructura: qué intentaste, qué esperabas, qué pasó, qué ya descartaste. “No me funciona” no da información; “probé X, esperaba Y, obtuve Z, ya descarté que sea el cache” sí.
Visual:
flowchart TD
D[decisión técnica] --> T{¿a quién se lo explico?}
T -->|peer técnico| DEEP[detalle de implementación]
T -->|negocio/no-técnico| BIZ["traducir a riesgo/costo/tiempo<br/>'esto evita perder pagos', no 'ACID'"]
B[me trabé] --> M{¿cuánto tiempo llevo?}
M -->|menos de 30min| SOLO[seguir intentando solo]
M -->|30min+| ESC["escalar con estructura:<br/>qué probé / qué esperaba / qué descarté"]
Ejemplo (defender un trade-off, mal vs bien):
❌ "Usé Redis para el cache porque es lo estándar."
✅ "Agregué cache con Redis porque el endpoint de catálogo se
consultaba 50 veces por segundo pegándole directo a Postgres —
eso nos costaba latencia y presupuesto de DB. El trade-off es que
los datos pueden estar hasta 5 minutos desactualizados (TTL);
para catálogo eso es aceptable, para saldo de cuenta no lo sería."
Fijar (capa 2)
Nota atómica:
- Front: ¿por qué “esto toma 3 días” es una estimación más débil que “entre 2 y 5 días, el riesgo es X”?
- Back: porque un número único esconde la incertidumbre real y no comunica dónde puede fallar — el rango + el riesgo nombrado le da a quien planifica información accionable (puede decidir si ese riesgo es aceptable) en vez de una falsa sensación de certeza que se rompe cuando el estimado falla.
Feynman: “Explicarle una decisión técnica al negocio es como explicarle a alguien por qué el avión pesa lo que pesa: no le hablás de aerodinámica, le hablás de por qué no se cae. Un bloqueo bien escalado es como avisar que el puente está roto ANTES de que el auto esté a mitad de camino, no después.”
Aplicar (capa 3)
Tomá una decisión técnica real que tomaste (elegir una librería, una arquitectura, un patrón) y escribila dos veces: una para un peer técnico (con detalle) y otra para un stakeholder no-técnico (en términos de riesgo/costo/tiempo, sin perder la verdad de la decisión). Por separado, la próxima vez que te trabes 30+ minutos en algo, escribí el bloqueo con la estructura completa (qué probaste, qué esperabas, qué descartaste) antes de pedir ayuda.
Límites
- Traducir a negocio no es simplificar hasta perder precisión — si el trade-off real tiene un riesgo, ese riesgo se comunica, no se esconde para sonar más seguro.
- Escalar demasiado rápido (antes de intentar nada) también es una señal negativa — el umbral de 30 min es una guía, no una regla rígida; ajustalo a la criticidad de la tarea.
Checklist de dominio M0
Marcás cuando podés explicar (Feynman) + aplicar:
- Necesidad → HU → producto
- Descubrimiento / validar demanda antes de construir
- Métricas de producto ≠ métricas de sistema
- Comunicación técnica-ejecutiva: defender trade-offs a negocio, estimar con rango, escalar bloqueos con estructura
- Priorización (impacto/esfuerzo) y decir no
- Traducir dolor no-tech → solución técnica
Salida verificable del módulo: para cualquier proyecto de aplicación del curso, un doc corto Necesidad → HU → Usuario → Criterios → 1 métrica de producto, y poder defender en 2 min por qué existe y cómo sabrás que funcionó — sin hablar de código.