¿Cuáles son algunas preguntas de gran desafío para contratar ingenieros de software?

Hacemos esto para ganarse la vida en Geektastic (literalmente), así que aquí están nuestras 5 excelentes preguntas de entrevista cara a cara.

(Esto supone que su candidato pasó el desafío del código, estos generalmente son enviados por las empresas contratantes como un desafío para llevar a casa, toman entre 1 y 6 horas (aunque creemos que 2-3 es el punto óptimo) y realmente deberían ser evaluados adecuadamente por un humano (creemos que las pantallas basadas en máquinas realmente apestan para encontrar buenos ingenieros de software sólidos)

1. ¿Por qué tomaste la decisión X en tu presentación de desafío de código?

El hecho de que estés entrevistando cara a cara significa que superaste el desafío del código, el siguiente paso es asegurarte de estar preparado con una justificación de las decisiones que tomaste y estar preparado para hablar sobre ellas. “Oh, ¿escribí eso? No recuerdo “, podría llevar a algunos momentos difíciles. Si bien es poco probable que se espere que escriba un código perfecto en una pizarra (muchos desarrolladores usan IDE y esto es una mitigación razonable para una sintaxis imperfecta), es particularmente importante poder justificar sus elecciones y la capacidad de racionalizar y comparar soluciones alternativas. en equipos de desarrollo ágil.

2. ¿Qué sucede entre escribir una URL en la barra de direcciones de su navegador, presionar enter y ver una página web?

Este es un ejemplo de un tipo amplio de pregunta que podría conducir en cualquier dirección. Puedes hablar sobre todo tipo de cosas: quizás DNS para empezar, ¿qué son los servidores DNS? ¿Cómo funcionan en un nivel alto o bajo? Búsquedas. Servidores primarios y secundarios. Almacenamiento en caché. TTLs. Propagación de cambio. Registros DNS A registros. CNAME. Registros MX. Y eso es solo DNS. Todavía no hemos alcanzado un equilibrador de carga o servidor web o servidor de aplicaciones.

Aunque “hay una búsqueda de DNS que le dice al navegador la dirección IP del servidor que responderá a esta solicitud” es un buen punto de partida, los entrevistadores hábiles pueden llevarlo a uno o dos agujeros de conejo para ver si sabe más que la bala punto. Treinta segundos después de su respuesta, podría estar en TCP, HTTP, capas de transporte, SSL, cadenas de certificados, ¿quién sabe? No se espera que usted sea Google y si el rol implica la construcción de bibliotecas JavaScript, una brecha (o abismo) en su conocimiento de las capas de transporte probablemente no va a matar sus posibilidades, pero siempre es bueno demostrar que sabe que hay más en cuanto a la cantidad de descargas de npm de Internet cuando crea ese archivo JS de 50 líneas que acaba de escribir. Si usted es un ingeniero de JavaScript que trabaja en el código del lado del cliente, no sería irrazonable esperar que comprenda en profundidad cómo funciona un navegador web, ya que esa es efectivamente la plataforma para la que está escribiendo su código.

3. ¿Cuáles son las cosas que debería considerar si estuviera escribiendo su propio servidor de base de datos?

La mayoría de los ingenieros de software, particularmente aquellos que trabajan con aplicaciones de back-end, usarán almacenes de datos. ¿Pero entiendes algo más sobre la aplicación subyacente en esa agradable interfaz GUI en la que haces doble clic? ¿Cómo escribirías una aplicación como MySQL o MongoDB o Neo4j? Preguntas como estas podrían conducir a principios generales de bases de datos como ACID; SQL / NoSQL; diferentes tipos de NoSQL; actas; Inicio sesión; almacenamiento de archivos; E / S bloqueante / no bloqueante; roscado indexación; fragmentación optimizadores de consultas, etc. Al igual que con la pregunta dos, el entrevistador hace una pregunta abierta para investigar los límites de su conocimiento.

4. ¿Cómo encaja el rol Y con el rol Z dentro del equipo de desarrollo?

Muchas entrevistas con desarrolladores incluirán la reunión de muchos miembros del equipo; especialmente en las empresas emergentes, no es inusual encontrarse con más de ocho personas diferentes, todas interesadas en verificar que entiendan cómo su trabajo influirá en su trabajo y cómo trabajarán juntos. . Investigue, pase un tiempo antes de la entrevista pensando en cómo funciona el flujo de TI en la empresa y demuestre que tiene una idea de cómo encajan las piezas.

5. ¿Qué ambiente estás buscando?

Esperemos que haya investigado un poco y sepa que la compañía solo tiene 10 empleados o que tiene un equipo de desarrollo de 150. Si se está mudando de grande a pequeño o viceversa, probablemente sea bueno demostrar que sabe lo que podría ser. En para. Si le gusta una agradable cantina subsidiada y apaga su máquina a las 5:30 p. M., Entonces una compañía de 10 empleados podría no ser para usted. Esté preparado para hablar sobre el entorno que espera y cómo han funcionado los entornos que ha experimentado en el pasado. ¿Cómo te ves encajando? ¿Entiende cómo los proyectos de TI tienden a funcionar en equipos de desarrollo más pequeños o más grandes?

Puede ser obvio, pero si se entrevista en una startup, no cometa el error de pensar que no hay reglas. Todas las empresas inteligentes, sin importar cuán relajadas y nuevas sean, querrán que se adhiera a ciertos principios y asuma las responsabilidades de sus elecciones. Del mismo modo, una institución financiera, por ejemplo, lo estará buscando para mostrarle que puede seguir protocolos estrictos y comprender cómo el trabajo que está haciendo a menudo es directamente cuantificable en términos financieros para el negocio.

Algunos consejos extra:

  • Sea curioso acerca de las elecciones tecnológicas que han realizado en la empresa. Si no se lo explican, pregunte por ellos y no tenga miedo de cuestionar las elecciones, especialmente si hay alternativas obvias.
  • Si no eres un experto en el tema del papel para el que estás entrevistando, está bien decir que estás interesado en los desafíos técnicos, ¡solo asegúrate de haber pensado cuáles podrían ser!
  • ¡No se asuste si recibe la pregunta “¿cómo escribiría un servidor de base de datos”? A menos que su entrevista sea con una compañía que escribe servidores de bases de datos, lo que se evalúa es su comprensión de la naturaleza del problema y cómo podría abordarlo, en lugar de escribir código.
  • Y no hace falta decir que, por lo general, es una mala idea dirigir debates en áreas de las que no sabes mucho. Sugerir que conoces Python si solo has copiado y pegado el ejemplo Hello World puede salir muy mal. ¡Uno de los entrevistadores podría tener experiencia oculta en un área que solo sale en entrevistas! One-upmanship es un rasgo de carácter que no es exactamente una rareza en las entrevistas con los desarrolladores y si comienzas desde la posición de Hello World, es mejor aclararse lo antes posible.

Preguntas prácticas que requieren que demuestren su conocimiento y habilidad de la manera que necesitarían en su trabajo real. Cualquier otra cosa se siente falsa e innecesaria. Las pruebas de codificación automatizadas son un método popular de detección, pero a muchos ingenieros de software no les gustan porque parecen demasiado artimañas o inútiles.

Sin embargo, diría que esto depende de la prueba. Se puede idear un buen desafío de tal manera que requiera lo que dije en la primera oración: los candidatos para demostrar su conocimiento y habilidad de la manera que necesitarían en su trabajo real.

La ingeniería de software es un conjunto de habilidades difíciles de adquirir y dominar, por lo que debe haber algún tipo de evaluación de habilidades y destrezas. Existen herramientas y métodos que facilitan un poco las cosas, pero, por supuesto, no sustituyen la clásica entrevista verbal técnica.

He entrevistado a unos cientos de ingenieros de software a lo largo de los años, y finalmente me he decidido por preguntas que no son de naturaleza tan técnica. Me di cuenta de la naturaleza defectuosa del uso de preguntas técnicas complicadas cuando comenzamos a tener personas que conocían la respuesta del libro a través de nuestro proceso y simplemente no podían producir.

En cambio, preferimos dejar que algunas de nuestras personas técnicas que ya están en el equipo brinden un ejemplo de un problema real que enfrentamos como equipo y luego preguntar al posible empleado cómo lo resolverían. Es más una narración que una pregunta simple, y en ese proceso aprendes mucho sobre alguien. El lado comercial puede entender cómo piensan, si son seguros, líderes potenciales, etc .; el lado de la tecnología puede determinar fácilmente si la persona comprende o no de qué está hablando.

El pizarrón termina siendo una consecuencia natural de esta forma de cuestionamiento. Aprenderá lo cómodos que están con el diseño, la articulación de problemas, etc., que pueden afectar en gran medida su capacidad para participar en un entorno de equipo.

Finalmente, les pedimos que proporcionen ejemplos de código para la entrevista que consideren representativos de su trabajo. Nuestro equipo recorrerá estos ejemplos de código con ellos y les permitirá narrarlo. Nuevamente, como anteriormente, eliminará rápidamente a aquellos que no pueden producir o tergiversar su trabajo.

More Interesting

¿Cuánto paga Airbnb a un nuevo ingeniero de software graduado?

¿Por qué las empresas tecnológicas contratan reclutadores que no saben codificar?

¿Qué reclutadores llaman una 'posición de relleno'?

¿Se requiere prensa para contratar "grandes" ingenieros?

¿Cómo pudo Opower construir un equipo de ingeniería tan bueno?

¿Es deseable la experiencia de desarrollo de Ruby?

¿Por qué las compañías de software contratan a estudiantes con antecedentes distintos de CS y TI de los campus universitarios?

¿Qué les gusta ver a los empleadores en la cuenta de GitHub de alguien? ¿Miran el estilo, los proyectos, la frecuencia, etc.?

¿Cuáles son algunas empresas conocidas que contratan desarrolladores de software remotos de forma regular?

¿Cuáles son las clases más difíciles que deben tomar las especialidades de ingeniería?

Soy un nuevo ingeniero de software graduado que aceptó una oferta en Dropbox. ¿Cómo cobro en compensación de capital?

¿Son efectivos los Hacakthons para atraer ingenieros experimentados?

¿Puedo conseguir trabajo en Google en 6 meses? ?

Empleos y carreras en los Estados Unidos de América: ¿Qué tipo de título de ingeniería tendrá más demanda en los próximos cinco años?

¿Cómo puede una startup basada en análisis de datos (sin series - Una financiación aún) en el Área de la Bahía contratar talento en el extranjero, especialmente de India y China? ¿Hay empresas de reclutamiento especializadas en este campo? ¿Será la inmigración / visas un problema?