Otros han proporcionado respuestas que he votado como un deber . La razón por la que escribo otra respuesta es porque lo que quiero decir probablemente no cabe en un comentario, y porque hay que decir algo sobre cómo puede ser una buena entrevista de trabajo de programación.
En la primera buena entrevista que recuerdo, hablamos mucho, sin prisa. Primero durante una hora, por teléfono, sobre el diseño orientado a objetos y los pros y los 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 gestión de configuración, sobre equipos y responsabilidades, sobre tecnología y sobre diseño. Fue una entrevista de todo el 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, las buenas entrevistas han sido largas, de una a dos horas, sobre el desarrollo de software. No ha habido preguntas para resolver problemas, ni acertijos, ni desafíos de codificación.
Si tuviera que entrevistar a alguien para un trabajo de programación hoy, procedería de la misma manera. Solicitaría opiniones sobre una variedad de temas, y dejaré de lado la profundidad:
- ¿Cuáles son sus 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?
- ¿No es la integración continua una carga para la eficiencia?
- Quien haya escrito un código debe poseerlo, ¿verdad?
- ¿Qué haces para entrar en "flujo"?
- ¿Cómo deben incluirse los defectos notificados en un plan de proyecto?
- ...
Esas son preguntas con más de una respuesta, y se trata de temas sobre los cuales un desarrollador de software debe 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 de software efectivo desde Peopleware dicen que los mejores programadores son aquellos que entienden la dinámica del desarrollo de software, incluso si no tienen los coeficientes intelectuales más altos. Prefiero tomar un novato que está ansioso por aprender que alguien con n
años de experiencia que se reduce a 1
años de experiencia repetidas n
veces. Mi sesgo 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).