Simulacro · pair coding de 1 hora

El repo que falla

Un proyecto Node + TypeScript con una API falsa, un dominio incompleto y 27 pruebas en rojo. Es el escenario más probable del viernes: llegar a un repositorio ajeno, entender qué falta y completarlo conversando.

Descargar el repo (30 KB) Repasar Node El entrenador

Sin dependencias externas: el cliente de API es falso y determinista.

ARRANQUETres comandos

tar -xzf simulacro-smartly.tar.gz
cd simulacro-smartly
pnpm install && pnpm test      # 27 en rojo. Eso es el punto de partida.

Y cuando ya lo tengas, para comparar con la referencia:

pnpm test:solucion             # 27 en verde, sin tocar tu código

LOS 10 PRIMEROS MINUTOSEl protocolo

En la entrevista real esto decide si llegas con tiempo al código. Practícalo tal cual:

  1. README (2 min). Qué pide, dicho en tus palabras.
  2. package.json y tsconfig (1 min). Cómo se corre y qué tan estricto es. Aquí está activo strict con noUncheckedIndexedAccess y exactOptionalPropertyTypes.
  3. La suite en rojo (4 min). pnpm test y lee los nombres de las pruebas, no el código.
  4. El test más pequeño (3 min). Léelo entero: ahí está el contrato exacto.
  5. Dilo en voz alta. "So I take this shape and return that shape, and throw when the provider is unknown."

Los nombres de las pruebas son el enunciado

Si una prueba se llama lanza error con formato de gasto desconocido, ya sabes que hay que validar y lanzar. Eso te ahorra veinte minutos de adivinar y es exactamente lo que un senior hace primero en un repo ajeno.

LAS TRES FASESCómo se reparte la hora

FaseMinutosQué haces
1 · Lectura10–12README, estructura, suite en rojo, el test más pequeño. Sin escribir código.
2 · Iteración35–38Una prueba a la vez. Ejecutar. La siguiente. Hablando.
3 · Refactor10Bordes, errores de la API, qué se rompe a 10×, qué cambiarías.

LAS CUATRO FUNCIONESQué hay que completar

FunciónPruebasQué enseña
normalizarMetrica12Unión discriminada, type guards, formato desconocido, campos opcionales con strict
agregarPorMercado4Agrupar y sumar con Record, caso vacío
procesarLotes6Lotes en orden, tamaño inválido, que nunca haya dos en vuelo
reintentar5Backoff con jitter, tope de intentos, relanzar el último error

La API falsa pagina y falla de forma determinista cada tres llamadas, así que reintentar tiene algo real que reintentar.

EVALUACIÓNQué miran mientras trabajas

Suma

Resta

DESPUÉSEl simulacro completo

Cuando ya lo hayas resuelto una vez, hazlo de nuevo así: pon un cronómetro de 60 minutos, abre voz.ened.online para grabarte y nárralo todo. Al terminar, escucha la grabación y responde: ¿se entiende lo que haces sin ver la pantalla? Si no, ese es el trabajo del jueves.