Desarrollador·a Frontend
Preguntas de entrevista estructuradas para Desarrollador·a Frontend, con lo que revela una buena respuesta en cada una.
ConductualDecisión técnica Describa el componente o flujo más complejo que diseñó y construyó en su último puesto. ¿Por qué era complejo y cómo lo abordó?
Lo que revela una buena respuestaCapacidad de estructurar una decisión bajo incertidumbre: identificación de restricciones (rendimiento, accesibilidad, mantenibilidad), exploración de alternativas, validación con personas usuarias o con datos, documentación posterior. Bonus: la persona candidata menciona haber cambiado de opinión durante el proceso o haber refactorizado tras el primer release. Quienes describen un componente trivial con perspectiva grandilocuente revelan que nunca llegaron a enfrentarse a un caso realmente complejo.
ConductualDepuración e investigación Cuénteme un bug de frontend 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, DevTools (Network, Performance, React Profiler), bisección por commits o feature flags, hipótesis validadas con experimentos. Honestidad sobre la duración (un bug real de frontend rara vez se cierra en menos de 30 minutos cuando depende del estado, del cache del navegador o de una race condition). Bonus: la persona cita la causa raíz y el correctivo sistémico, no solo el hotfix.
ConductualAprendizaje y humildad Describa un momento en el que tuvo que refactorizar o reescribir un componente 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 identifica lo que habría hecho diferente desde el principio (separación de presentación y lógica, mejor tipado, abstracción más temprana o más tardía). 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 un problema de accesibilidad serio (falta de foco visible, contraste insuficiente, jerarquía semántica rota) 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 problema concreto con referencia a WCAG, aquí está mi propuesta de correcció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, especialmente grave en frontend donde la accesibilidad se degrada por acumulación de pequeñas concesiones.
SituacionalComunicación con producto Una persona 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á el flujo se pueda partir en dos fases o simplificarse). Propuesta de opciones: MVP en 1 semana con accesibilidad y tests básicos, V2 en 2 semanas; recorte explícito de alcance; o aplazamiento si la calidad de frontend (accesibilidad, rendimiento, estados de error) no puede comprimirse sin generar deuda. Las respuestas tipo lo hago en 1 semana si trabajo el fin de semana son una bandera roja.
SituacionalPragmatismo y priorización Se incorpora a una codebase frontend con deuda importante: componentes de 800 líneas, props drilling de 6 niveles, sin tests, sin design system, accesibilidad nula. ¿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: cubrir con tests las zonas críticas, extraer hooks o lógica compartida antes que reescribir componentes enteros, abordar accesibilidad bloqueante en flujos clave). Validación con el equipo y la persona tech lead antes de avanzar. Quienes se lanzan a la reescritura completa muestran falta de pragmatismo.
Caso prácticoDiseño de interacción frontend Diseño: queremos añadir a nuestra aplicación un sistema de notificaciones in-app con badge, panel desplegable y persistencia de leídas y no leídas. ¿Cómo lo diseña en frontend?
Lo que revela una buena respuestaAclaraciones antes de proponer (volumen esperado, criticidad por tipo, persistencia tras recarga, sincronización entre pestañas, accesibilidad de lector de pantalla). Arquitectura coherente: gestión del estado (Context, Zustand, Redux según escala), polling frente a WebSocket frente a Server-Sent Events, optimistic update sobre leídas y no leídas, anuncio de notificaciones nuevas a tecnologías asistivas. Bonus: reconoce zonas de incertidumbre (haría un POC sobre la sincronización entre pestañas).
Caso prácticoRendimiento web Rendimiento: su aplicación tarda 6 segundos en pintar la primera pantalla útil. Tiene 1 semana para bajarla por debajo de 2 segundos. ¿Plan de acción?
Lo que revela una buena respuestaMedir antes de optimizar: Lighthouse, Web Vitals (LCP, INP, CLS), waterfall de Network, bundle analyzer. Identificar el cuello de botella (bundle JS enorme, recursos sin lazy loading, render bloqueante, llamadas API en cascada). Priorizar por esfuerzo e impacto (code splitting, defer de scripts no críticos, precarga de fuentes críticas, imágenes responsive con formatos modernos). Las respuestas tipo añado lazy loading sin diagnóstico revelan optimización prematura.
Caso prácticoAccesibilidad Accesibilidad: la auditoría WCAG revela 60 issues en su aplicación, repartidos entre nivel A y AA. Tiene un trimestre para llevarla a cumplimiento AA razonable. ¿Plan de acción?
Lo que revela una buena respuestaPriorización por impacto y por origen: (1) issues bloqueantes para personas usuarias con discapacidad (contraste insuficiente, foco invisible, errores de formulario no anunciados), (2) issues sistémicos en componentes compartidos que se solucionan una vez y propagan a todo el producto, (3) issues puntuales en pantallas críticas (alta, pago, configuración). Bonus: la persona reconoce que la accesibilidad no se arregla una vez y propone un proceso recurrente (checklist en code review, tests automatizados con axe, audit por iteración).
TécnicaFundamentos frontend Explique la diferencia entre Server-Side Rendering, Static Site Generation, Incremental Static Regeneration y client-only. ¿Cuándo elegiría cada uno y por qué?
Lo que revela una buena respuestaComprensión clara de cada modelo y de su impacto en rendimiento, SEO y complejidad operativa. SSR: cada petición se renderiza en el servidor (bueno para contenido personalizado o muy dinámico, peor coste y latencia). SSG: páginas pregeneradas en build (óptimo para contenido estable). ISR: regeneración bajo demanda (compromiso entre ambos). Client-only: para apps internas o tras login sin necesidades SEO. Bonus: la persona menciona el coste real de la hidratación, los Web Vitals y la trampa del all-in en SSR sin medir.
TécnicaCalidad del código ¿Cuál es su enfoque del testing en frontend? Describa su último proyecto: cuántos tests, qué tipos (unitarios, componente, integración, end-to-end), qué cobertura y qué mide realmente.
Lo que revela una buena respuestaComprensión de la pirámide adaptada a frontend (muchos tests unitarios y de componente, menos de integración, algunos end-to-end sobre flujos críticos). Conocimiento de herramientas (Vitest o Jest, Testing Library, Playwright o Cypress). Distinción entre cobertura y utilidad (90 por ciento de cobertura sobre snapshots vale menos que 60 por ciento sobre la lógica de negocio crítica). Bonus: la persona cita una vez en que un test evitó una regresión real en accesibilidad o en un flujo crítico.
TécnicaPragmatismo y priorización Llega a una codebase React mal organizada: componentes de 500 líneas, props drilling, lógica de negocio mezclada con presentación, sin tipado estricto. Plan 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 gestión de estado solo donde el props drilling duela de verdad (Context o Zustand en pyme, Redux solo a partir de cierto volumen), (5) endurecer TypeScript por zonas, no de golpe. Quienes quieren migrar a 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 en frontend?
Lo que revela una buena respuestaPostura activa de mentoría: pair programming, reviews pedagógicas (no solo aprobar y mergear), documentación de patrones, transmisión de buenas prácticas en accesibilidad y rendimiento. Quienes responden ayudo cuando me piden sin más concreción muestran una postura pasiva. En pyme con equipo frontend reducido, la capacidad de transmisión es clave para la sostenibilidad.
ValoresJuego en equipo con diseño ¿Cómo trabaja con un·a Product Designer? Describa una situación en la que devolvió un diseño con cuestionamientos.
Lo que revela una buena respuestaPostura de partenariado: cuestionamiento constructivo basado en viabilidad, rendimiento, accesibilidad o complejidad, propuesta de alternativas. Bonus: la persona cita un caso en el que aceptó el diseño inicial tras conversarlo (no está en oposición sistemática). Quienes describen a personas 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 Frontend se evalúa en cinco etapas. La prueba técnica (etapa 3) y el ejercicio de revisión de código (etapa 4) son las más predictivas: alguien puede hablar de React o de accesibilidad durante una hora sin revelar si realmente sabe entregar un componente sólido en producción. Ponga a la persona a trabajar sobre código real.
Etapa 1: Lectura del CV y del portfolio público
Busque coherencia entre lo que dice el CV y lo que muestra el portfolio público (GitHub, sitio personal, charlas, contribuciones a open source). Señales positivas: proyectos personales con commits regulares, componentes documentados, atención a la accesibilidad y al rendimiento. Señales negativas: GitHub vacío o solo con forks sin actividad, CV que enumera frameworks sin profundidad real, ausencia total de tests. La titulación pesa menos que los últimos 3-5 años de trabajo real en producción.
Etapa 2: Phone screen (30 min)
Solo tres preguntas: (1) describa el componente o flujo del que se sienta más orgulloso·a y cuál fue su aportación concreta, (2) qué decisión técnica reciente sigue cuestionando hoy (humildad y retrospección), (3) por qué un cambio justo 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: Prueba técnica acotada (2-3 horas)
Brief realista: implementar un componente o una pantalla pequeña con datos asíncronos, estados de carga y error, accesibilidad básica (foco, contraste, jerarquía semántica) y un test mínimo. Acote el tiempo a 2-3 horas y comuníquelo de forma explícita; acepte soluciones incompletas pero bien argumentadas. Evite los ejercicios tipo concurso (reproduzca este Figma píxel a píxel sin contexto) o tipo LeetCode (algoritmos sin relación con el día a día).
Etapa 4: Revisión de código y diseño de interacción (60-90 min)
Sesión en directo en dos partes: 30-40 min de revisión del código entregado en la etapa 3 (¿por qué eligió este enfoque?, ¿cómo testearía este edge case?, ¿cómo escalaría este componente a 20 variantes?), seguidos de 20-50 min de discusión sobre un caso de diseño de interacción (cómo abordaría una lista virtualizada con 10 mil ítems, un formulario complejo con validación asíncrona, una accesibilidad en un menú anidado). Evalúe la capacidad de razonar en voz alta, de pedir aclaraciones y de iterar.
Etapa 5: Referencias (verificación estructurada)
Llame a dos referencias: un·a antiguo·a tech lead o engineering manager directo y un·a antiguo·a compañero·a de equipo (idealmente frontend o diseño). Plantee a ambas las mismas cuatro preguntas: ¿En qué destaca más?, ¿Para qué contrataría a una persona complementaria?, ¿La o lo volvería a contratar 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 y de criterio.
Cómo reconocer una gran contratación
| Competencia | Por debajo | En el nivel | Por encima |
|---|---|---|---|
| Solidez técnica frontend | Tropieza con los fundamentos (DOM, ciclo de vida de los componentes, gestión del estado, asincronía). Busca soluciones a base de prueba y error sin modelo mental claro. Difícil de subir a un framework nuevo. | Domina la stack actual en autonomía. Sabe aprender un framework nuevo en 2-4 semanas. Comprende los fundamentos del DOM, del estado y del rendimiento lo suficiente para depurar en profundidad cuando hace falta. | Referente técnico del equipo en frontend y capaz de saltar a una nueva stack en pocas semanas. Anticipa trampas clásicas (re-renders innecesarios, memory leaks, race conditions en hooks). Construye abstracciones útiles, no prematuras. |
| Accesibilidad y calidad de interacción | Ignora la accesibilidad o la trata como tarea final. No conoce los fundamentos (contraste, foco, jerarquía semántica, ARIA). Estados de error, vacío y carga descuidados. Interacciones rotas en teclado. | Aplica los fundamentos WCAG AA en cada componente nuevo: contraste, foco visible, jerarquía semántica correcta, gestión de errores anunciada. Trata estados de error, vacío y carga de forma explícita. Verifica navegación por teclado. | Referente de accesibilidad del equipo: integra checklist accesible en code review, automatiza con axe en CI, anticipa edge cases (lector de pantalla, zoom 200 por ciento, reducción de movimiento). Forma al equipo en buenas prácticas. |
| Rendimiento web y operación | Sin instrumentación de rendimiento. Bundles enormes, sin code splitting, sin lazy loading. Optimiza por intuición sin medir. No conoce los Web Vitals. | Mide antes de optimizar: Lighthouse, Web Vitals, bundle analyzer. Aplica code splitting, lazy loading y optimización de imágenes en los puntos críticos. Conoce el impacto de los terceros (analytics, A/B tests) en el rendimiento. | Optimización continua: budget de rendimiento documentado, alertas sobre regresión de Web Vitals, profiling regular de runtime. Sabe arbitrar entre experiencia y simplicidad técnica. Forma al equipo en cultura de rendimiento. |
| Calidad del código y disciplina de tests | Sin estrategia de testing clara; añade tests para subir cobertura. Componentes de 500 líneas, copy-paste, lógica mezclada con presentación. Tipado laxo o ausente. Reviews superficiales. | Pirámide de tests adecuada (unitarios, componente, e2e en flujos críticos). Código legible, hooks bien separados, tipado razonable. Reviews estructuradas con feedback accionable. Refactoriza al paso cuando es pertinente. | Referente de calidad del equipo: convenciones documentadas, automatización en CI (linters, type checkers, tests, axe, Lighthouse). Reviews pedagógicas que hacen progresar a perfiles junior. Sabe decir no a código que pasa los tests pero envejecerá mal. |
| 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 producto o diseño. | Sabe explicar su trabajo a una persona PM o de diseño en lenguaje claro. Recibe la review de forma constructiva. Comparte contexto en revisiones de equipo y 1:1. Negocia plazos de forma transparente. | Puente entre frontend, producto y diseño. Modera debriefs técnicos, divulga arbitrajes (rendimiento, accesibilidad, deuda), 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 componentes o flujos más críticos del producto
- Primer 1:1 documentado con la persona tech lead sobre convenciones, deuda identificada y prioridades
- Primera PR sustantiva (corrección de bug o componente pequeño) revisada y mergeada
Día 60
- Entrega de un componente o flujo completo de principio a fin (diseño aterrizado, accesibilidad, tests, despliegue) en autonomía
- Primera review de PR de un·a compañero·a con feedback estructurado, no solo clic en aprobar
- Primer aporte al design system o a la documentación de patrones del equipo
- Primera contribución de rendimiento o accesibilidad medible (mejora de Web Vital, corrección de issue WCAG en flujo crítico)
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 de componente reusable)
- 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