컴파일러 엔지니어 되기

5 hours ago 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 프로필에 “compilers” 관심을 명시해 주목도 상승
  • 개인적 배경(미국 시민권, MIT 학위 등)이 유리하게 작용했음을 인정
  • 네트워크가 부족한 경우, 이후 섹션에서 차별화 전략 제시

면접 유형

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

면접 준비 과정

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

개선점 및 배운 점

  • 멘토 부재: LinkedIn을 통한 네트워킹 필요성 인식
  • 전문서적(Engineering a Compiler, Dragon Book)은 개념 복습에는 유용하지만 실전 대비에는 한계
  • 면접 질문 기록 부재: 복기 부족을 아쉬움으로 언급
  • 오픈소스 참여 미흡: Carbon, Mojo 프로젝트를 검토했으나 기여하지 못함

컴파일러를 선택한 이유

  • 수학 전공에서 출발해 이론적 사고와 저수준 프로그래밍의 유사성에 매료
  • 머신러닝의 경험적 접근보다 원리 기반 시스템 구축에 흥미
  • MIT 시절 친구들과의 협업, 경쟁, 커뮤니티 분위기가 선택에 영향
  • “돈과 명예보다 원리 탐구를 즐기는 사람들의 분야”로 묘사

기술 취업 시장과 조언

  • 현재 기술 취업 시장의 경쟁 심화 언급
    • 일부 친구들은 수백 건 지원 후 소수의 면접만 획득
  • 차별화 전략으로 오픈소스 참여, 소셜미디어 활용, 대학 자원 활용, 커뮤니티 활동 제안
  • 뉴욕의 시스템 리딩 그룹 등 전문 스터디 모임 참여 사례 소개
  • 이러한 활동이 직접적인 취업 보장은 아니지만 기회 확률을 높임

결론 및 개인적 경험

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

Read Entire Article