- Un ingeniero de compiladores no diseña directamente lenguajes de programación, sino que trabaja en un área de ingeniería de software enfocada en hacer que los lenguajes existentes se ejecuten de forma más rápida y eficiente
- Este puesto representa apenas una fracción mínima del total de empleos de ingeniería de software, con una barrera de entrada alta y una demanda limitada
- Las empresas que contratan abarcan startups, grandes tecnológicas, academia, sector financiero y proyectos de código abierto, aunque en su mayoría buscan perfiles con experiencia
- En las entrevistas se evalúan principalmente implementación de algoritmos en C++, diseño de lenguajes, optimización de compiladores y conocimientos de sistemas de bajo nivel
- La preparación con clases del MIT y materiales de aprendizaje de código abierto, junto con networking constante y referidos, fue clave para conseguir empleo
Qué es un ingeniero de compiladores
- Un compilador es una herramienta de software que transforma código escrito en un lenguaje de programación a otro lenguaje
- Un ingeniero de compiladores se encarga de la implementación y optimización de esos lenguajes
- Más que diseñar un lenguaje nuevo, su función es mejorar la eficiencia de ejecución de los lenguajes existentes
- La autora trabaja en una gran empresa tecnológica del área de la bahía de San Francisco enfocándose en mejorar el rendimiento de lenguajes de programación
Por qué escribió este texto
- Como casi no hay información en línea sobre cómo conseguir trabajo en compiladores, lo escribió para ofrecer una guía práctica para principiantes y recién graduados
- Hay mucho material sobre machine learning o full stack, pero falta contenido sobre compiladores
- Comparte la experiencia de haber conseguido trabajo tras cerca de un año de prueba y error
Resumen de su trayectoria
- Se graduó en 2023 del MIT con una doble carrera en matemáticas y ciencias de la computación
- Después de abandonar una maestría orientada a investigación, en 2024 trabajó en una startup de Nueva York en extensiones de lenguaje de código abierto
- Más tarde cambió a una empresa tecnológica pública en San Francisco
Dónde contratan ingenieros de compiladores
- En Indeed, “software engineer” tiene unas 116,000 vacantes, mientras que “compiler engineer” ronda las 400
- Startups: tienen más probabilidad de contratar gente sin experiencia, y la autora comenzó su carrera en una
- Grandes tecnológicas: principalmente empresas de hardware y automotrices como Tesla, Waymo y Nvidia
- En empresas FAANG, también hay casos de ingreso mediante conversión de prácticas profesionales
- Academia: las oportunidades son limitadas por la reducción en fondos de investigación
- Finanzas cuantitativas: firmas como Jane Street y Five Rings buscan capacidades de cómputo de alto rendimiento
- Proyectos de código abierto: algunas startups también contratan alrededor de estos proyectos
Estrategia de CV y networking
- El enfoque más efectivo fue conseguir referidos
- Pedir recomendaciones a conocidos o a conocidos de conocidos
- En su perfil de redes sociales puso “Rona likes compilers” para dejar claro su interés y abrir oportunidades de networking; de hecho, eso llevó a entrevistas reales
- Su contexto personal (ciudadanía estadounidense, título del MIT, etc.) también jugó a su favor
Tipos de entrevista
- Algoritmos estilo LeetCode: resolución en pizarra de estructuras de datos como BFS y colas de prioridad, casi siempre en C++
- Diseño de lenguajes: escribir la gramática de un lenguaje sencillo bajo ciertas restricciones
- Preguntas sobre lenguajes de programación: cuál es su lenguaje favorito y por qué
- Representación intermedia (IR): interpretación y transformación de ensamblador x86, incluyendo tareas basadas en MLIR
- Pases de optimización: en tareas con MLIR, escribir un pase de optimización de simplificación algebraica, además de implementar propagación de constantes y eliminación de código muerto
- Fundamentos de compiladores: componentes de un compilador, técnicas de optimización y diferencias entre compiladores estáticos y dinámicos
- Teoría de grafos: preguntas sobre representaciones de compiladores basadas en grafos, como grafos de flujo de control y asignación de registros (influido por el tema de su tesis de licenciatura)
- Temas de sistemas de bajo nivel: deadlocks, race conditions, registros de propósito especial, pipelines de instrucciones, asignación de memoria, representación y operaciones binarias, garbage collection, etc.
- Preguntas de comportamiento: motivación, como “¿por qué quieres trabajar en compiladores?”
Cómo se preparó para las entrevistas
- Estudió principalmente con clases del MIT OCW
- Computation Structures: conceptos de bajo nivel como pipelines, ensamblador y operaciones binarias
- Computer Language Engineering: experiencia en C++ y en bases de código grandes
- Performance Engineering: enfoque en optimización de rendimiento, clave para conseguir su trabajo actual
- Theory of Computation: útil para entender el diseño de gramáticas de lenguajes
- También tomó como referencia el curso autodidacta Advanced Compilers de Cornell
Qué mejoraría y qué aprendió
- Falta de mentoría: reconoció la necesidad de hacer networking a través de LinkedIn
- Los libros especializados (Engineering a Compiler, Dragon Book) sirven para repasar conceptos, pero tienen límites para prepararse para entrevistas reales
- No registrar las preguntas de entrevista: fue un error no anotarlas para repasarlas después
- Poca participación en código abierto: revisó proyectos como Carbon y Mojo, pero no llegó a contribuir. El código abierto es útil tanto para aprender como para hacer networking
Por qué eligió compiladores
- Consideró hacer un doctorado en matemáticas, pero después de un programa de investigación de verano REU quiso hacer algo con impacto más inmediato, así que añadió ciencias de la computación como segunda carrera
- Le atrajo la similitud entre el pensamiento teórico y la programación de bajo nivel
- La programación de bajo nivel le resulta atractiva porque se siente como construir un mundo completo a partir de principios, como en matemáticas
- A diferencia del carácter empírico del machine learning, prefiere un enfoque que construye todo un universo a partir de axiomas
- En el MIT había muchas personas del área de compiladores que le caían muy bien, y como es un campo con menos dinero y prestigio que otros, cree que hace falta una ligera vena masoquista
El mercado laboral en tecnología y consejos
- Amigos suyos en Oregón (como Oregon State y otras universidades públicas no elite) obtuvieron apenas unas 4 entrevistas tras enviar cientos de solicitudes
- Aprovecha todos los recursos posibles y diferénciate: participa en comunidades de código abierto, usa redes sociales y saca partido de los recursos universitarios (aunque tengas que fundar un club al que no vaya nadie)
- Conoce gente en persona: participa en grupos de lectura sobre sistemas y espacios similares (menciona el grupo de sistemas de Nueva York de Eric)
- También considera seriamente abrir un canal de YouTube sobre compiladores, aunque se sienta incómoda frente a la cámara
- Estas actividades no garantizan empleo directamente, pero sí aumentan la probabilidad de generar oportunidades
Conclusión y experiencia personal
- Antes de entrar a la startup en 2024, no tenía experiencia industrial en compiladores
- En el proceso de contratación de 2025, incluso aplicó a puestos con salario por hora bajo, pero las oportunidades terminaron yendo a candidatos de doctorado
- Tras 10 meses y decenas de entrevistas, finalmente consiguió trabajo, y ahora se enfoca en mejorar el rendimiento de programas a nivel de milisegundos
- Invita a que la contacten personas que trabajen en compiladores y menciona un nuevo comienzo en la zona de Palo Alto
- Finalmente comparte la publicación de su novela You Had Me at Hello World
2 comentarios
En comparación con otros campos, hay menos dinero y menos prestigio, así que hace falta una ligera tendencia masoquista
Uf
Comentarios en Hacker News
Si te interesan los compiladores, recomiendan empezar a contribuir al proyecto ClangBuiltLinux o en el rastreador de issues de LLVM
Se pueden consultar la lista de issues de Linux kernel con LLVM y la
lista de good first issue de LLVM
El tema del artículo se sintió como autopromoción personal
Pero si de verdad quieres convertirte en ingeniero de compiladores, lo clave es construir un compilador por tu cuenta
Es importante aprender conceptos básicos como tokenización, construcción de AST, verificación de tipos e IR (Intermediate Representation)
Recomiendan el tutorial de LLVM.
No hace falta ser un genio nivel MIT; con el contenido de un curso semestral de CS basta para empezar
Como los trabajos relacionados son escasos, mucha gente termina moviéndose a otras áreas como IA
Sorprendió que incluso para alguien egresada de MIT no sea fácil conseguir trabajo en ingeniería de compiladores
Parece ser un campo más pequeño de lo que muchos imaginan, y un mercado más orientado a seniors que a puestos junior
Durante el colapso de la burbuja puntocom en 2001 también era difícil encontrar empleo, pero la situación actual parece complicada en otro sentido
También hay muchos candidatos con poco conocimiento de programación de sistemas
Aunque el hilo se desvió en varias direcciones, alguien hizo un resumen de lugares que contratan ingenieros de compiladores
Mencionaron a AMD, Nvidia, Intel, Apple, Google, Jane Street, Bloomberg, Qualcomm, Modular, AWS y ARM
Más información en la lista de CompilerJobs
En la práctica, hay muchísimos más postulantes que vacantes
Contribuir a proyectos como LLVM, Rust, Swift o Carbon parece la ruta de entrada más realista
Material de referencia: PL Resources,
How to Learn Compilers (LLVM Edition),
canal de YouTube Compilers
A alguien le pareció muy tierno el título del libro “You Had Me At Hello World” que ella mencionó
En medio del artículo apareció de repente “esta es mi foto”, y eso sorprendió
En los 80, alguien soñaba con ser ingeniero de compiladores, hizo una maestría e incluso publicó un paper sobre parsing LR,
pero aun en esa época casi no había trabajos. Aguantó estudiando el código fuente de PCC y GCC,
y luego se cambió al desarrollo GUI, donde después de la llegada de Java/Swing hubo muchas más oportunidades
A otra persona le intrigó más que hubiera conseguido un contrato debut con Simon & Schuster a inicios de sus 20s
Llamó la atención la frase “estoy pensando en crear un canal de YouTube sobre compiladores”
Incluso ordenar contenido complejo en un blog ya parecería valioso
Como si para ser mecánico automotriz tuvieras que construir un auto tú mismo y grabarte manejándolo
Alguien agradeció haber encontrado este texto por casualidad justo antes de una entrevista sobre compiladores
Está estudiando con Crafting Interpreters(enlace) y apenas ahora se dio cuenta de que un intérprete y un compilador no son lo mismo
Ya no tiene tiempo antes de la entrevista, pero después piensa estudiar con calma el libro del intérprete escrito en Go(enlace) y el material técnico recomendado por Rona