Trouver un nouveau poste de développeur logiciel
(henrikwarne.com)- Un développeur logiciel licencié fin 2023 a contacté 30 entreprises en cherchant un nouveau poste, avec 8 refus, 6 absences de réponse et 3 offres, confirmant que le marché était plus tendu qu’attendu
- Les principaux canaux de recherche ont été Open to work sur LinkedIn, une liste d’entreprises déjà ciblées et des sites de mise en relation pour développeurs comme Demando ; la recherche de postes en remote et les anciennes annonces étaient difficiles à juger fiables
- Le processus de recrutement classique était long, avec 4 à 5 étapes allant du recruteur au manager, aux entretiens techniques, au test à faire chez soi, puis à l’entretien avec le CTO ou le fondateur ; les tests de code à rendre demandaient bien plus de temps que ce qu’annonçaient les entreprises
- Des réponses STAR pour les questions comportementales, des snippets Python et Go, Leetcode, GoLand, ChatGPT et GitHub Copilot avaient été préparés, mais en live coding, le stress faisait nettement baisser les capacités de réflexion par rapport à la normale
- Dans un marché plus difficile, les exigences d’expérience par langage, la lenteur des réponses, la vérification de la fourchette salariale et la coordination de plusieurs processus ont pesé sur la négociation des offres et le choix final
Situation juste après le licenciement et état d’esprit de préparation
- Fin octobre dernier, 17 personnes ont été licenciées dans l’entreprise, dont 8 développeurs
- Quelques minutes après un appel Zoom avec le CEO, tous les accès aux ressources de l’entreprise ont été coupés
- Impossible de pousser plusieurs modifications en cours
- Difficile de dire correctement au revoir aux collègues
- Plusieurs collègues ont pris contact via LinkedIn, et certains ont organisé des appels Zoom pour parler de la situation et permettre de faire leurs adieux
- Les précédents changements de poste s’étaient surtout faits de son plein gré alors qu’il était encore en poste, en terminant pendant le préavis standard de 3 mois en Suède avant de rejoindre une nouvelle entreprise
- Le blocage immédiat des accès a aussi permis de consacrer tout son temps à la recherche d’emploi tout en continuant à être payé
- Avec l’idée qu’il faut pouvoir retrouver un travail à tout moment, une liste des entreprises où il aimerait travailler était tenue à jour, ainsi que de bonnes relations avec des recruteurs déjà contactés par le passé
Canaux de recherche d’emploi
-
Utilisation de LinkedIn
- Le statut Open to work de LinkedIn a été modifié de « Flexible, I am casually looking » à « Immediately, I’m actively applying »
- La visibilité a été limitée aux recruteurs plutôt qu’à tous les membres LinkedIn, et le cadre photo vert #OpenToWork n’a pas été utilisé
- Après ce changement, environ 5 recruteurs par jour ont pris contact durant la première semaine
- La qualité des rôles proposés était similaire à d’habitude, mais la fréquence des messages était nettement plus élevée
- En consultant la liste des entreprises ciblées, l’onglet Jobs des pages entreprise LinkedIn et les pages carrières de chaque société étaient examinés ensemble
- LinkedIn était pratique pour voir le nombre de candidats, la date de publication de l’annonce, les contacts internes éventuels et la personne ayant publié l’offre
- Des recherches par mots-clés comme « Golang Stockholm », « Recommended for you » et « Jobs where you’d be a top applicant » de Premium ont aussi fait remonter quelques annonces intéressantes
- La recherche en full remote de LinkedIn n’était pas très fiable
- Par exemple, des postes limités au remote au Royaume-Uni apparaissaient dans les résultats
- Il aurait été préférable de pouvoir distinguer remote en Suède, remote dans l’UE et remote mondial
- Il était difficile de ne voir que les annonces récentes et il fallait continuellement faire défiler des offres déjà vues
- Une autre méthode a ensuite été trouvée via Google en limitant la période à la semaine passée et en utilisant des requêtes comme
golang fully remote site:linkedin.com/jobs - Environ 15 recruteurs déjà contactés via LinkedIn par le passé ont aussi été recontactés, sans résultat
- Des InMail ont également été envoyés à des managers qui recrutaient, mais sans réponse
-
Autres sites et méthodes de recherche
- Le site suédois de mise en relation entre développeurs et employeurs Demando a été utilisé
- Un profil détaillant les compétences et le salaire minimum souhaité a été activé, et une entreprise ayant pris contact via ce site a ensuite fait une offre
- D’autres annonces d’entreprises non vues sur LinkedIn ont aussi été trouvées sur Demando, et l’une d’elles a également mené à une offre
- RemoteOK a été consulté brièvement, mais aucune annonce intéressante n’y a été trouvée, avec une qualité globale jugée inférieure à celle de LinkedIn
- Efinancialcareers proposait très peu de rôles en full remote et la recherche y était difficile
- Le fil mensuel Who’s hiring de Hacker News a aussi été parcouru, mais il était difficile d’y trouver des éléments pertinents
- Une autre méthode consistait à chercher sur Google des expressions comme « competitor to » ou « alternative to » combinées avec le nom d’une entreprise pour identifier des sociétés similaires
Suivi des candidatures et expérience des réponses
- Tous les recruteurs demandaient un CV, même quand les informations étaient déjà proches de celles du profil LinkedIn
- Les candidatures directes auprès des entreprises demandaient elles aussi presque toujours un CV, et beaucoup exigeaient également une lettre de motivation
- Les lettres déjà rédigées étaient conservées, puis copiées et adaptées à partir de la version la plus proche lors d’une nouvelle candidature
- Une feuille Excel a été créée pour suivre les candidatures, avec le nom de l’entreprise, la date de candidature, le recruteur ou le contact et des notes générales
- Elle comptait 30 entrées au total, sans que toutes ne deviennent des candidatures formelles
- Parmi les entreprises contactées, 6 n’ont jamais répondu
- Certaines annonces avaient déjà plus d’un mois
- Si une annonce n’est plus valide, elle devrait être retirée
- L’absence de réponse n’était pas considérée comme très grave s’il n’y avait eu aucun échange avec quelqu’un de l’entreprise, mais un silence après entretien dégradait fortement l’image de la société
- Une entreprise avait indiqué après l’entretien initial avec le recruteur qu’un entretien avec le manager serait planifié, puis plus rien
- Un email a été envoyé deux semaines plus tard sans réponse, puis un autre deux semaines après pour indiquer qu’il n’y avait plus d’intérêt, ce qui n’a suscité qu’une excuse tiède
Outils payants et supports de préparation
- LinkedIn Premium a été payé pendant un mois, mais s’est révélé moins utile qu’attendu
- Il n’était pas certain d’avoir réellement mieux vu qui consultait le profil, et la valeur pour la recherche d’emploi est restée limitée
- Quelques InMail ont été envoyés, sans grand effet
- « Jobs where you’d be a top applicant » n’a pas non plus apporté de valeur décisive
- L’abonnement a été annulé après un mois, avec une proposition d’extension de 2 mois au prix d’1 juste avant l’annulation
- Comme la recherche visait des postes en Go, une licence GoLand a été prise pour deux mois afin de s’entraîner dans un environnement familier
- GitHub Copilot a aussi été essayé, mais peu utilisé afin de pouvoir clairement montrer en entretien que le code était bien écrit soi-même
- L’abonnement existant à ChatGPT s’est montré utile pour générer rapidement l’ossature de base demandée dans plusieurs tests à faire chez soi
- La version payante de Leetcode valait le coup pour la préparation aux entretiens grâce aux explications disponibles
- Une entreprise utilisant le test de QI d’Alva Labs, le Alva Logic Cram Course de 12minprep a été acheté pour s’entraîner
- Cette préparation préalable a donné l’impression d’avoir nettement amélioré les résultats au test
Un marché plus tendu et des exigences d’expérience par langage
- Par rapport aux dix années précédentes, le marché du recrutement des développeurs semblait clairement plus difficile
- Il y avait encore beaucoup d’annonces auxquelles postuler, mais le nombre de candidats par poste paraissait plus élevé qu’avant
- Sur LinkedIn, beaucoup d’annonces affichant le nombre de candidats montraient plus de 100 candidats
- Le nombre plus important d’entreprises ne répondant pas, même pour des rôles jugés adaptés, renforçait aussi l’idée d’un marché plus difficile
- Les exigences d’expérience sur un langage précis se sont renforcées
- Par le passé, des postes dans un langage donné avaient déjà été commencés sans expérience préalable en Python ou en Golang, tout en devenant rapidement productif
- Plusieurs langages impératifs sont considérés comme suffisamment proches pour permettre une adaptation rapide
- Mais beaucoup de recruteurs transmettaient l’exigence ferme de l’entreprise de 2 à 3 ans d’expérience sur un langage spécifique
Processus d’entretien et méthode de préparation
-
Processus et charge de planning
- Un processus de recrutement typique comportait 4 à 5 entretiens
- entretien initial avec un recruteur
- entretien avec le hiring manager
- 1 à 2 entretiens techniques
- test à faire chez soi ou live coding
- et parfois entretien avec un product manager, le CTO ou le fondateur
- Les rôles en remote se déroulaient via Zoom, Meet ou Teams
- Les postes locaux à Stockholm demandaient le plus souvent des entretiens en présentiel
- Avec les trajets, un seul entretien en présentiel pouvait prendre une demi-journée
- À l’inverse, plusieurs entretiens en remote pouvaient tenir dans une même journée
- Le présentiel avait toutefois l’avantage de mieux faire sentir les personnes en face et l’ambiance des bureaux
- Un processus de recrutement typique comportait 4 à 5 entretiens
-
Questions comportementales et préparation technique
- Un document Word existant intitulé Interview Tips servait à rassembler les éléments à relire avant un entretien
- Cette fois, une section Behavioral Questions y a été ajoutée pour préparer des questions comme « Parlez d’une fois où vous étiez en désaccord avec un collègue »
- Les réponses étaient préparées selon le cadre STAR : Situation, Task, Action, Result, Reflection
- La liste de questions Rock the Behavioral Interview de Leetcode a été utilisée pour organiser les exemples à mobiliser
- Aucun entretien n’a été perdu cette fois à cause des questions comportementales
- De courts snippets de code Python et Go ont aussi été ajoutés au document
- Le but était de faire remonter rapidement à l’esprit des patterns et idiomes fréquents
- Tous les snippets ont été exécutés pour vérifier l’absence d’erreurs et les sorties correspondantes ont été incluses
- La vidéo de Gergely Orosz, Confessions from a Big Tech Hiring Manager: Tips for Software Engineering Interviews, a également été regardée
- L’idée retenue pour les entretiens techniques était qu’il fallait se montrer curieux, collaboratif et poser des questions
Expérience des entretiens et des tests de code
-
Entretiens généraux
- Lors des premiers entretiens, le fait d’avoir été licencié pour des raisons de réduction des coûts dans l’entreprise précédente était indiqué ouvertement
- Cela ne semble pas avoir joué en sa défaveur
- Les échanges avec les recruteurs ou les managers ne suscitaient pas de nervosité, car le type de travail recherché et ses points forts étaient clairs
- Même les entretiens techniques sans code ne provoquaient pas de stress sur les sujets familiers, et un seul a été raté
- À une question sur la valeur à donner à un timeout de connexion à la base de données, un chiffre trop élevé a été donné, ce qui a conduit au rejet
-
Tests à faire chez soi
- Il y avait davantage de tests à faire chez soi que lors de la dernière série d’entretiens, quelques années plus tôt
- Ces tests étaient moins stressants que le live coding, mais demandaient beaucoup plus de temps
- Quelle que soit l’annonce de l’entreprise, chaque test a été estimé à au moins 6 heures
- Pour l’entreprise, exiger un exercice au début coûte peu ; pour le candidat, cela représente un gros investissement de temps avec un retour incertain
- Au total, 5 tests à faire chez soi ont été réalisés
- 2 en Java
- 2 en Python
- 1 en Go
- Environ 1,5 ont été considérés comme des échecs
- Dans l’exercice Go, une solution fonctionnelle a été rendue, mais sans tests
- Ce n’était pas une exigence explicite, mais il a été estimé qu’il aurait fallu en ajouter
- Il n’était pas clair que l’exécution serait répétée, mais l’absence de cache et donc d’optimisation des performances a aussi contribué à l’échec
- Dans un autre exercice, les tests existants passaient, mais deux erreurs liées aux entrées vides sont apparues dans des tests cachés
- En situation réelle, des tests supplémentaires auraient été écrits directement
- Comme une offre a malgré tout été reçue de cette entreprise, cela a été compté comme un demi-échec
-
Live coding
- En live coding, le stress donnait l’impression que le cerveau ne fonctionnait plus qu’à 50 % de son niveau habituel
- Sur cette série, 3 exercices de live coding ont été réussis et 2 ratés
- Le premier échec concernait un exercice de programme d’échecs limité
- Seuls deux types de pièces étaient à gérer, mais il fallait aussi prévoir la structure du projet, le modèle de données, les déplacements valides et les tests
- Tout devait être rendu en 2 heures, ce qui était très serré
- L’essentiel fonctionnait, mais toutes les fonctionnalités n’ont pas pu être terminées et le code de déplacement contenait un bug
- Dans un autre échec, les tests du dépôt de départ fourni par l’entreprise ne fonctionnaient pas et la configuration de l’environnement a aussi pris du temps
- Il a fallu poser plusieurs questions sur le comportement attendu de la logique, et au final cela a pris trop de temps
- Tous les tests de live coding ont été passés sur l’ordinateur personnel avec l’IDE habituel et partage d’écran sur Zoom
Négociation salariale et choix final
- Au début, annoncer un chiffre salarial trop élevé a parfois conduit à l’annulation de l’entretien
- Ensuite, la méthode a changé : communiquer les salaires des 4 dernières années pour indiquer indirectement le niveau souhaité
- Si l’entreprise ne pouvait pas s’aligner, la réponse était qu’étant actuellement sans emploi, il n’y avait pas de minimum absolu et que tout dépendait de la proposition
- Cette approche permettait de poursuivre le processus et de laisser ouverte la possibilité d’une meilleure offre plus tard
- Une fois la première offre reçue, négocier devenait plus facile
- Demander la fourchette salariale du poste donnait une réponse étonnamment souvent
- C’était utile pour mettre fin tôt aux processus avec les entreprises situées sous un niveau acceptable
- Une entreprise plaisait suffisamment pour que la rémunération ne soit pas vérifiée à l’avance, mais après plusieurs entretiens et un exercice, l’offre s’est révélée très faible
- Cela a été considéré comme une perte de temps qui aurait pu être évitée
- La perception des salaires des développeurs à Stockholm s’est aussi affinée
- En Suède, on raisonne sur le salaire mensuel
- Il faut aussi regarder si la contribution retraite est incluse ; elle l’est le plus souvent, avec parfois 10 à 15 % implicites en plus
- Un salaire de développeur très moyen se situe autour de 55K à 65K SEK par mois
- 80K SEK ou plus par mois est plus difficile à obtenir, mais pas impossible même sur un marché tendu
- Certaines entreprises proposent aussi options, equity ou bonus en plus du salaire
- Au moment du choix final, l’intérêt du produit et de l’entreprise, les langages utilisés, ce qu’il y a à apprendre et les collègues comptent aussi
Résultat final et enseignements
- Une entreprise avançait de manière très positive et a demandé deux références, mais a choisi un autre candidat dès le lendemain
- Le fait d’avoir mobilisé le temps de deux référents a été décevant
- La recherche d’emploi relève au fond beaucoup d’un jeu de nombres
- Même en échouant à de nombreux entretiens, il suffit d’une entreprise qui fonctionne pour retrouver un poste
- Au final, il y avait 3,5 offres comme options
- Une entreprise n’a pas formalisé d’offre officielle, mais elle semblait devoir proposer moins que les deux offres déjà reçues, d’où le comptage en demi-offre
- Les calendriers de plusieurs entreprises ont été ajustés pour que leurs processus se terminent à peu près au même moment
- Certains entretiens ont été repoussés et d’autres accélérés autant que possible
- Le fait d’avoir plusieurs offres a nettement renforcé la position de négociation, et le poste obtenu au final est un rôle de développeur senior chez Swissblock, réunissant à la fois un travail intéressant et une bonne rémunération
- Trouver un nouveau poste demande énormément de travail, au point d’avoir encore des préparatifs à faire le week-end et de ne pas vraiment pouvoir se reposer
- Avec 4 à 5 étapes d’entretien, les exercices, la recherche sur les entreprises, la coordination des agendas et les refus, le processus peut prendre plusieurs mois
- Il est difficile d’évaluer soi-même la qualité d’un entretien, et les refus sont souvent surprenants
- Avoir d’anciens collègues avec qui discuter du processus de recherche a été d’une grande aide
- Des recruteurs qui répondent vite sont essentiels pour inspirer confiance envers l’entreprise
- Quand un collègue est licencié, le contacter via LinkedIn ou d’autres canaux pour lui dire au revoir compte énormément pour la personne concernée
1 commentaires
Avis sur Hacker News
Ingénieur ML dans une FAANG, j’ai cherché passivement à changer de poste ces six derniers mois, mais la réalité n’avait rien à voir avec l’idée reçue selon laquelle les entreprises se rueraient sur moi avec des valises de cash
Grâce à mon profil, je reçois beaucoup de messages de recruteurs, mais plus de la moitié disparaissent en cours de route, et l’intérêt des recruteurs n’est qu’un indicateur flatteur pour l’ego s’il ne se transforme pas en offre
Il y a peut-être de la demande, mais les critères d’embauche sont aussi très élevés, et les entreprises exigent une expérience sur la pile technique exacte qu’elles utilisent. Il n’existe que quelques grands frameworks ML, mais le simple fait de n’en maîtriser qu’un seul m’a fermé beaucoup de postes, et une entreprise m’a rejeté parce que j’avais 6 ans d’expérience sur une technologie précise alors qu’elle exigeait au minimum 8 ans
Jusqu’ici, le résultat, c’est 1 refus et seulement 2 propositions avec un niveau revu à la baisse vers senior, alors que je visais Staff+. Côté rémunération, le plafond était le plus souvent à environ la moitié de ma compensation totale actuelle, et très peu d’entreprises pouvaient offrir davantage
Globalement, le marché des ingénieurs ML se porte mieux que celui des ingénieurs logiciel, mais cela n’a absolument rien à voir avec la surchauffe de 2020 à 2022
Les ingénieurs Google sont encore généralement perçus comme du haut niveau, et ceux d’Apple ont aussi une bonne réputation, mais se retrouvent rarement sur le marché. Les ingénieurs Facebook/Meta sont souvent au-dessus de la moyenne, mais traînent une image de compétiteurs agressifs formés à la promotion interne
Si quelqu’un a du mal à retrouver un poste, on pense facilement à Amazon. Le pipeline agressif d’embauche puis de PIP chez Amazon a, au moins dans mon expérience, ruiné sa réputation, et les anciens ingénieurs Amazon avec qui j’ai travaillé ces dernières années étaient souvent en dessous de la moyenne
Aujourd’hui, parler de “FAANG” comme d’un bloc n’a plus vraiment de sens, et les attentes envers les ingénieurs issus de chaque entreprise diffèrent sensiblement. En plus, elles attirent toutes moins l’attention qu’il y a quelques années, et cela s’est déplacé vers une logique où l’on valorise moins les capacités d’ingénierie pures que l’aptitude à survivre dans une très grande entreprise
Les menottes dorées sont bien réelles et intentionnelles, et peu d’entreprises ont des problèmes assez importants pour justifier, en termes de ROI, une rémunération au niveau FAANG
En plus, les stacks internes des FAANG regorgent d’excellents outils maison qui n’existent pas ailleurs, ce qui fait naître un doute : “cette personne est-elle experte, ou experte pour bien utiliser la stack interne de Google ?” La question est aussi de savoir si elle sera productive immédiatement, ou s’il faudra d’abord recréer ces outils
Tout le monde veut pouvoir dire à son CEO ou à ses investisseurs qu’il a débauché des talents de FAANG, mais rares sont les entreprises qui ont réellement le budget ou le contexte précis pour entrer dans une surenchère
Quand je recrutais des ingénieurs ML comme manager en 2020, ce problème existait déjà, et dans les entreprises de taille intermédiaire, on se heurte souvent à la question : “qu’est-ce qu’on est censé faire exactement d’un ingénieur ML ?” Si ce n’est ni un data scientist ni un ingénieur logiciel généraliste, il est difficile de créer un rôle intermédiaire, et si l’équipe data n’est pas familière avec les workflows et outils d’ingénierie, un ingénieur ML peut mettre en place des systèmes propres et versionnés sans que cela compte comme KPI, donc cela finit facilement ignoré
Sauf si l’on cherche à faire exactement le même travail dans une autre entreprise, il faut se préparer en entretien à paraître expert même sur des technologies avec lesquelles on souhaite seulement devenir à l’aise une fois embauché. Dans certains cas, il peut même falloir un peu enjoliver son expérience
Au fond, l’expertise devrait tenir davantage à une manière de penser qu’à une liste de faits connus, mais le marché du recrutement ne le voit pas ainsi ; il faut donc savoir bien se vendre, quitte à compenser ensuite par de l’étude le soir
De plus, les niveaux ne se transposent pas tels quels d’un environnement à l’autre. Si on trouve un poste qui nous correspond, on peut remonter ensuite, et s’obséder sur le niveau ou la rémunération peut au contraire réduire ses options
J’ai l’impression d’être nettement sous-évalué au vu de mon expérience et de mes responsabilités, et pourtant les rémunérations et avantages des offres récentes sont à un niveau affligeant
Contrairement à ce qu’on dit souvent dans l’UE, beaucoup d’offres mettent en avant le “hybride” et la “flexibilité”, mais ce n’est qu’en fin d’entretien qu’on apprend qu’il faut venir 3 à 4 jours par semaine et que les réunions en présentiel sont préférées pour des raisons de “collaboration”
On parle d’ajustement à l’inflation, mais les salaires baissent, et on a l’impression que l’UE adopte la surchauffe et l’instabilité à l’américaine sans jamais rattraper le niveau de salaire
Par exemple, il sera difficile d’avoir accès à davantage de puces, et il est très probable qu’on puisse lancer moins d’expériences et réduire le débit dans un environnement où les ressources de calcul sont déjà tendues
Je pense que les difficultés actuelles de recrutement aux États-Unis ont un aspect plus malveillant qu’un simple durcissement des entreprises
D’abord, les entreprises américaines apprennent à recruter des équipes offshore à moindre coût. Je reçois chaque semaine plusieurs e-mails proposant des équipes en Amérique latine ou en Inde à bas tarif, et dans ma précédente entreprise, j’ai directement vu une forte réduction des effectifs américains/nord-américains remplacés par des équipes en Inde pour de simples raisons de réduction des coûts
Ensuite, il semble aussi y avoir une dynamique où les entreprises américaines cherchent à reprendre le contrôle que les salariés avaient gagné pendant la période Covid
Je viens à peine de commencer ma recherche d’emploi et c’est déjà frustrant : disparition des recruteurs, absence de réponse, ou remarques du type “vous n’avez pas assez d’années d’expérience par rapport aux exigences”. Par exemple, exiger 3 ans d’expérience sur .NET 6
J’ai regardé aujourd’hui les principaux concurrents : l’un avait un grand nombre de postes de programmation ouverts au Mexique, et un autre recrutait surtout en Inde
Les emplois d’ingénierie aux États-Unis ne seront pas pris par ChatGPT, mais par des développeurs moins chers dans d’autres pays. Beaucoup d’entre eux ont un niveau d’anglais et de programmation largement suffisant, je le sais pour avoir travaillé avec eux
Si le travail peut se faire à distance, alors quelqu’un n’importe où dans le monde peut faire le même travail pour un cinquième du coût
Je n’ai pas suivi le conseil, parmi les « éléments clés d’un microsite de recherche d’emploi », d’inclure une photo de profil professionnelle
Après avoir travaillé comme photographe, j’ai appris qu’il vaut largement mieux être derrière l’appareil à appuyer sur le bouton, et il me semble qu’aux États-Unis, une candidature ne devrait pas contenir de photo
À cause d’une longue histoire de discriminations et des préjugés qui subsistent encore, mieux vaut même retirer le nom si possible, puisqu’il peut aussi donner des indices sur le genre, la race ou l’origine ethnique, la caste ou le milieu socio-économique
La photo était un élément facile à retirer du processus de recrutement, et elle avait effectivement disparu aux États-Unis, mais des sites de type « réseaux sociaux » comme LinkedIn ont réintroduit la photo de profil dans le CV
Cela peut sembler étrange, mais dans beaucoup de pays européens, la photo de profil figure très visiblement sur le CV. Cela m’a choqué quand j’ai commencé à recruter pour des postes dans des bureaux de l’UE, mais c’est ainsi que cela se fait localement
J’en ai été d’autant plus surpris qu’on entend souvent dire que l’Europe est en avance sur les États-Unis sur les questions de discrimination, alors qu’en réalité les CV comportaient non seulement une photo de profil, mais aussi l’état civil. Quand j’ai demandé à un recruteur local de supprimer ces informations, on m’a regardé comme si j’étais bizarre
Certaines personnes indiquent aussi « célibataire » ou « marié(e) » sur leur CV, même si j’ai entendu dire que cela se fait moins aujourd’hui
Afficher une apparence soignée et professionnelle fait réellement une différence pour les employeurs, et une entreprise peut légalement licencier quelqu’un ou ne pas l’embaucher au motif qu’il ne respecte pas ce type de standards
Je ne doute pas que cela demande des efforts, même pour un développeur expérimenté comme l’auteur, mais 3 offres pour 30 candidatures, c’est un résultat de rêve
Pour la plupart des profils en début de carrière, il faut probablement envoyer plus de 100 candidatures pour décrocher quelques entretiens et, avec un peu de chance, une offre
Par rapport à la moyenne des développeurs aux États-Unis, ses attentes étaient assez modestes
J’ai postulé dans 6 entreprises, passé 4 entretiens et reçu 2 offres, et j’étais en pratique junior tout en postulant à des postes mid-level
J’aime penser que, comme j’avais peu d’entretiens, j’ai pu y consacrer toute mon énergie et toute mon attention, mais c’est peut-être simplement un biais du survivant
Ensuite, sur 3 entretiens, j’ai reçu 2 bonnes offres, avec une rémunération au-dessus du 50e percentile pour des postes de software engineer aux États-Unis. Je ne pense pas avoir écrasé les entretiens grâce à une intelligence exceptionnelle
Je n’ai pas l’énergie pour une stratégie de candidatures en mode jeu de chiffres, je déteste les entretiens, et en live coding mon cerveau se bloque. Donc je ne postule que là où j’ai vraiment envie de travailler, et où l’entreprise est aussi susceptible d’accueillir favorablement un développeur ordinaire qui collabore bien
Je peux être sincèrement intéressé même par un travail ordinaire, et avoir des opinions tranchées tout en les changeant facilement. Ce sont probablement ces deux choses qui font ma force
Pour les 5 autres, soit c’est moi qui ai décliné, soit je n’ai pas eu le temps d’aller au bout du processus. Le marché actuel est bien pire pour chercher un emploi qu’à l’époque
Je n’ai jamais vraiment eu à faire une vraie candidature ni un vrai entretien, et j’ai l’impression que cela finira par me retomber dessus
Une épreuve qui demande d’écrire en moins de deux heures un programme d’échecs limité à deux types de pièces n’a rien de facile
J’ai déjà écrit un programme d’échecs moi-même, mais je doute de pouvoir mettre en place en 2 heures la structure du projet, le modèle de données, les coups légaux et les tests, et même si j’y arrivais, ce serait sans doute un code truffé de bugs
Malgré cela, cela m’a pris environ 2,5 heures
Cela a l’air d’une implémentation assez mécanique et linéaire
Pour un recrutement classique, avoir un premier entretien avec un recruteur, un entretien avec le responsable du recrutement, un ou deux entretiens techniques, et parfois même un entretien avec un chef de produit ou le CTO/fondateur, pour un total de quatre ou cinq étapes, n’a plus rien de nouveau, mais ça reste complètement dingue
Malgré cela, il fallait leur imposer plusieurs semaines d’entretiens supplémentaires, et ce n’est pas seulement absurde, c’est aussi un gaspillage de temps et de ressources
D’abord, une fois passé l’écran téléphonique, on obtient presque à coup sûr une offre, donc le coût réel en temps n’est pas aussi élevé qu’on pourrait le croire. S’il n’y a pas d’écran téléphonique, cela ne change rien à la situation actuelle, et s’il y en a un, il suffit de vérifier si le délai avant le lot d’entretiens est trop long, puis de se retirer tôt si c’est le cas. Huit heures sur une journée, ça va, mais huit heures étalées sur deux mois compliquent la recherche d’emploi
Ensuite, quand on a des offres concurrentes, le coût en temps devient agaçant. Une journée d’entretien est acceptable si elle précède une hausse de salaire de 40 %, mais consacrer 5 jours entiers à la recherche d’emploi devient pesant quand les congés sont limités. Cela dit, environ la moitié des employeurs ne semblent pas exiger de preuve concrète d’offres concurrentes, et si l’on annonce la rémunération XYZ souhaitée en disant qu’on signera immédiatement si elle est alignée, ils essaient souvent de s’aligner à la surprise générale
Enfin, dans un entretien technique moyen, 10 à 20 minutes servent à résoudre un problème technique, et 30 à 50 minutes à explorer ce que le candidat sait de l’entreprise et de l’équipe. Une nouvelle entreprise comporte des risques et cherche à cacher à l’extérieur les mauvais signaux, donc en plus d’enquêter sur les dirigeants, entendre le point de vue actuel de plusieurs membres de l’équipe aide à éviter les situations problématiques assez tôt
Si l’on ne fait une offre qu’à 1 % des candidats interrogés et que 30 % échouent quand même pendant la période d’essai, alors recruter est une énorme consommation de temps pour tout le monde. Il est difficile de trouver de bonnes personnes, et il est aussi difficile d’obtenir de bons postes
Les entretiens on-site d’autrefois impliquaient une heure de trajet aller-retour, six heures d’entretien au total, et même un déjeuner ; les entreprises les plus demandées imposaient plusieurs tours de ce genre. Parfois, des candidats venaient même en avion depuis une autre ville
Un ami est allé passer un entretien chez Google, s’est retrouvé bloqué 3 semaines à SF à cause d’une tempête de neige sur la côte Est, et a été licencié d’Accenture à cause de ça
Comparé à cela, des entretiens de 4 à 6 heures qu’on peut placer quand on veut, même répartis sur plusieurs jours, me semblent largement préférables
Le marché n’est pas bon non plus pour les ingénieurs logiciel, mais il semble bien pire encore pour les fonctions support comme engineering manager, chef de produit, designer ou developer relations
Autour de moi, ces profils ont particulièrement du mal à trouver un poste, tandis que les développeurs finissent quand même par trouver du travail, même si c’est plus lent et avec moins d’avantages. Je me demande si ce n’est vrai que dans mon entourage
On voit se diffuser partout une mode managériale selon laquelle il y aurait trop de managers, et certains agissent comme Instagram qui a supprimé tout le rôle de Technical Program Manager
Dans mon premier emploi, environ 50 % des licenciements concernaient le côté « gestion ». Dans notre équipe, nous n’avons plus de chef de produit, et on nous a dit de ne pas trop nous soucier du design sauf en cas de gros enjeu. Ces deux rôles ont été de fait absorbés par le team lead, qui s’occupe désormais des maquettes et des décisions produit
Dans mon deuxième emploi, 70 % des licenciements concernaient le management. Un manager est passé d’une équipe unique de 5 personnes à quatre équipes totalisant 25 personnes, et nous avons aussi perdu le designer et le product owner. Désormais, ces décisions reviennent au product owner restant ou au tech lead de l’équipe
Notre entreprise recrute aussi, et ma boîte mail est pleine d’entreprises qui embauchent. Je parle ici des rôles en product engineering et des postes de leadership
Si le marché est froid, c’est surtout pour les juniors, et on ne sait ni quand ni comment cela changera
Pour précision, je parle de la Silicon Valley, et je n’ai pas déménagé pendant la pandémie. J’ai toujours soupçonné qu’on finirait peut-être par en arriver là
Aujourd’hui, vivre comme développeur logiciel donne l’impression de gérer en permanence des conneries sans fin
Je me demande si tout le monde va bien, parce que franchement je suis épuisé. La recherche d’emploi est une activité qui use l’âme, envoyer des candidatures ne fait que prendre du temps, c’est inutilement pénible, ça ressemble à une répétition sisyphéenne, et on a l’impression de gâcher sa vie. On n’apprend rien d’utile, on ne construit rien de concret, on n’améliore aucune partie de sa vie, et il ne semble même pas exister de méthode d’automatisation éprouvée
Je ne comprends pas pourquoi les développeurs doivent être aussi épuisés. Il faut connaître Java, JavaScript, Python, Go, des dialectes SQL, du scripting comme bash et awk, ansible, chef, terraform, des dizaines de services AWS, plusieurs bases de données et leurs implémentations, les types de vulnérabilités courants, des protocoles comme DNS, TCP-IP, HTTP, WebSocket, et il faut apparemment aussi inverser un arbre binaire en apesanteur
Il faut que le graphe d’activité GitHub ressemble à une vue aérienne de la forêt amazonienne, tenir un blog, intervenir dans des conférences, et parfois même écrire quelque chose qui ressemble à un article de recherche. Et malgré ça, ce n’est toujours pas suffisant : il faut encore exceller dans des entretiens sur les algorithmes et structures de données, par langage, par framework, en pair programming, en conception de systèmes, sur le produit, sur l’entreprise et le secteur, sur des exercices à faire chez soi, des présentations techniques et des entretiens comportementaux
Même quand on entre dans une grande entreprise et qu’on a l’impression d’avoir « réussi », je ne comprends pas pourquoi on ne peut jamais se sentir en sécurité. Je soupire en me demandant pourquoi il faut vivre en permanence en mode recherche d’emploi au lieu de construire et réparer des choses
J’aimerais savoir si cette façon de faire est propre aux développeurs logiciel ou non
Le fait que tous les recruteurs exigent un CV alors qu’il contient presque les mêmes informations que sur LinkedIn donne l’impression qu’il s’agit d’un objet matérialisant le consentement qu’ils peuvent transmettre à l’employeur
Cela fait penser à une histoire où, en visitant une culture étrangère, quelqu’un vous offre une gorgée de thé dans une tasse inconnue, puis une autre personne vous annonce plus tard que vous venez de vous marier
Une bonne partie des recruteurs sont des tiers, et leur seul travail consiste souvent à récupérer le CV des candidats pour le transmettre, ce qui en fait juste une couche absurde de plus, pas vraiment meilleure qu’une candidature à froid
Il est aussi fréquent que les offres apportées par les recruteurs soient les mêmes que celles republiées par d’autres sociétés tierces sur les mêmes sites, sans qu’une seule lettre de la description de poste ne change
Certains recruteurs demandent même un document MS Word afin de pouvoir facilement supprimer les coordonnées et y mettre leur propre logo
Je trouve intéressant qu'une entreprise ait utilisé un test de QI
Je n'ai encore jamais eu affaire à ça, mais la semaine dernière, j'ai vu une candidature avec un test de « personnalité » qui demandait si l'on votait pour un candidat de gauche ou pour un candidat de droite. C'était une entreprise du secteur de la santé.
J'ai aussi hésité un instant quand GitHub m'a demandé l'autorisation d'examiner mon CV avec une IA. Je n'ai pas donné mon accord, et j'ai clairement eu l'impression d'être désavantagé par rapport aux autres candidats.
Et je pense aussi que les tests de personnalité en général devraient être rendus illégaux.
Le test qui demande des types de personnalité comme INFJ ou INFP. Exiger ça pour un poste de programmation, c'était vraiment étrange, et je pensais qu'il suffisait simplement de réviser LeetCode.