Aquí hay algunas técnicas para dar una buena entrevista técnica:
- Las preguntas deben escalar de fácil a imposible. Una gran pregunta puede funcionar para candidatos con 0–20 + años de experiencia. Por ejemplo, puede comenzar con un problema como, “Dado un archivo de registro, encuentre todas las entradas que contengan la cadena ‘foo’”. Para un candidato universitario, escribir el código para hacerlo manualmente será suficiente para mantenerlos ocupados. Para un candidato experimentado, será una expresión regular de una línea. Por lo tanto, para un candidato experimentado, puede comenzar con “Dado un archivo de registro en formato X (proporcionado por el entrevistador), busque todas las entradas que muestren IP en una subred hablando con IP 1.2.3.4″. Nunca debería encontrarse en un callejón sin salida a menos que el candidato sea significativamente más alto que usted. Para los candidatos de más antigüedad, una gran pregunta es: “¿Cuál crees que es el problema más importante en nuestra industria? ¿Cómo lo resolverías? Impleméntalo.”
- Desarrolle su pregunta durante la entrevista para que coincida con las habilidades del candidato. Continuando con el ejemplo anterior, digamos que el candidato escribe rápidamente el código para encontrar esas direcciones IP. Ahora pregunte: “Encuentre casos en los que las máquinas propiedad del usuario X se comunicaron con el dominio Y (donde los datos solo tienen direcciones IP). Al escribir el código, dígame qué otras API necesita para lograr esto ”. Esta es una pregunta difícil porque debe tener en cuenta que las máquinas del usuario y el dominio pueden haber cambiado las direcciones IP con el tiempo, podría haber NAT, servidores proxy o tráfico falso, etc. Si también lo logran, puede agregar más complejidad: ¿Qué pasa si hay 1 TB de registros? ¿Qué pasa si no tienes acceso a internet? ¿Si los ciclos de CPU o la memoria fueran realmente caros? Si los datos fueran escamosos? Por el contrario, si el candidato tiene problemas con lo que creía que era una pregunta básica, puede simplificar si se concentra en un solo aspecto de la misma, por ejemplo, “Simplemente encuentre las máquinas correspondientes al usuario” o “¿Qué estructura de datos necesitaría rastrear? ¿Qué máquinas tienen qué direcciones IP? ”Si un candidato realmente está totalmente en llamas, pase a una nueva pregunta.
- Pídales que sean autocríticos. Los grandes candidatos tienen excelentes respuestas a preguntas como “¿Qué no te gusta de tu código?”, “¿Qué más harías aquí si tuvieras más tiempo?” “¿Crees que esta es la mejor solución posible?” pocos minutos y casi siempre es muy revelador.
- Base sus preguntas en ejemplos del mundo real. Tome un problema que su equipo haya resuelto recientemente y pídales que resuelvan una versión simplificada de eso. Esto garantiza que (a) su pregunta sea relevante para el trabajo de su equipo, (b) sea solucionable, (c) sepa lo difícil que fue resolverla y (d) conozca algunas de las trampas y opciones. Es importante utilizar un problema que ya haya resuelto, tanto por (b) como por (c) y porque si el candidato encuentra una solución novedosa que su equipo implemente, los derechos de propiedad intelectual podrían convertirse en un problema. Además, si está entrevistando a una persona en el nivel X, puede usar un problema resuelto por una persona de su equipo en ese nivel para que sepa que es la dificultad correcta.
- Límite de trivia. Preguntarle al candidato sobre hechos aleatorios que podrían buscar es una pérdida de tiempo. Las preguntas breves sobre áreas en las que afirman ser expertos en su currículum pueden ser útiles para determinar cuán exagerado es su currículum y obtener una evaluación básica de su experiencia, pero no vale la pena dedicar mucho tiempo, porque hay un elemento demasiado grande de suerte al elegir un hecho particular que ellos saben. Es mejor cubrir el conocimiento incluyendo algo de terminología y tecnología en el contexto de una pregunta más exploratoria. Sin embargo, es totalmente válido pedirles que expliquen una tecnología amplia en profundidad extrema, por ejemplo, “¿Qué sucede cuando ingresas una dirección en la barra de URL?” – esto les permite elegir qué elementos técnicos discutir, muestra su capacidad para comunicarse es un tema complejo y brinda oportunidades para ver si comprenden las elecciones de diseño que se hicieron. Los mejores ingenieros pueden decir: “El campo n. ° 3 se utiliza para transmitir el valor X para proporcionar una propiedad útil Y, pero significa que es posible un ataque de seguridad Z”.
- Haz que el candidato hable. Siempre que sea posible, durante las preguntas técnicas, haga que hagan las preguntas. ¿Se está ejecutando localmente o en un centro de datos, cuántos registros, qué tan limpios son los datos, quiénes son los clientes, con qué frecuencia se ejecutarán, etc.? Todos esos detalles deben provenir del candidato. Desea proporcionar suficientes detalles para que sigan el camino correcto. Si se pierden un detalle importante, puede interponerlo, pero no comience con un preámbulo extenso: no quiere tener que ser esa directiva cada vez que les asigna una tarea, así que no lo haga en una entrevista.
- Manténgalos en el camino y en el ritmo. En ocasiones, deberá pedirle al candidato que se concentre en secciones específicas o que pase por una sección que no ha completado. Una buena manera de hacerlo es decir que pueden usar una API externa que hace X para que puedan omitir la escritura del código. Alternativamente, puede decir: “Me gustaría centrarme en Y. ¿Puede escribir el código para eso?”
- La sintaxis perfecta y la creatividad son puntos de bonificación, no el punto principal. Si el candidato pierde un punto y coma, no es gran cosa. Si no recuerdan el nombre de la clase de tabla hash en el idioma que están utilizando, significa que no han escrito mucho código en ese idioma recientemente, pero puede que no sea un gran problema. Si constantemente entienden mal la sintaxis, entonces probablemente no sean un buen programador. Del mismo modo, si encuentran una solución innovadora y brillante en la que nunca hayas pensado, eso es genial y puedes darles un poco de crédito extra, pero reconoce que esto es principalmente suerte. La mayoría de las veces, la solución correcta a un problema es sencilla, y la creatividad en una entrevista está poco correlacionada con la creatividad en el trabajo.
- Preguntas de prueba sobre compañeros de trabajo. Para comprender qué tan bien debe desempeñarse un candidato, haga que algunos compañeros de trabajo de diferente antigüedad respondan su pregunta en una entrevista simulada. Esto también le mostrará algunas soluciones diferentes a sus preguntas que podría no haber esperado.
- Mantenga su retroalimentación de la entrevista objetiva y sus evaluaciones comparativas. Escriba lo que hizo el candidato, no lo que pensaba de él. Luego, evalúe sus resultados con respecto a otras entrevistas, incluidas las de sus compañeros de trabajo: ¿cuánto código escribieron? ¿Cuántos errores tenía su código? ¿Su código realmente resolvió el problema? ¿Cuántos casos límite se perdieron? El sesgo es insidioso, lo tienes y no lo sabes, y la mejor manera de combatirlo es con una evaluación analítica rigurosa. Tenga en cuenta que el sesgo no es solo demográfico, sino que también puede provenir de cosas como en qué idioma les gusta desarrollarse, qué pasatiempos tienen y si hablan mucho o poco. En particular, no importa si te gustan. Siempre que no hayan sido groseras o inadecuadas, los contratará para escribir código, así que evalúelos únicamente en función de lo bien que escriban el código. El “ajuste cultural” es casi siempre una excusa para el sesgo.
Estos son mis consejos personales de 10 años de entrevistas en Microsoft y Google. No están respaldados oficialmente por ninguna de las compañías ni universalmente seguidos por nuestros entrevistadores, pero creo que funcionan bastante bien.
- ¿Es éticamente correcto que una empresa tenga una entrevista de codificación de 5 a 8 horas mientras pasan quince minutos encontrando fallas que una prueba de codificación de 1 hora también habría revelado?
- Quiero prepararme para mis rondas de entrevistas técnicas por JP Morgan (sucursal de Mumbai). ¿Qué preguntas hace JP Morgan para un desarrollador Java experimentado de 5 años?
- ¿Cómo imprimo una matriz de enteros con índices de caracteres en c o c ++?
- ¿Son fáciles las entrevistas de programación?
- ¿Cuáles son algunas aplicaciones divertidas o divertidas que se pueden desarrollar utilizando subprocesos múltiples en Java?