D'après mon expérience dans mon entreprise où j'ai réalisé de nombreux entretiens, il y a de fortes chances que la personne qui interroge ne sache pas comment procéder correctement. Ils ont donc préparé un ensemble de questions techniques et calculé un score de cela et en faire votre CV. Cela présente cependant de nombreux inconvénients et ne doit pas être fait pour les raisons suivantes:
Vous demandez des connaissances ponctuelles. S'il arrive que le programmeur n'ait jamais fait quelque chose dans ce domaine, il / elle pourrait toujours être un excellent collègue, mais ne connaît tout simplement pas cette réponse particulière. À l'opposé: si quelqu'un s'était préparé pour l'entretien et avait trouvé la réponse à cette question particulière sur le net, vous obtenez la bonne réponse, mais cette personne n'a peut-être aucune idée du sujet réel.
Les gens sont nerveux lors des entretiens d'embauche. Le cerveau a cette grande fonctionnalité pour fermer de nombreux domaines de niveau supérieur (comme la logique) en cas de panique, ce qui signifie: si vous êtes nerveux, vous pourriez ne pas fournir la qualité des réponses que vous auriez dans une situation quotidienne. Certaines personnes peuvent faire face à une situation stressante comme une interview, beaucoup ne le peuvent pas.
Avec une seule réponse correcte, vous testez les compétences de cette personne pour trouver cette réponse particulière. C'est l'une des nombreuses compétences dont un collègue a besoin, mais pas la seule et la seule requise. Par conséquent, une ou deux de ces questions devraient être suffisantes pour tester ce domaine de connaissances, puis d'autres compétences devraient être interrogées. Un entretien qui ne contient que des questions de résolution de problèmes teste encore et encore la même compétence.
Quelles sont les bonnes questions de tâches de programmation?
Ces fameuses questions "Pouvez-vous écrire un programme court" ont l'énorme problème que la plupart des programmeurs ne peuvent pas écrire une seule ligne de code sans que leur IDE les aide. Mais cela ne pose aucun problème dans les situations de travail quotidiennes, car le programmeur a toujours son IDE pour l'aider. Donc, en demandant des choses comme "Trouver l'erreur", "Ecrire 50 lignes de code qui font ..." ou même des questions simples doivent prendre en compte, que le demandeur n'a pas ses outils (IDE, Google) disponibles.
Par exemple, je peux vous répondre à n'importe quelle question en moins d'une minute si Google m'aide, mais sans connexion Internet, je semble impuissant. J'appelle cela de la mémoire externalisée, et au lieu de me gêner, cela m'aide beaucoup à me concentrer sur ce qui est vraiment important - comprendre la mécanique sous-jacente - parce que tout le reste peut être recherché. Mais ne me demandez pas les détails des API aléatoires, car je ne les connais pas, j'ai Google pour ça.
Cela dit, une bonne question de tâche de programmation ne doit pas se concentrer sur la connaissance des API ou des compétences de codage spéciales, sauf si cela est une exigence absolue pour le travail. Les connaissances peuvent être acquises, il est donc préférable de savoir dans quelle mesure cette personne est en mesure d'acquérir des connaissances que de demander ce qu'elle sait déjà.
Une bonne question pour une tâche de programmation devrait être courte, simple, capable d'être codée dans toutes les langues avec seulement quelques lignes de code et elle - surtout - devrait vous en dire autant que possible sur la façon dont la personne travaille et trouve des réponses. Exemple:
"Écrivez une fonction dans la langue de votre choix qui prend un tableau d'entiers et les réordonne de manière à ce que le premier entier soit ensuite le dernier, et tous les autres changent en conséquence."
Le premier que tout candidat devrait demander à ce stade est: "Désolé ... pouvez-vous s'il vous plaît expliquer la tâche?". Parce qu'aucun programmeur n'a reçu de description claire de ce qu'il faut faire. Ceci est suivi par l'explication, que le code dans les questions doit faire un décalage à gauche du contenu du tableau avec le débordement ajouté à droite.
Cette tâche est si simple que toute personne diplômée d'une forme quelconque de programmation devrait être en mesure de répondre correctement. Cela tient compte du fait que le programmeur doit travailler sans ses outils et que la nervosité réduit la capacité de penser logiquement. Cependant, il vous indique toujours comment les gens résolvent les problèmes simplement de la façon dont la question est formulée et de la façon dont les gens l'abordent, tout simplement parce qu'un décalage à gauche est contraire à l'instinct commun de «gauche à droite» et oblige les gens à réfléchir une seconde.
Il existe de nombreuses réponses possibles à cette question, donc examiner de près la façon dont le code est développé est la partie importante, pas si la solution fonctionnerait réellement. Le demandeur teste-t-il la nullité? Comment le débordement est-il stocké? Est-ce qu'une boucle ou un jeu de memes est utilisé? Comment le demandeur vérifie-t-il l'exactitude du code? Cette simple question vous donne une biographie complète sur le fonctionnement de cette personne.
Quelles sont les bonnes questions de culture générale?
Les bonnes questions sont faciles à répondre, permettent un grand nombre de réponses (appelées `` questions ouvertes '') et vous permettent d'en apprendre le plus possible sur le demandeur dans la courte période de temps dont vous disposez.
Exemples:
(Demander à un programmeur C ++): "Quelles autres langues à côté de C ++ connaissez-vous?"
Il s'agit d'une question de niveau d'entrée, qui donne au demandeur une chance équitable de renflouer en ce moment s'il ne sait rien du sujet posé. Un «non» à ce stade est mieux que de le tourmenter avec plusieurs autres questions auxquelles il / elle doit répondre: «Désolé, je ne sais rien à ce sujet.
J'ajoute que cela vous dit tout d'abord quelles autres langues cette personne connaît, en plus vous apprenez à quel point cette personne est intéressée pour avoir une vue plus large du monde de la programmation, ou si vous avez quelqu'un avec seulement une langue singulière (et donc des fonctionnalités / techniques ) vue.
(Ensuite, disons qu'il connaît Java): Quelles sont les trois principales différences entre C ++ et Java à votre avis? "
Il s'agit d'une question ouverte qui permet de nombreuses réponses, de sorte que le demandeur a une bonne chance d'en trouver au moins trois. Demander le top 3 (opinion personnelle) limite non seulement les réponses possibles, mais oblige également le demandeur à trier en fonction de la priorité. Pourtant, il est (ou devrait être) facile de répondre.
Il s'agit d'une question simple qui teste beaucoup de connaissances approfondies sur les différents langages de programmation. Quelle est vraiment la connaissance de ces sujets? À partir de ces réponses, vous pouvez en dire beaucoup sur la connaissance et la compréhension réelle des mécanismes sous-jacents des langages de programmation. Combien cette personne a dépensé avec les détails sales, ou si elle est juste quelqu'un qui relie les différentes fonctions de l'API sans aucune idée de ce qui se passe en dessous.
Ce concept de questions d'entrée de gamme suivi de simples questions de connaissances approfondies peut également être utilisé pour la plupart des autres sujets. Toujours dans ce schéma: question de renflouement, question de vérification, question approfondie. Un autre exemple (extrait d'une interview Java):
- "Comment évalueriez-vous votre expérience avec le développement multi-thread?"
- "Veuillez nommer ce que vous pensez être les trois choses les plus importantes à considérer lors du développement d'une application multi-thread."
- "Veuillez nommer trois classes de l'API Java qui peuvent vous aider à développer ces applications et donner une brève description de leur utilisation."
Ces trois questions vous en diront plus que toute question technique sur ce que le candidat sait vraiment sur ces sujets, tout en étant juste de répondre compte tenu de la connaissance des points et du niveau de stress.
Ainsi, la prochaine fois que quelqu'un vous posera 20 questions de codage d'affilée, vous saurez qu'il ou elle n'a pratiquement aucune idée de la manière d'interviewer correctement quelqu'un. ;)