Ingeniero de Software: pregunta de entrevista
¿Cómo aclaras requisitos de diseño de sistemas?
Aclara usuarios, flujos, escala, latencia, disponibilidad, consistencia, seguridad, retención, geografía, coste y crecimiento antes de dibujar componentes. Cuantifica las restricciones que realmente dirigen la arquitectura.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
Los primeros diez minutos de un diseño deciden si el resto sirve. Pregunta quiénes son los usuarios y cómo son los dos o tres flujos principales; luego cuantifica: usuarios activos diarios, solicitudes por segundo en pico, volumen de datos y crecimiento, proporción lectura-escritura, objetivos de latencia por flujo, objetivo de disponibilidad y cuánta obsolescencia se tolera. Añade las restricciones que moldean la arquitectura: necesidades de consistencia por operación, seguridad y cumplimiento, retención, geografía y presupuesto. Anota los números y úsalos para justificar cada componente; las funcionalidades que no afectan a la arquitectura se aparcan.
Ejemplo
Para un producto de chat las preguntas que importan son el tamaño de los grupos, la retención de mensajes, si el orden de entrega debe ser estricto y el fan-out de lecturas en pico; las respuestas determinan si basta un clúster Postgres o si los mensajes necesitan un log particionado. Un candidato que pregunta eso antes de dibujar cajas acaba con un diseño que encaja con los números en lugar de un diagrama genérico de microservicios.
Errores frecuentes
- Dibujar componentes antes de conocer la carga pico o el requisito de consistencia.
- Tratar cada funcionalidad como flujo principal y no llegar nunca a la parte difícil.
- Adivinar números en silencio en lugar de declarar las suposiciones en voz alta.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.