36 puntos por GN⁺ 2025-11-10 | 2 comentarios | Compartir por WhatsApp
  • 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

 
sacru2red 2025-11-11

En comparación con otros campos, hay menos dinero y menos prestigio, así que hace falta una ligera tendencia masoquista

Uf

 
GN⁺ 2025-11-10
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

    • Incluso entre quienes se especializan en implementación de lenguajes, es raro tener la oportunidad de escribir un compilador directamente
      Como los trabajos relacionados son escasos, mucha gente termina moviéndose a otras áreas como IA
    • En lo personal, consideran que la serie “Let’s Build a Compiler” de Crenshaw es la mejor introducción
    • LLVM es demasiado complejo para principiantes, así que empezar haciendo un Lisp pequeño o un compilador en OCaml puede ser mejor punto de partida
    • Les parece exagerado hablar de “puff piece” o “attack vector”. Al final solo es una historia personal publicada en un blog personal
  • 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

    • Si hasta una persona con doble carrera en MIT batalla para encontrar trabajo, la situación económica debe estar seria
    • Este campo tiene muchos subnichos: semántica de lenguajes en frontend, optimización de backend, AoT vs JIT, CPU vs aceleradores, etc.
      También hay muchos candidatos con poco conocimiento de programación de sistemas
    • Hace algunos años no era tan difícil. Al final, los compiladores siguen siendo programas normales, así que mucha gente aprende y crece en el trabajo
    • La mayoría de las empresas consumen compiladores, no los construyen directamente; por eso el mercado en sí es pequeño
  • 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

    • Dio risa el comentario de que hay mucha gente repitiendo ejemplos como el “intérprete lox”
    • Alguien contó que escribió un backend de LLVM para DSP. Revisando el historial de commits de LLVM también se pueden encontrar más empresas
    • El área de compiladores tiene una cultura centrada en la calidad, así que también es buena para estudiarla como desarrollo personal
    • Microsoft también lleva varios proyectos de compiladores como MSVC, C#, F#, CLR y rustc
    • Quedó la duda de qué significa exactamente eso de “contratan solo para cierto lenguaje”
  • A alguien le pareció muy tierno el título del libro “You Had Me At Hello World” que ella mencionó

    • También se les ocurrió un título de parodia como “et tu btrfs?”
    • Según recuerdan, ese libro fue contratado hace tiempo pero su publicación se retrasó por una controversia de plagio
  • En medio del artículo apareció de repente “esta es mi foto”, y eso sorprendió

    • Les pareció un post con una tendencia más fuerte a la autopromoción que otros
  • 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

    • Pero después dijeron que el contrato fue cancelado por plagio
  • 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

    • Que alguien tenga que crear un canal solo para conseguir trabajo parece mostrar la realidad del mercado laboral actual.
      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

    • En lo personal, el libro de Andrew Appel (Modern Compiler Implementation) le ayudó mucho a entender los algoritmos de backend. El Dragon Book también sirve como referencia, pero la parte de parsing se puede saltar
    • Quedó la duda de si este artículo no será contenido reciclado de algún otro texto anterior