Desarrollador·a Full-stack
Preguntas de entrevista estructuradas para Desarrollador·a Full-stack, con lo que revela una buena respuesta en cada una.
ConductualDecisión técnica Describa la decisión técnica más difícil 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: identificación de restricciones, compromisos explícitos, consulta a las partes implicadas, validación posterior con datos. Bonus: la persona candidata menciona haber cambiado de opinión durante el proceso o haber documentado la decisión para el futuro equipo. Quienes describen una decisión obvia con perspectiva revelan que nunca llegaron a deliberar realmente.
ConductualDepuración e investigación Cuénteme un bug en producción que resolvió. ¿Cuál era el síntoma, cómo lo diagnosticó y cuánto tiempo le llevó?
Lo que revela una buena respuestaMétodo de depuración estructurado: reproducción, logs, instrumentación, hipótesis validadas con experimentos. Honestidad sobre la duración (un bug real de producción rara vez se cierra en menos de 30 minutos). Bonus: la persona candidata cita la causa raíz y el correctivo sistémico, no solo el hotfix. Las respuestas tipo reinicié el servicio sin diagnóstico revelan debilidad en investigación.
ConductualAprendizaje y humildad Describa un momento en el que tuvo que refactorizar o reescribir código que usted mismo·a había escrito unos meses antes. ¿Qué había pasado entre medias?
Lo que revela una buena respuestaHumildad técnica y capacidad de aprender. Bonus: la persona candidata identifica lo que habría hecho diferente desde el principio. Quienes afirman no haber tenido nunca que refactorizar su propio código mienten o no han mantenido código en producción durante el tiempo suficiente.
SituacionalCoraje técnico Descubre en una code review una vulnerabilidad de seguridad (inyección SQL, secret en claro, falta de autenticación) en una PR de un·a colega senior. ¿Cómo reacciona?
Lo que revela una buena respuestaCapacidad de señalar una debilidad técnica sin bloquear: comentario factual en la PR (aquí está el riesgo, esta es mi propuesta de solución), propuesta de solución, escalado al tech lead si la PR se mergea pese al comentario. Quienes lo dejan pasar porque la otra persona es senior muestran falta de coraje técnico.
SituacionalComunicación con producto Un·a Product Manager le pide una funcionalidad que según su estimación lleva 3 semanas. La persona PM la quiere en 1 semana. ¿Cómo reacciona?
Lo que revela una buena respuestaClarificación de la necesidad antes de negociar el plazo (quizá la feature pueda entregarse en dos fases o simplificarse). Propuesta de opciones: MVP en 1 semana más V2 en 2 semanas, recorte explícito de alcance, refuerzo de personal. Las respuestas del tipo lo hago en 1 semana si trabajo el fin de semana son una bandera roja (señal de mala gestión personal).
SituacionalPragmatismo y priorización Se incorpora a un equipo con deuda técnica importante: tests insuficientes, despliegues manuales, monitoring casi inexistente. ¿Cuál es su plan a 30 días?
Lo que revela una buena respuestaDiagnóstico primero: no intentar arreglarlo todo a la vez. Priorización por riesgo e impacto (típicamente: monitoring primero para ver, luego tests en zonas críticas, después automatización del despliegue). Validación con el equipo y con la persona tech lead antes de avanzar. Quienes se lanzan directamente a la reescritura completa muestran falta de pragmatismo.
Caso prácticoDiseño de sistemas Diseño: queremos añadir a nuestra aplicación un sistema de notificaciones en tiempo real (por ejemplo: un·a compañero·a ha comentado tu documento). ¿Cómo lo diseña?
Lo que revela una buena respuestaAclaraciones antes de proponer (volumen esperado, latencia objetivo, dispositivos soportados, persistencia de las notificaciones no leídas). Arquitectura coherente: push (WebSocket o Server-Sent Events) frente a pull (polling), persistencia (base de datos de notificaciones), idempotencia de los envíos, fallback por correo. Bonus: reconoce zonas de incertidumbre (haría un POC antes de comprometerme con WebSocket o SSE). Quienes se meten en el código sin aclarar restricciones revelan una debilidad de diseño.
Caso prácticoDepuración e investigación Debug: su API devuelve un 500 en el 2 por ciento de las peticiones. Los logs no muestran nada evidente. ¿Cómo investiga?
Lo que revela una buena respuestaMétodo estructurado: (1) elevar temporalmente el nivel de log en los endpoints afectados, (2) correlacionar con métricas (latencia, tamaño de payload, origen), (3) identificar un patrón (hora del día, tipo de petición, usuario·a concreto·a), (4) ordenar hipótesis (timeout de base de datos, race condition, memoria). Quienes se lanzan a decir seguro es la base de datos sin investigar revelan un sesgo.
Caso prácticoOptimización Rendimiento: una página de su aplicación tarda 8 segundos en cargar. Tiene 1 semana para bajarla por debajo de 2 segundos. ¿Plan de acción?
Lo que revela una buena respuestaMedir antes de optimizar: DevTools, Lighthouse, profiler de servidor. Identificar el cuello de botella (rendering, consultas a base de datos, payload, CDN). Priorizar por esfuerzo por impacto. Las respuestas tipo añado caché sin diagnóstico revelan optimización prematura. Bonus: la persona candidata menciona que una página en 8 segundos en producción suele indicar un problema sistémico (N+1, payload enorme) y no una optimización local.
TécnicaCalidad del código ¿Cuál es su enfoque del testing? Describa su último proyecto: cuántos tests, qué tipos, qué cobertura y qué mide realmente.
Lo que revela una buena respuestaComprensión de la pirámide de tests (muchos unitarios, menos de integración, pocos end-to-end). Distinción entre cobertura y utilidad (90 por ciento de cobertura 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. Quienes responden testeo al 100 por ciento sin matizar muestran un juicio débil.
TécnicaFundamentos backend Diferencia entre una transacción de base de datos y un lock aplicativo. ¿En qué caso usaría uno y no el otro?
Lo que revela una buena respuestaTransacción de base de datos: atomicidad e isolation gestionadas por la base (ACID), acotadas a la duración de la transacción. Lock aplicativo: coordinación entre procesos o instancias vía Redis, ZooKeeper o similares; útil cuando la coordinación supera una única base de datos (microservicios, cola de tareas). Riesgo de deadlock en ambos casos. Quienes no saben distinguir los dos mecanismos crean race conditions en producción.
TécnicaPragmatismo y priorización Llega a una codebase React mal organizada: componentes de 500 líneas, props drilling de 5 niveles, sin separación entre lógica y presentación. Plan de acción a 60 días sin romper nada.
Lo que revela una buena respuestaEnfoque progresivo: (1) mapear componentes críticos y patrones recurrentes, (2) extraer hooks y lógica de negocio primero (impacto alto, riesgo bajo), (3) trocear componentes grandes por frontera de negocio (no por capricho técnico), (4) introducir un state manager solo donde el props drilling duela de verdad (Context o Zustand en pyme, Redux a partir de cierto volumen). Quienes quieren reescribirlo todo a React Server Components desde el día 1 carecen de pragmatismo.
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. Quienes describen haber explicado su lógica a la persona reviewer en lugar de escucharla muestran una debilidad de coachability crítica para el trabajo en equipo en pyme.
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 activa de mentoría: pair programming, reviews pedagógicas (no solo aprobar y mergear), documentación de decisiones, transmisión de buenas prácticas. Quienes responden ayudo cuando me piden sin más concreción muestran una postura pasiva. En pyme con equipo técnico reducido, la capacidad de transmisión es clave para la sostenibilidad del equipo.
ValoresJuego en equipo con producto ¿Cómo trabaja con un·a Product Manager o un·a diseñador·a? Describa una situación en la que devolvió un brief con cuestionamientos.
Lo que revela una buena respuestaPostura de partenariado: cuestionamiento constructivo basado en viabilidad o complejidad, propuesta de alternativas. Bonus: la persona candidata cita un caso en el que aceptó el brief inicial tras conversarlo (no está en oposición sistemática). Quienes describen a las personas PM o diseñadoras como gente que no entiende la técnica revelan debilidad de juego en equipo.
Manual de evaluación
El puesto de Desarrollador·a Full-stack se evalúa en cinco etapas. La prueba técnica (etapa 4) debe ser realista y acotada en tiempo: una prueba de 8 horas se convierte en la práctica en 24 horas de dedicación real, desmotiva a los buenos perfiles y no aporta mejor señal que una prueba bien diseñada de 2-3 horas.
Etapa 1: Lectura del CV
Busque coherencia de stack (un·a perfil React más Python no vuelve a Java sin 3-6 meses de readaptación), estabilidad (mínimo 18-24 meses por puesto previo) y señales de autonomía (proyectos personales, contribuciones a open source, side projects públicos). La titulación pesa menos que los últimos 3-5 años de experiencia real: un·a autodidacta con 5 años en producción sólida vale más que un·a recién egresado·a de escuela puntera con 2 años de prácticas alargadas.
Etapa 2: Phone screen (30 min)
Solo tres preguntas: (1) Describa el proyecto reciente del que se sienta más orgulloso·a; ¿cuál fue su aportación concreta?, (2) ¿Qué decisión técnica tomó hace poco sobre la que aún tiene dudas? (humildad y reflexión), (3) ¿Por qué un cambio ahora? Salida: go o no-go en 5 minutos de debrief, no más. Evite las preguntas técnicas tipo trampa en esta fase.
Etapa 3: Entrevista técnica (60-90 min)
Pair programming o code review sobre un ejercicio acotado (45-60 min), seguido de 15-30 min de preguntas y respuestas sobre arquitectura y decisiones técnicas. Evalúe la capacidad de razonar en voz alta, de pedir aclaraciones y de iterar. Evite los algoritmos puramente académicos sin relación con el trabajo diario; prefiera un ejercicio que se parezca al día a día (refactor, añadir una feature, depurar un caso no cubierto).
Etapa 4: Ejercicio de diseño de sistema (60 min)
Discusión de arquitectura sobre un caso concreto: ¿Cómo diseñaría un sistema para [funcionalidad específica del producto]? Evalúe la capacidad de clarificar restricciones antes de proponer, de equilibrar simplicidad y escalabilidad y de reconocer zonas de incertidumbre. Es la etapa más predictiva para un·a Full-stack que tendrá que tomar decisiones técnicas en autonomía dentro de una pyme.
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 equipo. 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 de decisión técnica difícil tomada en autonomía? La cuarta pregunta es la que revela el verdadero indicio de autonomía.
Cómo reconocer una gran contratación
| Competencia | Por debajo | En el nivel | Por encima |
|---|---|---|---|
| Solidez técnica | Tropieza con los fundamentos (HTTP, transacciones de base de datos, asincronía). Busca soluciones a base de prueba y error sin modelo mental claro. Difícil de subir a un nuevo lenguaje o framework. | Domina la stack actual en autonomía. Sabe aprender un framework nuevo en 2-4 semanas. Comprende los fundamentos lo suficiente para depurar en profundidad cuando hace falta. | Referente técnico del equipo en su stack y capaz de saltar a una nueva stack en pocas semanas. Anticipa trampas clásicas (race conditions, fugas de memoria, edge cases). Construye abstracciones útiles, no prematuras. |
| Diseño de sistemas y pragmatismo | Se mete en el código sin aclarar restricciones. 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 al arbitrar: no sobre-diseña para un futuro incierto, pero identifica zonas donde un poco de estructura compensará. Sabe pivotar cuando la hipótesis inicial no se sostiene. | Diseña sistemas que envejecen bien: abstracciones justas, dependencias mínimas, fronteras de negocio claras. Reconoce sus zonas de incertidumbre y propone POCs acotados. Forma al equipo en pensamiento sistémico. |
| Calidad e higiene del código | Sin estrategia de testing clara; añade tests para subir cobertura. Código mal estructurado (componentes de 500 líneas, copy-paste, números mágicos). Reviews superficiales. | Pirámide de tests adecuada en las zonas de negocio. Código legible, nombrado claro y funciones cortas. Reviews estructuradas con feedback accionable. Refactoriza al paso cuando es pertinente. | Referente de calidad del 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. |
| Autonomía y resolución | Se bloquea horas con un tema desconocido sin pedir ayuda, o pide ayuda a la mínima dificultad. Sin estrategia de depuración estructurada. | Sabe diagnosticar en autonomía sobre temas familiares; pide ayuda tras una investigación previa (resumen del problema, hipótesis, lo que ya ha intentado). | Alta resolución sobre temas no familiares: lee el código fuente de dependencias, instrumenta el runtime, aísla causas raíz. Documenta los aprendizajes para el equipo. |
| Comunicación y juego en equipo | Explica mal su trabajo a perfiles no técnicos. Postura defensiva en reviews. Trabaja en silo, comparte poco contexto. Postura de oposición sistemática frente a PMs o diseñadores·as. | Sabe explicar su trabajo a una persona PM o de dirección en lenguaje claro. Recibe la review de forma constructiva. Comparte contexto en revisiones de equipo y 1:1. | Puente entre la técnica y otras funciones. Modera debriefs técnicos, divulga arbitrajes, negocia plazos de forma transparente. Referente del equipo en comunicación transversal. |
Plan de 30/60/90 días
Día 30
- Setup completo del entorno local y despliegue de una PR (aunque trivial) validada en producción
- Lectura y comprensión del código de los 3 módulos más críticos de la stack de negocio
- Primer 1:1 documentado con la persona tech lead sobre convenciones, deuda identificada y prioridades
- Primera PR sustantiva (corrección de bug o feature pequeña) revisada y mergeada
Día 60
- Entrega de una funcionalidad completa de principio a fin (frontend más backend más despliegue) en autonomía
- Primera review de PR de un·a compañero·a con feedback estructurado, no solo clic en aprobar
- Primera guardia o on-call (si aplica) con gestión de al menos un incidente
- Documentación redactada o actualizada sobre un módulo tocado recientemente
Día 90
- Entrega regular (1-2 PRs por semana) con calidad validada por el equipo en review
- Primera decisión técnica en autonomía sobre un tema ambiguo (refactor, elección de librería, diseño)
- 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