Si va a juzgar si los ‘algoritmos están sobrevalorados’ observando la forma en que se usan como un medio para filtrar o rechazar candidatos de trabajo de software, entonces eso sería un tratamiento menos que óptimo de la importancia de los algoritmos.
Esto se debe básicamente a que las mejores compañías intentan constantemente mejorar en el arte de entrevistar (casi) a desconocidos completos. La contratación es (muy) dura e imperfecta . En esa búsqueda, se supone que alguien que es bueno en algoritmos y estructuras de datos (el espíritu de la informática) sería bueno en muchas otras cosas que lo convierten en un buen “contribuyente individual”.
En mi opinión, esta es una suposición justa para empezar. Al menos, parece estar ‘funcionando’ para varias compañías. Si ese no fuera el caso, las compañías que insisten en ‘probar’ la excelencia algorítmica de los candidatos no seguirían produciendo productos que a todos nos gustan y usamos.
- ¿Cómo surgieron las estructuras de datos y los algoritmos?
- Se me pide que lea datos de un archivo .txt en una matriz y que haga cosas con esa información (encontrar promedio, encontrar número de elementos, encontrar valores máximos / mínimos). ¿Cómo se puede hacer esto en Java?
- Cómo calcular el orden de crecimiento para un fragmento de código dado
- Cómo encontrar los diferentes números de subconjuntos contiguos de una matriz usando Java
- ¿Cómo encuentra Google Play las subcadenas más populares en un conjunto de revisiones?
Algunas compañías han promocionado públicamente la superioridad de las entrevistas basadas en proyectos (Use entrevistas basadas en proyectos en lugar de “GitHub”) como un medio para entrevistar a los candidatos. Como alguien que recientemente se sometió a esta dolorosa rutina, creo que esta técnica también falla horriblemente en la práctica debido a varias cosas como nuestra incapacidad para juzgar el tiempo y los esfuerzos involucrados en hacer un proyecto (de los cuales la implementación del algoritmo y la elección de la estructura de datos es solo una parte ), la disposición de los entrevistadores para dedicar tiempo a ejecutar el código y revisar las abstracciones utilizadas.
En cierto modo, estoy de acuerdo con su observación y también estoy de acuerdo con la respuesta de Jeff Darcy de que, según los algoritmos, “juzgar a un candidato” es lo más fácil. Terence Tao habló recientemente de la “ley de Goodhart”, que también es importante a este respecto. Los libros, sitios web como “hacer frente / descifrar la entrevista de programación” hacen que las preguntas / problemas algorítmicos sean un “objetivo” y una vez que eso sucede, dejan de convertirse en una buena “medida”.
Por último, he escuchado nada menos que Sergei Brin decir que los principales “entrevistadores” de Google NO son sus principales contribuyentes individuales. Pero hasta ahora, ellos (y muchas otras compañías) quieren reducir la cantidad de ‘falsos positivos’ (como me dijo un amigo de Google) y de esta manera parece estar funcionando para ellos …