Tips para Reclutar Desarrolladores: No se aceptan zoquetes

Publicado en

Autor

En una de las empresas donde trabajé anteriormente, utilizábamos la frase “No se aceptan zoquetes” (en inglés, no chums) para describir a nuestro equipo. Siempre me gustó la simplicidad de esa frase. La verdad es que existen muchísimos zoquetes en el desarrollo de software, y pueden hacer que tu trabajo sea miserable.

Al contratar a un nuevo integrante para tu equipo, debes estar conciente de que la mayoría de los currículums que revisarás, son gente con la que no deseas trabajar. Si esto se te hace mala onda, o no estás de acuerdo, entonces espera a que pases uno o dos años trabajando con zoquetes en tu equipo, y verás si no te convences.

Entonces, la pregunta es: ¿cómo podemos evitar contratar zoquetes?

¿Qué buscar en un candidato?
Yo evalúo a los candidatos alrededor de cinco criterios:
• ¿Es inteligente?
• ¿Es curioso?
• ¿Encajará en el equipo?
• ¿Cuenta con la experiencia adecuada?
Veamos a qué me refiero con cada una de estas preguntas

¿Es inteligente?
¿Cuenta el candidato con la capacidad mental suficiente para realizar su trabajo? El desarrollo de software requiere poder solucionar infinidad de problemas: ¿Cómo debería funcionar este software? ¿Qué tecnologías debería utilizar? ¿Cuál sería una arquitectura adecuada? ¿Qué patrones podrían servir? ¿Cómo se debería probar? Estas preguntas no son triviales, y contestarlas requiere buenas habilidades analíticas, aprendizaje de nuevos conocimientos (tanto técnicos como del negocio), comprensión de herramientas, y sobre todo la capacidad de retener y organizar ideas contradictorias en tu cabeza.

El candidato también debe ser capaz de lidiar con el reto de otras personas buscando resolver el mismo problema. Al tipo de personas a las que busco, les encanta ser retadas por otras personas inteligentes.

Vale la pena hacer un paréntesis para recalcar que la inteligencia y la educación no son lo mismo. Un título es prueba de un cierto nivel de educación, pero no necesariamente es una prueba efectiva de inteligencia. Aun así, no conozco a nadie tonto que haya conseguido un doctorado del M.I.T.

¿Es curioso?
¿A nuestro candidato le interesa entender como funcionan las cosas? ¿Lee frecuentemente? ¿Ha bajado el código fuente de algún proyecto de software libre para entenderlo?

Yo busco personas que quieran entender cual es el problema de negocio que buscamos resolver, y cual es la mejor forma de resolverlo. No me interesan los autómatas que simplemente ejecutan lo que les digo. Los ingenieros más innovadores, en el fondo son personas muy curiosas, que ansían entender mejor el mundo.

¿Termina las cosas?
Tal y como dice Joel Spolsky (reconocido escritor sobre desarrollo de software): “… a veces las personas inteligentes y curiosas dedican tanto tiempo a analizar la mejor forma de atacar un problema, que olvidan la importancia de realmente hacer algo.” Bien dice la frase que entregar el 80% hoy es mejor que entregar el 100% nunca.

¿El candidato alguna vez ha entregado software a producción? Se sorprenderían de la cantidad de desarrolladores que nunca ha tenido código en sistemas en producción reales. ¿Han tenido que desarrollar un sistema bajo presión? ¿Pueden lidiar con la presión? ¿Disfrutan el sentimiento de completar algo? ¿Persisten hasta que un problema es resuelto? Es en este punto donde muchas personas que vienen de la academia y la investigación suelen fallar. La mentalidad y presión en una organización dedicada a desarrollar software profesionalmente es muy diferente a la del mundo académico.

¿Encaja en el equipo?
En el libro Peopleware, Tom DeMarco y Tim Lister describen la historia de un candidato que no obtuvo un trabajo en una empresa de software. Sucede que el candidato estaba técnicamente calificado, pero los entrevistadores consideraron que no encajaría en el equipo, porque no le parecían chistosas las mismas bromas que al resto del equipo.
Es un criterio arbitrario, pero si alguien no encajará en la dinámica del equipo, se convertirá en un cáncer y terminará afectando negativamente el desempeño del equipo. Al evaluar a un candidato, debes preguntarte ¿Me gustaría trabajar con esta persona? ¿Le entusiasmará a él trabajar con nosotros? ¿Sus experiencias (tanto en el trabajo con en su vida personal) complementan las del resto del equipo?

¿Cuenta con la experiencia adecuada?
Noten que estoy dejando para el último la pregunta de la experiencia. Es cierto que la experiencia es importante, pero creo que es sobrevaluada. Probablemente es el único criterio que una persona puede mejorar con el tiempo. En la organización donde laboro actualmente utilizamos Java 5, JBoss 4, y Maven 2. ¿Debería rechazar a un buen candidato simplemente porque no ha utilizado estas tecnologías? De ninguna manera.

Una persona inteligente y curiosa que encaje en el equipo y quiere hacer un buen trabajo puede aprender estas herramientas fácilmente. En un par de meses estará al mismo ritmo que el resto del equipo. Hay que recordar que no quiero contratar a alguien para un proyecto temporal de 3 meses. Quiero contratar a una persona que espero que se mantenga durante años en el equipo.

¿Cómo encontrar estas características?
Ahora que sabemos que buscar en una persona, vamos a ver como encontrarlo.

Paso 1: Leer el currículum

El primer paso para filtrar a los zoquetes, es analizando su currículum. Estas son algunas de las cosas en las que me fijo:
• ¿Hay algo interesante en el currículum sobre lo que me gustaría hablar (algún proyecto interesante, o logro importante)? Cuando ves un currículum y todos los logros parecen cosas que deberían requerir un esfuerzo mínimo, significa que el candidato está reprobando los criterios ya sea de inteligencia, curiosidad, o resultados.
• En el caso de recién graduados o becarios, me fijo en las clases optativas que eligieron. Si fueron clases difíciles, es porque son curiosos y les gustan los retos.
• ¿Qué tanta diversidad hay en su carrera profesional? Me gusta ver currículums de personas que han trabajado en una gran variedad de cosas. Las personas cuya experiencia esta centrada exclusivamente en una tecnología o plataforma, probablemente reprueban el criterio de la curiosidad.
• ¿El candidato ha avanzado en su carrera? Las personas inteligentes que dan resultados, no se quedan estancadas en una posición durante mucho tiempo.

Paso 2: La entrevista telefónica

Si el currículum de la persona es suficientemente interesante como para continuar, entonces el siguiente paso es el filtro telefónico. Esta es una prueba sencilla simplemente para saber si queremos invertir más tiempo en evaluar a la persona en cuestión. Algunas preguntas de ejemplo podrían ser:
• Una pregunta técnica sencilla como: “¿Cuál es la diferencia entre un list y un set?” o “¿Cuál es la diferencia entre una clase abstracta y una interfase?” Si el candidato no puede contestar eso bien, entonces no tiene mucho caso continuar.
• Una pregunta de reflexión como: “¿Cuál fue el mayor reto que enfrentaste en tu último proyecto?”, “¿Qué disfrutaste más de tu último proyecto?”, o “¿Qué quisieras haber hecho diferente en tu último proyecto?”. Los buenos candidatos acostumbran tener respuestas interesantes a estas preguntas.
• Una pregunta para saber que tan enterado esta, como: “Existen tecnologías nuevas con las que te gustaría trabajar y (por qué)?”, o “Recientemente has leído algún libro/website que haya tenido impacto en la forma en que trabajas?”. Con estas preguntas intento averiguar la curiosidad y motivación del candidato.

Recuerda que el objetivo de la entrevista telefónica es intentar detectar zoquetes, y no el de tomar una decisión final. No pierdas demasiado tiempo en esta llamada. Quince minutos debería ser tiempo suficiente detectar si esta persona es alguien con quien no te gustaría trabajar, o si vale la pena traerla para una entrevista personal.

Paso 3: La entrevista personal

El objetivo de la entrevista personal es descubrir si podemos afirmar que el candidato cumple con los cinco criterios. Durante la entrevista, deberías pensar cówmo es que las respuestas de la persona te ayudan a averiguar si cumple con los criterios. A mi me gusta que las entrevistas sean conducidas por un par de personas hablando en un ambiente informal con el candidato durante alrededor de una hora. Considero que al menos tres grupos diferentes deberían hablar con un candidato para lograr obtener un rango adecuado de opiniones. Es mejor si los grupos se ponen de acuerdo previamente sobre las áreas que van a explorar, para minimizar el traslape.

Típicamente me gusta comenzar con una pregunta sencilla para que el candidato comience a hablar, y luego ya sigo con preguntas más complicadas. Durante una entrevista, el candidato debería demostrar realmente como haría un trabajo. Por ejemplo, en el caso de estar reclutando a un desarrollador, el candidato debería escribir algo de código. Observar como programa una persona da una gran perspectiva hacia su inteligencia, creatividad y habilidad de trabajar con otros. De forma similar, un analista debería poder escribir requerimientos para un sistema ejemplo, y un project manager debería desarrollar un plan.

Las preguntas raras como “¿Cuántas gasolineras hay en la ciudad?” también pueden ser buenas, ya que pueden darnos una perspectiva a como es que esta persona piensa sobre resolver un problema. Solo asegúrate de que la pregunta no sea una pregunta capciosa, para que la persona no se distraiga tratando de encontrar una respuesta exacta, sino que se enfoque en el proceso de decisión de la respuesta.

Conforme realices más y más entrevistas, irás agarrando práctica y haciendo mejores preguntas. Solo recuerda que estás tratando de decidir si el candidato cumple con los cinco criterios, así que trata de orientar tus preguntas hacia los criterios donde tengas dudas. Lo que debes evitar es salir de la entrevista sin haber contestado si esta persona cumple los criterios o no.

Paso 4: La decisión

Al llegar el momento de tomar una decisión, las personas que entrevistaron al candidato deberían discutir al respecto. La opinión típicamente gira alrededor de las siguientes cuatro calificaciones: definitivamente no, probablemente no, probablemente si, o definitivamente si. Para que una persona sea contratada, debe haber al menos alguien que diga definitivamente si, y ninguno que diga definitivamente no. En cuanto a las personas que dijeron probablemente si o probablemente no, me gusta averiguar que es lo que no les gustó de la persona, y si los demás vieron algo similar. El objetivo es lograr un consenso. Si no hay consenso, entonces no se contrata a la persona. Si todos dan un probablemente si, entonces tampoco se contrata (aunque en este caso puede indicar que las entrevistas no fueron efectivas). Sin embargo, el objetivo es reclutar a las mejores personas y evitar a los zoquetes, así que no podemos arriesgarnos.

Lección importante: Cuando haya duda, no contrates.
*La versión original de este artículo se encuentra publicada en inglés en http://www.innovationontherun.com/effective-technology-teams-rule-1-no-chumps y fue traducida y publicada por SG con el permiso del autor.

Conclusión

Contratar a las mejores personas y evitar zoquetes un trabajo arduo. Requiere mucho tiempo y esfuerzo, pero es esencial para tener un gran equipo. Mi forma de evaluar y reclutar gente es elitista. Pero sucede que dedico más tiempo a mi trabajo que a mi familia, mis amigos o mis hobbys, así que lo menos que puedo pedir es trabajar con personas que respeto y con las que disfruto trabajar.

Se que corro el riesgo de que se me escurran algunos buenos elementos sin que los contrate. El sistema descrito está diseñado para minimizar los falsos positivos (es decir, reclutar zoquetes) a costa de tener falsos negativos (no contratar a un buen candidato).

Bio

Rob Di Marco actualmente participa en el desarrollo de una empresa startup y complementa esto con actividades como consultor estratégico de tecnología. Anteriormente fue el vicepresidente de tecnología en la empresa Health Market Science (HMS), y gerente de desarrollo de software para The Adrenaline Group, una empresa de consultoría en desarrollo de software en Washington, D.C..