- 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
Em comparação com outras áreas, paga menos e traz menos prestígio, então é preciso ter uma leve tendência masoquista
pqp
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
Como as vagas na área são escassas, muita gente acaba migrando para outras áreas, como IA
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
Também há muitos candidatos sem conhecimento suficiente de programação de sistemas
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
Achei muito fofo o título do livro “You Had Me At Hello World” que ela mencionou
No meio do artigo apareceu de repente um “esta é a minha foto”, e isso me pegou de surpresa
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
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
É 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