Logo de Adafaceadaface

El 78% de los programadores experimentados no puede codificar este problema de forma más sencilla que FizzBuzz

TLDR: La mayoría de las pruebas de codificación son innecesariamente difíciles. Nuestro análisis de los resultados de decenas de miles de pruebas de codificación muestra que las preguntas más difíciles en las pruebas de codificación son menos efectivas para seleccionar candidatos para roles técnicos.

Cualquiera que esté remotamente involucrado en la contratación tiene su propia historia de terror sobre candidatos con currículums perfectos que son invitados a entrevistas, solo para que el gerente de contratación descubra que no saben codificar. El proceso de solicitud "Spray and Pray" (rociar y rezar) empleado por los candidatos lleva a que cada oferta de trabajo corporativo atraiga un promedio de 250 currículums. Esto obliga a las empresas a utilizar un proceso de selección automatizado para evitar pasar incontables horas entrevistando a los candidatos.

Una selección al estilo FizzBuzz es fundamental para evitar que los gerentes de contratación pierdan el tiempo entrevistando a candidatos que no saben codificar.

El problema con las pruebas de codificación hoy

Las herramientas de evaluación tradicionales utilizan rompecabezas de codificación y preguntas de algoritmos de nicho para la selección, lo que crea mucha angustia entre los programadores sobre tener que pasar por evaluaciones de selección irrelevantes.

Sentimiento del candidato para HackerRankSentimiento del candidato para HackerRankSentimiento del candidato para HackerRankRevisión de Codility Si bien es genial si alguien es bueno para resolver acertijos, esto no es un fuerte indicador de lo buen ingeniero que es alguien / lo bueno que va a ser en el puesto (para la mayoría de los puestos). Además, esta forma de evaluar las habilidades de los desarrolladores tiene un sesgo inherente contra los desarrolladores más experimentados y los desarrolladores que no provienen de entornos de informática.

Lo que estamos intentando hacer de forma diferente

La razón principal por la que empezamos con Adaface es que las plataformas de evaluación tecnológica tradicionales no son una forma justa para que las empresas evalúen a los ingenieros. Comenzamos Adaface para ayudar a las empresas a encontrar grandes ingenieros evaluando las habilidades en el trabajo requeridas para un puesto.

Desplegamos expertos en la materia para revisar la descripción del puesto de un cliente para comprender el perfil del candidato ideal y seleccionar las preguntas más relevantes de nuestra base de datos para incluirlas en la evaluación.

En los últimos años, varias empresas a nivel mundial han cambiado a Adaface, y hemos tenido la oportunidad de analizar más de cerca si el enfoque funciona. Tenemos la intención de compartir nuestros aprendizajes con la comunidad, para ayudarnos a descubrir mejores conocimientos y acelerar nuestro progreso hacia el objetivo de construir evaluaciones amigables para los candidatos.

Uno de los experimentos que tuvimos en Adaface fue probar si tiene sentido incluir preguntas de codificación más fáciles o más difíciles en una prueba de codificación (en una evaluación de 45 minutos, solo se puede incluir 1 pregunta, por lo que hacer una mezcla de ambas no es una opción y no estamos interesados en evaluaciones de 120 minutos).

Una de nuestras preguntas favoritas para incluir en las pruebas de codificación es una pregunta muy directa que requiere que el candidato use solo una matriz y un diccionario/mapa. Cuando nuestro equipo creó esta pregunta, se clasificó como "Fácil" (a medida que los candidatos intentan la pregunta y entran más datos, el nivel de dificultad se actualiza automáticamente). Ahora que esta pregunta ha sido intentada por un número significativo de candidatos, podemos compartir algunos resultados. Aquí va:

La configuración

Pregunta

Dado que esta pregunta actualmente la están utilizando algunos de nuestros clientes, no podemos revelar la pregunta exacta. Sin embargo, esto es lo que uno necesitaría hacer para resolver la pregunta:

  • Analizar una matriz de cadenas con valores duplicados
  • Crear un diccionario para llevar la cuenta del número de veces que apareció cada valor
  • Devolver la clave con el valor más alto.

Esto debería darte una idea clara de cómo sería la pregunta y del nivel de dificultad de la misma.

La pregunta se explica en un lenguaje sencillo que puede ser entendido por alguien que no habla inglés de forma nativa. Las preguntas también incluyen 2 ejemplos con las salidas esperadas para mayor claridad. La configuración incluye código estándar sin errores que analiza la entrada e imprime una salida de muestra en la pantalla. El candidato puede elegir resolverlo en cualquier lenguaje de programación. El editor de código tiene documentación integrada para todos los lenguajes de programación, por lo que pueden buscar cualquier función, junto con ejemplos de código. Todos los casos extremos (¿qué pasa si la entrada es nula? ¿qué pasa si hay un empate?) se explican claramente. La pregunta no se puede buscar en Google. Es decir, si buscas la pregunta en Google no encontrarás la solución en línea. El candidato tiene 25 minutos para resolver el problema. Cuando le queden 5 minutos, puede agregar un tiempo de reserva de 5 minutos para completar el problema, con una pequeña penalización en la puntuación. Si el candidato está atascado, puede tomar una pista con una pequeña penalización en la puntuación. Una pista de ejemplo sería algo como "Tu código actual no funcionará para un caso de prueba en el que la matriz de entrada solo contenga 1 elemento."

Grupo de candidatos

Estos candidatos no son camioneros ni fontaneros sin experiencia en programación que se postularon al puesto sin leer la descripción del trabajo. Son ingenieros preseleccionados que tienen más de 2 años de experiencia y que han postulado a puestos en empresas como Morgan Stanley, Amazon, PayPal, el gobierno de Singapur y similares.

Distribución de puntuación de los candidatos

  • El 59% obtuvo una puntuación de 0
  • El 19% obtuvo una puntuación entre 0 y 50% de la puntuación
  • solo el 13% lo resolvió con una puntuación perfecta

Por qué hacer preguntas difíciles en una prueba de codificación no tiene sentido

  1. Programar bajo presión es difícil
  2. Programar en un entorno desconocido es difícil
  3. La mayoría de los candidatos no podrán hacer la pregunta fácil de todos modos, por lo que sirve como un mejor filtro
  4. Muchos gerentes de ingeniería piensan que preguntas difíciles == algoritmos especializados / rompecabezas de ciencias de la computación
  5. Es difícil idear preguntas difíciles por ti mismo, por lo que la mayoría de los gerentes de contratación usan preguntas de Internet, que se pueden buscar en Google y hacen que la prueba sea irrelevante

Preguntas frecuentes

¿Pero esta pregunta simulada no es realmente un reflejo de las habilidades en el trabajo y no demuestra si pueden hacer el trabajo?

Tienes razón, no lo es.

La idea detrás de la prueba de codificación es simplemente filtrar a los candidatos que definitivamente no están calificados, lo cual esta pregunta hace muy bien. Idealmente, desea evaluar su capacidad para escribir código limpio y mantenible con un diseño simple, trabajar en colaboración con el equipo para llegar a soluciones a problemas difíciles, etc. Pero ese no es el trabajo de la prueba de codificación.

Antes de programar una entrevista de 2 horas con un candidato, quieres saber si el candidato puede escribir código. Esa es la función de una prueba de programación.

Creo que una tarea para realizar en casa es mejor para evaluar las habilidades del candidato.

De nuevo, tienes razón.

Una tarea para realizar en casa puede hacer un trabajo mucho mejor al capturar cómo será el rol, por lo que la evaluación será mejor. Sin embargo, la mayoría de las empresas que utilizan tareas para realizar en casa informan una tasa de finalización del 30% (ya que son demasiado largas).

Si estás viendo mejores tasas de finalización, probablemente deberías seguir usando una tarea para realizar en casa. Para los demás, los candidatos están ocupados, y si insistes en usar tareas largas como el primer paso de tu proceso de contratación, podrías perder buenos candidatos.

¿Qué significa esto?

Una pregunta de programación fácil es una excelente manera de filtrar a los candidatos no calificados que no saben programar. Nada difícil, solo un simple ejercicio de programación para pasar por el proceso de escribir código. De esa manera, puedes asegurarte de que la prueba de programación sea corta (~45 a 60 minutos) y no ahuyente a tus candidatos.

¿Buscas seleccionar candidatos para tus roles tecnológicos? Consulta Adaface.