2P by GN⁺ 7시간전 | ★ favorite | 댓글 1개
  • 컴파일러 엔지니어는 프로그래밍 언어를 직접 설계하지 않고, 기존 언어를 더 빠르고 효율적으로 실행되게 만드는 소프트웨어 엔지니어링 분야
  • 이 직무는 전체 소프트웨어 엔지니어 일자리 중 극히 일부만 존재하며, 진입 장벽이 높고 수요가 제한적
  • 채용 기업은 스타트업, 대형 기술기업, 학계, 금융권, 오픈소스 프로젝트 등으로 다양하지만, 대부분은 경력자 중심 구조
  • 면접에서는 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』 출간 소식 공유
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도 참고할 만하지만 파싱 부분은 건너뛰어도 됨
    • 혹시 이 글이 예전 다른 기사에서 재활용된 내용이 아닌지 의문이 듦