Creo que es súper útil, y siempre lo hago, pero como los beneficios se han cubierto tan bien, voy a discutir solo los aspectos negativos (aparentes).
Creo que es poco probable que las pruebas de código te den falsos positivos: hay pocas probabilidades de que alguien que realmente no puede escribir código logre fingirlo en una entrevista, al menos si tienes una escala de preguntas de dificultad creciente. (Quizás el escenario más probable es que están haciendo trampa preguntando a un amigo, si no es una entrevista cara a cara).
Los problemas están más en el lado falso negativo: ¿las pruebas de código lo llevarán a rechazar a la persona que realmente es el mejor candidato?
Miedo escénico
Es posible que tengas a alguien que sea realmente un buen desarrollador, pero que esté muy nervioso por esta entrevista, y que esencialmente se asuste. Actuar bajo presión es importante hasta cierto punto, pero lidiar con el miedo escénico no es una parte tan importante de ser un programador (en comparación con otras profesiones), y sería desafortunado rechazar a alguien que lo padece gravemente. Esto puede agravarse: si la persona no puede responder una pregunta que sabe que debe responder, puede ponerse más tensa. O, como en esta pregunta , sienten que no pueden hablar y codificar al mismo tiempo.
mitigación: comience con algunas preguntas para conocerse sobre sus antecedentes, objetivos, etc., antes de saltar a preguntas técnicas. Quizás comience con algunas preguntas técnicas más fáciles para que obtengan un poco de impulso. No seas un idiota durante la entrevista (discutiendo sobre punto y coma, etc.).
Es una medida ruidosa
Las preguntas de código interesantes pueden tener más de una respuesta correcta. Si una persona escribe una respuesta correcta y otra escribe una respuesta correcta y más eficiente, ¿cuánto peso debería ponerle?
Hasta cierto punto, esto es como el problema con algunas preguntas de "rompecabezas": la persona tiene la idea o no y obtienes un resultado casi binario. La inteligencia probablemente afecta la probabilidad de tener esa idea, pero el muestreo solo unas pocas veces le da una medida cruda.
Esto me molesta sobre las preguntas de código (aunque todavía las uso). La mejor mitigación en la que puedo pensar es tener una rampa de posibles soluciones: la persona puede al menos escribir una respuesta cruda de fuerza bruta, o una respuesta para Una parte del problema. Darse cuenta de que es mejor que nada es una buena señal. Luego, si descubren más, pueden hacerlo más eficiente o con un código más elegante. En la medida de lo posible, evite hacer preguntas que obtengan respuestas binarias.
No es realmente representativo
La programación no es un trabajo para resolver problemas algorítmicos de diez minutos uno tras otro: hay mucho más trabajo sobre la comprensión y el diseño de sistemas más grandes y la concentración durante largos períodos de tiempo, por no hablar de las habilidades interpersonales. Las preguntas de código realmente no prueban esto.
Pero, las preguntas de código no son las únicas preguntas que va a hacer: puede ver sus antecedentes, sus referencias, su trabajo de código abierto (si corresponde), para encontrar evidencia de esfuerzo sostenido, creatividad y habilidades interpersonales.
Saber cómo resolver problemas algorítmicos pequeños y cómo reducirlos a código es una condición necesaria pero no suficiente: si no puede resolver problemas pequeños y no puede escribir código no trivial, entonces todo el pensamiento global en el mundo no lo es te hará un desarrollador productivo.
Cualquiera podría resolver eso
No, aparentemente no. Como señala la famosa publicación de FizzBuzz , los problemas que podría pensar son trampa trivial no solo para los recién graduados, sino también para personas con años de experiencia en la industria. No se porque. O la prueba de código es una medida deficiente (lo cual es posible, aunque creo que es poco probable), o no estaban contribuyendo mucho a los proyectos en su currículum, o estaban haciendo mucho al copiar y pegar código algorítmico (que es posible)
Vale la pena reconocer que realmente puedes hacer mucho sin escribir ningún código algorítmico. La gente gana mucho dinero con aplicaciones cuyo valor está en los gráficos o en la lógica empresarial, no en lo que podríamos llamar "programación", y eso está bien. Pero, si realmente necesita programadores, no es una buena opción.
Puede que no esté bien calibrado
Si se le ocurre una pregunta, la respuesta puede parecerle fácil. Sin embargo, si se le hace una pregunta inesperadamente comparable, o una pregunta que no está sesgada hacia sus propios intereses y antecedentes particulares, puede ser mucho más difícil.
mitigación: ejecute las pruebas en algunos desarrolladores que ya conoce y vea cómo lo hacen. Quizás alguien de tu equipo, que sabes que es muy inteligente, tendrá problemas con uno de ellos y puedes considerar ajustarlo. Quizás piensen en una respuesta mejor o diferente.
Es demasiado como trivia
Creo que las preguntas de código ciertamente pueden entrar en trivia, si insiste en que las personas conozcan API oscuras de memoria, o consigan la sintaxis perfecta, o recuerden la definición exacta de un algoritmo no trivial. Es razonable confiar en documentos, búsquedas en la web o errores de compilación para recogerlos, y tienen poca correlación con la experiencia real. Ni siquiera saber dónde es probable que esté la API es quizás una pista de que la persona no la ha usado recientemente, pero eso no es necesariamente un problema mientras no mientan en su currículum.
Entonces la respuesta a esto es bastante simple: no hagas preguntas triviales y no te obsesiones con los errores triviales. Recuerde al candidato cómo se llama la API o déjelo buscarlo; arreglar errores de sintaxis; no pruebe personas que memoricen definiciones de estructura de datos
¿Cómo te comparas?
Si tiene dos candidatos y ambos responden bien a las preguntas, ¿cómo elige entre ellos? Podrías elegir al que terminó más rápido, pero tal vez allí comiences a recoger liebres sobre tortugas. Podrías hacer otra ronda y hacer preguntas mucho más difíciles, pero tampoco estoy seguro de eso. Quizás solo les dé a ambos un A + e intente elegir entre ellos con otros criterios (o intente encontrar el dinero para contratar a ambos).