Desarrollador·a Backend
Preguntas de entrevista estructuradas para Desarrollador·a Backend, con lo que revela una buena respuesta en cada una.
ConductualDepuración y observabilidad Describa el incidente de producción más serio que pilotó. ¿Cuál fue el síntoma, el diagnóstico, la resolución y el seguimiento sistémico?
Lo que revela una buena respuestaMétodo estructurado: reproducción u observación directa, formulación de hipótesis, validación con logs, métricas o experimentación dirigida. Honestidad sobre la duración y las falsas pistas. Bonus: la persona candidata cita la causa raíz (no solo el hotfix) y la medida preventiva aplicada después (post-mortem, alerta añadida, test de regresión). Las respuestas tipo reinicié el servicio y todo volvió a la normalidad sin diagnóstico revelan debilidad en investigación.
ConductualDiseño de sistemas Describa una decisión de arquitectura importante que tomó en su último puesto. ¿Por qué era difícil y cómo la resolvió?
Lo que revela una buena respuestaCapacidad de estructurar una decisión bajo incertidumbre: clarificación de restricciones, alternativas evaluadas, arbitrajes explícitos entre simplicidad y flexibilidad futura, consulta a las partes implicadas, validación posterior. Bonus: la persona candidata menciona una decisión sobre la que cambiaría hoy o un ADR escrito para el equipo. Quienes describen una decisión obvia con perspectiva nunca llegaron a arbitrar de verdad.
ConductualRendimiento y medición Cuénteme una vez en la que su solución inicial no aguantó bajo la carga real. ¿Cómo diagnosticó y corrigió?
Lo que revela una buena respuestaHumildad frente a las hipótesis iniciales: la persona candidata reconoce el límite, mide antes de actuar (profiling, métricas, carga real frente a sintética), arbitra entre optimización local y rediseño. Bonus: identifica en retrospectiva la señal que podría haber leído antes. Quienes afirman no haber tenido nunca un problema de carga mienten o no han servido tráfico real.
SituacionalSeguridad aplicativa Descubre una vulnerabilidad de seguridad (inyección SQL, secret en claro en un repo, IDOR en un endpoint) en una code review de un·a colega senior. ¿Cómo reacciona?
Lo que revela una buena respuestaCapacidad de señalar una debilidad sin bloquear: comentario factual en la PR (aquí está el riesgo concreto, esta es una propuesta de solución), corrección propuesta, escalado al·a la tech lead o al equipo de seguridad si la PR se mergea pese al comentario. Quienes lo dejan pasar porque la otra persona es senior muestran falta de coraje técnico, crítico en un puesto de backend.
SituacionalComunicación con producto Una persona PM le pide añadir un endpoint de búsqueda full-text sobre la base. Usted estima 3 semanas; la persona PM lo quiere en 1. ¿Cómo reacciona?
Lo que revela una buena respuestaClarificación de la necesidad real antes de negociar el plazo: qué volumen de datos, qué latencia aceptable, qué funcionalidades realmente imprescindibles (filtros, scoring, resaltado). Propuesta de opciones explícitas: MVP vía ILIKE de Postgres en 1 semana más indexación real en V2, o recorte de alcance. Las respuestas del tipo lo hago en 1 semana si trabajo el fin de semana son una bandera roja.
SituacionalPragmatismo y priorización Se incorpora a un servicio backend con deuda operativa alta: sin métricas, despliegues manuales, alertas silenciosas, tests de integración rotos desde hace 6 meses. ¿Cuál es su plan a 30 días?
Lo que revela una buena respuestaDiagnóstico primero, no la revolución total: priorización por riesgo operativo. Típicamente: (1) observabilidad mínima para ver antes de actuar (métricas básicas, logs estructurados, dashboard de incidentes), (2) asegurar el pipeline de despliegue (rollback rápido, un entorno de staging fiable), (3) reverdecer los tests críticos en las zonas de negocio sensibles, (4) plan más largo para el resto. Validación explícita con el equipo y la persona tech lead antes de avanzar.
Caso prácticoDiseño de sistemas Diseño: queremos un sistema de webhooks fiables hacia los clientes; entrega garantizada, orden razonable, gestión de clientes lentos o no disponibles. ¿Cómo lo diseña?
Lo que revela una buena respuestaAclaraciones antes de proponer: volumen esperado, criticidad, restricciones de latencia, SLA prometido a los clientes. Arquitectura coherente: cola de mensajes persistente, reintentos exponenciales acotados, dead-letter queue, idempotencia en el receptor, firma HMAC, aislamiento de clientes lentos (rate-limit o worker dedicado). Observabilidad: tasa de éxito por cliente, latencia p99, tamaño de la cola. Bonus: reconoce zonas de incertidumbre (prototiparía Kafka frente a RabbitMQ frente a SQS según el volumen real antes de comprometerme). Quienes se meten en el código sin clarificar revelan debilidad de diseño.
Caso prácticoDepuración y observabilidad Debug: su API devuelve un 500 en el 1 al 2 por ciento de las peticiones en hora punta. Los logs aplicativos no muestran nada evidente. ¿Cómo investiga?
Lo que revela una buena respuestaMétodo estructurado: (1) elevar temporalmente el nivel de log y activar el tracing en los endpoints afectados, (2) correlacionar con métricas (latencia p99, tamaño de payload, conexiones de base de datos, memoria, GC), (3) buscar un patrón (hora, tipo de petición, usuario·a concreto·a, ratio sobre un pod determinado), (4) hipótesis ordenadas: pool de base de datos saturado, timeout aguas arriba, race condition, OOM, panic no recuperada. Quienes se precipitan con seguro es la base de datos sin investigar revelan sesgo.
Caso prácticoRendimiento y medición Rendimiento: una consulta de listado da 4 segundos p95 con 200 ms de p50. Tiene 1 semana para bajar el p95 por debajo de 800 ms. ¿Plan de acción?
Lo que revela una buena respuestaMedir antes de optimizar: EXPLAIN ANALYZE sobre la consulta, profiling en aplicación, comprobación del pool de conexiones. Identificar el cuello de botella real: índice ausente, N+1, payload enorme, serialización costosa, lock de tabla. Jerarquizar por esfuerzo por impacto. Las respuestas tipo añado Redis delante sin diagnóstico revelan reflejo de optimización prematura. Bonus: la persona candidata nota que una brecha p50 frente a p95 tan fuerte sugiere un comportamiento por caso (usuario·a con dataset grande, lock ocasional) más que una lentitud uniforme.
TécnicaFundamentos backend Diferencia práctica entre una transacción de base de datos (con nivel de aislamiento REPEATABLE READ o SERIALIZABLE) y un lock aplicativo distribuido (Redis, Zookeeper). ¿Cuándo usar uno y no el otro?
Lo que revela una buena respuestaTransacción de base de datos: atomicidad e isolation gestionadas por la base, acotadas a una sola DB; isolation fuerte al precio de conflictos visibles (serialization failures a reintentar en el lado aplicativo). Lock aplicativo: coordinación entre procesos o instancias cuando la coordinación supera una sola base (microservicios, deduplicación de jobs, leader election). Riesgos distintos: deadlock frente a lock perdido si cae quien lo retiene (de ahí los TTL y el fencing token). Quienes no distinguen los dos mecanismos crean race conditions en producción.
TécnicaFundamentos backend Idempotencia de un endpoint que crea un recurso (por ejemplo, un pago). ¿Cómo la implementa en concreto con PostgreSQL más un servicio stateless?
Lo que revela una buena respuestaComprensión clara: la persona cliente envía una clave de idempotencia (cabecera HTTP), el servidor la persiste junto con la petición y la respuesta, y toda petición posterior con la misma clave devuelve la respuesta almacenada sin volver a ejecutar el efecto. Detalles esperados: restricción UNIQUE sobre la clave en la base, manejo del conflicto (devolver la respuesta cacheada, no un 409), TTL razonable (24-48 horas típico), interacción limpia con la transacción de negocio (idealmente la misma transacción o compensación). Quienes responden compruebo si ya existe antes de insertar crean una race condition clásica.
TécnicaCalidad del código Estrategia de tests en un servicio backend: pirámide, tipos, lo que realmente mide. Describa el arbitraje en su último proyecto.
Lo que revela una buena respuestaComprensión de la pirámide: muchos unitarios sobre la lógica de negocio, menos integraciones acotadas a las fronteras (base de datos, colas, APIs externas), pocos end-to-end. Distinción entre cobertura y utilidad: 90 por ciento sobre código trivial vale menos que 60 por ciento sobre la lógica de negocio crítica. Bonus: la persona candidata cita una vez en que un test evitó una regresión real, o un tipo de bug que los tests no atrapan (race conditions, problemas de configuración en producción). Quienes responden testeo al 100 por ciento sin matizar muestran un juicio débil.
ValoresCoachability ¿Cómo recibe una code review crítica sobre código del que estaba convencido·a de haber hecho bien?
Lo que revela una buena respuestaApertura: capacidad de separar el código del ego personal. Bonus: la persona candidata cita una vez en que cambió de opinión gracias a una review y explica qué le hizo cambiar. Quienes describen sobre todo haber explicado su lógica a la persona reviewer en lugar de escucharla muestran una debilidad de coachability crítica para un puesto donde la calidad del código es compartida.
ValoresMentoría y transmisión ¿Qué papel juega en la transmisión técnica a perfiles junior o a las nuevas incorporaciones?
Lo que revela una buena respuestaPostura de mentoría activa: pair programming, reviews pedagógicas (no solo ok merge), documentación de las decisiones importantes (ADR), compartir en reuniones de equipo o en lunch and learn. En pyme con equipo backend pequeño (3-8 personas), la capacidad de transmisión es esencial para la pervivencia del código. Quienes responden ayudo cuando me piden sin más precisión muestran una postura pasiva.
ValoresComunicación con producto ¿Cómo trabaja con una persona PM o una de frontend? Describa una vez en la que devolvió un brief de producto con cuestionamientos.
Lo que revela una buena respuestaPostura de partenariado: cuestionamiento constructivo basado en la viabilidad, la complejidad o el coste operativo a largo plazo (la persona backend vive con los esquemas y los contratos de API que expone). Propuesta de alternativas. Bonus: la persona candidata cita un caso en el que aceptó el brief inicial tras conversarlo. Quienes describen a las personas PM o frontend como gente que no entiende la complejidad técnica revelan debilidad en juego de equipo.
Manual de evaluación
El puesto de Desarrollador·a Backend se evalúa en cinco etapas. El ejercicio de diseño de sistema (etapa 4) es el más predictivo para este puesto: es donde se revela la capacidad de razonar sobre restricciones distribuidas, persistencia y observabilidad, que una pyme necesita para no acumular deuda operativa durante 18 meses.
Etapa 1: Lectura del CV
Busque coherencia de stack y profundidad real en backend: un·a perfil etiquetado·a como backend que ha pasado el 80 por ciento de su tiempo en UI no es el·la candidato·a buscado·a. Indicios fuertes: ownership de un servicio en producción (despliegue, monitoring, incidentes), exposición seria a una base de datos relacional, presencia de palabras clave concretas (Postgres, Redis, colas de mensajes, OpenTelemetry, profiling). Estabilidad mínima de 18-24 meses por puesto. Un·a autodidacta con 4 años de ownership en producción vale más que un·a recién egresado·a de escuela puntera con 2 años de tickets cerrados sin contexto real.
Etapa 2: Phone screen (30 min)
Tres preguntas dirigidas: (1) Describa el servicio backend más complejo del que ha sido responsable; QPS, tamaño de datos, restricciones, (2) Describa un incidente de producción que pilotó; síntoma, diagnóstico, resolución y seguimiento, (3) ¿Por qué un cambio ahora? Salida: go o no-go en 5 minutos de debrief, no más. En esta fase evite las preguntas técnicas tipo trampa; busque la solidez del recorrido en producto.
Etapa 3: Entrevista técnica (60-90 min)
Pair programming sobre un ejercicio acotado (45-60 min) parecido al día a día: añadir un endpoint con restricción de concurrencia, refactor de una consulta N+1, depurar una race condition simulada. Después 15-30 min de preguntas y respuestas sobre las decisiones técnicas. Evalúe el razonamiento en voz alta, la capacidad de pedir aclaraciones y el instinto sobre las trampas de producción (idempotencia, timeouts, reintentos, aislamiento transaccional).
Etapa 4: Ejercicio de diseño de sistema (60 min)
Discusión de arquitectura sobre un caso concreto próximo a su producto: diseño de un sistema de webhooks fiables, una cola de procesamiento asíncrono, un endpoint de búsqueda o un pipeline de agregación. Evalúe la clarificación de restricciones (QPS, latencia objetivo, volumetría, criticidad), los arbitrajes explícitos (síncrono frente a asíncrono, push frente a pull, consistencia fuerte frente a eventual), la mentalidad de observabilidad desde el diseño (métricas, logs estructurados, trazas, alertas) y el reconocimiento honesto de las zonas de incertidumbre. Es la etapa más predictiva para este puesto.
Etapa 5: Referencias (verificación estructurada)
Llame a dos referencias: un·a antiguo·a tech lead o manager directo y un·a antiguo·a compañero·a de backend. Plantee a ambas las mismas cuatro preguntas: ¿En qué destaca más?, ¿Para qué contrataría a una persona complementaria?, ¿Volvería a contratarle mañana y por qué?, ¿Un ejemplo concreto de decisión técnica difícil tomada en autonomía? La cuarta pregunta es la que revela el verdadero indicio de autonomía en un puesto de backend.
Cómo reconocer una gran contratación
| Competencia | Por debajo | En el nivel | Por encima |
|---|---|---|---|
| Solidez técnica backend | Tropieza con los fundamentos (HTTP, transacciones, asincronía, concurrencia). Elige por costumbre o por moda más que por adecuación. Difícil de cargar en un nuevo lenguaje backend. | Domina la stack actual en autonomía. Comprende los fundamentos lo suficiente para depurar en profundidad. Sabe aprender un nuevo lenguaje o framework backend en 4-8 semanas de forma productiva. | Referente técnico en su stack y capaz de saltar a otra stack backend en pocas semanas. Anticipa trampas clásicas (race conditions, fugas de conexiones, degradación por locks). Construye abstracciones útiles, no prematuras. |
| Diseño de sistemas | Se mete en el código sin clarificar las restricciones (volumen, latencia, criticidad). Sobre-diseña (microservicios para un MVP) o infra-diseña (monolito spaghetti de 50 mil líneas). Difícil de hacer arbitrar entre simplicidad y escalabilidad. | Clarifica la necesidad antes de programar. Pragmático·a en los arbitrajes síncrono frente a asíncrono, push frente a pull, consistencia fuerte frente a eventual. Reconoce sus zonas de incertidumbre y propone un POC dirigido cuando es pertinente. | Diseña sistemas que envejecen bien: abstracciones justas, dependencias mínimas, fronteras de negocio claras, observabilidad desde el diseño. Forma al equipo en pensamiento sistémico y escribe ADRs legibles por las nuevas incorporaciones. |
| Observabilidad y depuración | Diagnostica por prueba y error sin modelo mental. No instrumenta el código en producción (logs anémicos, sin métricas de negocio, alertas silenciosas). Reacciona al incidente, no anticipa nada. | Método de depuración estructurado: reproducción, hipótesis, validación con logs o métricas. Añade la observabilidad necesaria al paso. Sabe pilotar un incidente de producción sin pánico. | Piensa observabilidad desde el diseño: SLI y SLO definidos, dashboards legibles, alertas con sentido (sin ruido), post-mortems honestos. Reconstruye el histórico de un incidente a partir de logs o trazas y propone una acción sistémica. |
| Seguridad aplicativa | Sin conciencia de los riesgos comunes (OWASP Top 10, secrets en claro, IDOR, deserialización). Programa sin validación de entrada sistemática. Considera la seguridad como un problema ajeno. | Conoce los principales riesgos aplicativos y los evita por defecto: consultas parametrizadas, validación en servidor, gestión sana de los secrets (vault o variables de entorno), revisión de PR con ojo de seguridad. Sabe señalar una vulnerabilidad en código ajeno. | Referencia de seguridad en el equipo: revisión de modelos de amenazas, elección de bibliotecas criptográficas seguras, gestión de dependencias vulnerables (monitoreo de CVE), tests de seguridad automatizados en CI. Coordina con el equipo de seguridad o la persona DPO en temas sensibles. |
| Calidad e higiene del código | Sin estrategia de testing clara; añade tests para subir cobertura. Código mal estructurado (funciones de 300 líneas, números mágicos, duplicación). Reviews superficiales. | Pirámide de tests pertinente sobre la lógica de negocio. Código legible con nombrado claro y funciones cortas. Reviews estructuradas con feedback accionable. Refactoriza al paso cuando es pertinente. | Referente de calidad en el equipo: convenciones documentadas, automatización de controles (linters, type checkers, CI). Reviews pedagógicas que hacen progresar a los perfiles junior. Sabe decir no a código que pasa los tests pero envejecerá mal. |
| Comunicación con producto | Explica mal su trabajo a una persona PM o de dirección. Postura defensiva (es demasiado complejo) o de oposición sistemática. Comunica mal plazos y riesgos. | Sabe explicar un arbitraje técnico a una persona PM en lenguaje claro. Cuestiona los briefs de forma constructiva y propone alternativas. Comunica plazos y riesgos de manera transparente. | Puente entre el backend y las demás funciones. Modera debates técnicos de producto, divulga arbitrajes y negocia alcances de forma transparente. Escribe especificaciones técnicas legibles para personas no técnicas. |
Plan de 30/60/90 días
Día 30
- Setup completo del entorno local y primer despliegue (PR trivial) validado en producción
- Lectura y comprensión del código de los 3 servicios backend más críticos de la stack de negocio
- Primer 1:1 documentado con la persona tech lead sobre convenciones, deuda operativa identificada y prioridades
- Primera PR sustantiva (corrección de bug o endpoint pequeño) revisada y mergeada
Día 60
- Entrega en autonomía de un endpoint o de un job backend completo (diseño, implementación, tests, observabilidad, despliegue)
- Primera review de PR de un·a compañero·a con feedback estructurado, no solo clic en aprobar
- Primera guardia u on-call con gestión de al menos un incidente (diagnóstico, mitigación, post-mortem compartido)
- Documentación o ADR redactado sobre una zona tocada recientemente
Día 90
- Entrega regular (1 a 2 PRs por semana) con calidad validada por el equipo en review
- Primera decisión técnica de arquitectura en autonomía sobre un tema ambiguo (refactor, elección de biblioteca, diseño de un componente nuevo)
- Mentoría informal de un·a junior o nueva incorporación (pair programming, reviews pedagógicas)
- Balance formal con la persona tech lead: rampa validada, plan de progresión sobre 1-2 ejes prioritarios (por ejemplo observabilidad o diseño de sistemas)