Quelle est la meilleure façon d’évaluer les nouveaux programmeurs? [fermé]

52

Quelle est la meilleure façon d’évaluer les meilleurs candidats pour obtenir un nouvel emploi (parler uniquement en termes de compétences en programmation)? Dans mon entreprise, nous avons eu beaucoup de mauvaises expériences avec des personnes qui ont de bonnes notes mais qui n’ont pas de réelles compétences en programmation. Leurs compétences ne sont que des singes à code, sans la capacité d'analyser les problèmes et de trouver des solutions.

Plus de choses que je dois noter:

  • Le système éducatif dans mon pays est nul, vraiment nul. Les personnes qui sont bonnes dans ce genre de travail sont bonnes parce qu'elles ont du talent ou essaient vraiment d'apprendre par elles-mêmes.

  • Le diplôme universitaire / de troisième cycle / de troisième cycle ne signifie pas nécessairement que vous savez exactement comment faire les choses.

  • Les certifications ne veulent rien dire non plus parce que les responsables du cours de certification n’ont pas non plus de compétences (ou occupent des emplois peu rémunérés).

Nous devons vraiment trouver les bons candidats flexibles et qui n’ont pas de mentalité mécanique (parce que ce type de personnes expérimentées a une faible performance).

Nous sommes dans une institution gouvernementale et les candidats ne viennent pas forcément de l'extérieur, mais nous avons la possibilité d'accepter ou non des candidats jusqu'à ce que nous trouvions le bon.

J'espère que je ne parais pas trop agressif dans ma question; et BTW je suis un programmeur moi-même.

edit: J'ai compris que demandait quelque chose de vraiment complexe ici. Je désélectionnerai "la bonne réponse" uniquement pour laisser la discussion se dérouler sans difficulté.

Rafael
la source
J'apprécierais la créativité, comme vous le dites concernant le code singe. Je n'aime pas l'approche de la force brute. Si des générations de programmeurs précédents ont utilisé une approche donnée, cela pourrait signifier que c'est génial, ou tout simplement qu'elle se perpétue depuis longtemps. En outre, l'éducation n'est pas censée se concentrer sur les compétences commerciales, et je dirais que c'est extrêmement important, mais que les notes effectivement acquises au-delà d'un niveau de compétence minimum ne sont pas aussi importantes. J'aimerais voir plus d'un système de style Khan Academy de nombreux petits modules succès / échecs avec d'autres dépendances de passes de modules et une période de récupération avant de pouvoir reprendre un module.
alan2here

Réponses:

52

En ce qui concerne la sélection des candidats, je choisis généralement un plan en trois temps:

  • Test régulier avec des questions de codage de type FizzBuzz et de nombreuses questions de connaissances où ils doivent donner des exemples codés. Selon le poste occupé, il peut s'agir des principes OO, des principes de conception SQL, etc. J'incrémente les difficultés des questions tout au long du test pour voir jusqu'où elles peuvent aller. L'idée n'est pas vraiment d'avoir toutes les réponses aux questions (si c'est le cas, mieux c'est), mais aussi de voir s'ils peuvent reconnaître quand ils ne savent pas quelque chose. La confiance est essentielle et je ne veux pas que quelqu'un me mente dans mon équipe.

  • Revenez sur le test avec le candidat et discutez des réponses. Extension possible des questions pour atteindre les limites du candidat. Cela peut être vaste, et plus c'est vaste, mieux c'est.

  • Dernière partie, mais non la moindre, The Code Review . Je demande au candidat d'apporter un morceau de code (j'espace en général le test / la discussion précédente et cette critique de quelques jours, afin de les laisser écrire et peaufiner un morceau de code). Nous procédons ensuite à une révision de code régulière avec deux personnes: une personne qui travaillera directement avec le candidat et la personne qui a précédemment examiné le test avec le candidat. En ce qui concerne la révision du code, vous pouvez lire cet article de JohnFX .

À la fin de tout cela, vous devriez pouvoir décider si vous voulez que ce candidat fasse partie de votre équipe ou non.

Matthieu
la source
4
Je suis d’accord sur les questions de codage et de connaissance, je n’ai jamais accepté de demander aux candidats d’apporter du code. À mon avis, il n'est pas facile de trouver un code substantiel qui: montre quelque chose de non trivial, ne nécessite pas trop de connaissances d'un système plus important et que vous êtes autorisé à montrer à d'autres.
Andrea Zilio
Je dirais révision de code. FizzBuzz est tellement surutilisé. Et vous pourriez effrayer les gens. J'ai été programmeur dans les domaines de la santé et des services financiers, et des choses comme fizzbuzz sont inutiles. Tu dois être capable de comprendre une interaction beaucoup plus compliquée. Demandez-leur des exemples de code, même s'il s'agit d'un FPS en pygame. S'ils n'ont pas d'échantillons de code, ils ne sont pas des codeurs.
Christopher Mahan
1
@ChristopherMahan La valeur de FizzBuzz (et du codage simple) est comme un simple gardien. S'ils ne peuvent pas implémenter FizzBuzz, dans la langue de leur choix, peuvent-ils écrire TOUT code?
Vatine
@Vatine FizzBuzz teste la capacité de raisonnement logique, pas les compétences de programmation. Certes, il faut être capable de le faire. Une question de programmation simple serait: afficher à l’écran une liste d’articles triés de manière intéressante. Ils seraient obligés de coder, mais ils pourraient puiser dans l'expérience pour trouver quelque chose à écrire, sans avoir à essayer de comprendre le casse-tête. Une fois, j'ai échoué à une interview parce qu'ils voulaient que j'utilise regex et j'ai répondu que, pour ce problème, regex est une surcharge et que python possède des fonctionnalités intégrées pour le faire. Je ne voulais pas travailler là-bas, je suppose.
Christopher Mahan
Code Review est une idée terrible, et la réfutation de JohnFX est insuffisante. Je connais beaucoup de développeurs qui sont formidables mais qui ne travaillent pas en dehors des bases de codes propriétaires de leur employeur. Ce sont des gens avec des familles et des choses à faire en dehors du travail. Cependant, quand ils travaillent, ils sont très productifs.
MrFox
20

Commencez par leur donner FizzBuzz à résoudre. Cela devrait éliminer le pire d'entre eux.

Quelque chose de plus difficile, par exemple, comment inverser une chaîne sans utiliser les fonctions de bibliothèque intégrées. Demandez-leur de parler tout en résolvant afin de voir quel est leur processus de pensée.

Vous pouvez continuer à poser des problèmes plus difficiles s’ils les trouvent très faciles, jusqu’à ce que vous soyez convaincus qu’ils peuvent marcher et ne pas se contenter de parler.

Oded
la source
1
Je suppose que cela peut dépendre du niveau de programmeur que vous interviewez. Même s'il serait peut-être acceptable de faire appel aux compétences d'un employé de niveau subalterne, je considérerais ces questions lors d'une entrevue comme un indicateur clair que ce n'est pas une entreprise pour laquelle je voulais travailler.
Jfrankcarr
3
Je suis en désaccord avec la partie parlante. Parlez-vous souvent à vous-même ou à d'autres personnes tout en résolvant des problèmes? Pourquoi ne pas laisser un espace à une personne et la laisser réfléchir un peu? Donc, à moins que ce soit complètement trivial, je pense que ce n'est pas une bonne pratique.
Andrey Rubshtein
1
@Andrey - La partie parlante consiste à mieux comprendre leur processus de pensée. Vous voulez voir comment ils pensent d'un problème et comment le résoudre. Avez-vous une meilleure option?
Oded
5
@Oded, oui, en fait je le fais. Laissez-les réfléchir un moment, seuls , comme ils le feraient dans la vie réelle, surtout s’il s’agit d’un problème difficile, puis demandez-leur autant que vous le souhaitez. Comme dans n'importe quel examen oral.
Andrey Rubshtein
4
Même en tant que préposée dans une école qui compte plusieurs professionnels de la CS récemment reconnus, je trouve que fizzbuzz est un bon filtre. La plupart des gens avec qui j'ai obtenu mon diplôme n'ont probablement pas pu résoudre le problème dans un délai raisonnable. Ces personnes ont eu du mal à trouver un emploi ou n'ont pas réussi. Je pense que suivre joelonsoftware.com/articles/GuerrillaInterviewing3.html est bon.
Rig
14

Il suffit de chercher la passion pour le travail.

Pour citer Joel, recherchez des personnes qui sont " intelligentes et faites avancer les choses " .

Le reste n'a pas d'importance

CaffGeek
la source
7
Le problème est que vous ne pouvez pas dire s'ils sont intelligents.
4
@Chad: une passion pour l'apprentissage ne "fait pas avancer les choses". Pour savoir si quelqu'un peut faire avancer les choses, vous devez lui demander de faire quelque chose.
kevin cline
2
@ Kevin Cline, peaufiné mon post. Ils ont besoin de passion pour le travail, ce qui se manifeste généralement par le désir d'apprendre. Oui, cela prend quelques questions, la conversation devrait se dérouler, cela ne devrait pas être simplement une série de questions. Mais pour savoir s'ils réussissent, demandez des exemples où ils ont eu un obstacle et comment ils l'ont surmonté. Tout le monde se heurte à des obstacles dans son travail, que ce soit à cause de la technologie, des gens, des processus, mais une personne intelligente, qui fait avancer les choses, trouvera le moyen de la surmonter et sera capable de l'expliquer, en détail, suffisamment pour pouvoir vous vendre. leur capacité.
CaffGeek
3
@mouviciel pas dans mon expérience. Certains des programmeurs les plus intelligents que je connaisse sont très extravertis.
4
Si vous ne pouvez pas vous asseoir dans une pièce avec un candidat au développement et déterminer s'il est intelligent ou non, trouvez quelqu'un qui le peut.
JeffO
13

Sur la base de mes 25 années de programmation (qui, certes, ne comprend que 5 ou 6 instances d’embauche d’autres programmeurs):

Indicateurs positifs:

  • Passionné de technologie

  • Les programmes comme passe-temps

  • Parlerait d'un sujet technique si on l'encourageait

  • Projets parallèles personnels importants (et souvent nombreux) au fil des ans

  • Apprend par lui-même les nouvelles technologies

  • Opinion sur les technologies qui conviennent le mieux à divers usages

  • Très mal à l'aise à l'idée de travailler avec une technologie qu'il ne croit pas avoir "raison"

  • Clairement intelligent, peut avoir d'excellentes conversations sur une variété de sujets

  • A commencé à programmer bien avant l'université / le travail

  • A des "icebergs" cachés, de grands projets personnels sous le radar du CV

  • Connaissance d'une grande variété de technologies non liées (peut ne pas être sur CV)

Indicateurs négatifs:

  • La programmation est un travail de jour

  • Je ne veux pas vraiment “parler boutique”, même quand on les encourage à

  • Apprend les nouvelles technologies dans les cours sponsorisés par l'entreprise

  • Heureux de travailler avec toutes les technologies que vous avez choisies, «toutes les technologies sont bonnes»

  • Ne semble pas trop intelligent

  • Commencé à programmer à l'université

  • Toute l'expérience de programmation est sur le CV

  • Axé principalement sur une ou deux piles technologiques (par exemple, tout ce qui concerne le développement d’une application java), sans expérience en dehors de celle-ci

En plus, je suggérerais:

  • Le test FizzBuzz (ou quelque chose de similaire pour tester l'aptitude de base à écrire un algorithme.
  • Version plus dure du test FizzBuzz (pour les amener au point d'échec ou presque).
  • Discutez de leur code et voyez s'ils sont disposés à s'auto-critiquer et cherchez des améliorations (ce qu'ils n'auraient probablement pas eu le temps de faire dans un court test sur place) tels que:
    • bons noms de variables (des codeurs expérimentés ont utilisé des variables en production comme "flag" (WTF ??)
    • modularisation.
    • Anticiper les problèmes et faire du "codage défensif"
  • Une volonté de voir les "défauts" comme des opportunités d'amélioration. Je pense que les meilleurs codeurs recherchent toujours les défauts de leur code précédent. Ils ne sont pas assez égocentriques pour penser que trouver une faille est un affront personnel. Ils y voient une opportunité de faire mieux. (Ceux qui ne peuvent pas regarder les défauts de manière irréfléchie sont soit dépassés par le fait de voir un défaut (et deviennent super confiants, ou, pour éviter cela, ils ignorent les défauts).
  • Peuvent-ils déboguer?
  • Peuvent-ils tester l'unité? (J'ai parlé à un trop grand nombre de programmeurs qui disent "le CQ fait ça". Je ne parle pas de test, je parle de test: vous écrivez une fonction, ça marche? Fait-il des efforts raisonnables pour le gérer? Problèmes probables (entrée NULL, etc.) Si vous ne pouvez pas le faire, comment savoir quand vous avez terminé?
  • Ont-ils de bonnes compétences en communication? (au minimum: bonne compréhension et connaissance de soi du moment où ils comprennent et ne comprennent pas et volonté de dire "je ne comprends pas, veuillez l'expliquer à nouveau".

Une grande partie du résumé ci-dessus est tirée de Comment repérer un bon programmeur , un excellent article, qui est un peu plus axé sur les indicateurs à plus long terme. Cela confirme définitivement mes intuitions et mon expérience. C'est aussi beaucoup de choses (comme "passion") qui ne sont normalement pas mentionnées dans une liste de contrôle "Qu'est-ce qu'un bon programmeur".

Clay Nichols
la source
10

L'évaluation de l'intelligence de programmation est une forme de test de Turing. Ainsi, il n’existe (actuellement) aucune procédure d’évaluation sous forme fermée qui fonctionne. Les programmeurs intelligents doivent reconnaître d'autres programmeurs intelligents, mais avec une probabilité raisonnable.

Vos chances seront meilleures si vous avez des enquêteurs dans votre équipe qui peuvent sentir les emplois de neige et qui, instinctivement, n'aiment pas travailler avec des personnes stupides (même ceux qui sont beaux, ont un CV impressionnant et peuvent jaillir de toutes les solutions habituelles conservées de mémoire). .

(Une des méthodes possibles pour améliorer la qualité du stackoverflow consiste à déterrer d'anciennes questions relatives au stackoverflow, liées d'une certaine manière aux exigences de votre travail mais qui, à votre avis, ont des réponses inférieures. Demandez à la personne interrogée comment elle répondrait, et demandez-leur de l'afficher s'il s'agit d'une bonne réponse. Semblable à un récapitulatif pour la reconnaissance optique de caractères par le grand public.)

hotpaw2
la source
7

Donnez-leur un problème, de préférence associé au domaine de problème sur lequel ils vont travailler, et demandez-leur de discuter de la façon dont ils l'aborderaient. Vous pouvez leur demander simplement de discuter, de pseudo-code ou d'écrire des bits de code réel en fonction de votre confiance en leur niveau de compétence.

Par exemple, si votre organisation a organisé des conférences, demandez-leur de décrire comment coder un système d'enregistrement en ligne sécurisé. Ils devraient être capables de couvrir une partie des bases et de poser de bonnes questions sur ce qui doit être mis en œuvre. Lors de vos interactions, vous devriez être en mesure de déterminer si elles conviendront bien à votre organisation et le rôle que vous devez leur confier.

Je ne suis pas un grand partisan de la programmation de tests-questionnaires et de casse-têtes. Bien qu'elles puissent être amusantes pour certaines personnes, elles peuvent également gêner et / ou stresser d'autres personnes, y compris des personnes qui pourraient bien être la meilleure solution pour votre équipe. De plus, des informations sur de nombreux tests de ce type sont facilement disponibles en ligne et encourageront le bourrage pour les tests et autres tactiques qui affaibliraient leur viabilité pour évaluer les capacités du programmeur.

jfrankcarr
la source
Je suis d’accord avec vous sur les inconvénients du test trivia / cerveau pour la sélection des candidats. le problème est que l'examen / la discussion du code avec chaque candidat demandera trop de temps. Et peut-être que le résultat serait plus subjectif. pas exactement ce que je recherche, je préférerais quelque chose qui nécessite moins de supervision personnelle. et plus tard, quand j’ai des candidats plus aptes, que je les parle / discute / les interviewe
Rafael
3
Trop de temps? Quelqu'un va devoir parler aux candidats. Aucun test écrit ne fonctionnera. Le contenu du test sera rapidement rendu public et les candidats arriveront avec des réponses mémorisées.
kevin cline
10
@ kevincline: Exactement, vous devez leur parler. J'interviewais chez Xerox (dans les années 70) et on me demandait comment je gérerais les collisions dans un algorithme de hachage. Je n'avais pas beaucoup d'éducation formelle en programmation, mais je le faisais depuis environ 5 ans à l'époque, alors j'ai dit que je ne savais pas ce que c'était un hash. Mon intervieweur m'a expliqué, puis a répété la question. Nous avons poursuivi pendant plus d'une heure lorsque j'ai découvert et résolu plusieurs types de problèmes de collision. Il m'a dit que si je pouvais le faire en une heure, je pourrais gérer tout ce qu'ils me jetteraient. J'ai eu l'emploi. Parce qu'il m'a parlé .
Peter Rowell
@ PeterRowell C'est comme ça que les choses doivent être. +1
Chiron
3

La lecture de cette question et de certaines des réponses reçues m'a incité à rédiger un article qui pourrait être d’intérêt:

Pratiques de recrutement étranges lors de l'embauche de développeurs de logiciels

Ok, le titre de l’article est donc nul, mais l’article touche au cœur du problème. Ce n'est pas le problème du candidat que vous ayez choisi de l'interviewer, même si cela ne convient pas au rôle que vous envisagez. Si vous ne parvenez pas à définir une procédure de recrutement bien calculée pour vous permettre de trouver les pierres précieuses de manière approximative, vous devrez alors en supporter les conséquences, et oui, cela signifie que vous obtiendrez quelques candidats ne jamais répondre à vos attentes. Pour filtrer vos candidats en fonction de leurs lettres et curriculum vitae, vous devez d’abord demander à vos candidats d’écrire une lettre sur eux-mêmes et sur ce qu’ils souhaitent du poste, puis de voir comment le curriculum vitae est rédigé. Si vous ne pouvez interroger qu'un ou deux candidats potentiels, vous avez probablement correctement effectué la présélection.

Lorsque vous finissez par trouver les 1 ou 2 candidats que vous considérez comme valant la peine, ne posez pas simplement une poignée de questions de testeurs aliénés, mais investissez plutôt le temps de faire connaissance avec ces personnes et d'engager des discussions ouvertes sur les logiciels. ingénierie en général. Une approche informelle sur le candidat vous en apprendra plus que dans une situation d'entrevue traditionnelle (et quelque peu conflictuelle). En outre, ne vous contentez pas d'un entretien unique, mais organisez plutôt avec vos candidats clés plusieurs réunions au cours desquelles une discussion ouverte est utilisée et où le candidat peut rencontrer leurs collègues éventuels. Le temps n'est jamais perdu, car les candidats inappropriés ne réussiront pas très bien dans une discussion très technique et montreront très vite leurs défauts au fur et à mesure qu'ils baisseront la garde.

S.Robins
la source
Bons points. Cependant, je ferais attention à trop d'entretiens. Le temps du candidat et votre temps sont précieux (surtout si le candidat est actuellement employé ailleurs). D'après mon expérience, de plus en plus d'interviews ont des rendements décroissants, je me limiterais donc à une ou deux interviews. Une interview téléphonique supplémentaire peut également être un compromis.
Sleske
1
@sleske, je suis d'accord en principe, surtout si les mêmes personnes assistent à toutes les interviews. Il est donc préférable de partager le fardeau de trouver la meilleure solution pour la société et l’équipe, et de vous donner une chance de tirer les leçons des observations des autres. Les mauvaises entrevues n'iront pas plus loin, mais plus il y a d'intervenants intéressés par le candidat, plus vous aurez besoin d'entrevues. Il n'est donc pas inhabituel d'avoir 3, voire 4 entrevues dans des équipes très larges. Trop d’autres encore donneraient l’impression d’être terriblement désorganisés. Il est également utile d'indiquer au candidat le nombre d'entretiens préalables.
S.Robins
@ s-robins des opinions intéressantes, je veux seulement éclaircir certains aspects de ma question. Pour des raisons indépendantes de notre volonté, nous ne pouvons pas sélectionner nos candidats sur la base d'un processus de recrutement normal. Ils ne font que venir et nous devons préciser s'il / elle possède les compétences / connaissances appropriées pour occuper le poste. Peut-être que dans un processus de recrutement normal, ces choses ne se produisent pas trop souvent. mais dans notre position, nous devons faire face à cette situation.
Rafael
@Rafael, si je comprends bien vos commentaires, vous dites que vous évaluez des candidats "ailleurs" et que votre difficulté est de faire une évaluation objective d'un candidat sans le savoir auparavant. Cela ressemble plus à un problème systémique au sein de l'organisation où vous travaillez. Je suggérerais de rencontrer les personnes qui envoient des candidats et de travailler avec eux pour mettre au point un système permettant de filtrer les candidats manifestement inappropriés avant de les interviewer. Peut-être même demander qu'un processus de demande plus formel soit mis en place.
S.Robins
@ s-robins vous avez bien compris ...
Rafael
1

Vous n'avez pas dit pour quelle langue, mais il est assez facile de tester les connaissances de quelqu'un. Cela dépend aussi du niveau que vous recherchez, mais il y a un assez grand nombre de questions concernant les questions de l'entretien.

Quoi que vous décidiez de faire avec votre entretien, ne posez pas ces questions lors d'un entretien "puzzle latéral" .

BЈовић
la source
2
proprement, je n'ai pas précisé la langue que nous utilisons pour développer, car nous pensons qu'un bon programmeur (avec son cours de capacité respiratoire) peut apprendre à programmer dans n'importe quelle langue, indépendamment de sa syntaxe.
Rafael
2
@Rafael norvig.com/21-days.html . Comme je l'ai dit, cela dépend si vous recherchez un programmeur junior ou senior.
BЈовић
Parce que je parle de la plupart des candidats sont des nouveaux diplômés. Je parle de programmeurs débutants, mais ma question va dans un contexte plus large que celui de mon processus de recrutement personnel spécifique
Rafael
@Rafael Dans ce cas, vous attendez trop d'un junior. Lisez l'article que j'ai posté dans le commentaire ci-dessus, où il indique le temps nécessaire pour maîtriser un langage de programmation.
BЈовић
je ne parle pas de maîtriser un langage de programmation spécifique, je parle d’obtenir la meilleure personne avec le meilleur ensemble de compétences en programmation générique, (pourquoi je ne précise pas le langage), je ne peux pas espérer que tout le monde cela vient en tant que candidat maîtrisant la langue que nous programmons, et c'est pourquoi nous sommes en mesure de proposer un cours de capacitation si les gens ne la connaissent pas.
Rafael
1

Je vous suggère d'y aller avec une question FizzBuzz et d'embaucher la première qui passe. Les autres tests ont tendance à être défectueux, car tous les bons programmeurs ne vont pas aborder un problème comme vous, ni gérer une interview sans bégayer, ni connaître les langues que vous souhaitez, que vous vous souciez de la bêtise ou l’échange d’entiers comme une troisième variable (qui a besoin de cela quand même? I signifie, puisque la RAM a dépassé 128 octets?).

Pensez-y. Si la question FizzBuzz élimine 199 sur 200, elle supprime simplement des centaines d'interviews. Alliez-vous vraiment interviewer des centaines de prospects?

Cela semble juste comme des rendements décroissants après FizzBuzz. Cela en supposant que 199/200 est même à peu près proche. Et je présume que votre temps est précieux aussi ...

Harold Bamford
la source
2
Effrayant comment FizzBuzz est le test standard pour évaluer les compétences d'un programmeur. Cependant, ceci est un test éprouvé et vrai - je ne peux pas vous dire combien de programmeurs diplômés CS ne peuvent pas le faire (dans leur « langue de choix »)
Nodey Le nœud Guy
0

Je ne suis pas sûr qu'il s'agisse d'un commentaire ou d'une réponse, mais essentiellement de ce que Matthieu a dit. Vous voulez des questions faciles stupides qui prennent une minute ou deux (mais pas plus de 5) minutes à faire et elles devraient concerner différents domaines.

De tels exemples de question stupide et facile sont des questions sur la récursivité, telles que vous avez une liste et que vous devez l’imprimer en ordre inverse sans utiliser de boucle. Une question de regex simple si regex est normalement fait dans votre développement. Une question sur les bits et les octets si vous utilisez C ++ (écrivez un modèle qui accepte les caractères trop longs et affiche la représentation binaire. Une spécialisation n'est pas nécessaire, utilisez simplement sizeof () pour déterminer la longueur en bits)

Cela devrait vous prendre environ <= 3 minutes par question

utilisateur2528
la source
0

Demandez-leur quel est le défi de programmation le plus intéressant qu'ils aient jamais essayé de résoudre mais ne pouvaient pas, quelle approche ont-ils adoptée pour le résoudre, pourquoi ils ne pouvaient pas le résoudre et quelle autre approche pourrait, à leur avis, le résoudre.

Cela me suffit pour juger des capacités d'un programmeur en tant que programmeur.

Priyadarshi Kunal
la source
0
  1. Peuvent-ils défendre ce qu'ils prétendent savoir? Ils l'ont mis sur le CV en tant que compétence ou quelque chose qu'ils ont fait sur un autre projet. Voyez à quel point ils peuvent approfondir le sujet.
  2. Peuvent-ils apprendre quelque chose de nouveau? Parlez d'un aspect de haut niveau de la technologie que vous utilisez ou de quelque chose de spécifique au domaine de l'entreprise dans lequel vous travaillez et voyez s'il peut comprendre le sujet. Est-ce qu'ils posent des questions intelligentes? Peuvent-ils proposer une analogie? Est-ce similaire à quelque chose qu'ils ont fait dans une autre industrie ou technologie?

  3. Préféreraient-ils programmer? Ce n'est pas obligatoirement le numéro un sur leur liste, mais ils doivent montrer une préférence pour l'écriture de code. Et je veux dire réellement écrire du code et créer quelque chose, ne pas rester assis à parler de cela ou dessiner au tableau toute la journée. Pas pour minimiser la planification ou pour promouvoir le codage des cow-boys, mais vous devrez éventuellement avoir du code. Évitez ceux qui évitent le clavier. Ce n'est pas une position de gestion.

Vous pouvez marquer des points sur une échelle allant de un à dix ou simplement vous fier à votre propre odeur.

JeffO
la source
0

Si vous vous sentez mieux, de mauvais programmeurs existent dans presque tous les pays. Comment les éliminer est le problème.

Le premier désherbage est le CV. Ce que je recherche, c’est beaucoup d’expérience linguistique revendiquée et rien qui puisse décrire ce qu’ils ont fait dans cette langue. J'ai vu des résumés qui prétendent connaître toutes les langues jamais inventées et pourtant, leur expérience montre qu'ils n'ont travaillé qu'avec Access et Visual Basic. Ceux-ci vont à la poubelle. 10 pages de CV vont droit dans la corbeille (en particulier 10 pages de personnes avec moins de 2 ans d'expérience que j'ai eu). De récents diplômés d'université peu expérimentés, vous devez être très pointilleux sur la façon dont ils se présentent. Les meilleurs candidats font attention à leur curriculum vitae, ils n'ont pas d'erreur. Êtes-vous vraiment à la recherche de quelqu'un qui s'en soucie si peu qu'il ne se soit pas donné la peine de corriger son CV?

Les curriculum vitae préparés par les professionnels vont également à la poubelle. Une fois que vous avez lu des centaines de CV, vous pouvez les choisir car ils utilisent exactement le même phrasé. Vous ne pouvez pas faire confiance au contenu d'un CV préparé par un professionnel et vous savez que la personne n'a pas fait sa propre préparation. C'est le genre de personne qui comptera sur les autres pour résoudre ses problèmes, le voulez-vous vraiment dans une position de programmation?

Cherchez des éléments qui font que la personne se démarque de ceux que vous choisissez. C'est plus difficile bien sûr avec ceux qui viennent juste de sortir de l'école, mais cherchez des réalisations, des contributions à l'open source, etc.

La prochaine élimination est l'interview téléphonique. Renseignez-vous sur les concepts de base liés au travail que vous avez. Si les gens ne possèdent pas les connaissances de base des concepts dont vous avez besoin, ils ne valent pas la peine de les apporter à un entretien personnel. Les jeunes pensent souvent que c'est injuste car ils peuvent tout rechercher sur Internet, mais la vérité est que je n'ai jamais rencontré de bon programmeur qui devait tout rechercher sur Internet. Vous devriez avoir une certaine connaissance de votre profession que vous n'êtes pas obligé de regarder à chaque fois.

Après l'entretien téléphonique, vous devez choisir les 4-5 meilleurs candidats et les interviewer. Bien sûr, si vous n'avez qu'un ou deux bons candidats, n'ayez pas la peine d'interviewer des personnes que vous avez déjà éliminées. Maintenant, vous allez poser les questions difficiles et vous faire une idée de la façon dont ils abordent les problèmes. Je n’utiliserais jamais le test fizzbuzz car il est trop bien connu pour que les réponses ne vous apprennent rien. Au lieu de cela, créez des problèmes à partir de votre propre base de code. Je pourrais leur donner une exigence et un morceau de code et leur demander si le code répond à l'exigence et, sinon, pourquoi pas et ce qu'ils pourraient faire pour que cela réponde à l'exigence. Je leur demanderais de décrire le problème de programmation le plus difficile qu’ils ont eu à résoudre et quelles mesures ils ont prises pour trouver la réponse. Je voudrais poser des questions techniques plus approfondies. N'oubliez pas que vous essayez de vous familiariser avec leurs compétences techniques, leurs capacités de résolution de problèmes et de débogage, ainsi que leur capacité à s'intégrer à votre équipe existante. Je leur pose aussi des questions dont ils ne connaissent probablement pas la réponse pour juger de la manière dont ils gèrent le stress, c'est un travail stressant, je ne veux pas de quelqu'un qui passe l'interview parce que le stress de son travail est supérieur à celui de l'interview . Je recherche des atouts dans les domaines dans lesquels nous sommes actuellement faibles et notre capacité à travailler en équipe et à se présenter aux clients (nos développeurs traitent beaucoup avec les utilisateurs), votre liste peut être différente. t veulent une personne qui se couche pendant l’entrevue parce que le stress de l’emploi est supérieur à celui de l’entrevue. Je recherche des atouts dans les domaines dans lesquels nous sommes actuellement faibles et notre capacité à travailler en équipe et à se présenter aux clients (nos développeurs traitent beaucoup avec les utilisateurs), votre liste peut être différente. t veulent une personne qui se couche pendant l’entrevue parce que le stress de l’emploi est supérieur à celui de l’entrevue. Je recherche des atouts dans les domaines dans lesquels nous sommes actuellement faibles et notre capacité à travailler en équipe et à se présenter aux clients (nos développeurs traitent beaucoup avec les utilisateurs), votre liste peut être différente.

HLGEM
la source
-1

Il faut donner aux candidats un problème du monde réel à résoudre avec la liberté d'utiliser n'importe quelle technologie.

Si elle sort aux couleurs éclatantes, elle est dedans!

SHOUBHIK BOSE
la source