36P by GN⁺ | ★ favorite | 댓글 2개
  • 컴파일러 엔지니어는 프로그래밍 언어를 직접 설계하지 않고, 기존 언어를 더 빠르고 효율적으로 실행되게 만드는 소프트웨어 엔지니어링 분야
  • 이 직무는 전체 소프트웨어 엔지니어 일자리 중 극히 일부만 존재하며, 진입 장벽이 높고 수요가 제한적
  • 채용 기업은 스타트업, 대형 기술기업, 학계, 금융권, 오픈소스 프로젝트 등으로 다양하지만, 대부분은 경력자 중심 구조
  • 면접에서는 C++ 기반 알고리듬 구현, 언어 설계, 컴파일러 최적화, 저수준 시스템 지식 등이 중점 평가 항목
  • MIT 강의와 오픈소스 학습 자료를 활용한 준비 과정, 그리고 꾸준한 네트워킹과 추천(referral) 이 취업 성공의 핵심

컴파일러 엔지니어란 무엇인가

  • 컴파일러는 한 프로그래밍 언어로 작성된 코드를 다른 언어로 변환하는 소프트웨어 도구
    • 컴파일러 엔지니어는 이러한 언어의 구현과 최적화를 담당
    • 새로운 언어를 설계하기보다는 기존 언어의 실행 효율을 높이는 역할
  • 글 작성자는 샌프란시스코 베이 지역의 대형 기술기업에서 프로그래밍 언어 성능 향상을 담당 중

글을 쓰게 된 이유

  • 컴파일러 분야 취업 관련 정보가 온라인에 거의 없어, 신입·졸업생을 위한 실질적 가이드를 제공하기 위해 작성
  • 머신러닝이나 풀스택 관련 자료는 많지만, 컴파일러 관련 콘텐츠는 부족
  • 약 1년간 시행착오 끝에 취업에 성공한 경험을 공유

개인 경력 요약

  • 2023년 MIT에서 수학·컴퓨터과학 복수 전공으로 졸업
  • 대학원 연구 기반 석사과정 중단 후, 2024년 뉴욕의 스타트업에서 오픈소스 언어 확장 작업 수행
  • 이후 샌프란시스코의 상장 기술기업으로 이직

컴파일러 엔지니어를 채용하는 곳

  • Indeed 기준 “software engineer”는 116,000건, “compiler engineer”는 400건 수준
  • 스타트업: 신입 채용 가능성이 높으며, 작성자도 첫 직장을 스타트업에서 시작
  • 대형 기술기업: Tesla, Waymo, Nvidia 등 하드웨어·자동차 기업 중심
    • FAANG 기업의 경우 인턴 전환 형태로 입사한 사례 존재
  • 학계: 연구 자금 축소로 기회 제한
  • 퀀트 금융사: Jane Street, Five Rings 등에서 고성능 컴퓨팅 역량을 요구
  • 오픈소스 프로젝트: 일부 스타트업이 관련 채용 진행

이력서와 네트워킹 전략

  • 추천(referral) 이 가장 효과적인 접근 방식
    • 지인이나 지인의 지인을 통해 추천 요청
    • SNS 프로필에 "Rona likes compilers"로 관심을 명시해 네트워킹 기회를 확보, 실제로 인터뷰까지 연결
  • 개인적 배경(미국 시민권, MIT 학위 등)이 유리하게 작용했음

면접 유형

  • LeetCode 스타일 알고리듬: BFS, 우선순위 큐 등 자료구조 화이트보딩, 대부분 C++ 사용
  • 언어 설계: 특정 제약 조건 하에서 간단한 언어의 문법(grammar) 작성
  • 프로그래밍 언어 관련 질문: 좋아하는 프로그래밍 언어와 이유
  • 중간 표현(IR) : x86 어셈블리 해석 및 변환, MLIR 기반 과제 포함
  • 최적화 패스: MLIR 과제에서 대수적 단순화 최적화 패스 작성, 상수 전파 및 죽은 코드 제거 패스 구현
  • 컴파일러 기초: 컴파일러 구성 요소, 최적화 기법, 정적 vs 동적 컴파일러 설명
  • 그래프 이론: 제어 흐름 그래프, 레지스터 할당 등 그래프 기반 컴파일러 표현 질문 (저자의 학부 논문 주제 영향)
  • 저수준 시스템 주제: 데드락, 레이스 컨디션, 특수 목적 레지스터, 명령 파이프라인, 메모리 할당, 이진 표현 및 연산, 가비지 컬렉션 등
  • 행동 질문: “왜 컴파일러를 하고 싶은가” 등 동기 중심

면접 준비 과정

  • MIT OCW 강의를 중심으로 학습
    • Computation Structures: 파이프라인, 어셈블리, 이진 연산 등 저수준 개념
    • Computer Language Engineering: C++ 및 대규모 코드베이스 경험
    • Performance Engineering: 성능 최적화 중심, 현 직장 취업에 결정적 역할
    • Theory of Computation: 언어 문법 설계 이해에 도움
  • Cornell의 Advanced Compilers 자율 학습 과정도 참고

개선점 및 배운 점

  • 멘토 부재: LinkedIn을 통한 네트워킹 필요성 인식
  • 전문서적(Engineering a Compiler, Dragon Book)은 개념 복습에는 유용하지만 실전 대비에는 한계
  • 면접 질문 기록 부재: 면접 후 질문을 기록해 복습하지 않은 것이 실수
  • 오픈소스 참여 미흡: Carbon, Mojo 등 프로젝트 검토했으나 실제 기여는 안 함. 오픈소스가 학습 및 네트워킹에 효과적

컴파일러를 선택한 이유

  • 수학 박사 과정을 고려했으나 REU 여름 연구 프로그램 후 더 즉각적으로 영향력 있는 일을 원해 컴퓨터과학 복수전공 추가
    • 이론적 사고와 저수준 프로그래밍의 유사성에 매료
  • 저수준 프로그래밍이 수학처럼 원리로부터 전체 세계를 구축하는 느낌이 매력적
  • 머신러닝의 경험적 특성과 대조적으로 공리로부터 우주 전체를 만들어가는 접근 선호
  • MIT에서 컴파일러 커뮤니티에 좋아하는 사람들이 많았고, 다른 분야 대비 돈과 명성이 적어 약간 마조히스틱한 성향 필요

기술 취업 시장과 조언

  • 저자의 오레곤 친구들(Oregon State 등 비명문 주립대)은 수백 건 지원해도 면접 4회 정도만 획득
  • 리소스를 최대한 활용하고 차별화: 오픈소스 커뮤니티 참여, 소셜미디어 활용, 대학 자원 활용 (아무도 안 오는 동아리라도 시작)
  • 직접 만나기: 시스템 독서 그룹 등 참여 (Eric의 뉴욕 시스템 그룹 언급)
  • 컴파일러 YouTube 채널 시작도 심각하게 고려 (카메라 앞에서 어색하지만)
  • 이러한 활동이 직접적인 취업 보장은 아니지만 기회 확률을 높임

결론 및 개인적 경험

  • 2024년 스타트업 이전에는 컴파일러 관련 산업 경험이 없었음
  • 2025년 채용 과정에서 낮은 시급의 포지션에도 지원했으나 박사 과정 지원자에게 기회가 돌아감
  • 10개월간 수십 회 면접 후 최종 취업 성공, 현재는 프로그램의 밀리초 단위 성능 향상에 집중
  • 컴파일러 분야 종사자에게 연락을 요청하며, Palo Alto 지역에서의 새로운 시작 언급
  • 마지막으로 자신의 소설 『You Had Me at Hello World』 출간 소식 공유
GeekNews Weekly에 포함된 글입니다. 에디터 코멘트 보기

댓글과 토론

다른 분야 대비 돈과 명성이 적어 약간 마조히스틱한 성향 필요

ㄷㄷ

Hacker News 의견
  • 컴파일러에 관심 있는 사람이라면 ClangBuiltLinux 프로젝트나 LLVM 이슈 트래커에서 기여를 시작해보길 권함
    Linux kernel with LLVM 이슈 목록
    LLVM의 good first issue 목록을 참고할 수 있음

  • 글의 주제가 개인 홍보용처럼 느껴졌음
    하지만 진짜로 컴파일러 엔지니어가 되고 싶다면 직접 컴파일러를 만들어보는 게 핵심임
    토크나이징, AST 구성, 타입체킹, IR(Intermediate Representation) 같은 기본 개념을 익히는 게 중요함
    LLVM 튜토리얼을 추천함.
    MIT 수준의 천재일 필요는 없고, 한 학기짜리 CS 과목 정도의 분량으로 충분히 시작 가능함

    • 실제로 언어 구현을 전공한 사람 중에서도 컴파일러를 직접 작성할 기회를 얻는 경우는 드묾
      관련 일자리가 희소해서 AI 등 다른 분야로 전향하는 경우가 많음
    • 개인적으로는 Crenshaw의 “Let’s Build a Compiler” 시리즈가 최고의 입문서라고 생각함
    • LLVM은 초보자에게는 너무 복잡하므로, 소형 Lisp이나 OCaml 컴파일러를 만들어보는 게 더 좋은 출발점임
    • “puff piece”라거나 “attack vector”라는 표현은 과하다고 생각함. 그냥 개인 블로그에 올린 개인 이야기일 뿐임
  • MIT 출신이라도 컴파일러 엔지니어링 분야 취업이 쉽지 않다는 점이 놀라웠음
    이 분야는 생각보다 좁고, 초급보다는 시니어 중심의 시장 같음
    2001년 닷컴 버블 붕괴 때 취업이 어려웠지만, 지금 상황은 또 다른 의미로 힘들어 보임

    • MIT 복수전공자가 취업에 고생한다니 경제 상황이 심각하다고 느꼈음
    • 이 분야는 세부 서브니치가 많음 — 프론트엔드 언어 의미론, 백엔드 최적화, AoT vs JIT, CPU vs 가속기 등
      시스템 프로그래밍 지식이 부족한 지원자도 많음
    • 몇 년 전만 해도 그렇게 어렵지 않았음. 컴파일러도 결국 일반 프로그램이므로, 실무에서 배우며 성장하는 경우가 많음
    • 대부분의 회사는 컴파일러를 소비하지, 직접 만드는 곳은 드묾. 그래서 시장 자체가 작음
  • 스레드가 여러 방향으로 흩어졌지만, 컴파일러 엔지니어를 고용하는 곳을 정리해봄
    AMD, Nvidia, Intel, Apple, Google, Jane Street, Bloomberg, Qualcomm, Modular, AWS, ARM 등이 있음
    관련 정보는 CompilerJobs 목록에서 볼 수 있음
    실제로는 지원자 수가 일자리보다 훨씬 많음
    LLVM이나 Rust, Swift, Carbon 같은 프로젝트에 기여하는 게 가장 현실적인 진입 경로임
    참고 자료: PL Resources,
    How to Learn Compilers (LLVM Edition),
    Compilers YouTube 채널

    • “lox 인터프리터” 같은 예제만 반복하는 사람 많다는 말에 웃음이 나왔음
    • DSP용 LLVM 백엔드를 작성했던 경험이 있음. LLVM 커밋 히스토리를 보면 더 많은 회사 목록을 찾을 수 있음
    • 컴파일러 분야는 품질 중심의 문화가 있어서 자기계발용으로 공부하기에도 좋음
    • Microsoft도 MSVC, C#, F#, CLR, rustc 등 다양한 컴파일러 프로젝트를 운영 중임
    • “특정 언어용으로만 채용한다”는 말이 무슨 뜻인지 궁금함
  • 그녀가 언급한 책 “You Had Me At Hello World” 제목이 너무 귀엽다고 느낌

    • “et tu btrfs?” 같은 패러디 제목도 떠올랐음
    • 그 책은 예전에 계약됐지만 표절 논란으로 출간이 지연된 것으로 알고 있음
  • 기사 중간에 갑자기 “내 사진입니다”가 등장해서 놀랐음

    • 다른 글보다 자기 홍보 성향이 강한 포스트처럼 보였음
  • 80년대에 컴파일러 엔지니어를 꿈꾸며 석사 학위를 받고 LR 파싱 논문까지 냈지만,
    당시에도 일자리가 거의 없었음. PCC와 GCC 소스를 공부하며 버텼고,
    이후 GUI 개발로 전향했는데 Java/Swing 등장 이후로는 그쪽이 훨씬 기회가 많았음

  • 20대 초반에 Simon & Schuster와 데뷔 계약을 따낸 게 더 궁금했음

    • 하지만 나중에 표절로 계약이 취소되었다고 함
  • “컴파일러 유튜브 채널을 만들까 고민 중”이라는 말이 인상적이었음
    블로그로 복잡한 내용을 정리해도 충분히 가치 있을 것 같음

    • 단지 취업을 위해 채널을 만든다는 게 현 취업 시장의 현실을 보여주는 것 같음.
      마치 자동차 정비사가 되려면 직접 차를 만들고 운전하는 영상을 찍어야 하는 상황 같음
  • 컴파일러 인터뷰를 앞두고 우연히 이 글을 읽게 되어 감사함
    Crafting Interpreters(링크)로 공부 중인데,
    인터프리터와 컴파일러는 다르다는 걸 이제야 깨달음
    인터뷰까지 시간이 없지만, 이후에는 Go로 작성된 인터프리터북(링크)과
    Rona가 추천한 기술 자료를 차근히 공부할 계획임

    • 개인적으로는 Andrew Appel의 책(Modern Compiler Implementation)이
      백엔드 알고리즘 이해에 큰 도움이 되었음. Dragon Book도 참고할 만하지만 파싱 부분은 건너뛰어도 됨
    • 혹시 이 글이 예전 다른 기사에서 재활용된 내용이 아닌지 의문이 듦