Question d'origine
J'ai déjà réalisé quelques interviews pour mon entreprise, principalement des informaticiens pour des postes de développeur mais aussi des testeurs et chefs de projets. Maintenant, je dois combler un poste vacant dans notre groupe de recherche au sein du département R&D (note latérale: «recherche» signifie que nous essayons de résoudre des problèmes dans notre domaine professionnel / niche de marché en utilisant des logiciels dans des projets de recherche avec des universités, d'autres entreprises, des centres de recherche et les organisations d'utilisateurs finaux. Ce n'est pas de la recherche en informatique, nous n'allons pas résoudre le problème P = NP).
Maintenant, nous avons invité un gars titulaire d'une maîtrise en chimie (avec beaucoup de physique dans son CV aussi), qui n'a jamais suivi de cours d'informatique. J'ai déjà parlé avec lui environ une demi-heure lors des journées de carrière d'une université locale et il ne fait aucun doute que le gars est intelligent. Ses notes sont également excellentes et il a obtenu son diplôme avec distinction. Pour son BSc, il avait besoin de s'enseigner lui-même la programmation en Mathematica et m'a dit de manière crédible qu'il aimait beaucoup la programmation. Il a également résolu un problème de chimie physique que je ne comprends probablement pas en utilisant son propre logiciel, implémenté dans Mathematica, pour sa thèse de maîtrise. Il comprend une interface graphique et une taille notable de 8 000 LoC. Il semble être très attiré par ce que nous faisons au sein de notre groupe de recherche et pour être honnête, il est assez difficile pour une PME comme nous d'avoir de bonnes personnes. Je suis également très intéressé à l'embaucher, car il pourrait m'aider à rédiger des propositions de projet, des rapports, des présentations, etc. Il conviendrait probablement aussi à notre équipe.
La seule question qui reste est: comment puis-je vérifier s'il obtiendra les compétences en programmation dont il a besoin pour faire l'implémentation de logiciels dans nos projets, car ce sera une partie importante du travail?
Bien sûr, je vais lui demander ce que c'est, cela le fascine dans la programmation. Je vais également demander comment il a procédé à l'écriture de son logiciel de sciences naturelles et comment il l'a structuré. Je vais lui demander comment il a réussi à obtenir les compétences et les informations sur le développement logiciel dont il avait besoin. Mais est-ce que je pourrais demander plus? Quelque chose de plus concret peut-être? Dois-je lui demander d'expliquer sa solution Mathematica?
Pour être clair: je ne recherche pas de connaissances dans une langue ou une technologie particulière. Nous sommes une boutique .NET dans le développement de produits mais je veux avoir un choix libre pour nos projets de recherche. Je m'intéresse donc à la méta-compétence d'être capable d'apprendre tout ce qui est réellement nécessaire.
J'espère que cette question peut être résolue et non ouverte car j'aime vraiment savoir s'il existe un moyen par défaut de vérifier la capacité à acquérir d' autres compétences en programmation sur le tas. Si quelque chose n'est pas clair pour vous, veuillez me faire quelques commentaires et laissez-moi améliorer ma question.
Mise à jour pour refléter les réponses données jusqu'au 2011-12-01
Quelle réponse j'ai acceptée et pourquoi
Merci à tous pour vos réponses, la plupart d'entre elles sont très utiles, j'ai donc beaucoup voté! Bien que la réponse de Tom Squires ait obtenu le plus de votes, je vais accepter la réponse donnée par le prince Goulash . Bien sûr , Tom est objectivement correcte, mais la réponse du prince est un peu plus utile pour moi et je revérifié la FAQ que c'est le critère d'accepter une réponse.
Ce que je vais lui demander pendant l'entretien
Je vais le laisser expliquer quelques tâches simples comme l'exemple dans The Camel Has Two Humps mentionné par Chris Burt-Brown
Je lui demanderai d'expliquer quelques flux de contrôle plus avancés, peut-être dans une notation graphique.
Je vais vérifier sa compréhension de la récursivité en utilisant un exemple mathématique.
Je vais le laisser expliquer un algorithme de son choix en langage naturel.
Je vais lui laisser expliquer sa solution Mathematica, en particulier je lui demanderai son modèle de procédure, l'utilisation des outils, la structuration du code et des logiciels en général ainsi que les différentes couches d'abstraction.
Pour vérifier sa motivation, je vais lui demander sa fascination pour le développement de logiciels.
Je lui demanderai s'il est au courant de ce qu'il devra apprendre sur le développement de logiciels d'entreprise. Surtout, je veux transformer la discussion en direction du travail en équipe, de la programmation en binôme, du TDD, car je m'attends à ce qu'il ne sache pas grand-chose à ce sujet après avoir travaillé seul sur son MSc.
On dirait que ça va être une longue interview;)
Mise à jour après l'interview 2011-12-09
Encore merci à tous pour vos bonnes réponses. Il a réussi l'entretien avec brio. Je n'ai jamais été plus satisfait d'un candidat. Sa solution Mathematica semble assez bien structurée. Il a été en mesure d'expliquer où il utilisait des fonctions d'ordre supérieur, bien qu'il ne sache pas que celles-ci sont désignées comme ceci. Il a répondu à mes questions de récursivité basées sur les mathématiques ainsi qu'à des affectations simples et des choses sur le flux de contrôle de The Camel Has Two Humps. Quand il expliquait certains algorithmes, j'ai beaucoup appris sur l'adaptation non linéaire;) Il a également dit honnêtement qu'il ne pouvait bien sûr pas garantir qu'il serait en mesure d'apprendre des choses sur le développement de logiciels professionnels qu'il ne connaissait pas jusqu'à présent. Mais il a vraisemblablement déclaré qu'il était toujours bon dans l'apprentissage de nouveaux concepts - même par lui-même - et qu'il était vraiment intéressé par le développement de logiciels. Il a également demandé que la pile technologique du projet, à laquelle il serait appliqué en premier, puisse l'examiner chez lui. Il était également curieux de la programmation en binôme et du travail d'équipe. J'espère maintenant que le contrat de travail sera conclu.