Developpez.com

Le Club des Développeurs et IT Pro

Un algorithme pour dénicher des développeurs talentueux ?

Un chercheur développe un système pour prédire les compétences d'un programmeur

Le 2013-05-01 15:50:24, par Cedric Chevalier, Expert éminent sénior
Gild travaille sur un algorithme pour aider les recruteurs d’emploi à dénicher les meilleurs candidats, les diplômes académiques ne suffisant pas. Dans le monde très compétitif de l’emploi, avoir un bon curriculum académique est un argument de poids lorsqu’on se retrouve en train de postuler à une offre.

Un développeur issu de l’Université de Standford a statistiquement plus de chance de décrocher un emploi à cause de la renommée de son université. Par contre, pour un individu lambda possédant de solides compétences en programmation, mais cependant non détenteur d’un diplôme académique, la situation est très compliquée voire impossible.

Vivienne Ming est un chercheur qui s’est donné pour objectif de rendre le processus d’embauche dans le domaine de l’IT nettement plus ouvert. Sa compagnie Gild travaille sur le développement d’un algorithme qui pourrait prédire si un programmeur serait excellent pour la tâche qui lui sera confiée.

L’algorithme est encore en cours de développement. Aucune date pour la sortie de la version finale n’a été annoncée.

Pour elle, le processus de recrutement employé dans le domaine de l’IT n’est pas satisfaisant du tout. En effet, les recruteurs privilégient les diplômes académiques aux talents réels des candidats. Vivienne dit que son algorithme peut prouver que les employés de la Silicon Valley ne sont pas tous aussi compétents que l’on ne le pense. Des talents cachés sont toujours ignorés.

Gild s’est servie d’une version de son algorithme pour recruter entièrement son personnel. Jade Domiguez faisant partie de celui-ci avait des chances très minces pour séduire un DRH (directeur des ressources humaines). Élève moyen au lycée, n’ayant pas pris la peine d’aller à l’université et autodidacte en programmation, il s’est avéré d’après l’algorithme qu’il avait le meilleur score en programmation de tout le sud de la Californie. De plus, Jade avait une solide réputation sur GitHub. Il est le créateur de Jekyll-Bootstrap. 1 267 développeurs ont d’ailleurs repris son code dans plusieurs projets.

Source : New York Times

Et vous ?

Êtes-vous pour ou contre la vision de Vivienne Ming ? Dans l’un ou l’autre cas, quelles sont alors vos raisons ?
  Discussion forum
37 commentaires
  • curt
    Membre émérite
    Il y a quelques temps de cela un "recruteur" (vous noterez les guillemets) m'a donné un questionnaire à choix fermé. Vingt questions et des cases à cocher.
    Bilan après ingestion de ma copie dans son lecteur optique (façon permis de conduire) ça m'a sorti quatre pages sur moi : Compétences, sociabilité, esprit de synthèse... etc.

    Bref, quatre pages de pures conneries (désolé mais j'ai pas d'autres mots dans mon vocabulaire pour ça).

    Clairement, vouloir confier à une appli le recrutement de personnel relève de l'incompétence du recruteur qui d'ailleurs ne comprenait rien aux questions posées.

    Pour la petite histoire, j'ai été sélectionné et refusé le poste.

    Question : Avec ce type de logiciel, que va t'on faire des recruteurs ? Des demandeurs d'emploi qui subiront la loi du soft'recrutement !!!!

    Curt
  • pseudocode
    Rédacteur
    Un chercheur développe un système pour prédire les compétences d’un programmeur
    Je suis toujours inquiet quand les "chercheurs" se mêlent de programmation...

    Généralement, faut repasser derrière et tout recoder.
  • javan00b
    Membre actif
    L'algorithme est probablement défectueux, je n'ai recu aucun appel téléphonique.
  • pmithrandir
    Expert éminent
    Envoyé par Chauve souris
    On trouve encore des c**s pour passer des tests ?
    Dans notre processus de recrutement, on avait des tests de programmations.

    Je n'ai jamais vu quelqu'un refuser de les passer.

    Et ca nous a permis 3 choses :
    - éliminer des candidats très bon a l'oral, mais dont les connaissances brutes étaient très faible, voir des personnes qui n'utilisaient pas un clavier souvent.(pour une fille, on aurait dit une grand mère devant sont clavier, en train de chercher les lettres a chaque fois)
    - Rattraper des gens pas bon a l'oral, mais qui devant un pc étaient bien plus à l'aise.

    On avait 4 épreuves techniques :
    - un algo très basique(10 minutes) : on regardait comment la personne réagissait, est ce qu'elle se jette sur le clavier,demande une feuille, le réussit du premier coup, arrive a debugger sans executer le programme, ...
    - un QCM sur la techno en 10 questions : peu intéressant
    - un questionnaire sur les concepts objets / d'analyse : suivi de 20 minutes de discussions pour approfondir sur les réponses données.
    - un algo très complexe qui prenait 30-45 minutes : pour els senior uniquement à la fin, pour voir comment ils réagissaient devant un algo impossible ou presque a réaliser dans le temps imparti. et quelles étaient leurs hypothèses pour le finir. Surtout, on leur donnait des conseils, et on voulait voir qui arrivait a les suivre. 50% des dev ont sauté les question 1 et 2 très simple pour passer a la 3 directement... et se sont planté arce qu'ils n'avaient pas vu que les 2 premières questions étaient des étapes pour faire la 3ème.

    Donc oui, on fait faire encore des tests, et je ne vois pas pourquoi on arrêterait. Par contre, un entretien me prend 2h30 de mon temps avec la personne.
  • anykeyh
    Membre confirmé
    Après il y a aussi un risque de voir les grosses boîtes s'accaparer les meilleurs devs du monde et pour finir les startup risquent d'avoir du mal à trouver la perle qui fera le succès de leur projet.
    La recherche d'emploi n'est pas à sens unique, et je connais beaucoup de personne qui prefere travailler dans une start-up qu'une grosse boite, alors pas de soucis pour trouver la perle rare ;-)
  • Miistik
    Membre émérite
    Une petite remarque.

    On a beaucoup étudié la complexité des algorithmes.

    Maintenant, on cherche à trouver les meilleurs par un algo.

    Qu'en est-il de la complexité de l'être humain ?

    Peut-on simplement juger quelqu'un sur ces compétences et ainsi affirmer qu'il est le meilleur sur ce poste.

    Je pense qu'un tas de variables peuvent faire de quelqu'un l'un des meilleurs et ce n'est pas que les compétences et heureusement
  • Neckara
    Inactif
    Un algorithme pour trouver des personnes compétantes ?
    Bah, suffit de regarder le nombre d'étoiles sur DVP

    Envoyé par Gugelhupf
    Je vois typiquement le genre de logiciel.

    Rechercher si le programme est bien codé (façon Jenkins) :
    • Indentation
    • Présence de commentaire
    • etc...
    Il existe plusieurs indentations possibles, est-ce qu'il faut alors pénaliser le programmeur qui indenterait autrement que l'indentation prévue par le logiciel ?
    Ce n'est au final que le fait de pouvoir suivre une consigne données par l'entreprise, pas vraiment une preuve de compétance.

    Envoyé par Gugelhupf
    Si langage spécifique comme Java, tester présence des conventions :
    • Nom des classes commençant par une Majuscule, nom des instances et méthodes commençants par une minuscule...
    • get/set pour les accesseurs et mutateurs, et "is" pour les booléen.
    • etc...
    Là encore, c'est juste suivre des consignes et puis rien que pour les set/get, on a déjà de grands débats sur le sujet, sans compter aussi quelques conventions qui ne sont pas toujours très suivies comme la notation hongroise et puis chaque entreprise a sa propre petite "convention".

    Envoyé par Gugelhupf
    Effectuer des moyennes par rapport à ce qui est demandé (intervalles)
    • Nombre de fichier et classe.
    • Nombre de ligne écrit par fichier.
    • Nombre de lignes écrit par méthode ou fonction.
    • Nombre d'héritage effectué par concept.
    • Présence de design pattern.
    • etc...
    Je pense que cela pourra exclure quelques mauvais programmeurs, mais pas plus. Comment peut-on juger la qualité de travail entre deux programmeurs avec de telles moyennes ?

    Envoyé par Gugelhupf
    Performances
    Compilation: test rapidité, consommation CPU et mémoire.
    Je pense que les performances passent vraiment au second plan, mieux vaut un programme lisible et facilement reprennable qu'un programme super-optimisé qu'il faudra reprendre à 0 car incompréhensible.
  • rambc
    Membre chevronné
    Que se passera-t-il si l'algorithme appliqué à son concepteur le juge peu compétent ? Encore une idée à la c... .
  • gangsoleil
    Modérateur
    Bonjour,

    Le diplome ne garantit rien, c'est evident pour tout le monde. Mais c'est normalement une garantie de connaissances (qui ne sont pas des competences), et c'est pour ca que tout le monde s'en sert de base (en France comme aux USA, comme le dit si bien Tesla).

    Un algorithme pour trouver des gens competents, pourquoi pas. Mais il ne faut pas oublier qu'un ensemble de gens ultra-competents, ca ne fait pas du tout la meilleure equipe : ces gens peuvent ne pas savoir travailler ensemble, ne pas savoir s'ecouter, ...

    Je suis desole pour Mme Ming, mais je lui laisse son algorithme, et je retourne au bon vieil entretien technique d'embauche par le manager/chef de projet avec des membres de l'equipe en plus.
  • pcaboche
    Rédacteur
    Envoyé par Cedric Chevalier
    Gild travaille sur un algorithme pour aider les recruteurs d’emploi à dénicher les meilleurs candidats, les diplômes académiques ne suffisent pas
    Vu les solliciations que je reçois, j'ai surtout l'impression que les recruteurs actuels utilisent des scripts à base de "grep" (la commande Unix permettant de faire de la recherche textuel).

    En gros, j'imagine que leur algorithme de recherche ressemble à ça :

    Code :
    1
    2
    3
    4
    5
    6
    7
    1. Saisir l'ensemble des mots-clef demandés par l'employeur, que ce soit par techno, secteur ou poste (ex: c++, Java, SQL, transports, chef de projet...)
    
    2. Pour chaque mot-clef, faire une recherche dans la base de CV ("grep")
    
    3. Pour chaque CV, compter le nombre de mots-clef trouvés (avec éventuellement une pondération par mot-clef)
    
    4. Trier les résultats par score décroissant, et contacter les profils correspondants, dans cet ordre
    Pour résumer, j'aime bien l'expression "le recruteur qui utilise grep".

    Bien sûr, ils pourraient employer une toute autre technologie, c'est juste que ça sonnent beaucoup mieux que "les recruteurs qui utilisent FULLTEXT / GROUP BY / ORDER BY SUM()"...

    C'est certes assez caricatural, mais à mon avis je ne dois pas être très loin de la réalité. En effet, vu que la plupart des chasseurs de têtes ne comprennent strictement rien à la technologie (c'est ce que j'ai pu constater à nombreuses reprises), ils se rattrapent comme ils peuvent (le plus simple étant de comparer les mots-clef du CV avec ceux de la demande du client).

    Le plus drôle, c'est quand on reçoit des solicitations pour des offres qui ne correspondent pas du tout à notre profil. Dans ces moments là, j'aime à penser qu'ils n'ont aucun profil correspondant avec l'offre (genre, le profil qui apparaît en tête n'a que 10% de correspondance ), mais comme:
    1. ils sont aux abois et n'ont rien d'autre de plus urgent à faire (parce que le marché est au creux de la vague), ou bien:
    2. parce qu'il faut bien trouver une excuse pour démarcher certains candidats

    , alors ils contactent quand même les candidats en question, on ne sait jamais.