Validez y equidad de pruebas de desarrollador móvil en contratación técnica
Validez vs equidad: ¿Cuál es la diferencia?
Validez: ¿La evaluación mide lo que realmente necesita que haga el ingeniero?
Equidad: ¿Todos los candidatos tienen igual oportunidad de mostrar lo que saben?
Puedes tener uno sin el otro. Una evaluación puede ser válida pero injusta. O justa pero inválida. Ambos son problemas.
Validez: Medición del trabajo
La trampa: Medir trivialidades en lugar de juicio
"¿Cuál es la diferencia entre referencias fuertes y débiles en Swift?" es una pregunta con una respuesta factual. Es válida solo si el trabajo requiere conocer esa respuesta. Para la mayoría de los equipos, no lo hace. El ingeniero la busca en 30 segundos.
Prueba de validez: ¿Harías esta pregunta en una revisión de código?
Si la respuesta es no, elimínala de la evaluación.
El mejor enfoque: Prueba bajo restricciones
En lugar de "¿Qué es una referencia débil?", pregunta:
"Aquí hay un controlador de vista que sostiene una referencia a un objeto gerente. El gerente sostiene una referencia de vuelta al controlador de vista. Muéstrame cómo arreglarías el ciclo de retención. Escribe código, no expliques."
Esto prueba:
- ¿Pueden reconocer el problema?
- ¿Pueden usar las herramientas correctas (weak, unowned)?
- ¿Pueden escribir código que compile?
- ¿Piensan en memoria?
Todas estas son habilidades de trabajo real.
Lista de verificación de validez de iOS
¿Tu evaluación prueba:
- ¿Leer y comprender código existente?
- ¿Decisiones de gestión de estado (ViewController vs ViewModel)?
- ¿Comprensión del ciclo de vida (no solo nombres, sino razonamiento)?
- ¿Manejo de errores de red y casos extremos?
- ¿Patrones de seguridad de memoria (referencias débiles, unowned, etc.)?
- ¿Testabilidad e inyección de dependencias?
Si estás probando "nombre este método", estás fallando en validez.
Lista de verificación de validez de Android
¿Tu evaluación prueba:
- ¿Razonamiento sobre ciclo de vida de Fragment y Activity?
- ¿Patrones de ViewModel y Repository?
- ¿Uso de corutinas y alcance?
- ¿Integración de base de datos (Room o similar)?
- ¿Configuración de pruebas (Mockito, Espresso)?
- ¿Manejo de cambios de configuración?
Si estás probando "¿cuál es la firma exacta del método?", estás fallando en validez.
Lista de verificación de validez de React Native
¿Tu evaluación prueba:
- ¿Ciclo de vida de componente y hooks?
- ¿Patrones de navegación (React Navigation, no enrutamiento web)?
- ¿AsyncStorage y persistencia?
- ¿Optimización de FlatList?
- ¿Comprensión de puentes e integración de módulos nativos?
- ¿Pensamiento de rendimiento (no suposiciones tipo web)?
Si estás probando "¿qué paquete npm hace X?", estás fallando en validez.
Equidad: Oportunidad igual de mostrar conocimiento
La trampa de la inequidad: Gotchas específicos de plataforma
Ejemplo: "Escribe una función que capitalize la primera letra de una cadena en Swift."
Versión injusta: No menciones la API. Hazlos implementarla manualmente.
- Los seniors lo encuentran trivial
- Los ingenieros de nivel medio podrían tropezar
- Los ingenieros junior implementarán un bucle
Versión justa: "Capitalize la primera letra. Puedes usar APIs integradas."
La primera versión no prueba juicio. Prueba memorización de API. Diferentes candidatos memorizan diferentes APIs.
El problema de equidad del conocimiento específico de plataforma
Alguien que ha usado iOS durante 5 años vs 2 meses tendrá diferentes conocimientos de API. Esto es esperado y está bien. Pero la evaluación debe medir razonamiento y aprendizaje, no inventario de API.
Justo: "Necesitas manejar la finalización de tareas de fondo. ¿Cómo lo abordarías?"
Injusto: "Nombra la función Swift para finalización de tareas de fondo sin buscarlo."
La versión justa permite que el candidato piense. La versión injusta es trivialidad.
Gotchas específicos del lenguaje
Para ingenieros de Android Java/Kotlin:
- No penalices Kotlin si usan Java (o viceversa) a menos que hayas requerido explícitamente uno
- La lógica importa más que la elección del lenguaje
Para ingenieros de iOS Swift/Objective-C:
- Objective-C se está desvaneciendo pero sigue siendo válido
- Swift moderno es el estándar, pero las diferencias sintácticas no deberían matarlos
Para ingenieros JavaScript React Native:
- Componentes de clase vs componentes funcionales: ambos son válidos
- Patrones antiguos (callbacks, promesas) vs nuevos (async-await): lo antiguo sigue funcionando
El problema de equidad del nivel de experiencia
Un junior y un senior resolverán el mismo problema. Pero una evaluación justa muestra el potencial del junior, no solo su conocimiento actual.
Injusto: Límite de tiempo tan apretado que el junior no puede terminar.
Justo: Límite de tiempo que permite a los candidatos terminar, luego califica por calidad/enfoque.
Injusto: Preguntar sobre patrones avanzados que solo los seniors conocen (nunca se enseñó al junior).
Justo: Preguntar sobre patrones centrales que todos usan, con objetivos adicionales para pensamiento avanzado.
El problema de equidad de zona horaria e idioma
Si la evaluación es "codificación en vivo", considera:
- ¿En qué zona horaria está el ingeniero?
- ¿Es el inglés su primer idioma?
- ¿Tienen un lugar tranquilo para codificar?
Un ingeniero de una zona horaria diferente con desempeño pobre a las 3 AM en su hora local no es una señal. Es una configuración injusta.
Solución: Ofrece flexibilidad en el tiempo o usa evaluaciones para llevar a casa cuando sea posible.
Fallos de validez comunes
1. El proyecto para llevar a casa que es demasiado abierto
"Construye una aplicación." Eso no es una evaluación, eso es un agujero de conejo. Diferentes ingenieros lo construirán de manera diferente, haciendo que la calificación sea imposible.
Solución: Establece requisitos específicos. Tres pantallas, API específica, restricciones específicas.
2. La pregunta de codificación en vivo que es demasiado estrecha
"Implementa un árbol de búsqueda binaria." Esto prueba práctica de programación competitiva, no desarrollo móvil.
Solución: Usa problemas realistas. "Arregla este error en la lógica de paginación." "Optimiza este FlatList."
3. La evaluación que requiere conocimiento externo
"Usamos Redux. Implementa esta característica con Redux." Pero el candidato nunca ha usado Redux.
Solución: Separa conocimiento de plataforma del conocimiento de trabajo. Si Redux es requerido, enséñalo o no lo requieras.
4. La evaluación que requiere herramientas específicas
"Usa Xcode." Pero el candidato usa AppCode o VS Code.
Solución: Deja que usen las herramientas con las que están cómodos. Lo que importa es el resultado, no la cadena de herramientas.
Fallos de equidad comunes
1. Custodia de experiencia de plataforma
"Solo contratamos personas con 2+ años de experiencia en iOS." Esto filtra por tiempo invertido, no competencia. Algunos aprenden en 6 meses, otros tardan 3 años.
Solución: Prueba lo que pueden hacer ahora. Si son débiles en un área específica, investiga si es aprendible (sí: contrata y entrena; no: rechaza).
2. Penalizar enfoques diferentes
El candidato A resuelve el problema usando una máquina de estados. El candidato B lo resuelve con un enfoque más simple. Ambos funcionan.
Solución: Califica según la rúbrica (¿funciona?, ¿es mantenible?), no por preferencia estética.
3. Suposiciones ocultas sobre el entorno
"La evaluación asume que tienes una Mac con Xcode." ¿Qué hay con los candidatos en Linux? ¿Windows?
Solución: Si la evaluación debe ser específica de plataforma (desarrollo de iOS), reconócelo y ofrece alternativas.
4. Equidad basada en el tiempo
Una evaluación diseñada para 60 minutos pero poco realista en ese tiempo pone a los gestores de tiempo débil en desventaja.
Solución: Proporciona mucho tiempo (90 minutos para trabajo de 60 minutos). Califica por lo que hicieron, no qué tan rápido.
Construcción y prueba de equidad de evaluación
Paso 1: Tener múltiples revisores califiquen
Dale la misma evaluación a 5 candidatos. Haz que 2 personas califiquen cada uno independientemente. Si los puntajes divergen mucho, la rúbrica no está clara.
Ejemplo de divergencia: El revisor A da 75/100. El revisor B da 55/100. Este es un problema de equidad. La rúbrica es demasiado subjetiva.
Paso 2: Verifica patrones demográficos
Con el tiempo, pregunta: ¿Los ciertos grupos constantemente tienen peor desempeño?
- ¿Todos los ingenieros de iOS de un origen puntúan más bajo?
- ¿Los ingenieros junior de algunos orígenes puntúan más bajo que los juniors de otros?
Si hay un patrón, investiga si es evaluación injusta o brecha de habilidad real. Si es injusta, arregla la evaluación.
Paso 3: Valida contra resultados de contratación
El control de equidad definitivo: ¿Los ingenieros que puntuaron alto realmente tuvieron éxito?
- Si un grupo demográfico puntúa alto pero luego tiene bajo desempeño, la evaluación se está perdiendo algo
- Si un grupo demográfico puntúa bajo pero desempeña muy bien, la evaluación está sesgada en su contra
Sigue esto y ajusta.
Paso 4: Audita complejidad oculta
Vuelve a leer tu evaluación. ¿Usas expresiones que no son obvias? ¿Lenguaje ambiguo? ¿Jerga?
Ejemplo:
- "Implementa un modelo reactivo" es vago y lleno de jerga
- "Obtén datos y actualiza la interfaz de usuario cuando cambien los datos" es claro
Lo claro es más justo.
La matriz de equidad específica de plataforma
| Aspecto | iOS | Android | React Native |
|---|---|---|---|
| Conocimiento del lenguaje central | Sintaxis moderna de Swift | Fundamentos de Kotlin | JavaScript ES6+ |
| Gotcha específico de plataforma | Casos extremos del ciclo de vida | Ciclo de vida de Fragment | Limitaciones del puente |
| Nivel de suposición justa | Nivel medio+ conoce async-await | Nivel medio+ conoce corutinas | Nivel medio+ conoce hooks |
| Estimación de tiempo | 90 min para tarea de nivel medio | 90 min para tarea de nivel medio | 90 min para tarea de nivel medio |
Usa esto para establecer expectativas. No asujas conocimiento no en esta tabla.
Señales de alerta en tu evaluación
- Tienes preguntas sin respuesta correcta (ambigua)
- Los diferentes revisores consistentemente no están de acuerdo en la calificación
- Un grupo demográfico consistentemente tiene peor desempeño
- Los candidatos reportan no entender lo que estás pidiendo
- Calificas en base a "¿coincidió con mi solución?" en lugar de "¿resuelve el problema?"
- El límite de tiempo se siente apretado para alguien
- El problema solo se puede resolver si sabes una API específica
Si alguno de estos aplica, arreglarlo.
La transparencia construye equidad
Dile a los candidatos por adelantado:
- Qué estás probando (arquitectura, no conocimiento de API)
- Qué herramientas pueden usar
- Cuánto tiempo debería tomar
- Cuál es la rúbrica
- Si aprueban/fallan y por qué
La transparencia no daña a los candidatos fuertes. Solo ayuda a los débiles a entender qué salió mal. Eso es justo.
Juntándolo todo: Auditoría de evaluación
Antes de usar una evaluación con candidatos reales, responde:
- Validez: ¿Harías esto en una revisión de código? ¿Mide el trabajo?
- Equidad: ¿Podrían candidatos de diferentes orígenes todos mostrar lo que saben?
- Claridad: ¿Es la indicación sin ambigüedad?
- Rúbrica: ¿La calificación es objetiva o depende de la preferencia del revisor?
- Seguimiento de resultados: ¿Puedes medir si la evaluación predice éxito?
Si respondes sí a los cinco, tienes una buena evaluación.
Así es cómo construyes evaluaciones que realmente funcionan para contratación de desarrollador móvil a escala.