En abril estuve realizando un proceso de selección para contratar a programadores y la verdad es que ha sido muy motivante el proceso y frustrante el resultado.
Nosotros hacemos dos entrevistas, una telefónica que hago yo sólo y una en persona que la que estamos Jose, el jefe de proyecto, y yo. De los anteriores procesos me había dado cuenta que venían demasiadas personas a hacer la entrevista en persona (con la inversión en tiempo que conlleva) y quería tener más argumentos para tomar la decisión sólo con la telefónica.
Entonces me planteé qué era lo que quería saber, por qué quería saberlo y qué preguntas iba a hacer para conocer la respuesta. Lo separé en diferentes áreas: motivación, experiencia, aspecto técnico y forma de ser. Este es el cuadro de las preguntas que hacía:
| Tema | ¿Qué quiero saber? | ¿Por qué lo quiero saber? | ¿Cómo voy a averiguarlo? |
|---|---|---|---|
| Motivación | ¿Puedo ofrecerle lo que busca en una empresa? | Si no cubros sus necesidades se irá y quiero que esté mucho tiempo aportando sus cualidades | ¿De tus trabajos previos qué te ha gustado más/menos? Si tiene trabajo, ¿por qué quieres cambiar de trabjo? ¿Qué es lo que más valoras de un trabajo? |
| Motivación | ¿Está al día de las nuevas soluciones? | Quiero gente que quiera seguir mejorando, salir de su círculo de seguridad. | ¿Qué has aprendido en los últimos meses? ¿Qué tecnologías recientes te parecen más interesantes? ¿Qué haces para estar al día en temas de informática? |
| Motivación | ¿Es una persona apasionada con la programación? | Los que hacen lo que les gusta lo hacen mejor. | ¿Has desarrollado algún proyecto al margen del trabajo? ¿Qué lenguajes de programación te parecen más divertidos? |
| Experiencia | ¿Sería capaz de enfrentarse con éxito a nuestos problemas? | Quiero que esté acostumbrado a tratar con problemas de la magnitud que nosotros tratamos | ¿Qué estás orgulloso de haber hecho en el trabajo? ¿A qué problemas de escalabidad te has enfrentado? |
| Técnico | ¿Conoce las herramientas? | | ¿Qué herramientas son útiles para el programador? |
| Técnico | ¿Es elegante escribiendo código? | El código elegante es más fácil de leer y mantener. | ¿Qué es hacer refactoring y cuándo es útil? ¿Qué patrones de diseño sueles utilizar? |
| Técnico | ¿Tiene claros los conceptos de orientación a objetos? | Los necesita para entender el código. | No he sido capaz de encontrar una buena pregunta para este punto |
| Técnico | ¿Diseña bien una jerarquía de clases? | Es imprescindible saber hacer un diseño. | ¿Cómo diseñarías una librería que facilitara la creación de juegos de cartas? ¿Qué clases y métodos principales tendría? |
| Técnico | ¿Está familiarizado con la shell de linux? | Nuestros servidores y la mayoría de programadores trabajamos en linux | ¿Qué comandos de linux son útiles en el día a día? |
| Técnico | ¿Está familiarizado con las bases de datos? | Nuestro día a día es con BD | ¿Cómo almacenarías la información de una jerarquía de clases en una base de datos relacional? ¿Qué problemas presenta esta implementación? |
| Metodología | ¿Conoce TDD? | Queremos que todo nuestro desarrollo sea dirigido por tests | ¿Has programado alguna vez siguiendo un desarrollo dirigido por test? |
| Metodología | ¿Conoce Scrum? | Es nuestra forma de planificar | ¿Qué puedes decirme de scrum? |
| Personalidad | ¿Su forma de ser es compatible con la de los compañeros? | Quiero un buen ambiente de trabajo con todos los miembros del equipo integrados | ¿Qué te molesta en el trabajo? ¿Qué es lo que más valoran de ti tus compañeros? ¿Qué es lo que a menudo critican de ti tus compañeros? Si tú fueras el entrevistador ¿qué cualidades valorarías más? |
| Personalidad | ¿Maneja adecuadamente las órdenes que cree erróneas? | Quiero gente capaz de defender su punto de vista de forma tranquila y a la vez capaz de cumplir órdenes. | ¿Podrías darme un ejemplo de algo absurdo que te hayan pedido en el trabajo y qué has hecho? |
