Facebook의 엔지니어링 문화 2부: 커리어, 엔지니어링 역할, 레벨 체계, 채용 이후 성장 경로와 조직 운영 방식에 대한 심층 개요.
이 글은 “Facebook의 엔지니어링 문화 들여다보기”의 2부입니다. 시리즈 1부는 여기에서 확인하세요.
이 2부작 시리즈는 “소프트웨어 엔지니어와 엔지니어링 관리자가 Facebook의 엔지니어링 문화에 대해 알아야 할 것들”에 관한 내용입니다. 이 정보는 특히 입사를 계획하는 사람들에게 매우 유용하지만, 그 유용성은 그 한 회사를 훨씬 넘어섭니다. Facebook은 눈부시게 빠른 속도로 성장해 전 세계적인 지배력을 확보했기 때문에, 그들의 여러 비전통적인 방식은 비슷한 속도로 성장하고자 하는 다른 기술 기업들에게도 참고가 될 수 있습니다.
다시 말씀드리면, 이 글 전반에서 저는 Meta를 “Facebook”이라고 부르겠습니다.
이 2부작 시리즈에는 지금까지 공개된 어떤 출판물보다도 Facebook의 엔지니어링 문화에 대한 더 많은 정보가 담겨 있습니다. 이 시리즈를 작성하면서, 저는 현재 및 전직 Facebook 소프트웨어 엔지니어, 엔지니어링 매니저, 엔지니어링 디렉터 12명 이상과 이야기하며 아래 내용을 검증했습니다. 제가 이야기한 사람들 대부분은 Facebook에서 여러 해 근무한 경험이 있었습니다.
그렇다 하더라도 수만 명의 소프트웨어 엔지니어가 있는 조직의 모든 세부 사항을 빠짐없이 담아내는 것은 불가능합니다. Facebook은 개인과 팀 모두에게 일하는 방식을 결정할 높은 자율성을 부여하기 때문에, 그 모든 다양성을 다 다룰 수는 없습니다. 하지만 유용하고도 포괄적인 개요를 제공하려고 노력했습니다.
이번 글에서는 1부에서 이어서, 다음 내용을 다룹니다:
1. 개요 - 1부에서 다룸
용어
핵심 가치
Facebook과 다른 Big Tech 기업들 사이의 두드러진 차이점
엔지니어링 중심 문화에 대하여
개인주의적 문화에 대하여
2. 채용 - 1부에서 다룸
채용 프로세스
채용 지원
소프트웨어 엔지니어 채용
엔지니어링 매니저 채용
보상: 구조와 예시
내부 이동
복지
동문과 부메랑 입사자
3. 커리어
엔지니어링 및 제품 역할
커리어 레더
역량 축
엔지니어링 관리
성과 평가, 보너스, 그리고 추가 주식 보상
COVID와 조정된 기대치 프로그램
캘리브레이션 프로세스
승진
아키타입
4. 엔지니어링 프로세스
Bootcamp 및 온보딩
해커톤
팀과 프로젝트 운영 방식
문서화
테스트
기술 스택
주목할 만한 내부 시스템과 도구
오픈 소스
회사 내 부문
전사 프로세스
시간이 지나며 회사에서 일어난 변화
5. 조언
엔지니어로서 성공하기 위한 조언
엔지니어링 매니저로서 성공하기 위한 조언
회사를 떠날 때의 조언
창업자와 매니저가 Facebook에서 가져갈 수 있는 조언과 영감
바로 들어가 봅시다:
엔지니어링 역할:
소프트웨어 엔지니어 (SWE). 보통 SWE라고 부릅니다. 이 역할 안에서 다음과 같이 나뉠 수 있습니다:
제너럴리스트: 제품 엔지니어
스페셜리스트: Android, iOS, Frontend UI (web)
제너럴리스트인지 스페셜리스트인지에 따라 Bootcamp 이후 합류할 수 있는 팀이 달라지며, 일부 팀은 스페셜리스트를 대상으로 합니다.
Business Engineer: 엔지니어가 Facebook 외부의 파트너와 함께 일하는 역할입니다. 여기에는 Solutions Engineer (SE), Partner Engineer (PE), 그리고 Developer Support Engineer가 포함됩니다. 이 역할들 역시 코딩을 포함하지만, SWE만큼 직접적으로 손을 많이 움직이는 성격은 아닙니다. 총보상은 같은 레벨 SWE의 약 70-85% 수준입니다. 동시에, 이 직무의 면접 과정은 코딩 직무와 동일한 채용 기준을 적용합니다.
Enterprise Engineer (EE): 내부용 도구에 집중하는 역할입니다. 총보상은 SWE의 약 70-85% 수준이며, 기본급과 보너스 목표치는 SWE와 비슷하지만 RSU는 더 적습니다.
Machine Learning Engineer (MLE). 일반적으로 IC4+ 범위로 설정됩니다. 이 트랙에서 성공적으로 채용되려면 보통 ML 관련 고급 학위 및/또는 ML 특화 산업 경력이 여러 해 필요합니다.
Research Scientist. MLE와 유사한 일을 하지만, 보통 박사 학위를 가진 사람만 채용합니다.
인프라 엔지니어링 역할:
Production engineer (PE). 이 역할은 다른 Big Tech 기업들이 ‘Site Reliability Engineer’ (SRE)라고 부르는 것과 비슷합니다. 한 전직 PE에 따르면, "제품과 인프라 사이의 간극을 메우는 사람들로, 다양한 내부 도구를 돌보고 데이터 센터 배포를 자동화합니다. Google의 SRE와 아주 다르지는 않지만 범위는 더 넓습니다. 아마 Facebook 엔지니어링 조직에서 최고의 역할일 것입니다."
Network Operations Engineer
Optimization Engineer
Hardware Engineer
Enterprise Network Reliability Engineer. Enterprise Network Reliability (ENR) 그룹 내에서 일합니다. 이 그룹은 Facebook의 데이터 센터 네트워킹을 운영합니다.
AR/VR
하드웨어, 소프트웨어, 연구 분야
이 영역에서는 매우 다양한 포지션이 열려 있습니다
데이터 과학 및 엔지니어링
Data Scientist (DS). DE와는 다른 조직에 속하지만, 상위로는 기술 조직에 보고됩니다. Data Scientist로 입사했지만 더 많은 머신러닝 엔지니어링 업무를 하고 싶어 한 사람들에 대한 이야기를 들은 적이 있습니다. 그런 사람들은 내부 이동을 위해 MLE 트랙으로 다시 면접을 봐야 했습니다.
Data Engineering (DE). “애널리틱스 엔지니어링”에 더 가깝습니다. 이 역할은 SQL, 파이프라이닝, 대시보드 작업을 포함합니다. 초창기에는 이 역할이 때때로 논쟁거리가 되기도 했는데, 일부 사람들이 면접 과정이 더 쉬운 DE로 입사한 뒤, 곧 지루함을 느끼고 SWE만 하던 더 “본격적인” 데이터 작업을 하고 싶어 했기 때문입니다. 그러려면 다시 면접을 통해 내부 이동해야 했습니다. 이것이 잘되지 않으면, 사람들은 자주 회사를 떠났습니다.
제품 및 프로그램
PM: Product Manager
TPM: Technical Program Manager. 이 역할은 TPM이 하는 일과 소프트웨어 엔지니어가 그들로부터 배울 수 있는 것이라는 글에서 자세히 다루었습니다.
전형적인 제품 팀은 다음으로 구성됩니다:
여러 명의 SWE
한 명의 DS
한 명의 DE
한 명의 PM
사용자 대상 팀의 경우: 디자이너, 그리고 경우에 따라 UX 리서처
한 명의 엔지니어링 매니저
Facebook에 합류하는 많은 소프트웨어 엔지니어를 놀라게 하는 점 하나는, 소프트웨어 엔지니어가 같은 팀 안에서 데이터 사이언티스트와 데이터 엔지니어와 얼마나 많이 함께 일하는가입니다.
모든 개별 기여자 (IC)는 Software Engineers (SWE)라고 불립니다. 레벨 정보는 Facebook 내부에서도 비공개이며, 승진도 공개되지 않고 엔지니어와 매니저 사이에서만 공유됩니다. 이를 공유하는 것은 좋지 않게 여겨집니다.
Facebook은 개별 기여자 역할의 등급을 매기기 위해 IC{number} 레벨링을 사용합니다. 소프트웨어 엔지니어의 경우 E{level}이라는 용어도 쓰는데, 여기서 E는 engineer를 뜻합니다. 회사 내부에서는 이 용어들을 서로 바꿔 사용하므로, ‘E4’와 ‘IC4’의 소프트웨어 엔지니어는 같은 의미입니다. 동시에 IC 번호 체계는 소프트웨어 엔지니어링을 넘어 제품 관리, 디자인, 데이터 과학 등 다른 기술 직군에도 확장됩니다.
대략 2021년부터는 내부에서도 E 표기보다 IC 표기를 점점 더 많이 사용하게 되었습니다.
이 글의 나머지 부분에서는 E{level} 용어를 사용하겠습니다. 이 글의 초점이 소프트웨어 엔지니어이기 때문입니다.
다음은 Facebook의 레벨 체계와, 이것이 다른 대부분의 Big Tech 기업에서 어떤 직함에 해당하는지입니다:
E3 - Software Engineer 1 (다른 곳에서는 이 모든 레벨을 보통 ‘Software Engineer’라고 부름)
E4 - Software Engineer 2
E5 - Senior Software Engineer
E6 - Staff Software Engineer
E7: Senior Staff Software Engineer
E8: Principal Software Engineer
E9: Distinguished Software Engineer (외부적으로는 여전히 ‘Software Engineer’라고 부름)
E10: Fellow. Facebook에는 이 레벨의 엔지니어가 매우 적을 가능성이 큽니다. 제가 이야기한 몇몇 사람들은 전체를 통틀어 두세 명뿐일 것이라고 추정했습니다. 이 레벨은 Google의 Fellow 레벨과 유사합니다.
레벨 정의는 영향 범위와 세 가지 축(direction, people, engineering excellence)으로 구성됩니다. 다음은 각 레벨의 요약입니다: