Entrevista técnica y habilidad de programador [cerrado]

14

Lo que diré podría ser un poco controvertido por naturaleza, pero hoy estoy muy desanimado, por lo que preguntaré esto.

Acabo de tener una entrevista con una importante empresa de tecnología para un puesto de pasantía, donde me hicieron muchas preguntas típicas de entrevistas orientadas a algoritmos. Ahora, dada mi experiencia, me considero fuerte en algoritmos (también obtuve buenas calificaciones en algoritmos de nivel de posgrado, material que involucra la completitud NP y más allá (algoritmos de aproximación y aleatorios), pero desafortunadamente rechacé la entrevista. No pude piense en un método muy eficiente para resolver un problema de cuerdas en aproximadamente ~ 10 minutos. Una vez que terminó la entrevista, tomé un vaso de agua, comí un plátano y me relajé por un tiempo e intenté el problema nuevamente. La respuesta podría llegar en menos de 5 minutos. Y lo peor de todo: en realidad estaba en esa pista y el entrevistador lo insinuó, pero me presionó demasiado. Toda mi experiencia me hizo pensar en entrevistas tecnológicas. Tenía algunas preguntas y quería plantearlas en este foro.

  1. ¿Es realmente posible juzgar la habilidad técnica de alguien en media hora? ¿Honestamente? ¿O es solo un tiro de dados?

  2. ¿Las preguntas de la entrevista técnica miden la capacidad de resolución de problemas? Este punto es muy discutible? Como estudiante de doctorado, sé que la resolución de problemas matemáticos implica resolver algo de lo que nunca has oído hablar antes. Por otro lado, preguntas como: ¿fusionar dos listas vinculadas en orden ordenado o imprimir todos los elementos de un árbol binario en el nivel k se convierten en "meros ejercicios" una vez que alguien ha visto la solución o resuelto el problema de antemano?

  3. ¿Las personas que salen con gran éxito en esta entrevista se convierten en grandes programadores? ¿Continúan y diseñan motores de juegos elegantes, bibliotecas de gráficos, escriben marcos rápidos de fork-join? ¿Hay alguna evidencia que apunte a una correlación positiva entre el buen desempeño en entrevistas técnicas y la capacidad de programación real? ¿O estas entrevistas están más orientadas a encontrar el tipo de persona "haciendo las cosas" (Spolsky)?

Puedo apostar a que muchos académicos que publican ideas innovadoras en ICML, VLDB, Mobicom, rechazarán estas entrevistas. Pero puedo asegurarle que son algunas de las personas más inteligentes que encontrará en este planeta.

Estoy principalmente en la academia (estudiante de posgrado), por lo que agradeceré mucho la percepción de alguien al otro lado de la valla. ¿Alguien que realmente realiza estas entrevistas?

[Ok, todos. Gracias por todas las respuestas agradables y reflexivas. Como no quiero hacer otra pregunta, le pediré que responda esta pregunta por mí.

Suponga que el candidato X tiene una buena cartera pública de trabajos en los que ha contribuido a algún proyecto de código abierto conocido en el que, en realidad, puede ir y verificar sus parches, verificar los errores que ha cerrado y echar un vistazo a los diseños que ha creado. En ese caso, la pregunta es ¿cuánto peso está dispuesto a dar a su trabajo público / verificable en comparación con qué tan bien responde a una pregunta de entrevista de árbol binario muy artificial en menos de 15 minutos?]

usuario396089
fuente
11
Cuando entrevisto personas para trabajos, no estoy buscando buenos programadores. Estoy buscando buenos ingenieros. Un programador analiza un problema y codifica una solución. Un buen INGENIERO observa un problema y pregunta "¿Es este el verdadero problema que necesito resolver?" y si no es así, descubre cuál es el problema correcto, diseña una solución que equilibra todos los factores en juego (horario, dinero, habilidad) y luego se lo entrega a un programador para que lo codifique.
PlayDeezGames
2
Hmm, tiene sentido. Cualquiera puede adquirir habilidades de codificación sin procesar en C ++ / Java / python en 6-12 meses. Pero diseñar realmente cosas que requieren una comprensión muy cuidadosa del rendimiento, el hilo, los problemas de memoria y las compensaciones son la clave. Estoy de acuerdo. ¡Lo siento! pero no puedo votar, no tengo suficientes representantes.
user396089

Respuestas:

11

Manten eso en mente...

  1. El objetivo principal de un proceso de entrevista no es llegar a la verdad absoluta sobre la capacidad personal de cada entrevistado, sino seleccionar pocos candidatos de un grupo de muchos.
  2. Es MUCHO, MUCHO más caro contratar a un mal desarrollador que transmitir uno bueno.

Muchas veces, durante las entrevistas, se toman atajos imperfectos (como pruebas técnicas) porque, como mencionaste, no hay un proceso perfecto para poder juzgar a una persona en 30 minutos. Pero dado que la mayoría no tiene el lujo de trabajar con usted lado a lado, debe aceptar que es lo que es, un juego de probabilidades que todos juegan.

DXM
fuente
"Es MUCHO, MUCHO más costoso contratar a un desarrollador malo que transmitir uno bueno". Sí, entiendo el argumento aquí, que parece ser desde un punto de vista puramente utilitario, como si la probabilidad de contratar a un el desarrollador malo está próximo a cero, el costo negativo asociado con él puede arrastrar el valor total de utilidad esperado de positivo a negativo.
user396089
55
@ user396089, en la academia, las personas al menos van a prestar un gran servicio para brindarle un servicio: capacitación, tutoría, crecimiento personal, etc. Al menos nominalmente, es parte de su misión. En el sector privado, la relación es 97% utilitaria. Las empresas solo están interesadas en brindarle una oportunidad en la medida en que haya un beneficio para ellas.
Charles E. Grant
Para agregar a lo que dijo Charles, cuando cruzas la puerta, eres, al igual que otros 50 candidatos, un completo desconocido para la empresa y para el gerente de contratación. Por lo tanto, puede ser la mejor persona de todos los tiempos, a nivel profesional y personal, pero dadas las circunstancias, los objetivos de la compañía en ese momento realmente son maximizar su valor futuro, al mismo tiempo que minimizan los costos de búsqueda mientras buscan esa maximización.
DXM
Sabes, es curioso que esté pensando en el simple problema de la cuerda que no pude resolver hoy durante la entrevista, pero lo resolví más tarde; pero, aún después de intentarlo durante casi 3 semanas, todavía tengo que resolver un problema relacionado con uno de mis proyectos de pasatiempo. Los detalles se pueden encontrar aquí - stackoverflow.com/questions/9056108/…
user396089
1
@ Antonio2011a: "cuán válido" es un término divertido y no es blanco y negro. Diferentes personas usan diferentes tácticas para juzgar la calidad de los empleados potenciales. Cada una de esas tácticas es algún tipo de atajo porque la única prueba verdadera es dejar que la persona trabaje con usted y permitir un tiempo de aceleración. Entonces, ¿qué tan válida es esta pregunta? o qué tan válido preguntar acerca de O grande, o qué tan válido preguntar acerca de en qué trabajó. Estas son solo áreas grises y ninguna de ellas es perfecta.
DXM
9

¿Es realmente posible juzgar la habilidad técnica de alguien en media hora?

No exactamente. Es posible eliminar a las personas que no pueden programar en absoluto, y aquellos que no pueden explicar las cosas en su CV. Más allá de eso, generalmente solo estoy tratando de medir la inteligencia general y el interés en el campo. Es difícil comentar más sobre su situación sin saber el problema que se le pidió que resolviera.

¿Las preguntas de la entrevista técnica miden la capacidad de resolución de problemas?

Ese no es el objetivo de mis preguntas técnicas. En cambio, estoy tratando de descubrir si el candidato comprende los fundamentos de la informática. Para evaluar la capacidad de resolución de problemas, le pido a un candidato que cuente sobre un problema interesante en el que trabajaron.

¿Las personas que salen con gran éxito en esta entrevista se convierten en grandes programadores? ¿O estas entrevistas están más orientadas a encontrar el tipo de persona "haciendo las cosas" (Spolsky)?

Eso es todo. La grandeza es rara. Estoy feliz de encontrar a alguien competente.

Kevin Cline
fuente
El problema era una variación de KMP (cuando haces una pasada a través de la cadena, almacenas el número de apariciones de algunos caracteres que has visto anteriormente). Al final, dependiendo de la longitud de la cadena y del recuento que tenga, puede responder la pregunta real. Todo en una pasada: tiempo O (n) y uso de espacio constante O (1)
usuario 396089
2
"Estoy feliz de encontrar a alguien competente".
Programador
2
Pasar una entrevista se debe (¡al menos!) A tanta suerte como a la grandeza. Una vez que haya alcanzado un cierto nivel de conocimiento, el azar juega un papel mucho más importante que la mayoría de las personas. Sugerencia de lectura: El paseo del borracho de Mlodinow .
Konrad Rudolph
Sí, he leído ese libro y también el aún más interesante y sarcástico "Engañado por la aleatoriedad" de Nassim Nicholas Taleb. No hace falta decir que me deprimí por un tiempo después de leer los libros, si entiendes la premisa básica de los dos libros y eso es "¡sí, todo es suerte! ¡Suerte y todo sobre la suerte!" El mundo es aleatorio y tenemos que lidiar con eso.
user396089
5
  1. Si. Si honestamente Esto no quiere decir que 30 minutos es tiempo suficiente para obtener una imagen completa de lo que una persona es capaz de hacer. El trabajo del entrevistador es hacer lo mejor para tener una idea de quién es el entrevistado y qué puede hacer. Encontrar a las personas que ponen algo en su currículum que realmente no sabían es sencillo. Averiguar exactamente qué puede hacer el entrevistado, incluidas todas sus habilidades y fortalezas, no lo es.

  2. Si. Te dejan ver cómo piensa el entrevistado. Obtener la respuesta correcta no siempre es necesario. Ver a alguien lidiar con un problema con el que lucha es tan beneficioso como ver a alguien responder a un problema correctamente sin muchos problemas. Siempre hago una pregunta que creo que el entrevistado podría no ser capaz de responder.

  3. No conozco ninguna prueba empírica que diga que las entrevistas técnicas encuentran a los mejores candidatos, pero es lo mejor que he intentado. Diferentes personas son buenas en diferentes cosas y obtener respuestas técnicas correctas no es lo único que decide si alguien es contratado. Ser una buena opción para la empresa también es muy importante.

Según su pregunta, creo que lo más importante que debe comprender es que los días de comentarios claramente definidos como una calificación de letra han terminado. Obtener la respuesta correcta es solo una parte del resultado. Escribir un buen código, comunicar sus ideas y escuchar a los demás es igual de importante. Sin embargo, estas áreas son más subjetivas y deben tratarse como tales.

Al igual que cómo resolvió el problema, dé un paso atrás y aclare su mente. Mucho entra en una entrevista y el entrevistador sabe que no es un sistema perfecto. Intentan hacer lo mejor que pueden para la empresa, al igual que usted intenta hacer lo mejor para usted.

muestreador
fuente
2
Ese es un gran punto @unholysampler: "Obtener la respuesta correcta es solo una parte del resultado". No importa un poco si entregas un portal de ventas en línea perfecto un día DESPUÉS de Navidad. Demasiado tarde. El tiempo es tan importante como tener la respuesta correcta.
jasonk
+1 "Están tratando de hacer lo mejor que pueden para la empresa, al igual que tú estás tratando de hacer lo mejor por ti".
Burhan Ali
5

En media hora puede juzgar que la capacidad técnica de una persona es al menos tan buena como x. Es decir, su capacidad puede ser mayor de lo que demostraron, pero puede estar bastante seguro de que no es peor. Si x es superior a sus requisitos, los contrata. Sí, es injusto si demuestras debajo de tu habilidad real. Todo lo que puedo decir es mejorar en la demostración.

Si alguien recitara una respuesta prácticamente memorizada, le daría un problema más difícil. En la academia la memorización es una habilidad importante. En un trabajo, es en su mayoría redundante cuando tienes google allí mismo.

Al ver cómo trabajan la mayoría de los grandes programadores, es seguro asumir que aprobaron una entrevista de trabajo en algún momento. No, no se puede saber si alguien será un gran programador en una entrevista de media hora. Afortunadamente, la mayoría de las empresas no necesitan grandes programadores. Se llevan muy bien con programadores sólidos y confiables que no temen abordar tareas que se encuentran fuera de su zona de confort.

La razón por la cual los pensadores innovadores pueden rechazar las entrevistas de trabajo es que las oportunidades para resolver problemas llamativos y revolucionarios son muy raras, y solo se te confiará para resolverlas después de que hayas demostrado que puedes resolver problemas mundanos pero difíciles que tus colegas no puede, como por qué el software se bloquea cuando supera el 16% de carga.

Karl Bielefeldt
fuente
2
+1 "... problemas mundanos pero difíciles que sus colegas no pueden resolver, como por qué el software falla cuando supera el 16% de carga".
Jaydee
3

Muy pocas personas saben si sus técnicas de entrevista realmente funcionan, porque nunca aprenden más sobre aquellos que fallaron. Pero cuando nada refuta su hipótesis, la toman como confirmación de que son verdaderas. Entonces hay un elemento definido de tirar los dados.

Si las teorías económicas que dicen que los mercados son racionales y eficientes fueran ciertas, entonces las compañías buscarían contratar a personas que fueran malas para una entrevista de manera que no los hiciera malos en su trabajo. Entonces, alguien que vestía un traje que no le quedaba bien, sudaba, parecía muy nervioso y tenía problemas para hacer problemas técnicos bajo la presión de una entrevista; si hubiera evidencia externa, de lo contrario podría hacer problemas técnicos y las presiones del trabajo no serían como esas de una entrevista (como generalmente no lo son): representaría la mejor oportunidad de una empresa de obtener un candidato mejor de lo que podría atraer y actuaría en consecuencia. (Piense en Money-ball para el mundo corporativo). Eventualmente, los sesgos de la entrevista desaparecerían.

En la práctica, esto va en contra de la naturaleza humana. A los entrevistadores les gustan los extrovertidos confiados, sin importar cuál sea el puesto, e incluso si la entrevista técnica proporciona peor información que el currículum y las referencias (como tal vez sea cierto en su caso) lo tendrán en cuenta.

En cuanto a sus preguntas:

  1. Algo. Las pruebas tienen una relación pobre de señal a ruido, pero se pueden ajustar para eliminar completamente sin calificar a expensas de las entrevistas calificadas pero malas en técnicas.

  2. Ver # 1. Parte del ruido proviene de la variación en si las personas han visto el problema antes.

  3. Ver # 1. Probablemente hay una pequeña correlación positiva entre estas pruebas y convertirse en un gran programador.

Mi consejo: estudie algunas preguntas técnicas de muestra para obtener una familiaridad básica. Recuerde que es un poco arriesgado, así que durante la entrevista trate de tener confianza. Si puede explicar lo que está pensando sin distraerse de lo que realmente piensa, entonces hágalo. Si realmente va mal, admite que te pones nervioso en las entrevistas y hazles saber que parece algo con lo que normalmente no tendrías problemas, posiblemente dando un ejemplo de un problema similar pero más difícil que resolviste.

psr
fuente
1
"A los entrevistadores les gustan los extrovertidos confiados" ... esto es un poco desconcertante para mí, mi tipo Myers Briggs es INTJ (suponiendo que MB es un poco representativo del tipo de personalidad real).
user396089
2
Muchos desarrolladores de software son introvertidos como yo. En consecuencia, también lo son muchos entrevistadores. Claro, la confianza ayuda. Pero las respuestas sensatas ayudan mucho más.
Kevin Cline