Otros han proporcionado respuestas que he votado como una cuestión de must . La razón por la que escribo otra respuesta es porque lo que quiero decir probablemente no encajará en un comentario, y porque hay que decir algo sobre cómo puede ser una buena entrevista de programación de trabajo.
En la primera buena entrevista que recuerdo, hablamos mucho sin prisa. Primero por una hora, en el teléfono, sobre el diseño orientado a objetos y los pros y contras de implementarlo en C ++. Luego, en el sitio, hablé con varias personas sobre sus prácticas de desarrollo de software, integración, pruebas, control de versiones y administración de configuración, equipos y responsabilidades, tecnología y diseño. Fue una entrevista de todo un día que incluyó el almuerzo con la gente que me entrevistó. En retrospectiva, se trataba de si encajaría productivamente en lo que ya estaban haciendo.
Desde entonces, todas las buenas entrevistas han sido largas, de una a dos horas de conversaciones sobre el desarrollo de software. No ha habido preguntas para resolver problemas, ni rompecabezas, ni problemas de codificación.
Si tuviera que entrevistar a alguien para un trabajo de programación hoy, procedería de la misma manera. Pediría opiniones sobre una amplia gama de temas y dejaré de lado la profundidad:
- ¿Cuáles son tus preferencias de lenguaje de programación? ¿Por qué?
- ¿Cómo abordar el manejo de excepciones?
- ¿No son los beneficios del diseño en capas un mito?
- ¿La integración continua no es una carga para la eficiencia?
- Quien haya escrito un fragmento de código debería poseerlo, ¿verdad?
- ¿Qué haces para entrar en el "flujo"?
- ¿Cómo deben incluirse los defectos informados en un plan de proyecto?
- ...
Esas son preguntas con más de una respuesta, y se tratan de temas sobre los cuales un desarrollador de software debería tener una opinión informada. Estoy totalmente de acuerdo con las respuestas que mencionan problemas reales anteriores experimentados como tema de conversación (no como preguntas).
Los estudios más científicos sobre el desarrollo efectivo de software desde Peopleware dicen que los mejores programadores son aquellos que entienden la dinámica de desarrollo de software, incluso si no tienen los coeficientes intelectuales más altos. Prefiero tener un novato que esté ansioso por aprender que alguien con n
años de experiencia que se reduce a 1
año de experiencia repetido n
veces. Mi tendencia personal es hacia los candidatos que tienden a pensar fuera de la caja y, al mismo tiempo, saben cómo encajar en la caja actual (mi).