Comment écrire une annonce pour recruter des dev 27


Je critique souvent les offres d’emploi, mais l’art est difficile, alors voici quelques lignes directrices si cela vous arrive un jour.

Ne mettez pas les RH en avant

Les RH ne doivent PAS rédiger l’annonce. Le moyen de contact ne doit PAS être celui des RH.

Je ne dis pas que les RH ne doivent pas faire partie du processus de recrutement. Mais je recommande qu’ils s’en tiennent à l’administratif et à l’accompagnement de l’équipe technique dans la démarche.

Ils ne sont tout simplement pas qualifiés pour ça.

Ce n’est pas une insulte, c’est un constat que je fais tous les jours. Ils ne sont pas capables d’évaluer un profil technique correctement. Ils recalent trop facilement de bons profils pour délit de sale gueule (courant en info). Ils ne savent pas lire un CV tech, ils vont juste comparer les besoins de l’annonce avec le papier.

Mettez les membres de l’équipe qui va accueillir la recrue comme contact, et demandez leur de rédiger l’annonce.

Cela a de nombreux avantages :

  • Ils se sentent valorisés.
  • Ils sont impliqués dans le choix de leur collègue, l’intégration sera meilleure.
  • Ils peuvent voir des choses lors de l’entretien ou sur un CV qui sort du lot même si ça ne rentre pas dans des cases.
  • Ils ne vont pas écrire n’importe quoi dans l’annonce. Sérieux, quand je lis MailleSQL dans une annonce, j’ai envie de fesser les responsables.
  • C’est moins intimidant pour la personne qui répond à l’annonce. Parler à quelqu’un de son métier met à l’aise, et incite à postuler. Les dev sont parfois peu sociables, il faut leur faciliter cette démarche.

Bien entendu, il est important que les RH les accompagnent dans le processus. Les techos n’y connaissent rien en recrutement. C’est un travail d’équipe. Mais ils doivent être ce qui est mis en avant, le premier filtre, et le dernier mot.

Les infos importantes

Trop souvent je vois des annonces qui ne listent pas les infos essentielles. Voici une liste des choses qui DOIVENT figurer sur l’annonce :

  • Moyen de contact par email ET par téléphone. Nom de la personne qui va répondre, et poste.
  • Missions principales en 3 points : le sujet sur lequel on va travailler, quel rôle on va jouer, et les technos utilisées.
  • Talents requis, humains et techniques.
  • Échelle de rémunération.
  • Conditions de travail : équipe que l’on va intégrer (taille et rôle), localisation géographique du bureau, télétravail possible, etc.
  • Repères temporels : date de l’annonce, date de recrutement souhaitée, durée du contrat.

A l’inverse, supprimez le bruit : expressions à la mode, jargon corporate, formules toutes faites… Les devs sont sensibles à ce genre de chose, et il est facile de passer pour des charlots en voulant rajouter du nutella sur la confiture.

Les trucs à oublier :

  • “leader du marché”, “en forte croissance”, et toute autre auto congratulation. On s’en branle.
  • “projet innovant”, “révolutionner”, “so excited” et autres promesses que vous n’êtes pas capable de tenir. L’enthousiasme, vous le communiquez à l’entretien. Là ça fait vendeur de tapis Apple.
  • “vous êtes passionnés”, “un ninja”, “un killer”. Vous recruteriez quelqu’un pour la compta, vous diriez ça franchement ?
  • Les termes vagues : “taille humaine” (donnez un nombre), “réactifs aux changements” (ça veut tout et rien dire), “challenge” (listez les défis, ne les qualifiez pas).

Évitez que votre annonce ressemble à ça.

Soyez pragmatique

Tous les parents trouvent qu’ils ont le plus beau bébé du monde, mais ils vous les cassent quand ils vous montrent les photos en vous clamant qu’il est fantastique.

Votre boîte pète peut-être du Chanel numéro 5 à vos yeux, mais à moins d’avoir une attractivité incroyable (auquel cas vous n’avez probablement pas besoin de mettre une annonce), tout le monde s’en fout.

Bref, n’exigez pas un bac+x pour votre poste, il n’en a très probablement pas besoin. Mettez uniquement les talents requis techniques et humains. Ceux indispensables. Oubliez la limite d’âge, de diplôme et autres caractéristiques purement sociétales.

La seule chose qui compte, c’est que le mec fasse son job, et ça, il n’y a qu’un moyen de le vérifier : le voir bosser. Donc préparez des tests techniques, et organisez la période d’essai. Souvenez-vous qu’un gars débrouillard se formera sur le tas sans problème en info, c’est l’essence de notre taff.

Enfin, si vous voulez un mec bon, il va falloir se montrer attractif. On lui proposera 80k à Londres pour le même poste, trouvez un moyen de matcher ça.

Et si vous voulez un crack, souvenez-vous qu’il peut avoir 200k aux US. Le fait qu’il soit en France montre qu’il est intéressé par autre chose que l’argent. Cherchez ce que c’est, et tentez de devenir attractif en rapport avec ce point. Il y a bien d’autres choses que du pognon : télétravail, horaires flexibles, matériel de qualité, aide pour la famille s’il a des mômes, responsabilités inhabituelles pour quelqu’un d’aussi jeune, etc.

Mais la plupart du temps vous n’avez pas besoin d’un tueur. Vous avez besoin d’un mec normal, qui fait son boulot normalement. Alors ne faites pas votre processus de recrutement comme si vous cherchiez le prochain Linus Torvalds. Soyez réaliste, et vous trouverez plus rapidement ce dont vous avez besoin.

Je ne veux pas dire qu’il faut recruter n’importe quel boulet. Mettez les (nombreux) incompétents de côté rapidement, et efficacement, sans remord. Néanmoins, descendez de vos grands chevaux. Trop de recruteurs visent bien plus haut que ce dont ils ont besoin, mais aussi de ce qu’ils valent. Et de ce qu’ils peuvent payer.

L’offre et la demande ne sont pas en votre faveur, et ça ne va pas s’améliorer. Je vois tous les jours les résultats désastreux de mauvaises embauches, si vous voulez éviter ça, il faut se remettre en question.

Exemple

Cherche Dev Backend Python

Titre simple, court, qui permet d’être scanné facilement. Votre annonce ne sera pas lue par 99% des chercheurs, elle sera listée sur une page au milieu de centaines d’autres. Pour cette raison, mettez des mots-clés qui permettent facilement de la lister. “cherche”, “dev” et “python” font une query simple pour Google, Twitter, ou le meta moteur des sites de jobs.

Mon équipe de 3 dev a besoin d’un(e) pythonista pour travailler sur notre crawler de pages. La mission sera dans un premier temps de rajouter de nouvelles sources d’information à parser. Cela inclut une batterie de tests et de la documentation. D’autres tâches ponctuelles comme de la correction de bugs de notre ancien système et de la refactorisation des précédents crawlers sont à prévoir.

On commence par le quoi. C’est ce qui intéresse le plus la recrue, il veut savoir ce qu’il va foutre là-bas. Pas besoin de rentrer dans trop de détails, il faut juste en donner assez pour être clair, et pas trop pour l’inciter à appeler pour en savoir plus.

On utilise la première personne, ce qui donne un sentiment de proximité. “pythonista” est un terme spécifique à ce type de dev, montrant que l’annonce a été rédigée par quelqu’un qui s’y connaît.

Nous : LambdaBoite est spécialisée dans la vente de LambdaProduit, notre but étant de satisfaire LambdaBesoin de LambdaTypeDeClient.

Vous : on se fiche de savoir si vous avez 23 ans, portez des piercings ou si vous êtes sur une chaise roulante pourvu que vous livriez les features à temps.

On présente rapidement l’entreprise de manière générale. Un lien vers une page plus détaillée peut être inséré. On note les exigences humaines. Si la ponctualité est importante, mettez le. Ces lignes sont la relation personnelle que vous voulez établir. C’est vous, et lui/elle. C’est aussi le moment de mettre les recrues à l’aise en faisant un contraste. Ici, c’est carte blanche. Si vous avez des valeurs, exposez les. Si vous avez des choses amusantes à dire, dites les. Si ce sont des phrases marketings dictées par le département com interne (“we value…”), faites-les sauter.

Profil technique :
– Capable d’écrire en Python : un décorateur maison, un code téléchargeant des ressources en ligne avec gestion des erreurs, une interface en ligne de commande avec argparse.
– sait créer et déployer un daemon sous Linux Fedora en prod via supervisor.
– sait faire une branche et un merge git.
Vous serez testé à l’entretien.
Sur place vous travaillerez avec :
– de la programmation asynchrone.
– PosGres.
– Le framework Scrapy.
Ces notions ne seront pas testées, vous pourrez les apprendre sur le tas.

Plutôt que d’utiliser des termes vagues comme “bon niveau”, “senior”, etc., donnez des moyens précis de mesurer un niveau. Notez qu’on ne parle pas de diplôme ici. Le meilleur prog que je connais a Bac -2.

On sépare l’indispensable du “est un plus”. Mais plutôt que de le tourner en exigence, on le liste comme quelque chose d’attractif.

Date de recrutement souhaitée : 3 mars
Contrat : CDD dans un premier temps, possible recrutement en CDI.
Rémunération : 30-40k
Contact : wololo@lambdaboite.com ou 0123456789 (Linette Michalon, CTO et votre futur boss)
Adresse : 69 avenue du coin de la rue 69777 La villette sur roustifailles (votre bureau vous y attend)
Site Web : http://lambdaboite.com/travaillez-chez-nous

Nature du contrat, contact avec qui, quoi et où puis lien vers une carte.

On notifie que l’adresse est bien l’endroit où l’on va travailler et pas juste le centre administratif.

Un lien vers plus de détails sur les conditions de travail (temps pour se déplacer, transport, photos des bureaux, liens vers l’équipe, présentation des produits, etc) est bienvenu.

Et oui, rédiger une annonce prend du temps. Recruter correctement prend du temps.

Copier / coller

Comme je sais que les gens aiment bien les templates, voici la version intégrale, prête à être copiée.

Mais je déconseille de l’utiliser telle quelle. Tout comme un CV doit être réécrit pour chaque poste qu’on vise, une annonce doit l’être pour chaque poste qu’on veut pourvoir.

Cherche Dev Backend Python

Mon équipe de 3 dev a besoin d’un(e) pythonista pour travailler sur notre crawler de pages. La mission sera dans un premier temps de rajouter de nouvelles sources d’information à parser. Cela inclut une batterie de tests et de la documentation. D’autres tâches ponctuelles comme de la correction de bugs de notre ancien système et de la refactorisation des précédents crawlers sont à prévoir.

Nous : LambdaBoite est spécialisée dans la vente de LambdaProduit, notre but étant de satisfaire LambdaBesoin de LambdaTypeDeClient.

Vous : on se fiche de savoir si vous avez 23 ans, portez des piercings ou si vous êtes sur une chaise roulante pourvu que vous livriez les features à temps.

Profil technique :

– Capable d’écrire en Python : un décorateur maison, un code téléchargeant des ressources en ligne avec gestion des erreurs, une interface en ligne de commande avec argparse.
– sait créer et déployer un daemon sous Linux Fedora en prod via supervisor.
– sait faire une branche et un merge git.

Vous serez testé à l’entretien.

Sur place vous travaillerez avec :

– de la programmation asynchrone.
– PosGres.
– Le framework Scrapy.

Ces notions ne seront pas testées, vous pourrez les apprendre sur le tas.

———-

Contrat : CDD dans un premier temps, possible recrutement en CDI.
Rémunération : 30-40k.
Contact : wololo@lambdaboite.com ou 0123456789 (Linette Michalon, CTO et votre futur boss)
Adresse : 69 avenue du coin de la rue 69777 La villette sur roustifailles (votre bureau vous y attend)
Site Web : http://lambdaboite.com/travaillez-chez-nous

Sortir du cadre

Ce que je viens de faire là, c’est une annonce générique. La vérité c’est que je n’écrirais pas une annonce comme ça moi-même. Une fois que vous avez maîtrisé ce qui est important pour vous et la recrue, vous pouvez adapter le style pour en faire quelque chose de plus personnel, et souvent plus court. L’idéal est de faire transparaître l’état d’esprit de la boîte via l’annonce.

Bon évidemment si vous recrutez pour une énorme boîte dinosaure type EDF, vous êtes baisé.

Pour finir, n’oubliez pas que l’annonce n’est pas la manière à préférer pour recruter. Le bouche à oreille, les événements techniques (conf, rassemblements, etc.), les sites communautaires et même les restos / bars sont de bien meilleurs sources. Donc mettez une annonce en ligne, puis allez à la Pycon à Lyon la semaine prochaine ou allez boire un verre au Cardinal sur Richelieu à Paname. Ca marche mieux.

27 thoughts on “Comment écrire une annonce pour recruter des dev

  • Block

    Bah dis donc ! Heureusement que les compétences en Scrappy ne sont pas testée, parce qu’il y a un “p” en trop. :p
    Sinon le fait que tu parles de MailleSQL est assez révélateur, pas plus tard qu’aujourd’hui j’ai reçu une offre d’emploi demandant des compétences en “algorytmique”…

  • foxmask

    je zappe les offres qui sont soient mal rédigées (les termes techniques du RH qui pige rien à ce qu’il ecrit), ou qui surlouent le poste avec des “entreprise leader sur son marché”. Les (la plupart aller) chasseurs de têtes veulent de la viande mais finissent dans le spam tant ces annonces sont folles.

    Trop de recruteurs visent bien plus haut que ce dont ils ont besoin, mais aussi de ce qu’ils valent.

    ca coule de source peut-etre mais j’ajouterai qu’ils visent aussi des dev qu’ils ne peuvent s’offrir aussi. genre le débutant bac+2 avec 8ans d’XP en langage XYZ. C’est cohérent C’est poubelle.

  • Sam Post author

    @Block: je fais très souvent la faute de frappe algorytmique. Ca sonne tellement bien !

    @foxmask: et oui, expert dans un domaine poussé, ça douille. La nouvelle feature de wp 4 qui bloque la page tant que tu la modifie est sympas.

  • cendrieR

    J’étais en train de dépiler mes flux rss et j’ai lu ce billet en pensant lire du Sebsauvage. Non, le fait que ça ne parle que de Python et qu’il fasse plus de 10 lignes ne m’a pas particulièrement interpelé…

  • Sam Post author

    Sebsauvage, c’est un peu le joueur du grenier des flux rss :)

  • Glouton

    La vérité c’est que je n’écrirais pas une annonce comme ça moi-même
    L’idéal est de faire transparaître l’état d’esprit de la boîte via l’annonce

    En tout cas merci pour ce petit coup de gueule qui fait du bien à tous…. Pire que les RH, les chasseurs de têtes!! Capablent de te demander si tu peux faire un “Androïde” pour son client. Ca donne des réponses sympathique du genre: “Je n’ai malheureusement aucune compétence en robotique”.

    Le plus banal dans ce genre d’annonces, comme tu le dit, c’est bien entendu les nombreux “incroyables avantages” de la “startup à 1 million de CA”, comme par exemple une table de ping pong et des tickets restaurants, mais surtout le prestige!!! Ca me rend fou bordel. Je suis allé au RemixJob day il y a quelque mois par curiosité, c’était que ça, que du vent de la part des boîtes et des jeunes prêt à se couper un prend pour avoir une allonge supplémentaire par rapport à son voisin pour mendier son super job,

    En espérant que beaucoup d’employeurs lisent ton article, que les choses changent et que la coke et des putes tombent du ciel.

  • Httqm

    Intéressant.
    A rapprocher de http://qz.com/258066/this-is-why-you-dont-hire-good-developers/ Cf un bémol sur les tests techniques lors de l’entretien :-)
    En pratique, je ne me rappelle pas avoir jamais lu la moindre annonce dans ce genre, hélas. Mais des annonces merdiques comme savent en pondre les SSII (“grand groupe leader sur son marché mais à taille humaine – et avec des valeurs – cherche jeune dynamique peu intéressé par l’argent connaissant le C++ et motivé à l’idée d’aller bosser 2 ans à 600 km de sa famille”), oui, des dizaines.
    Est-ce le signe que les RH sont incompétents ?

  • Badeu

    Aux chiottes les annonces, on est jamais mieux servi que par de la cooptation et du réseau… Surtout quand on voit l’étendu du talent produit pas nos belles écoles aujourd’hui, les recrutements sur fiche de poste satisfont de moins en moins les deux partis.

    Ça évite d’avoir des “experts” qui se pointent en entretien et qui au détour d’un petit test technique te montre l’étendue de leur incompétence… (souvenir d’un “expert C” qui te corrige un code en faisant un malloc sur une variable de la pile et qui n’oublie pas de te retourner le tout à la fin de la fonction, ultravomi…)

  • zefr0g

    L’annonce type qui parle de PosGres ! J’imagine qu’il s’agit de PostgreSQL… Pas beaucoup mieux que MailleSQL ;)

  • Sam Post author

    @Httqm: y a un article à écrire sur les tests techniques aussi, parce que tout ceux que j’ai vu sont nuls. Déjà que je donne le droit d’utiliser Internet pendant les exams, je vais pas évaluer du par coeur pour un pro. Genre je me souviens de la signature de __new__ de tête moi, lol.

  • Sam Post author

    @zefr0g: posgres (ou postgres) est un diminutif courant de PostgreSQL. Tout comme on dit sysadmin, adminsys, etc.

  • Xavier

    Ho my god, mais ca paie des clopinette en France.
    Je suis au US, le moindre job administratif dans un bureau paye au minimum 30k.
    Enfin, je sais que ca vous plait, je ne comprend pas.
    Mom seul dileme c’est d’etre embauche, avec un fort accent c’est toujours moins facile.

  • Httqm

    > y a un article à écrire sur les tests techniques aussi, parce que tout ceux que j’ai vu sont nuls.

    Cf point 2 de http://qz.com/258066/this-is-why-you-dont-hire-good-developers/ :

    2. Don’t hire for what they can remember in an interview room

    Ce que “mesurent” les tests techniques pendant les entretiens d’embauche, c’est aussi la capacité du candidat à faire des trucs pendant qu’un inconnu le scrute. Pour une personne normale (pas ultra-timide, pas ultra-introverti(e), …), c’est un test de technique ET de résistance au stress (ce qui peut aussi être intéressant pour le recruteur si le job implique une part de pression), mais dans certains cas, ça peut fausser la donne :
    – faire perdre ses moyens au “monsieur toutlemonde” qui donne son meilleur lorsqu’on lui fout pas des tonnes de pression pour rien
    – inversement mettre en valeur l’as du “tout à l’arrache, tout au dernier moment” qui n’arrive à se sortir les doigts que si on lui colle un max de pression et qui est tout mou sinon.

  • Badeu

    @Sam : Quitte à parler un peu des tests de recrutement, nous on fait ça en deux étapes (avec l’accord du candidat)

    La première étape : un test chez soi, comme ça il a acccès à tout ce qu’il veut. Il a un petit projet à faire qui doit représenter maxi quelques heures de boulot et généralement dans le scope du poste. Et on fait une review ensemble histoire qu’il explique ses choix. Si le mec à des projets perso, on peut se rabattre là dessus.

    Ensuite un test chez nous, où là on cherche à voir comment il réfléchi. Donc on ne va pas tester si il connait le prototype exact des méthodes et fonctions qu’il utilise mais par contre on va le pousser un peu plus dans ses retranchements sur ses connaissances. Par contre on annonce que le but n’est pas de faire un sans faute mais de dresser un périmètre de ses connaissances et son savoir faire. Et comme le but n’est pas de dégommer les gens pour les dégommer, on met un point d’honneur à ce que l’expérience soit agréable et pédagogique, qu’on retienne ou non le candidat.

    La démarche est contraignante pour nous car ça prend pas mal de temps, mais par contre ça nous permet d’avoir une équipe solide aujourd’hui.

  • Sam Post author

    @Httqm: un test bien se fait à la place de bureau qu’il occupera dans l’entreprise, et sans quelqu’un derrière son épaule. Quand on bosse, on le fait pas avec son patron qui regarde son écran pour voir si on fait des fautes de frappes en général.

    @Badeu : c’est une bonne alternative, si l’ambiance est bonne.

  • k3c

    Httqm a écrit
    >>>Est-ce le signe que les RH sont incompétents ?

    Il y a un pléonasme dans cette phrase, pouvez-vous le trouver ?

    Très bon article, à un détail près : les RH ne le liront jamais.

  • k3c

    @ Badeu

    Un de mes potes est très bon en Python, mais n’a aucune mémoire. Si on lui donne accès à la doc Python, et à help(toto), il sait tout faire.
    Il se ferait éjecter à 99% des tests “traditionnels”.

  • cyp

    @k3c
    J’ai déjà participé a des recrutements (mené par l’équipe technique) et pour les test c’est aussi ce qu’on faisait, on laissait un PC avec libre accès au web et à tout ce qu’un dev peut avoir besoin. Idem pour les test on piochait dans les taches type de nos planning et on rajoutait un ou deux bug rigolo également tiré de notre historique.
    Ça parait évident dit comme ça… sauf que quand c’est organisé par des gens qui n’y connaissent rien c’est plus facile d’évaluer un QCM type ou tout autres test dont ils pourront vérifier les réponses sans rien comprendre au suje concerné (et se faire enfler par le premier branleur venu qui aura récupéré les questions à l’avance…) :-/

  • cym13

    Quand on parle d’annonce qui donne envie, je ne peux pas m’empêcher de me souvenir de cette annonce pour un adminsys chez linagora.

    Elle n’a rien de cannonique et j’adore le style !

    (NB: je n’ai aucun lien d’aucune sorte avec linagora)

  • Sam Post author

    “- Il (elle) déteste la fenêtre de confirmation “Êtes-vous sûr de … ?”, car quand il (elle) demande quelque chose à sa machine, il (elle) aimerait bien qu’elle le fasse sans poser de question ; ” LOL

  • Goldy

    En tant qu’étudiant à 42 et futur non diplômé, c’est un article fort agréable à lire :)

  • Donatello

    Je n’arrive pas à me figurer que des gens qui ont comme vous, qui écrivent et lisent des choses de qualité, ne se révoltent pas contre le concept de test technique, jusqu’à laisser des commentaires prônant des tests de plusieurs heures à la maison.

    Pour recruter un mec vous êtes près à faire perdre des demi journées à des dizaines de personnes ? Et faudrait qu’on se plit à la chose en ravalant sa fierté ? Ca sert à cela l’école. Perso je travaille pas gratos pour un mec qui a 80% de chance de pas me sélectionner, parce qu’il y a un packet d’autre comme moi qui font la même chose.

    Bientôt faudra payer pour travailler.

    Ça sert à cela la période d’essai. Non mais.

Leave a comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.