36 points par GN⁺ 2025-11-10 | 2 commentaires | Partager sur WhatsApp
  • Un ingénieur compilateur ne conçoit pas directement des langages de programmation ; il travaille dans un domaine du génie logiciel visant à faire exécuter plus vite et plus efficacement des langages existants
  • Ce métier ne représente qu’une infime partie de l’ensemble des postes en ingénierie logicielle, avec une barrière à l’entrée élevée et une demande limitée
  • Les recruteurs vont des startups, grandes entreprises technologiques, milieux académiques, finance, projets open source à d’autres structures, mais la plupart des postes visent surtout des profils expérimentés
  • En entretien, les principaux critères évalués sont l’implémentation d’algorithmes en C++, la conception de langages, l’optimisation de compilateurs et les connaissances en systèmes bas niveau
  • Une préparation fondée sur les cours du MIT et des ressources d’apprentissage open source, ainsi qu’un networking régulier et les recommandations (referrals), sont les clés de la réussite

Qu’est-ce qu’un ingénieur compilateur ?

  • Un compilateur est un outil logiciel qui transforme du code écrit dans un langage de programmation vers un autre langage
    • L’ingénieur compilateur est chargé de l’implémentation et de l’optimisation de ces langages
    • Son rôle consiste moins à concevoir de nouveaux langages qu’à améliorer l’efficacité d’exécution de langages existants
  • L’autrice travaille dans une grande entreprise technologique de la baie de San Francisco sur l’amélioration des performances des langages de programmation

Pourquoi avoir écrit cet article

  • Comme il existe très peu d’informations en ligne sur l’emploi dans le domaine des compilateurs, l’objectif est de proposer un guide pratique pour les débutants et jeunes diplômés
  • Il existe beaucoup de ressources sur le machine learning ou le full stack, mais le contenu sur les compilateurs manque
  • L’autrice partage son expérience après avoir réussi à se faire embaucher au bout d’environ un an d’essais et d’erreurs

Résumé du parcours personnel

  • Diplômée du MIT en 2023 avec une double spécialisation en mathématiques et informatique
  • Après avoir interrompu un master orienté recherche, elle a travaillé en 2024 dans une startup à New York sur des extensions de langage open source
  • Elle a ensuite rejoint une entreprise technologique cotée en bourse à San Francisco

Où recrute-t-on des ingénieurs compilateur ?

  • Sur Indeed, on trouve environ 116 000 offres pour “software engineer” contre environ 400 pour “compiler engineer”
  • Startups : plus susceptibles de recruter des juniors, et c’est ainsi que l’autrice a décroché son premier poste
  • Grandes entreprises technologiques : surtout des entreprises du matériel et de l’automobile comme Tesla, Waymo ou Nvidia
    • Dans les entreprises de type FAANG, certains sont entrés via une conversion de stage en poste
  • Monde académique : opportunités limitées en raison de la baisse des financements de recherche
  • Finance quantitative : des entreprises comme Jane Street ou Five Rings recherchent des compétences en calcul haute performance
  • Projets open source : certaines startups recrutent aussi dans ce cadre

Stratégie de CV et de networking

  • La recommandation (referral) est l’approche la plus efficace
    • Demander une recommandation à ses connaissances ou aux connaissances de ses connaissances
    • Indiquer son intérêt sur son profil social avec “Rona likes compilers” a permis de créer des opportunités de networking et a même mené à des entretiens
  • Son contexte personnel (citoyenneté américaine, diplôme du MIT, etc.) a aussi joué en sa faveur

Types d’entretiens

  • Algorithmes de style LeetCode : whiteboarding sur des structures de données comme BFS ou les files de priorité, le plus souvent en C++
  • Conception de langage : écrire la grammaire (grammar) d’un langage simple sous certaines contraintes
  • Questions sur les langages de programmation : langage préféré et raisons de ce choix
  • Représentation intermédiaire (IR) : interprétation et transformation d’assembleur x86, avec aussi des exercices basés sur MLIR
  • Passes d’optimisation : dans un exercice MLIR, écrire une passe d’optimisation de simplification algébrique, ainsi que des passes de propagation de constantes et d’élimination de code mort
  • Fondamentaux des compilateurs : composants d’un compilateur, techniques d’optimisation, différence entre compilateurs statiques et dynamiques
  • Théorie des graphes : questions sur les représentations de compilateur fondées sur des graphes, comme les graphes de flot de contrôle ou l’allocation de registres (influencées par le sujet du mémoire de licence de l’autrice)
  • Sujets systèmes bas niveau : interblocage, race condition, registres à usage spécial, pipeline d’instructions, allocation mémoire, représentation binaire et opérations, garbage collection, etc.
  • Questions comportementales : centrées sur la motivation, par exemple « pourquoi voulez-vous travailler sur les compilateurs ? »

Préparation aux entretiens

  • Apprentissage principalement à partir des cours MIT OCW
    • Computation Structures : pipeline, assembleur, opérations binaires et autres concepts bas niveau
    • Computer Language Engineering : expérience en C++ et avec de grandes bases de code
    • Performance Engineering : centré sur l’optimisation des performances, décisif pour obtenir son poste actuel
    • Theory of Computation : utile pour comprendre la conception de grammaires de langage
  • Le cursus d’autoformation Advanced Compilers de Cornell a aussi servi de référence

Ce qui aurait pu être mieux fait et les leçons retenues

  • Absence de mentor : prise de conscience de la nécessité de networker via LinkedIn
  • Les ouvrages spécialisés (Engineering a Compiler, le Dragon Book) sont utiles pour réviser les concepts, mais ont leurs limites pour la préparation pratique
  • Absence de notes sur les questions d’entretien : ne pas avoir consigné les questions après les entretiens pour les réviser a été une erreur
  • Participation insuffisante à l’open source : elle a étudié des projets comme Carbon ou Mojo sans y contribuer réellement. L’open source est efficace pour apprendre et pour networker

Pourquoi avoir choisi les compilateurs

  • Elle envisageait un doctorat en mathématiques, mais après un programme de recherche d’été REU, elle a voulu un travail à l’impact plus immédiat, ce qui l’a amenée à ajouter l’informatique en double spécialisation
    • Elle a été séduite par la ressemblance entre la pensée théorique et la programmation bas niveau
  • La programmation bas niveau lui plaît par cette impression de construire tout un monde à partir de principes fondamentaux, comme en mathématiques
  • Contrairement au caractère empirique du machine learning, elle préfère une approche qui construit tout un univers à partir d’axiomes
  • Au MIT, il y avait beaucoup de gens qu’elle appréciait dans la communauté des compilateurs, et ce domaine apportant moins d’argent et de prestige que d’autres exige selon elle un léger penchant masochiste

Marché de l’emploi tech et conseils

  • Ses amis dans l’Oregon (dont Oregon State et d’autres universités publiques peu prestigieuses) n’obtenaient qu’environ 4 entretiens malgré des centaines de candidatures
  • Exploiter au maximum ses ressources et se différencier : participer à des communautés open source, utiliser les réseaux sociaux, tirer parti des ressources de l’université (même en lançant un club où personne ne vient)
  • Rencontrer les gens en personne : participer à des groupes de lecture sur les systèmes, par exemple le groupe systèmes new-yorkais d’Eric
  • Elle envisage aussi très sérieusement de lancer une chaîne YouTube sur les compilateurs, même si elle n’est pas très à l’aise devant la caméra
  • Ces activités ne garantissent pas directement un emploi, mais augmentent les chances de créer des opportunités

Conclusion et expérience personnelle

  • Avant son passage en startup en 2024, elle n’avait aucune expérience industrielle liée aux compilateurs
  • Lors du recrutement en 2025, elle a aussi postulé à des postes faiblement rémunérés, mais l’opportunité est revenue à des candidats en doctorat
  • Après 10 mois et des dizaines d’entretiens, elle a finalement décroché un poste, où elle se concentre aujourd’hui sur des gains de performance à la milliseconde près
  • Elle invite les personnes travaillant dans le domaine des compilateurs à la contacter et mentionne un nouveau départ dans la région de Palo Alto
  • Enfin, elle partage la sortie de son roman You Had Me at Hello World

2 commentaires

 
sacru2red 2025-11-11

Comparé à d'autres domaines, il y a moins d'argent et de prestige, donc il faut avoir une légère tendance masochiste

Gloups

 
GN⁺ 2025-11-10
Commentaires sur Hacker News
  • Pour ceux qui s’intéressent aux compilateurs, il est recommandé de commencer à contribuer au projet ClangBuiltLinux ou à l’issue tracker de LLVM
    On peut consulter la liste des issues Linux kernel with LLVM ainsi que la liste des good first issues de LLVM

  • Le sujet de l’article donnait l’impression de relever un peu de l’autopromotion
    Mais si l’on veut vraiment devenir ingénieur compilateur, l’essentiel est d’en écrire un soi-même
    Il est important d’apprendre les concepts de base comme le tokenizing, la construction d’AST, le type checking et l’IR (Intermediate Representation)
    Le tutoriel LLVM est recommandé.
    Pas besoin d’être un génie de niveau MIT : un volume équivalent à un cours de CS sur un semestre suffit largement pour se lancer

    • En pratique, même parmi les personnes spécialisées en implémentation de langages, il est rare d’avoir l’occasion d’écrire réellement un compilateur
      Les postes sont peu nombreux, donc beaucoup finissent par se réorienter vers d’autres domaines comme l’IA
    • Personnellement, je pense que la série “Let’s Build a Compiler” de Crenshaw est la meilleure introduction possible
    • LLVM est trop complexe pour un débutant, donc fabriquer un petit Lisp ou un compilateur OCaml constitue un meilleur point de départ
    • Les expressions comme “puff piece” ou “attack vector” paraissent excessives. Ce n’est qu’un récit personnel publié sur un blog personnel
  • Il était surprenant de voir que, même en sortant du MIT, il n’est pas facile de trouver un emploi en ingénierie des compilateurs
    Le domaine est plus étroit qu’on ne l’imagine et ressemble davantage à un marché centré sur les profils senior que sur les juniors
    Trouver un emploi était déjà difficile après l’éclatement de la bulle Internet en 2001, mais la situation actuelle semble compliquée d’une autre manière

    • Voir quelqu’un avec une double spécialisation au MIT peiner à trouver du travail donne l’impression que la situation économique est grave
    • Ce domaine compte de nombreuses sous-niches — sémantique des langages côté frontend, optimisation backend, AoT vs JIT, CPU vs accélérateurs, etc.
      Beaucoup de candidats manquent aussi de connaissances en programmation système
    • Il y a encore quelques années, ce n’était pas si difficile. Un compilateur reste avant tout un programme comme un autre, et beaucoup progressent en apprenant sur le terrain
    • La plupart des entreprises utilisent des compilateurs sans en développer elles-mêmes. Le marché est donc intrinsèquement réduit
  • Le fil est parti dans plusieurs directions, mais voici un récapitulatif des entreprises qui recrutent des ingénieurs compilateur
    On peut citer AMD, Nvidia, Intel, Apple, Google, Jane Street, Bloomberg, Qualcomm, Modular, AWS et ARM
    Des informations connexes sont disponibles dans la liste CompilerJobs
    En réalité, il y a bien plus de candidats que de postes
    Contribuer à des projets comme LLVM, Rust, Swift ou Carbon constitue la voie d’entrée la plus réaliste
    Ressources utiles : PL Resources,
    How to Learn Compilers (LLVM Edition),
    chaîne YouTube Compilers

    • La remarque sur les gens qui ne font que répéter des exemples comme le “lox interpreter” a fait rire
    • J’ai déjà écrit un backend LLVM pour DSP. En regardant l’historique des commits LLVM, on peut trouver encore plus d’entreprises
    • Le domaine des compilateurs a une culture très axée sur la qualité, ce qui en fait aussi un bon sujet d’étude pour progresser soi-même
    • Microsoft aussi mène divers projets de compilateurs comme MSVC, C#, F#, CLR et rustc
    • Je me demande ce que signifie exactement l’expression “on recrute uniquement pour un langage donné”
  • Le titre du livre qu’elle a mentionné, “You Had Me At Hello World”, a été trouvé vraiment adorable

    • Cela a aussi fait penser à des titres parodiques comme “et tu btrfs?”
    • Ce livre avait été signé il y a quelque temps, mais sa publication aurait été retardée à cause d’une controverse pour plagiat
  • L’apparition soudaine de “c’est ma photo” au milieu de l’article a surpris

    • Le billet a semblé plus marqué par l’autopromotion que d’autres textes
  • Dans les années 80, quelqu’un rêvait de devenir ingénieur compilateur, a obtenu un master et a même publié un article sur le parsing LR,
    mais il y avait déjà très peu d’emplois à l’époque. Il a tenu en étudiant le code source de PCC et GCC,
    puis s’est réorienté vers le développement GUI, où les opportunités sont devenues bien plus nombreuses après l’arrivée de Java/Swing

  • Ce qui a davantage intrigué, c’est le fait d’avoir décroché un premier contrat avec Simon & Schuster au début de la vingtaine

    • Mais plus tard, il a été dit que le contrat avait été annulé pour plagiat
  • La phrase “j’envisage de créer une chaîne YouTube sur les compilateurs” a marqué les esprits
    Il semble qu’un blog suffirait déjà à apporter de la valeur pour organiser ce type de contenu complexe

    • Le simple fait de créer une chaîne uniquement pour décrocher un emploi semble illustrer la réalité du marché actuel.
      C’est un peu comme si, pour devenir mécanicien automobile, il fallait construire une voiture soi-même et publier des vidéos où on la conduit
  • Merci d’être tombé sur cet article juste avant un entretien sur les compilateurs
    Étude en cours avec Crafting Interpreters(lien),
    et c’est seulement maintenant qu’est devenue claire l’idée que les interpréteurs et les compilateurs sont différents
    Il ne reste pas beaucoup de temps avant l’entretien, mais ensuite il est prévu d’étudier tranquillement le livre sur les interpréteurs écrit en Go(lien) ainsi que les ressources techniques recommandées par Rona

    • Personnellement, le livre d’Andrew Appel (Modern Compiler Implementation) a beaucoup aidé à comprendre les algorithmes backend. Le Dragon Book vaut aussi le détour, mais la partie parsing peut être sautée
    • Quelqu’un se demande aussi si cet article ne serait pas du contenu recyclé d’un ancien papier