Simulacro · pair coding de 1 hora
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.
Sin dependencias externas: el cliente de API es falso y determinista.
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
En la entrevista real esto decide si llegas con tiempo al código. Practícalo tal cual:
package.json y tsconfig (1 min). Cómo se corre y qué tan estricto es. Aquí está activo strict con noUncheckedIndexedAccess y exactOptionalPropertyTypes.pnpm test y lee los nombres de las pruebas, no el código.
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.
| Fase | Minutos | Qué haces |
|---|---|---|
| 1 · Lectura | 10–12 | README, estructura, suite en rojo, el test más pequeño. Sin escribir código. |
| 2 · Iteración | 35–38 | Una prueba a la vez. Ejecutar. La siguiente. Hablando. |
| 3 · Refactor | 10 | Bordes, errores de la API, qué se rompe a 10×, qué cambiarías. |
| Función | Pruebas | Qué enseña |
|---|---|---|
normalizarMetrica | 12 | Unión discriminada, type guards, formato desconocido, campos opcionales con strict |
agregarPorMercado | 4 | Agrupar y sumar con Record, caso vacío |
procesarLotes | 6 | Lotes en orden, tamaño inválido, que nunca haya dos en vuelo |
reintentar | 5 | Backoff 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.
Promise<T[]>"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.