¿Cuál es la mejor / óptima forma de entrevistar a ingenieros de software?

Primero, hablar vs. hacer. Si alguna vez estoy contratando un chofer, no les pediré a los candidatos que me cuenten sobre el estacionamiento paralelo. Los pondría en un auto y los dejaría estacionar en paralelo. Es mucho más valioso que el candidato implemente list / hashtable / tree en la entrevista (y posiblemente lo discuta después) que escuchar al candidato simplemente hablando sobre el tema.

Segundo, prueba vs. refutación. Quiero que mi futuro chofer conduzca de manera segura, mantenga el auto ordenado y pueda hacer el giro en J si los malos me persiguen en una persecución. La capacidad de estacionar en paralelo no garantiza que él / ella pueda hacer un giro en J (ver el video a continuación), pero puedo apostar con seguridad por lo contrario: la incapacidad para completar una tarea simple (estacionamiento en paralelo) es un fuerte predictor de la incapacidad para completar Una tarea compleja (giro en J). La incapacidad para aplicar conceptos básicos de programación (listas, matrices, tablas hash, árboles) es un predictor de falla al tratar temas más avanzados (diseño, mantenimiento, trabajo con código heredado).

Vea también este blog seminal sobre contratación de programadores http://www.joelonsoftware.com/ar… esp. El pasaje discute cómo la falta de fluidez en el álgebra simple predice el fracaso en el cálculo avanzado.

Divulgación: mi empresa (Codility.com) proporciona tareas de codificación cortas para candidatos de preselección para trabajos de programación.

Y este es el giro en J:

Para la mayoría de los trabajos, realmente no ayuda hacer las preguntas capciosas sobre estructuras de datos, etc., que uno ve en las preguntas típicas de la entrevista. La “señal” que recibe de una respuesta de candidatos se diluye por dos razones:

  1. La mayoría de los ingenieros no tienen que resolver tales problemas en sus trabajos reales. Están más involucrados en leer el código de otras personas, depurar y comprender proyectos complejos. ¡Entonces este tipo de preguntas son muy indirectas!
  2. La gente estudia para tales preguntas, así que el hecho de que alguien pueda responder su pregunta de la lista vinculada no le dice qué tan buenos programadores son realmente. Y si alguien tiene dificultades con una respuesta, puede ser porque no ha visto el problema antes.

Una forma mucho mejor es hacer una “entrevista sim” en la que el ingeniero realiza tareas que están más estrechamente asignadas al trabajo en el que realmente van a estar trabajando si son contratados. Esto te da una señal directa. Es como ver a un piloto volar en un simulador de vuelo en lugar de hacerle preguntas de opción múltiple.

En Lytmus, hemos creado una plataforma para que tales entrevistas sim sean diseñadas y administradas en la nube.

(La entrevista depende de varios parámetros, desde el lado del empleador, por ejemplo, cargo, responsabilidad, departamento, tipo de proyecto, tipo de tecnología, tipo de habilidades, años de experiencia, mentalidad de entrevistador / entrevistadores. Desde el lado del candidato, por ejemplo, la forma en que el CV (currículum) fue presentado, la forma en que el candidato llevó la discusión técnica / no técnica)

Ejemplo:

Puede estructurar preguntas muy refinadas relacionadas con áreas generales, áreas de experiencia pasada, áreas de habilidades, procesos de pensamiento, áreas técnicas, áreas de prueba que incluyen:

(Si está contratando para trabajos de ingeniería de software)

(Áreas generales) ej. ¿Cuéntame sobre ti? ¿Cuáles son tus habilidades técnicas / no técnicas positivas? ¿Cuáles son tus habilidades técnicas / no técnicas negativas? ¿Qué tipo de trabajo te gusta? , ¿Cómo sientes que ese trabajo te queda bien? , ¿Por qué elegiste este trabajo? , ¿Por qué estás buscando trabajo ?, ¿Por qué debería contratarte? y mucho más…


(Áreas de experiencia pasada), por ejemplo, Mejores prácticas: efectivas en el trabajo, aspiraciones profesionales: expectativas del trabajo, movimiento profesional: experiencia laboral pasada, codificación: proyecto de código más grande, programación: pieza de código más grande, habilidades técnicas: problemas técnicos complejos encontrados, trabajo Interés: aprender del trabajo y mucho más …


(¿Si desea consultar alguna técnica?)
(Algoritmos), por ejemplo, enfoques de clasificación, enfoques de búsqueda, enfoque de fuerza bruta, enfoques codiciosos, algoritmo de programación de tareas, códigos Huffman, subsecuencia común más larga, coincidencia de cadenas ingenuas, algoritmo de Rabin-Karp, algoritmos de completitud NP, árboles rojo-negros, B- Árboles, recorridos de gráficos, tablas de hash y mucho más …


(¿Si desea consultar alguna técnica?)
(Codificación), por ejemplo, particionar la matriz de bolas, agregar dos enteros binarios de N bits, estructura de datos Trie para almacenar palabras, algoritmo para hacer coincidir cadenas comodín, comprimir cadenas, convertir un BST en una lista vinculada, árbol N-Ary, gráfico Amplitud del primer recorrido, barajar una baraja de cartas y mucho más …


(¿Si contrata profesionales de prueba?)
(Áreas de prueba), por ejemplo, cómo probar una máquina de refrescos, enfoques de prueba, estrategias de prueba, nota que se construye usando palabras, tipos de pruebas que has hecho y mucho más …

(Para todos los que deseen comprender el proceso de pensamiento del candidato)
(Proceso de reflexión), por ejemplo, en todas las empresas como Microsoft / Google / Apple / Amazon, estos chicos seguramente también harán algunas preguntas abiertas, como ‘¿Cómo diseñaría un nuevo navegador?’ O ‘¿Cómo diseñaría un nuevo sistema operativo? ? o incluso ‘¿Cómo diseñarías una vía férrea?’ y mucho más…


(Definitivamente te gustaría entender al candidato)
(Definición de un profesional) ej. ¿Cuál es su tabla de habilidades? , ¿En qué tipo de soluciones centradas en la industria está involucrado o le gustaría participar? , ¿Qué título laboral define estrechamente el tipo de profesional que es o espera ser? y mucho más…


(Definitivamente te gustaría entender al candidato)
(Aspiraciones candidatas)
si el candidato quería convertirse en un profesional de la computación en la nube.
si el candidato desea convertirse en profesional de Linux / C ++.

El problema que siempre enfrentará es el mismo problema que las personas enfrentan con los médicos: puede graduarse de la escuela de medicina y no ser un gran médico. Lo mismo con los programadores, hay muchos que pueden programar, pero simplemente no son geniales. La única forma de saber realmente es tener una entrevista con tres programadores.

que dos de los tres programadores codifiquen algo. Luego tome el tercer tipo y pídale que revise ambos códigos que digan cuál es el mejor y por qué. Luego saque lo mejor de los dos y el tercer programador y haga que ambos codifiquen un nuevo proyecto y que el peor codificador de los tres los revise; obviamente no es tan bueno, por lo que lo más fácil de entender para él debería ser lo más simple y lo más limpio posible y debería contratarse.

More Interesting

¿Cuáles son los tutoriales que proporcionan la comprensión profunda de los conceptos básicos de Java?

Cómo encontrar la matriz definida positiva más cercana a una matriz dada

¿Se hacen con frecuencia preguntas sobre patrones de diseño durante las entrevistas de codificación en grandes empresas tecnológicas como Google y Amazon?

En una entrevista de codificación, ¿debo escribir una solución descriptiva o concisa?

Ha pasado un mes desde mi graduación, pero no tengo llamadas de trabajo. Lo he intentado todo. ¿Qué tengo que hacer?

¿Cómo debe un estudiante de ECE de último año solicitar empleos fuera del campus en Amazon / Microsoft?

¿Qué temas de diseño de sistemas, sistemas distribuidos y escalabilidad debo estudiar para estar adecuadamente preparado para una entrevista con un ingeniero de software de Google?

¿Alguien puede proporcionar un buen algoritmo para resolver esto con una complejidad lineal de tiempo?

Cómo prepararse para una entrevista técnica en Myntra para el perfil de desarrollador web

¿Cuál debería ser tu reacción en una entrevista cuando no sabes la respuesta a la pregunta que te han hecho?

¿Es mejor intentar oportunidades en el sitio en una empresa basada en servicios o probar una buena empresa basada en productos como 'Thought Works', donde obtendré un buen trabajo y un buen salario?

Programación de acertijos: Te dan n dados cada uno con caras numeradas del 1 al m. Lanzas los n dados y anotas la suma de los números en los n dados. Te dan un número x. Considérelo una ganancia si la suma obtenida es mayor que x. Encuentre la probabilidad de ganar dado n, m y x.

Para codificar entrevistas en empresas de primer nivel como Google, Facebook, etc., ¿es C un lenguaje adecuado?

Dada una matriz de 'n' enteros. ¿Encuentra los números 'k' de manera que la diferencia mínima de todos los pares posibles de números 'k' sea máxima (máxima entre otras diferencias mínimas para varias posibles selecciones de números k)?

Cómo mejorar mis habilidades de lenguaje C para que si alguien me hace alguna pregunta sobre C, pueda tener la respuesta a esas preguntas particulares