En busca de la élite: encontrar y contratar a los mejores desarrolladores de software de la industria
Publicado: 2022-03-11El reto
Contratar talento para el desarrollo de software (talento real) es una habilidad multifacética que se encuentra en la encrucijada de las redes sociales, la perspicacia técnica, la gestión de procesos y la intuición. Cualquiera que haya tenido alguna vez la responsabilidad de contratar entiende muy bien el alcance y la profundidad del desafío de la contratación.
Particularmente desafiante es el hecho de que las cualidades distintivas de los candidatos excepcionales a la ingeniería de software son extremadamente difíciles de evaluar. ¿Cómo explora la capacidad de un candidato para innovar y pensar creativamente? ¿Cómo determinas si es un jugador de equipo? ¿Cómo diagnostica su capacidad para recibir comentarios constructivos? ¿Cómo investigas la fibra moral de alguien?
Si bien evaluar estos criterios "suaves" no es una tarea fácil, hacerlo es esencial en la búsqueda de contratar a los mejores. Sin embargo, con demasiada frecuencia, los intentos de evaluar estos atributos cruciales, pero elusivos, consisten en preguntas o desafíos que son lo suficientemente transparentes como para que las respuestas "correctas" sean obvias para la mayoría de los candidatos. Por lo tanto, nada de sustancia se logra preguntándolos.
Un escollo común resultante es, en cambio, centrarse demasiado en las minucias técnicas, en lugar de evaluar la capacidad del candidato para resolver problemas, pensar creativamente y trabajar de manera compatible con el resto del equipo.
Es cierto que entrevistar y contratar de manera efectiva a desarrolladores de software avanzados es tanto un arte como una ciencia. No obstante, existen enfoques y metodologías para evaluar las dimensiones más sutiles de las habilidades y destrezas de un ingeniero de software.
Cuando se utilizan de forma colectiva, estas técnicas de contratación producen un proceso de selección muy eficaz con un historial comprobado de éxito en la contratación de talentos de programación asalariados o autónomos. Ese proceso es de lo que se trata esta publicación.
Primeros pasos: llenando la canalización con los mejores
El proceso de encontrar y contratar a la élite comienza mucho antes de la entrevista misma. De hecho, un enfoque sistemático para identificar adecuadamente a los candidatos potencialmente calificados puede optimizar y aumentar significativamente la eficiencia de todo su proceso de reclutamiento.
Sin duda, la mejor fuente individual de candidatos calificados es la creación de redes personales, ya que las personas de calidad tienden a asociarse con personas de calidad. Las referencias personales dominan como la fuente más productiva para nuevas contrataciones exitosas (fuente).
Otras fuentes valiosas de talento técnico de primer nivel incluyen:
- Blogs y publicaciones técnicas en línea. Los blogs de desarrolladores pueden ser una gran fuente de buenos candidatos. Las publicaciones técnicas a menudo brindan información valiosa sobre la perspicacia técnica, el enfoque para la resolución de problemas y las habilidades de escritura de un desarrollador, todos los cuales son criterios importantes para identificar a los mejores candidatos.
- Colaboradores de código fuente abierto. Examinar proyectos de código abierto en sitios como GitHub y SourceForge puede generar candidatos altamente calificados. Un beneficio adicional de este enfoque es que le permite ver y evaluar las muestras de código de un candidato incluso antes de decidir ponerse en contacto.
- Conferencias. Los disertantes y coasistentes en conferencias técnicas relevantes a menudo brindan un recurso valioso para los candidatos calificados. Si no puede asistir, revise el programa en línea y considere comunicarse con los presentadores. Es posible que simplemente se comunique con ellos "en el momento adecuado", o es posible que puedan recomendarle a otra persona que esté altamente calificada.
La belleza de estos recursos es que brindan candidatos de ingeniería que usted ha investigado, de una forma u otra, incluso antes de entrevistarlos. O alguien de su empresa, o alguien que usted conoce, los conoce y los recomienda mucho. O ha revisado su código fuente abierto y está debidamente impresionado. O las publicaciones de su blog sugieren un nivel maduro de experiencia técnica y comprensión (e idealmente incluso un sentido del humor :-)). La clave aquí es que, en el momento de hacer contacto, el candidato ya es mucho más que "solo otro currículum".
Además, considere usar plantillas de descripción de trabajo (como estas para SEO, desarrollo web front-end y desarrollo web back-end) que establecen una gran expectativa para los tipos de candidatos que desea.
Evaluación de la perspicacia técnica de los desarrolladores de software
Una determinación efectiva de competencia técnica va mucho más allá de los matices de un lenguaje de programación o tecnología específica. Si bien estos detalles técnicos ciertamente no deben ignorarse, por lo general no son el elemento más importante del proceso de evaluación.
Es la fortaleza y comprensión técnica fundamental del candidato, el pensamiento creativo y la resolución de problemas lo que es fundamental para evaluar.
Los mejores desarrolladores no pierden el tiempo confiando en la memoria lo que se puede encontrar fácilmente en una especificación de idioma o en un documento API. Además, aprender un nuevo lenguaje, tecnología o patrón de diseño es un ejercicio relativamente trivial para un desarrollador fuerte (y en realidad es una habilidad esencial dado el ritmo acelerado al que se están introduciendo nuevas tecnologías y ganando cuota de mercado). Por lo tanto, es fundamental evaluar la fortaleza técnica y la comprensión, el pensamiento creativo y la resolución de problemas del candidato.
Un método comprobado para lograr esto es plantear un desafío de programación sin restricciones de lenguaje . Presente al candidato un problema y pídale que codifique una solución en el idioma de su elección. Los únicos requisitos deben ser que la solución sea completa y correcta, incluido el abordaje de cualquier condición de borde o errores potenciales. Recuerde, el objetivo aquí es evaluar (a) la capacidad del candidato para resolver problemas, (b) el conocimiento de la informática y (c) el estilo de codificación. En este punto, no está evaluando la aptitud en un lenguaje de programación específico. (Un beneficio adicional de este enfoque, por cierto, es que evita requerir que el entrevistador sea un experto en el idioma en el que codifica el candidato).
Existen numerosos recursos en línea desde los cuales puede seleccionar dichos desafíos de programación para incorporarlos en su proceso de entrevista. Aquellos que se enfocan en algoritmos (en lugar del conocimiento de un lenguaje de programación específico) facilitan la evaluación de la base informática y las capacidades de resolución de problemas de un candidato. Algunos ejemplos notables incluyen hackerrank.com, projecteuler.net y beatmycode.com. Sin embargo, tenga en cuenta que no necesita usar estos sitios para administrar las pruebas; más bien, simplemente puede usarlos como recursos para seleccionar desafíos y luego hacer que el candidato codifique una solución durante la entrevista en persona (en una pizarra, etc.).
Dicho esto, las pruebas en línea pueden ser un componente adicional valioso de su proceso de entrevista. Sin embargo, al utilizar los servicios de evaluación en línea, es importante evitar el riesgo de centrarse demasiado en las puntuaciones generadas por el sitio de un candidato en lugar de en los detalles de sus soluciones. Por un lado, es posible que no esté de acuerdo con las métricas de evaluación empleadas por el servicio de pruebas. Además, puede haber aspectos de una solución que considere particularmente inteligentes o elegantes, a los que el proceso de evaluación automatizado puede ignorar por completo.
También existe la posibilidad de "falsos positivos" o "falsos negativos" con las calificaciones proporcionadas por los servicios de pruebas en línea. Por un lado, los falsos positivos pueden resultar en una pérdida de tiempo y recursos al entrevistar a candidatos no calificados, mientras que los falsos negativos pueden descalificar a candidatos que eran muy dignos de consideración. A largo plazo, este último tiene ramificaciones más serias y, por lo tanto, es algo que se debe monitorear cuidadosamente.
En general, las pruebas administradas en persona son intrínsecamente más confiables que las administradas en línea, ya que reducen el potencial de engaño. Además, las pruebas en persona brindan la oportunidad de observar cómo un candidato a ingeniero de software opera bajo presión. No obstante, el uso de los servicios de prueba en línea puede ser un componente eficaz del tipo más completo de proceso de selección que se recomienda en este documento, que incorpora otras técnicas para ayudar a eliminar a los candidatos fraudulentos o poco calificados.
Las pruebas de desarrollo en línea también pueden servir como un filtro preliminar valioso para eliminar el porcentaje asombrosamente alto de candidatos cuyas habilidades técnicas están muy por debajo de la media. Curiosamente, muchos de estos candidatos abandonan el proceso sin siquiera intentar realizar las pruebas, debido a la falta de confianza. Dicho esto, la confianza no siempre es el mejor barómetro de la actitud, como lo atestigua el efecto Dunning-Kruger.
Otra técnica extremadamente valiosa para evaluar la perspicacia técnica es pedirle al candidato que proporcione una lista de proyectos de código abierto de los que haya sido autor, o en los que al menos haya contribuido, en sitios como GitHub y SourceForge (si solo contribuyeron, pídales que indicarle qué partes del código crearon ellos personalmente). Luego puede llegar a la entrevista habiendo revisado su código, preparado para preguntarles sobre decisiones de diseño específicas, estilos de codificación, patrones empleados, etc. Tal discusión puede ser sustancialmente más valiosa que simplemente interrogar al candidato sobre las minucias técnicas de un idioma.

Hablando de lenguaje…
Los miembros de la élite no solo son expertos en tecnología, sino que son profesionales consumados del desarrollo de software que se comunican de manera clara, eficaz y concisa, tanto verbalmente como por escrito.
Las habilidades de comunicación verbal son fáciles de evaluar en el transcurso de una entrevista, ya sea en persona o por teléfono. Si bien es cierto que las habilidades verbales son menos críticas en ciertos roles técnicos "de trastienda" que no implican el contacto con el usuario, siguen siendo importantes para maximizar las interacciones efectivas del equipo y el intercambio de ideas.
Las habilidades de comunicación escrita se pueden evaluar mejor pidiéndole al candidato que proporcione muestras de escritura. Se prefieren las muestras de escritura técnica, ya que demuestran no solo las habilidades de escritura, sino también la claridad técnica. Solicitar estas muestras antes de la entrevista puede ser particularmente útil. Por un lado, esto brinda la oportunidad de revisar y analizar su escritura con anticipación para que pueda llegar a la entrevista preparado para discutir y criticar su escritura con ellos. Además, algunos candidatos técnicos se sentirán "desanimados" por la solicitud de muestras de escritura que en sí mismas pueden servir como un filtro valioso.
El dilema moral
Hay un viejo chiste sobre un padre que quiere enseñarle ética a su hijo. El padre le dice a su hijo que él y su pareja tienen un negocio de tintorería. Un día, dice el padre, una clienta entra en nuestra tienda para recoger su ropa de tintorería. Cuando la clienta se da la vuelta para irse, me doy cuenta de que le han pagado 10 dólares de más. Bien, aquí viene la ética... ¿Se lo digo o no a mi pareja?
Por el contrario, los dilemas éticos reales (dilemas morales) a menudo pueden ser turbios y complejos y, sin duda, se presentan en los negocios. El desarrollador de software más fuerte puede causar estragos incalculables en un proyecto si carece de una brújula moral debidamente calibrada. Por lo tanto, es fundamental evaluar esta dimensión de un candidato.
Una técnica muy eficaz para lograr esto es presentar al candidato un dilema moral hipotético y preguntarle qué haría en esa situación. Para que esto sea efectivo, es fundamental que el dilema no tenga una respuesta obvia. Idealmente, cualquier respuesta posible debería ser imperfecta y algo problemática. La respuesta que el candidato brinda a tal pregunta puede proporcionar una gran comprensión de cómo piensa, sus estándares éticos y sus prioridades.
Aquí hay un ejemplo:
La empresa para la que trabaja ha sido contratada para trabajar en un proyecto por otra empresa. El proyecto requiere el uso de un subcontratista en particular. Anteriormente trabajó para ese subcontratista y, por lo tanto, sabe de primera mano que a menudo aumentan sus horas y cobran de más a sus clientes por su tiempo. Sin embargo, si hacen esto en este proyecto, no perjudicará a su empresa, ya que esos costos se transferirán al cliente de su empresa. Le ha mencionado esto a su jefe y él le ha aconsejado que no le diga nada al cliente, especialmente porque la parte del proyecto del subcontratista solo representa una pequeña fracción del presupuesto total. Sin embargo, tienes un amigo muy cercano que trabaja para el cliente. Un día durante el almuerzo, tu amigo te pregunta qué sabes sobre este subcontratista, ya que sabe que solías trabajar allí. ¿Cómo respondes y qué le dices?
La belleza aquí es que no hay una respuesta claramente "correcta" y la situación refleja la complejidad moral de la vida real y el mundo de los negocios. Si se formula correctamente, la respuesta a esa pregunta de "dilema moral" puede ser una de las partes más reveladoras y valiosas del proceso de entrevista para contratar desarrolladores de software.
Conociéndote (¿Quién eres realmente ?)
Una de las fallas inherentes del proceso de la entrevista es que realmente no hay forma de saber cómo será trabajar con una persona hasta que realmente trabajes con ella. Sin embargo, obtener una idea realista de la personalidad y el temperamento de un candidato es crucial para una contratación exitosa.
La élite técnica no solo es técnicamente superior, también es muy profesional. Por lo tanto, su búsqueda no se limita a una evaluación estrictamente técnica.
Con eso en mente, aquí hay algunas técnicas de entrevista que pueden ser beneficiosas para evaluar la personalidad y el profesionalismo de un candidato...
Por un lado, considere comenzar intencionalmente el proceso de entrevista con una preselección por parte de un miembro del personal no técnico (como un asistente administrativo). Luego puede preguntarle a este miembro del personal cómo lo trató el candidato una vez que se dio cuenta de que no era técnico. ¿Eran degradantes, impacientes y condescendientes, o eran agradables, pacientes y respetuosos? Lo que el miembro del personal le transmita puede ser muy revelador. Quiere saber si el candidato trata a los demás con respeto, independientemente de quiénes sean.
A lo largo de la entrevista, busque oportunidades para brindar al candidato comentarios constructivos. Observe cuidadosamente la reacción que esto provoca. ¿Se agradecen los comentarios o el candidato parece ponerse a la defensiva?
Participe en “charlas” no técnicas durante los primeros 5 o 10 minutos de una entrevista como un medio para obtener información sobre la personalidad del candidato. El candidato puede pensar que esto es simplemente un preludio de la entrevista real y, por lo tanto, es más probable que se "suelte el pelo". Por lo tanto, es posible que pueda discernir una cantidad sorprendente sobre su personalidad durante este tiempo. Y, por supuesto, si muestran sentido del humor, siempre es una buena señal. :-)
Además de estas técnicas generales para contratar ingenieros, aquí hay algunas preguntas de muestra para ayudar a evaluar la personalidad, confianza, honestidad y profesionalismo de un candidato :
- Al mirar hacia atrás en su carrera, ¿cuál es una situación difícil específica a la que se ha enfrentado que se destaca en su mente? Describa el desafío y cómo lo manejó en detalle. ¿Qué sientes que manejaste particularmente bien? ¿Qué podrías hacer diferente si tuvieras la oportunidad de hacerlo de nuevo?
- ¿Cuál es el mayor error que crees que has cometido en tu carrera?
- ¿Qué es lo que más disfrutas del desarrollo de software? ¿Qué es lo que menos disfrutas?
- Si pudieras pintar la posición ideal para ti, ¿cuál sería? ¿Cómo se vería en términos de su rol y responsabilidades, tamaño y tipo de empresa, ambiente de trabajo, etc.?
- ¿Cuáles son sus mayores fortalezas? ¿Qué ganaríamos contratándote?
- Ninguno de nosotros es perfecto. ¿Cuáles son algunos aspectos de tu personalidad en los que estás trabajando para mejorar?
- Si llamara a su jefe actual y le preguntara por usted, ¿qué me diría?
- ¿Qué debería preocuparnos al contratarlo?
En conjunto, se ha demostrado que estas preguntas y técnicas fomentan una comprensión mucho más sólida y profunda de quién es realmente el candidato, lo cual es vital para tomar una decisión de contratación exitosa.
¿Es el sentimiento mutuo?
Entonces, ha encontrado un candidato A+. Altamente cualificados. Personalidad positiva y optimista. Excelente ajuste cultural. ¡Eso es genial! Pero…
Todavía queda una pregunta fundamental por responder: ¿En qué medida el candidato está específicamente interesado en su puesto disponible y en trabajar para su empresa? La respuesta a esto es de suma importancia para asegurar una contratación exitosa. Las relaciones unilaterales no funcionan mejor en los negocios que en cualquier otro aspecto de nuestras vidas.
Una vez más, simplemente hacer la pregunta directamente tiene un valor mínimo ya que, en el contexto del proceso de entrevista, uno debe sospechar de la franqueza de un candidato al responder dicha pregunta. Más bien, esto es algo que uno debe intentar determinar a través de otros medios menos directos.
Para empezar, la forma en que el candidato se acerca a usted desde el principio es un indicador de interés bastante confiable. ¿Ofrece el candidato una explicación convincente y convincente de por qué está particularmente interesado en su empresa y en la oportunidad disponible? Si es así, esto no solo muestra un interés real, sino también un nivel de madurez y sofisticación profesional. Dicho candidato claramente ha realizado al menos cierto nivel de investigación previa sobre su empresa y la oportunidad, antes de contactarlo (en lugar de simplemente "disparar su currículum por la ciudad").
Los candidatos que ingresan al proceso de contratación de desarrolladores después de haber hecho su tarea sobre la empresa y sus productos o servicios, brindan un indicador útil tanto de su interés como de su conocimiento. Los candidatos que han ido tan lejos como para hacer una investigación avanzada sobre el entrevistador (p. ej., leyendo su biografía, perfil de LinkedIn, publicaciones de blog, etc.) son particularmente dignos de mención. Los candidatos más sofisticados se asegurarán de revelar esta información en el transcurso de la entrevista. Para otros, sencillas preguntas abiertas como "¿Qué sabe de nuestra empresa?" y “¿Qué le interesa en particular de nuestra empresa y de este puesto?”. puede provocar respuestas muy reveladoras.
Finalmente, un candidato que esté genuinamente interesado probablemente hará preguntas durante el proceso de la entrevista. No obstante, siempre es una buena idea cerrar la entrevista preguntando si el candidato tiene alguna duda. La falta de cualquier pregunta puede ser una señal de alerta, incluso con alguien que de otro modo habría sido considerado un candidato A+.
Envolver
Las técnicas descritas en este documento pueden servir como un valioso proceso central para encontrar y contratar a los mejores desarrolladores de software de la industria. Sin embargo, es importante recordar que la contratación efectiva no es un destino, es un viaje. Uno debe reevaluar y ajustar continuamente su proceso, ya que un proceso estático está destinado a convertirse en un proceso muerto.
El viaje de cada empresa será diferente, en función de su propia cultura y prioridades. Encuentre el camino adecuado para su organización y ejecútelo. Tendrás éxitos y tendrás fracasos, pero mientras aprendas de estos últimos, puedes estar seguro de que estás en el camino correcto.