Entretien technique et capacité de programmeur [clôturé]

14

Ce que je dirai pourrait être un peu controversé, mais je suis très découragé aujourd'hui - et je vais donc vous poser cette question.

Je viens d'avoir un entretien avec une grande firme de technologie pour un poste de stage, où on m'a posé beaucoup de questions d'entrevue orientées algorithmes typiques. Maintenant, étant donné mes antécédents, je me considère comme étant fort en algorithmes (j'ai également de bonnes notes en algorithmes de niveau supérieur - des choses impliquant NP-complétude et au-delà (approximation et algorithmes randomisés), mais malheureusement j'ai raté l'interview. Je n'ai pas pu pensez à une méthode très efficace pour résoudre un problème de cordes en environ 10 minutes. Une fois l'entretien terminé, j'ai bu un verre d'eau, j'ai mangé une banane et je me suis détendu pendant un certain temps et j'ai essayé à nouveau le problème. Et vola! Je pouvais arriver en moins de 5 minutes et le pire de tout - j'étais en fait sur cette piste et l'intervieweur a fait allusion à ce sujet, mais trop de pression m'a fait cuire. Toute mon expérience m'a fait penser à des entretiens techniques. J'avais quelques questions et je voulais les poser dans ce forum -

  1. Est-il vraiment possible de juger de la capacité technique de quelqu'un en une demi-heure? Honnêtement? Ou est-ce juste un jet de dés?

  2. Les questions d'entrevue techniques mesurent-elles la capacité de résolution de problèmes? Ce point est très discutable? En tant que doctorant, je sais que la résolution de problèmes mathématiques implique de résoudre quelque chose dont vous n'avez jamais entendu parler auparavant. D'un autre côté, des questions comme - fusionner deux listes chaînées dans un ordre trié, ou imprimer tous les éléments d'un arbre binaire au kième niveau deviennent de "simples exercices" une fois que quelqu'un a vu la solution ou résolu le problème à l'avance?

  3. Les gens qui sortent avec brio dans ces interviews deviennent-ils de grands programmeurs? Est-ce qu'ils continuent et conçoivent des moteurs de jeu élégants, des bibliothèques graphiques, écrivent des frameworks de jointure rapide? Existe-t-il des preuves indiquant une corrélation positive entre le fait de réussir dans les entretiens techniques et la capacité réelle de programmation? Ou est-ce que ces entretiens sont plus orientés vers la recherche du type de personne "faire avancer les choses" (Spolsky)?

Je peux parier que beaucoup d'universitaires publiant des idées révolutionnaires - ICML, VLDB, Mobicom - échoueront ces interviews. Mais je peux vous assurer qu'ils font partie des personnes les plus intelligentes que vous trouverez sur cette planète.

Je suis principalement dans le milieu universitaire (étudiant diplômé) - j'apprécierai donc grandement la perception de quelqu'un de l'autre côté de la clôture. Quelqu'un qui mène réellement ces interviews?

[Ok tout le monde. Merci pour toutes les réponses gentilles et réfléchies. Comme je ne veux pas poser une autre question, je vais vous demander de répondre à cette question pour moi.

Supposons que le candidat X possède un bon portefeuille public d'œuvres où il a contribué à un projet open source connu où - vous pouvez réellement aller vérifier ses correctifs, vérifier les bogues qu'il a fermés et jeter un œil aux conceptions qu'il a créées. Dans ce cas, la question est de savoir quel poids êtes-vous prêt à accorder à son travail accessible au public / vérifiable par rapport à sa capacité à répondre à une question d'entrevue d'arbre binaire très artificielle en moins de 15 minutes?]

user396089
la source
11
Quand j'interviewe des gens pour des emplois, je ne recherche pas de bons programmeurs. Je recherche de bons INGÉNIEURS. Un programmeur examine un problème et code une solution. Un bon INGÉNIEUR examine un problème et demande "est-ce le vrai problème que je dois résoudre?" et si ce n'est pas le cas, détermine quel est le bon problème, conçoit une solution qui équilibre tous les facteurs en jeu (calendrier, argent, capacité), puis la remet à un programmeur pour la coder.
PlayDeezGames
2
Hmm, c'est logique. Tout le monde peut acquérir des compétences de codage brutes en C ++ / Java / python en 6-12 mois. Mais pour réellement concevoir des choses qui nécessitent une compréhension très approfondie des performances, le thread, les problèmes de mémoire et les compromis sont la clé. Je suis d'accord. Pardon! mais je ne peux pas vous voter, je n'ai pas assez de représentants.
user396089

Réponses:

11

Garde en tête que...

  1. L'objectif principal d'un processus d'entrevue n'est pas d'arriver à une vérité absolue sur les capacités personnelles de chaque personne interrogée, mais de sélectionner quelques candidats parmi un grand nombre.
  2. Il est BEAUCOUP, BEAUCOUP plus cher d'embaucher un mauvais développeur que d'en transmettre un bon.

Donc, souvent, lors des entretiens, des raccourcis imparfaits (tels que des questionnaires techniques) sont pris car, comme vous l'avez mentionné, il n'y a pas de processus parfait pour pouvoir juger une personne en 30 minutes. Mais comme la plupart n'ont pas le luxe de travailler côte à côte avec vous, vous devez simplement accepter que c'est ce que c'est, un jeu de cotes auquel tout le monde joue.

DXM
la source
"Il est BEAUCOUP, BEAUCOUP plus cher d'embaucher un mauvais développeur que d'en transmettre un bon" - ouais je comprends l'argument ici qui semble être d'un point de vue purement utilitaire, comme même si la probabilité d'embaucher un mauvais développeur est proche de zéro, le coût négatif qui y est associé peut faire glisser la valeur d'utilité totale attendue de positive à négative.
user396089
5
@ user396089, dans le monde universitaire, les gens vont au moins se contenter de vous fournir un service: formation, mentorat, croissance personnelle, etc. Au moins nominalement, cela fait partie de leur mission. Dans le secteur privé, la relation est utilitaire à 97%. Les entreprises ne souhaitent vous offrir une opportunité que dans la mesure où elles présentent un avantage.
Charles E. Grant
Pour ajouter à ce que Charles a dit, lorsque vous franchissez la porte, vous êtes, comme 50 autres candidats, un parfait inconnu de l'entreprise et du responsable du recrutement. Vous pouvez donc être la meilleure personne de tous les temps, sur le plan professionnel et personnel, mais compte tenu des circonstances, les objectifs de l'entreprise à ce stade sont vraiment de maximiser leur valeur future, tout en minimisant les coûts de recherche tout en recherchant cette maximisation.
DXM
Vous savez, c'est drôle que je pense au simple problème de chaîne que je n'ai pas pu résoudre aujourd'hui lors de l'interview mais que j'ai résolu plus tard; mais, après avoir essayé pendant près de 3 semaines, je n'ai pas encore résolu un problème lié à l'un de mes projets de loisirs. Les détails peuvent être trouvés ici - stackoverflow.com/questions/9056108/…
user396089
1
@ Antonio2011a: "comment valide" est un terme amusant et ce n'est pas noir et blanc. Différentes personnes utilisent différentes tactiques pour juger de la qualité des employés potentiels. Chacune de ces tactiques est une sorte de raccourci, car le seul véritable test est de laisser la personne travailler avec vous et de prévoir un temps de montée en puissance. Alors, quelle est la validité de cette question? ou comment valider pour poser des questions sur le grand O, ou comment valider pour demander sur quoi il a travaillé. Ce ne sont que des zones grises et aucune n'est parfaite.
DXM
9

Est-il vraiment possible de juger de la capacité technique de quelqu'un en une demi-heure?

Pas exactement. Il est possible d'éliminer les gens qui ne peuvent pas programmer du tout et ceux qui ne peuvent pas expliquer les choses sur leur CV. Au-delà de cela, j'essaie généralement de mesurer l'intelligence générale et l'intérêt pour le domaine. Il est difficile de commenter davantage votre situation sans connaître le problème qu'on vous a demandé de résoudre.

Les questions d'entrevue techniques mesurent-elles la capacité de résolution de problèmes?

Ce n'est pas le but de mes questions techniques. Au lieu de cela, j'essaie de découvrir si le candidat a une compréhension des principes fondamentaux de l'informatique. Pour évaluer la capacité de résolution de problèmes, je demande à un candidat de parler d'un problème intéressant sur lequel il a travaillé.

Les gens qui sortent avec brio dans ces interviews deviennent-ils de grands programmeurs? Ou est-ce que ces entretiens sont plus orientés vers la recherche du type de personne "faire avancer les choses" (Spolsky)?

C'est à peu près ça. La grandeur est rare. Je suis heureux de trouver quelqu'un de compétent.

Kevin Cline
la source
Le problème était une variation de KMP (au fur et à mesure que vous effectuez un passage dans la chaîne, vous stockez le nombre d'occurrences de certains caractères que vous aviez vu précédemment). À la fin, en fonction de la longueur de la chaîne et du nombre que vous avez - vous pouvez répondre à la question réelle. Tout en un seul passage - temps O (n) et en utilisant un espace constant O (1)
user396089
2
"Je suis heureux de trouver quelqu'un de compétent."
AProgrammer
2
Passer un entretien est dû (au moins!) À autant de chance qu'à la grandeur. Une fois que vous avez atteint un certain niveau de connaissances, le hasard joue un rôle beaucoup (!) Plus important que presque tout le monde le pense. Suggestion de lecture: The Drunkard's Walk de Mlodinow .
Konrad Rudolph
Oui, j'ai lu ce livre et aussi le "Fooled by Randomness" encore plus intéressant et sarcastique de Nassim Nicholas Taleb. Inutile de dire que j'ai fait une dépression pendant un certain temps après avoir lu les livres - si vous comprenez la prémisse de base des deux livres et c'est - "oui, c'est toute la chance! La chance! Et tout la chance!" Le monde est aléatoire et nous devons y faire face.
user396089
5
  1. Oui. Oui, honnêtement. Cela ne veut pas dire que 30 minutes suffisent pour obtenir une image complète de ce dont une personne est capable. Le travail de l'intervieweur est de faire de son mieux pour avoir une idée de qui est la personne interrogée et de ce qu'elle peut faire. Trouver les personnes qui ont mis quelque chose sur leur CV qu'ils ne connaissaient pas vraiment est simple. Découvrir exactement ce que la personne interrogée peut faire, y compris toutes ses compétences et ses forces, ne l'est pas.

  2. Oui. Ils vous permettent de voir comment pense l'interviewé. Il n'est pas toujours nécessaire d'obtenir la bonne réponse. Voir quelqu'un faire face à un problème avec lequel il lutte est tout aussi bénéfique que voir quelqu'un répondre correctement à un problème sans trop de problèmes. Je pose toujours une question à laquelle je pense que la personne interrogée pourrait ne pas être en mesure de répondre.

  3. Je ne connais aucune preuve empirique qui dit que les entretiens techniques trouvent les meilleurs candidats, mais c'est la meilleure chose que j'ai essayée. Différentes personnes sont douées pour différentes choses et obtenir des réponses techniques correctes n'est pas la seule chose qui décide si quelqu'un est embauché. Être bien adapté à l'entreprise est également très important.

Sur la base de votre question, je pense que la chose la plus importante que vous devez comprendre est que les jours de commentaires clairement définis comme une note de lettre sont terminés. Obtenir la bonne réponse n'est qu'une partie du résultat. Écrire un bon code, communiquer vos idées et écouter les autres est tout aussi important. Cependant, ces domaines sont plus subjectifs et doivent être traités comme tels.

Tout comme la façon dont vous avez résolu le problème, reculez et dégagez la tête. Il y a beaucoup de choses dans une interview et l'intervieweur sait que ce n'est pas un système parfait. Ils essaient de faire de leur mieux pour l'entreprise, tout comme vous essayez de faire de votre mieux.

unholysampler
la source
2
C'est un bon point @unholysampler - "Obtenir la bonne réponse n'est qu'une partie du résultat". Peu importe si vous fournissez un portail de vente en ligne parfait un jour après Noël. Trop tard. Le temps est tout aussi important que d'avoir la bonne réponse.
jasonk
+1 "Ils essaient de faire de leur mieux pour l'entreprise, tout comme vous essayez de faire de votre mieux pour vous."
Burhan Ali
5

En une demi-heure, vous pouvez juger que la capacité technique d'une personne est au moins aussi bonne que x. Autrement dit, leur capacité pourrait être supérieure à ce qu'ils ont démontré, mais vous pouvez être sûr que ce n'est pas pire. Si x est supérieur à vos besoins, vous les engagez. Oui, c'est injuste si vous démontrez en dessous de vos capacités réelles. Tout ce que je peux dire, c'est de mieux faire la démonstration.

Si quelqu'un proposait une réponse pratiquement mémorisée, je lui donnerais un problème plus difficile. Dans le milieu universitaire, la mémorisation est une compétence importante. Dans un travail, c'est surtout redondant lorsque vous avez Google juste là.

En voyant comment la plupart des grands programmeurs sont employés, il est sûr de supposer qu'ils ont réussi un entretien d'embauche à un moment donné. Non, vous ne pouvez pas dire si quelqu'un sera un excellent programmeur à partir d'une entrevue d'une demi-heure. Heureusement, la plupart des entreprises n'ont pas besoin de bons programmeurs. Ils s'entendent très bien avec des programmeurs solides et fiables qui n'ont pas peur de s'atteler à des tâches juste en dehors de leur zone de confort.

La raison pour laquelle des penseurs révolutionnaires pourraient échouer dans les entretiens d'embauche est que les opportunités de résoudre des problèmes flashy et révolutionnaires sont très rares, et on ne vous fera confiance pour les résoudre qu'après avoir prouvé que vous pouvez résoudre des problèmes banals, mais difficiles, vos collègues. ne peut pas, comme pourquoi le logiciel se bloque quand il dépasse 16% de charge.

Karl Bielefeldt
la source
2
+1 "... des problèmes banals mais difficiles que vos collègues ne peuvent pas résoudre, comme pourquoi le logiciel se bloque quand il dépasse 16% de charge."
Jaydee
3

Très peu de gens savent si leurs techniques d'entrevue fonctionnent vraiment, car ils n'en apprennent jamais plus sur ceux qui ont échoué. Mais quand rien ne réfute leur hypothèse, ils la prennent comme une confirmation qu'ils sont vrais. Il y a donc un élément certain de lancer les dés.

Si les théories économiques affirmant que les marchés sont rationnels et efficaces étaient vraies, alors les entreprises chercheraient à embaucher des gens qui étaient mauvais lors d' une entrevue d'une manière qui ne les rendrait pas mauvais dans leur travail. Donc, quelqu'un qui portait un costume mal ajusté, transpirait, semblait très nerveux et avait du mal à faire des problèmes techniques sous la pression d'un entretien - s'il y avait des preuves extérieures, il pourrait autrement faire des problèmes techniques et les pressions du travail n'étaient pas comme celles d'une entrevue (comme ils ne le sont généralement pas) - représenterait les meilleures chances d'une entreprise d'obtenir un candidat meilleur qu'elle ne pourrait autrement l'attirer et agirait en conséquence. (Pensez Money-ball pour le monde de l'entreprise). Finalement, les biais d'interview disparaîtraient.

En pratique, cela va à l'encontre de la nature humaine. Les enquêteurs aiment les extravertis confiants, quelle que soit la position, et même si l'entretien technique fournit des informations pires que le CV et les références (comme c'est peut-être vrai dans votre cas), ils en tiendront compte.

Quant à vos questions:

  1. Quelque peu. Les tests ont un mauvais rapport signal / bruit mais peuvent être réglés pour éliminer complètement les non qualifiés au détriment des entretiens qualifiés mais mauvais au niveau technique.

  2. Voir # 1. Une partie du bruit provient de la variation du fait que les gens ont déjà vu le problème auparavant.

  3. Voir # 1. Il y a probablement une minuscule corrélation positive entre ces tests et devenir un grand programmeur.

Mon conseil - Étudiez quelques exemples de questions techniques pour obtenir une familiarité de base. N'oubliez pas que c'est un petit coup de dé, alors pendant l'entretien, essayez d'être confiant. Si vous pouvez expliquer ce que vous pensez sans vous distraire de la réflexion, faites-le. Si cela se passe vraiment mal, admettez que vous devenez nerveux lors des entretiens et faites-leur savoir que cela semble être quelque chose que vous n'auriez normalement pas de problème - en donnant peut-être un exemple d'un problème similaire mais plus difficile que vous avez résolu.

psr
la source
1
"Les enquêteurs aiment les extravertis confiants" ... c'est peu déconcertant pour moi, mon type Myers Briggs est INTJ (en supposant que MB soit un peu représentatif du type de personnalité réel).
user396089
2
De nombreux développeurs de logiciels sont des introvertis comme moi. Par conséquent, de nombreux intervieweurs le sont aussi. Bien sûr, la confiance aide. Mais les réponses sensées aident beaucoup plus.
kevin cline