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