36 pontos por GN⁺ 2025-11-10 | 2 comentários | Compartilhar no WhatsApp
  • Engenheiros de compiladores são profissionais da engenharia de software que não projetam diretamente linguagens de programação, mas fazem com que linguagens existentes rodem de forma mais rápida e eficiente
  • Essa função representa apenas uma fração muito pequena de todas as vagas de engenharia de software, com alta barreira de entrada e demanda limitada
  • As empresas que contratam vão de startups, grandes empresas de tecnologia, academia, setor financeiro e projetos open source, mas a maioria das vagas é voltada a profissionais com experiência
  • Em entrevistas, os principais pontos avaliados são implementação de algoritmos em C++, design de linguagens, otimização de compiladores e conhecimento de sistemas de baixo nível
  • A preparação com aulas do MIT e materiais de estudo open source, além de networking constante e referral, é a chave para conseguir uma vaga

O que é um engenheiro de compiladores

  • Um compilador é uma ferramenta de software que converte código escrito em uma linguagem de programação para outra
    • O engenheiro de compiladores é responsável pela implementação e otimização dessas linguagens
    • Em vez de criar uma nova linguagem, seu papel é aumentar a eficiência de execução das linguagens existentes
  • A autora trabalha em uma grande empresa de tecnologia na região da baía de San Francisco, focada em melhorar o desempenho de linguagens de programação

Por que escrever este texto

  • Como quase não há informações online sobre conseguir emprego na área de compiladores, o texto foi escrito para oferecer um guia prático para iniciantes e recém-formados
  • Há muito material sobre machine learning e full stack, mas falta conteúdo sobre compiladores
  • A autora compartilha a experiência de ter conseguido uma vaga após cerca de um ano de tentativa e erro

Resumo da trajetória pessoal

  • Formada em 2023 no MIT com dupla graduação em matemática e ciência da computação
  • Depois de interromper um mestrado com foco em pesquisa, em 2024 trabalhou em uma startup em Nova York com extensões de linguagem open source
  • Depois disso, mudou para uma empresa de tecnologia de capital aberto em San Francisco

Quem contrata engenheiros de compiladores

  • No Indeed, há cerca de 116.000 vagas para “software engineer” contra cerca de 400 para “compiler engineer”
  • Startups: têm maior chance de contratar iniciantes, e a autora começou a carreira em uma delas
  • Grandes empresas de tecnologia: com foco especial em empresas de hardware e automotivas, como Tesla, Waymo e Nvidia
    • No caso das FAANG, há exemplos de entrada por conversão de estágio
  • Academia: oportunidades limitadas devido à redução de verba para pesquisa
  • Finanças quantitativas: empresas como Jane Street e Five Rings exigem forte capacidade em computação de alto desempenho
  • Projetos open source: algumas startups também fazem contratações relacionadas

Estratégia de currículo e networking

  • Referral é a forma mais eficaz de abordagem
    • Pedir indicação a conhecidos ou conhecidos de conhecidos
    • Ao colocar “Rona likes compilers” no perfil de rede social, a autora deixou explícito seu interesse, conseguiu oportunidades de networking e chegou a entrevistas
  • O contexto pessoal da autora, como cidadania americana e diploma do MIT, também ajudou

Tipos de entrevista

  • Algoritmos no estilo LeetCode: whiteboarding com estruturas de dados como BFS e fila de prioridade, quase sempre usando C++
  • Design de linguagens: escrever a gramática (grammar) de uma linguagem simples sob determinadas restrições
  • Perguntas sobre linguagens de programação: qual é sua linguagem favorita e por quê
  • Representação intermediária (IR): interpretação e transformação de assembly x86, incluindo tarefas com base em MLIR
  • Passes de otimização: em exercícios com MLIR, escrever um pass de otimização de simplificação algébrica, além de implementar propagação de constantes e eliminação de código morto
  • Fundamentos de compiladores: componentes de um compilador, técnicas de otimização, e explicação de compiladores estáticos vs dinâmicos
  • Teoria dos grafos: perguntas sobre representações de compiladores baseadas em grafos, como grafo de fluxo de controle e alocação de registradores (influência do tema da tese de graduação da autora)
  • Tópicos de sistemas de baixo nível: deadlock, race condition, registradores de propósito especial, pipeline de instruções, alocação de memória, representação binária e operações, garbage collection etc.
  • Perguntas comportamentais: focadas em motivação, como “por que você quer trabalhar com compiladores?”

Como se preparar para as entrevistas

  • Estudo centrado em aulas do MIT OCW
    • Computation Structures: conceitos de baixo nível como pipeline, assembly e operações binárias
    • Computer Language Engineering: experiência com C++ e codebases grandes
    • Performance Engineering: foco em otimização de desempenho; teve papel decisivo para a vaga atual
    • Theory of Computation: ajuda a entender o design da gramática de linguagens
  • Também serviu de referência o estudo independente do curso Advanced Compilers de Cornell

Pontos a melhorar e lições aprendidas

  • Falta de mentoria: percepção da necessidade de fazer networking pelo LinkedIn
  • Livros técnicos (Engineering a Compiler, Dragon Book): úteis para revisar conceitos, mas com limite para preparação prática
  • Falta de registro das perguntas de entrevista: foi um erro não anotar as perguntas depois das entrevistas para revisão
  • Pouca participação em open source: a autora chegou a avaliar projetos como Carbon e Mojo, mas não contribuiu de fato. Open source é eficaz tanto para aprendizado quanto para networking

Por que escolheu compiladores

  • Pensou em seguir um doutorado em matemática, mas após um programa de pesquisa de verão REU passou a querer um trabalho com impacto mais imediato, e então acrescentou ciência da computação como segunda graduação
    • Ficou fascinada pela semelhança entre pensamento teórico e programação de baixo nível
  • O apelo da programação de baixo nível está na sensação de construir um mundo inteiro a partir de princípios, como na matemática
  • Em contraste com o caráter empírico do machine learning, prefere uma abordagem de construir um universo inteiro a partir de axiomas
  • No MIT, havia muitas pessoas de quem gostava na comunidade de compiladores e, como a área dá menos dinheiro e prestígio do que outras, talvez exija uma leve tendência masoquista

Mercado de trabalho em tecnologia e conselhos

  • Amigos da autora no Oregon (como Oregon State e outras universidades estaduais menos prestigiadas) conseguiram apenas cerca de 4 entrevistas mesmo após centenas de candidaturas
  • Use ao máximo os recursos disponíveis e se diferencie: participe de comunidades open source, use redes sociais e aproveite recursos da universidade (até mesmo começar um clube ao qual ninguém aparece)
  • Encontre pessoas presencialmente: participe de grupos como clubes de leitura sobre sistemas (com menção ao grupo de sistemas de Nova York do Eric)
  • Também considera seriamente começar um canal de YouTube sobre compiladores (mesmo sendo desconfortável ficar diante da câmera)
  • Essas atividades não garantem emprego diretamente, mas aumentam a probabilidade de surgirem oportunidades

Conclusão e experiência pessoal

  • Antes da startup em 2024, a autora não tinha experiência industrial com compiladores
  • No processo seletivo de 2025, chegou a se candidatar até para vagas com remuneração por hora baixa, mas as oportunidades acabaram indo para candidatos de doutorado
  • Depois de dezenas de entrevistas ao longo de 10 meses, finalmente conseguiu a vaga, e hoje está focada em melhorar o desempenho de programas em nível de milissegundos
  • Convida pessoas da área de compiladores a entrarem em contato e menciona um novo começo na região de Palo Alto
  • Por fim, compartilha o lançamento de seu romance 『You Had Me at Hello World』

2 comentários

 
sacru2red 2025-11-11

Em comparação com outras áreas, paga menos e traz menos prestígio, então é preciso ter uma leve tendência masoquista

pqp

 
GN⁺ 2025-11-10
Comentários no Hacker News
  • Para quem tem interesse em compiladores, vale começar contribuindo no projeto ClangBuiltLinux ou no rastreador de issues do LLVM
    Dá para consultar a lista de issues do Linux kernel com LLVM e a
    lista de good first issue do LLVM

  • O tema do texto pareceu meio autopromoção
    Mas, se a pessoa realmente quer se tornar engenheira de compiladores, o essencial é construir um compilador por conta própria
    É importante aprender conceitos básicos como tokenização, construção de AST, type checking e IR (Intermediate Representation)
    Recomendo o tutorial do LLVM.
    Não precisa ser um gênio nível MIT; dá para começar com algo do porte de uma disciplina semestral de CS

    • Na prática, até entre pessoas que se especializaram em implementação de linguagens, é raro ter a chance de escrever um compilador de verdade
      Como as vagas na área são escassas, muita gente acaba migrando para outras áreas, como IA
    • Pessoalmente, acho a série “Let’s Build a Compiler”, do Crenshaw, a melhor introdução possível
    • O LLVM é complexo demais para iniciantes, então começar fazendo um Lisp pequeno ou um compilador em OCaml pode ser um caminho melhor
    • Acho exagerado chamar de “puff piece” ou “attack vector”. É só uma história pessoal publicada em um blog pessoal
  • Surpreendeu ver que, mesmo sendo do MIT, não é fácil conseguir emprego em engenharia de compiladores
    A área é mais estreita do que parece e parece um mercado mais voltado a seniores do que a iniciantes
    Na época do estouro da bolha das pontocom em 2001 já era difícil conseguir emprego, mas a situação atual parece complicada por outros motivos

    • Se até uma pessoa com dupla graduação no MIT está penando para conseguir emprego, a situação econômica parece séria
    • A área tem muitos subnichos — semântica de linguagem no frontend, otimização de backend, AoT vs JIT, CPU vs aceleradores etc.
      Também há muitos candidatos sem conhecimento suficiente de programação de sistemas
    • Alguns anos atrás não era tão difícil. Compiladores ainda são programas comuns, então muita gente aprende no trabalho e cresce na prática
    • A maioria das empresas consome compiladores, não os desenvolve diretamente; por isso o mercado em si é pequeno
  • A discussão se espalhou em várias direções, mas aqui vai uma lista de lugares que contratam engenheiros de compiladores
    AMD, Nvidia, Intel, Apple, Google, Jane Street, Bloomberg, Qualcomm, Modular, AWS e ARM
    Mais informações estão na lista CompilerJobs
    Na prática, há muito mais candidatos do que vagas
    Contribuir para projetos como LLVM, Rust, Swift ou Carbon é a porta de entrada mais realista
    Materiais de referência: PL Resources,
    How to Learn Compilers (LLVM Edition),
    canal Compilers no YouTube

    • Ri do comentário sobre a quantidade de gente que só repete exemplos como o “interpretador lox”
    • Já tive experiência escrevendo um backend LLVM para DSP. Dá para encontrar mais empresas olhando o histórico de commits do LLVM
    • A área de compiladores tem uma cultura centrada em qualidade, então também é boa para estudar como desenvolvimento pessoal
    • A Microsoft também mantém vários projetos de compiladores, como MSVC, C#, F#, CLR e rustc
    • Fiquei curioso sobre o que significa dizer que “contratam só para uma linguagem específica”
  • Achei muito fofo o título do livro “You Had Me At Hello World” que ela mencionou

    • Também me veio à cabeça um título de paródia como “et tu btrfs?”
    • Pelo que sei, esse livro foi contratado anos atrás, mas a publicação atrasou por causa de uma polêmica de plágio
  • No meio do artigo apareceu de repente um “esta é a minha foto”, e isso me pegou de surpresa

    • Pareceu um post com mais viés de autopromoção do que outros textos
  • Nos anos 80, sonhei em ser engenheiro de compiladores, fiz mestrado e até publiquei um artigo sobre parsing LR,
    mas mesmo naquela época quase não havia vagas. Fui levando estudando o código-fonte de PCC e GCC,
    depois migrei para desenvolvimento de GUI, e com a chegada de Java/Swing essa área passou a ter muito mais oportunidades

  • Fiquei ainda mais curioso sobre o fato de ela ter conseguido um contrato de estreia com a Simon & Schuster no começo dos 20 anos

    • Mas depois disseram que o contrato foi cancelado por plágio
  • A frase “estou pensando em criar um canal no YouTube sobre compiladores” me marcou
    Acho que só organizar conteúdos complexos em um blog já teria bastante valor

    • Mas o fato de criar um canal só para conseguir emprego parece mostrar a realidade do mercado atual.
      É como se, para virar mecânico de carros, você precisasse construir um carro e gravar vídeos dirigindo ele
  • Agradeço por ter encontrado esse texto por acaso pouco antes de uma entrevista sobre compiladores
    Estou estudando com Crafting Interpreters(link) e só agora percebi que interpretadores e compiladores não são a mesma coisa
    Não tenho mais tempo até a entrevista, mas depois pretendo estudar com calma o livro de interpretadores em Go(link) e os materiais técnicos recomendados pela Rona

    • Pessoalmente, o livro do Andrew Appel (Modern Compiler Implementation) me ajudou muito a entender algoritmos de backend. O Dragon Book também vale como referência, mas a parte de parsing pode ser pulada
    • Fiquei me perguntando se esse texto não reaproveita conteúdo reciclado de alguma matéria mais antiga