# 컴파일러 엔지니어가 되는 법

> Clean Markdown view of GeekNews topic #24252. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=24252](https://news.hada.io/topic?id=24252)
- GeekNews Markdown: [https://news.hada.io/topic/24252.md](https://news.hada.io/topic/24252.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-11-10T06:38:50+09:00
- Updated: 2025-11-10T06:38:50+09:00
- Original source: [rona.substack.com](https://rona.substack.com/p/becoming-a-compiler-engineer)
- Points: 36
- Comments: 2

## Summary

컴파일러 엔지니어라는 직무는 **언어 설계보다 실행 효율을 다루는 저수준 소프트웨어 엔지니어링 영역**으로, 여전히 **진입 장벽이 높고 채용 시장이 좁은 전문 분야**입니다. 글쓴이는 MIT 강의와 오픈소스 학습을 통해 **C++ 기반 알고리즘, IR, 최적화 패스 구현** 등 실전 역량을 쌓으며 스타트업에서 커리어를 시작한 경험을 공유합니다. 이 글은 “성능을 미세하게 다듬는 일에 매력을 느끼는 개발자”라면 한 번쯤 곱씹어볼 만한 현실적인 조언으로 가득합니다.

## Topic Body

- **컴파일러 엔지니어**는 프로그래밍 언어를 직접 설계하지 않고, 기존 언어를 더 빠르고 효율적으로 실행되게 만드는 **소프트웨어 엔지니어링 분야**  
- 이 직무는 전체 소프트웨어 엔지니어 일자리 중 극히 일부만 존재하며, **진입 장벽이 높고 수요가 제한적**  
- 채용 기업은 **스타트업, 대형 기술기업, 학계, 금융권, 오픈소스 프로젝트** 등으로 다양하지만, 대부분은 경력자 중심 구조  
- 면접에서는 **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』** 출간 소식 공유

## Comments



### Comment 46181

- Author: sacru2red
- Created: 2025-11-11T12:19:24+09:00
- Points: 1

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

### Comment 46110

- Author: neo
- Created: 2025-11-10T06:38:50+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=45851495) 
- 컴파일러에 관심 있는 사람이라면 **ClangBuiltLinux** 프로젝트나 **LLVM** 이슈 트래커에서 기여를 시작해보길 권함  
  [Linux kernel with LLVM 이슈 목록](https://github.com/ClangBuiltLinux/linux/issues)과  
  [LLVM의 good first issue 목록](https://github.com/llvm/llvm-project/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22)을 참고할 수 있음  

- 글의 주제가 개인 홍보용처럼 느껴졌음  
  하지만 진짜로 **컴파일러 엔지니어**가 되고 싶다면 직접 컴파일러를 만들어보는 게 핵심임  
  토크나이징, AST 구성, 타입체킹, IR(Intermediate Representation) 같은 기본 개념을 익히는 게 중요함  
  [LLVM 튜토리얼](https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html)을 추천함.  
  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 목록](https://mgaudet.github.io/CompilerJobs/)에서 볼 수 있음  
  실제로는 **지원자 수가 일자리보다 훨씬 많음**  
  LLVM이나 Rust, Swift, Carbon 같은 프로젝트에 기여하는 게 가장 현실적인 진입 경로임  
  참고 자료: [PL Resources](https://bernsteinbear.com/pl-resources/),  
  [How to Learn Compilers (LLVM Edition)](https://lowlevelbits.org/how-to-learn-compilers-llvm-edition/),  
  [Compilers YouTube 채널](https://www.youtube.com/@compilers/videos)
  - “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**([링크](https://craftinginterpreters.com/))로 공부 중인데,  
  인터프리터와 컴파일러는 다르다는 걸 이제야 깨달음  
  인터뷰까지 시간이 없지만, 이후에는 **Go로 작성된 인터프리터북**([링크](https://interpreterbook.com/))과  
  Rona가 추천한 기술 자료를 차근히 공부할 계획임  
  - 개인적으로는 Andrew Appel의 책([Modern Compiler Implementation](https://www.cs.princeton.edu/~appel/modern/java/))이  
    백엔드 알고리즘 이해에 큰 도움이 되었음. **Dragon Book**도 참고할 만하지만 파싱 부분은 건너뛰어도 됨
  - 혹시 이 글이 예전 다른 기사에서 **재활용된 내용**이 아닌지 의문이 듦
