Logo de Adafaceadaface

Cómo entrevistar a ingenieros de software

Las entrevistas son una muestra muy vulnerable de nosotros mismos y me siento extremadamente honrado por el hecho de que unos 400 ingenieros se sentaron conmigo para entrevistar y me enseñaron a hacerlo bien.

Anteriormente he reunido un equipo de ingenieros brillantes de empresas como Google, Facebook y Amazon para una startup financiada con capital semilla como gerente de producto y establecí un equipo tecnológico completamente nuevo desde cero para FusionCharts como consultor de producto. Ahora lo estoy haciendo a escala, como cofundador en Adaface donde automatizamos la evaluación técnica de primera ronda con nuestro chatbot, Ada.

Dado que ha sido una parte fundamental de mi trabajo durante varios años, he estado trabajando en el diseño de un proceso de entrevista por el que me gustaría pasar, uno que nos ayude a encontrar a los ingenieros más adecuados para el puesto y, lo más importante, una entrevista en la que los candidatos salgan del edificio con una sonrisa.

¿Cómo entrevistar a ingenieros de software?

Esta publicación es un resumen de lo que he aprendido hasta ahora, y presentaré información útil que los gerentes de contratación pueden incorporar en su proceso de contratación. Dividiré mis aprendizajes en 3 secciones:

  1. Entrevista técnica
  2. Tomar una decisión
  3. Etiqueta en la entrevista

Entrevista técnica

1. Haz preguntas que te ayuden a calificar a los candidatos de forma granular.

Entonces, ¿cómo decidimos qué preguntas hacer? No hagas preguntas capciosas solo por el filtro. Los candidatos se enfadan. Y no te da ninguna señal significativa sobre la capacidad del candidato. Nadie está contento.

El hecho de que haya una pregunta que solo el 5% de los ingenieros puede resolver, no significa que esos candidatos sean el 5% superior más adecuado para el puesto. Además, esta forma de medir la habilidad de un desarrollador tiene un sesgo inherente contra los desarrolladores con más experiencia.

  • No dejes que cada entrevistador decida qué preguntas hacer a los candidatos al azar.
  • Ten preguntas para todos los niveles de puntuación 1, 2, 3, 4 (niveles crecientes de dificultad/años de experiencia).
  • Cada pregunta debe ser resuelta por todos los entrevistadores antes de que empiecen a entrevistar a los candidatos. Luego, permite a los candidatos una generosa asignación de 3 veces el tiempo para resolver esa pregunta.
  • La idea detrás de hacer preguntas particulares en una entrevista es entender la capacidad del candidato en una habilidad dada. Esto inherentemente significa que no podemos hacer a todos todas las preguntas/las mismas preguntas, eso sería una pérdida de tiempo. Si un candidato no pudo resolver 2 preguntas de dificultad media, no tiene sentido discutir una pregunta difícil solo por el gusto de hacerlo. Hacer una pregunta más fácil te dará datos útiles sobre dónde se encuentra el candidato en esa habilidad.

2. Tener un mecanismo de puntuación consistente.

Después de un poco de iteración, me topé con lo que me gusta llamar la forma de puntuar "asumiendo que el candidato es excepcional". Así es como funciona:

  • Cuando presentes una pregunta, asume que el candidato la resolverá de la mejor manera posible y dale un 5.
  • A lo largo de la discusión, agrega puntos negativos por cosas que importan y en las que el candidato no se desempeña bien.
  • Por ejemplo, para un puesto que requiere un buen dominio de los algoritmos, -1.5 por ser capaz de llegar solo a una respuesta no optimizada en el intento #2, -1.5 si tuvimos que darle al candidato una pista muy reveladora para avanzar, -2 si se rinde demasiado pronto, -0.5 si omite casos extremos, etc.
  • Suma los números al final de la discusión de esa pregunta y elige la siguiente pregunta en consecuencia.

3. Los candidatos son los mejores jueces de sus habilidades.

La mayoría de los candidatos saben lo buenos que son con una habilidad en particular, pero generalmente se autoinforman incorrectamente por 2 razones: sesgo y escalas desalineadas.

Hay una manera fácil de arreglar ambas cosas: Sesgo → pídales que lo demuestren con datos. Escalas desalineadas → infórmeles sobre tu escala y pídales que califiquen según tu escala.

La mayoría de los ingenieros son lo suficientemente inteligentes como para recalibrarse si les explicas tu escala.

Normalmente explico mi escala de experiencia en habilidades a los candidatos:

  1. Conoces la sintaxis y las palabras clave lo suficiente como para buscar en Google, usar Stack Overflow y hacer el trabajo.
  2. Tienes experiencia en el manejo de un proyecto de principio a fin utilizando la habilidad. Esto se puede verificar revisando su código, capturas de pantalla, comprendiendo la escala/impacto/desafíos del proyecto.
  3. Conoces los entresijos de la habilidad, los patrones de diseño y actualmente realizas revisiones de código para otros ingenieros de tu empresa para esa habilidad. Esto se puede verificar revisando sus revisiones de código (si es posible) y preguntando qué patrones de diseño buscan.
  4. Modo Zen: Estás escribiendo bibliotecas y lanzando nuevas versiones de esta habilidad.

Y les pregunto a los candidatos cómo se calificarían en esta escala para todas las habilidades que conocen. Casi todos los candidatos se califican a sí mismos dentro de un rango de error de -0.5 de lo que termino calificándolos yo. Usa esto a tu favor para saber en qué habilidades enfocarte más y en qué dedicar menos tiempo.

4. Haz al menos una pregunta donde tengan dificultades.

Esto puede sonar cruel hasta cierto punto y tal vez lo sea. Pero si le haces a un candidato 10 preguntas y las resuelve todas fácilmente, percibirán que es una entrevista fácil y la asociarán con lo desafiante que podría ser el trabajo. Eso podría llevar a que no estén muy entusiasmados con el puesto. Cuanto más difícil sea llegar a alguna parte, más lo apreciamos. Además, te da mucha información significativa sobre cómo reaccionan en una situación difícil/estresante.

Obviamente, eso no significa que tengamos que hacer las preguntas difíciles y hacerles sentir que perdieron. La intención es todo lo contrario. El candidato y el entrevistador se están evaluando mutuamente. Empujémonos mutuamente a tener al menos un desafío nuevo para que la discusión nos haya enseñado algo nuevo, independientemente del resultado.

Así que termino haciendo al menos una pregunta (tengo una lista útil de algunas preguntas que son realmente buenas/difíciles) a los buenos candidatos y los dejo con eso.

Tomando una decisión

1. Crea una hoja de evaluación a medida que avanzas y verifica los sesgos más tarde.

No escribas las fichas de evaluación después de la entrevista. Olvidarás mucho de lo que pasó durante la entrevista, y la puntuación no será tan detallada. Al mismo tiempo, asegúrate de verificar si hay sesgos al final. ¿Calificaste a alguien más alto solo porque es de una universidad de primer nivel? ¿Lo calificaste más alto o más bajo porque es del sexo opuesto/mismo? ¿O porque era muy similar a ti?

2. Oblígate a decir sí o no eligiendo mejores escalas.

No nos gusta responsabilizarnos de las cosas para las que no nos hemos inscrito. Es difícil adoptar una postura de rechazar o contratar a alguien y muchas veces terminamos diciendo 'tal vez' para que alguien más tenga que tomar esa decisión. Oblígate a no hacerlo. Una forma de hacerlo es eligiendo una buena escala. Si eliges una escala de 1 a 5, la mayoría de los entrevistadores eligen 2 o 3 o 2.5 o 2.75 (cualquier cosa que les haga sentir cómodos en la zona de 'no sé, deja que alguien más tome la decisión').

Aquí está la escala que creo que los entrevistadores deberían usar para la decisión final de sí/no: 1 - 4

  1. Si los contratan, renuncio.
  2. No los contrates.
  3. Contrátalos.
  4. Contrátalos, de lo contrario renuncio.

Las ventajas de esta escala son que no hay tal vez y hay síes o noes polarizados. Cuando todos los entrevistadores siguen esta escala, facilita la discusión de un candidato en el contexto de la contratación.

3. Contratar. No te obsesiones demasiado con encontrar lo mejor absoluto. Acepta hacer contrataciones "tal vez" calculadas.

Hay gerentes de contratación que nunca comprometen la "barra" / "calidad" de los candidatos. Pero al final del día, necesitamos ejecutar. Necesitamos acercarnos a la misión de la empresa. Entonces, ¿cómo decidimos si contratar o no? Construya un marco de decisiones que dé resultados (contrataciones reales) y corrija el rumbo a medida que avanza. Con este fin, creo que una versión humana de la estrategia de contratar rápido, despedir rápido es mejor que no contratar a nadie.

Si siempre contratamos a todos con un marco rígido, terminaremos con un pensamiento similar, no diverso y eventualmente un grupo aburrido. A veces, confía en tu instinto y haz algunas contrataciones 'tal vez' o incluso 'no' si el proyecto lo necesita, pero ten mucho cuidado con cuántas contrataciones de este tipo estás haciendo. ¿Quién será su gerente? ¿Cuáles son sus responsabilidades? Configura reuniones individuales para verificar cómo se están desempeñando. Configura procesos/capacitación para ayudarlos a cambiar sus aspectos negativos o a duplicar sus aspectos positivos.

Aquí hay una estrategia de contratación que me ha funcionado bastante bien en el pasado:

  1. Si algún entrevistador dijo 4, incluso si alguien más dijo 2, contratar.
  2. Si nadie dijo 4 y al menos un entrevistador dijo 1, no contratar.
  3. Si al menos 2 entrevistadores dijeron 3, contratar.

4. Establecer procesos para revisar su marco de contratación.

Necesitamos programar reuniones en el calendario para revisar nuestro marco de contratación y sus resultados. Analizar si nuestras suposiciones han sido correctas. ¿Los candidatos "perfectos" están desempeñándose como se esperaba? ¿Qué pasó con los candidatos "quizás"? ¿Cómo se están desempeñando?

5. Haga que su equipo se reúna con el candidato para ver si existe una afinidad cultural mutua.

Sus amigos probablemente saben si su pareja actual es buena para usted (o no) y podrían prever su ruptura mucho antes de que suceda. Es lo mismo con un equipo y una nueva contratación. Su equipo podría darle buenos datos sobre lo que piensan sobre la contratación culturalmente. También le da al candidato la oportunidad de experimentar la cultura de la empresa antes de tomar una decisión final.

Etiqueta de Entrevista

1. Cree un documento corto sobre las habilidades pre-requisito y cómo las evalúa. Compártalo con los candidatos de antemano.

¿Qué es una habilidad pre-requisito o imprescindible? Si un candidato no tiene esta habilidad, no lo contrataremos. Idealmente, ni siquiera los entrevistaremos si podemos evitarlo.

Esto es un poco de trabajo. Pero hazlo. Idealmente, necesitas tener esto definido con todos los entrevistadores. No dejes que cada entrevistador decida por sí mismo qué es importante para el puesto. Compártelo en el correo electrónico de invitación a la entrevista que envías a los candidatos. Una vez que comencé a hacer esto, la conversación con los candidatos fue mucho más efectiva. Recuerda que esto podría estar cambiando constantemente para el mismo puesto, por lo que los equipos de adquisición de talento y los gerentes de contratación deben seguir iterando esto. Por ejemplo: ¿contratas al primer ingeniero de iOS? Probablemente quieras que tenga conocimientos imprescindibles de Swift. ¿Segundo ingeniero de iOS? ¿Quizás Swift no sea imprescindible esta vez? Pueden aprender en el trabajo. Situación delicada: Contratar para un puesto sin habilidades imprescindibles, como un ingeniero full-stack. En casos como estos, profundiza en qué tipo de trabajo deberían haber hecho previamente. ¿Cuántos proyectos/impacto entregado/tiempo trabajó la persona en alguna habilidad en particular? Si la persona cambiaba de lenguaje cada trimestre sin ningún proyecto de alto impacto, podría ser un principiante en todo. Una vez que hayamos reducido las habilidades imprescindibles, también necesitamos definir el rango de experiencia. ¿Deberían ser expertos en la habilidad y ser capaces de implementar nuevas bibliotecas por sí mismos? ¿Deberían ya estar haciendo revisiones de código en esa habilidad? ¿Deberían tener experiencia con una aplicación de producción en eso? ¿Cuál es el mínimo indispensable que necesitamos? #### 2. Rompe el hielo. Tú primero. Lleva tiempo que los candidatos se tranquilicen. Así que no deberíamos esperar que empiecen a hablar de sí mismos. Ten a mano una presentación sobre ti, la empresa y el puesto (escríbela). Preferiblemente, las versiones corta, media y larga. Comienza con una breve presentación tuya y prepara el escenario para ellos. #### 3. PREGÚNTALES sobre su estilo de comunicación y adáptate a él.

Esto es probablemente una de las cosas más importantes en una entrevista, y lo que la mayoría de nosotros hacemos mal. Especialmente porque todas las guías de cómo-triunfar-en-una-entrevista-técnica que existen les dicen a los candidatos que necesitan pensar en voz alta. Pero no todos funcionan de esa manera. Algunos entrevistadores esperan que los candidatos les expliquen su proceso de pensamiento mientras resuelven una pregunta, y eso es perjudicial para la categoría de ingenieros que no trabajan así.

Entiendo por qué es así, y le facilita el trabajo al entrevistador si el candidato habla en voz alta sobre lo que está pensando, es mucho más fácil ver cómo está pensando en optimizar paso a paso y calificar en consecuencia. Pero, necesitamos aprender a trabajar de una manera que sea más propicia para que el candidato se desempeñe de la mejor manera.

Creo que la mejor manera es darles a los candidatos todas las opciones por adelantado. "Aquí hay algunas formas en que podemos hacer esto, ¿cuál preferirías?" Generalmente se relajan inmediatamente.

4. La entrevista debe terminar dejando al candidato emocionado e inspirado.

Idealmente todos, más aún si el candidato podría encajar muy bien. Habla sobre el impacto que TÚ has creado en la empresa hasta ahora y cuáles son tus próximos proyectos. Nada supera la honestidad y la experiencia personal. Diles por qué estás emocionado de estar en la empresa y qué te inspira. Demuéstralo con datos. Si no estás emocionado/inspirado todos los días por tu trabajo, probablemente no deberías entrevistar. Esa es una razón por la que nunca le pediría a alguien que solo ha pasado 3-4 meses en la empresa que haga una entrevista.

5. Por favor, sé amable.

Terminaré con esto, si no haces nada más bien, por favor, asegúrate de no insultar a un candidato, independientemente de las circunstancias. Un inversor podría haberse retirado en el último momento, podrías estar pasando por una ruptura o cualquier otra cosa, nada es una justificación suficientemente buena para hacer que un candidato se sienta mal en una entrevista.

La parte de tu vida en la que estás entrevistando para puestos de trabajo puede ser extremadamente estresante. Y una mala experiencia en una entrevista puede acabar con la confianza de alguien, nunca sabes por lo que alguien ya está pasando. Independientemente de lo cualificado (o no) que esté el candidato para el puesto, por favor, asegúrate de que cada candidato se marche de la entrevista con una sonrisa. Eso es lo mínimo que podemos hacer por alguien que se tomó tanto tiempo solo para entrevistarse con nosotros.

Si deseas un procedimiento paso a paso para llevar a cabo grandes entrevistas, deberías leer Guía de Adaface: Cómo realizar una entrevista, que explica los mejores métodos para realizar una entrevista de manera efectiva.

Hay suficientes empresas en el mundo que tienen procesos de entrevista ridículos que causan un estrés indebido a los candidatos. Por favor, sé un ejemplo de cómo se puede hacer mejor.