소프트웨어 엔지니어, 프로그램 매니저 (PM), 그리고 데이터 엔지니어
What is tech company?라고 구글링 해보니 위키피디아의 결과는 아래와 같다.
"A technology company is an electronics-based technology company, including, for example, business relating to digital electronics, software, and internet-related services, such as e-commerce services."
생각보다 넓은 정의였다. 내가 이해하던 테크 기업은 테크놀로지를 기반으로 하는 산업이 주 사업인 회사를 의미한다고 생각했다. 대표적인 빅 테크 기업을 지칭하는 말로 FAANG(Facebook, Amazon, Apple, Netflix, Google)이나 최근 Facebook의 사명을 Meta로 바꿈에 따라 새로 탄생한 신조어 MAMAA (Meta, Apple, Microsoft, Amazon, and Google's parent company Alphabet)등이 있다.
테크 기업에서의 대표 직무는 Software Engineer, Program Manager, 그리고 Data Engineer가 있다. 주로 Computer Science 전공 학생들이 Software Engineer와 Program Manager 직군으로 진출하며, 일부 MBA나 경영대 출신 친구들이 Program Manager로 채용되기도 한다. Data Engineer는 수학과나 통계학과, 그리고 일부 컴퓨터 사이언스 전공 학생들이 진출하는 직군이다. 세 가지 다 비슷한 듯 다른 직무와 책임을 가지고 있으며, 나는 현재 Software Engineer이지만, PM으로 인턴십을 했던 경험이 있고 데이터 엔지니어와 피엠들과 한 팀에서 소통하는 경우가 많기 때문에 그들의 일상을 옆에서 관찰할 수 있었다.
오늘 글에서는 각 직무의 가상 인물의 하루를 그려보면서 해당 직무가 어떤 것인지 좀 더 친숙하게 알아보려고 한다. 상황은 다음과 같다. 아마존 홀푸드(대형 그로서리 체인) 미래 수요 예측 팀 A에는 소프트웨어 엔지니어와 피엠 그리고 데이터 엔지니어로 구성되어 있다. 팀 A는 홀푸드 그로서리 제품들의 미래 수요를 예측하고, 이 예측한 수요를 공유함으로써 각 지점에서 수요에 맞춰 재고를 재주문하고 관리할 수 있도록 도와준다.
피엠 B 씨는 테크 기업 경력 5년 차이지만, 피엠으로서 경력은 2년이다. 학교에서 컴퓨터 사이언스를 전공 후, 현재 회사에 주니어 소프트웨어 엔지니어로 입사하여 3년간 경력을 쌓았다. 일을 하다 보니, 주어진 일을 실행하는 (execute) 엔지니어의 일 보다, 고객과 소통하고 앞으로 나아갈 방향을 정하고 계획하는 피엠의 일이 흥미로워 직무를 변경하였다. 엔지니어에서 피엠으로의 직무 전환은 업계에서도 종종 있는 일이고, 엔지니어로서의 경력이 피엠으로서 프로그램 개발 계획을 짜는데 큰 도움이 된다. 피엠의 주 업무는 다양한 의사 관계자 (엔지니어 팀 매니저, 고객, 매니지먼트 레벨, 준법감시팀 등)과 의사소통하며 고객의 니즈 만족시키면서 실현 가능한 개발 계획을 세운다. B 씨는 점심시간을 제외하고는 대부분의 시간이 미팅으로 이미 가득 차 있으며, 현재 개발 진척도와 앞으로의 방향성 등을 계속 검토한다. 피엠은 한 팀 또는 두 팀을 맡기 때문에, 피엠과 개발자의 비율은 1:10 정도이다. 절대적 숫자 자체가 적기 때문에, 학부 졸업 후 피엠으로 취직하기는 하늘의 별 따기이다. 오늘 B 씨는 홀푸드 서플라이 체인을 담당하는 각 지점 담당자를 만나, 현재 A팀이 운영하는 미래 수요 예측 소프트웨어의 기능 중 어떤 점이 불편한지, 어떤 기능이 제공되면 좋겠는지 인터뷰를 하였다. 인터뷰 내용을 바탕으로 다음 분기에 어떤 개발 아이템을 우선순위로 둘 지 고민하다 보니 어느새 퇴근할 시간이다.
소프트웨어 엔지니어 C 씨는 수요를 예측하는 소프트웨어를 개발한다. 피엠이 계획한 방향에 맞추어 이번 분기의 개발에 박차를 가하고 있다. 수요를 예측하는 모델 V1에서 V2로 옮겨가는 빅 프로젝트를 진행 중이다. V1보다 V2가 더 빠르고 외부 해킹 위협에 안전하고, 좀 더 최신의 테크 스택을 써서 모던화된 구조를 가지고 있다. 문제는 V1에서 V2로 고객들을 옮기면서, 예상치 못한 V2의 버그들이 발생하고 있다. 미처 테스팅으로 발견하지 못한 버그들을 고치느라 정신없이 하루가 흘러갔다. C 씨는 학부에서 컴퓨터 사이언스를 전공하였다. 일을 계획하는 피엠이나, 다소 이론적인 부분도 다루는 모델을 개발하는 데이터 엔지니어보다 프로젝트를 개발하고 손수 고치면서 매일매일 변화하는 소프트웨어를 보는 것에 흥미를 느껴 소프트웨어 엔지니어가 되기로 결심하였다. 현 팀에서 여름 인턴십을 하였는데, 팀원들과 프로젝트가 마음에 쏙 들어서 리턴 오퍼를 승낙하고 주니어 엔지니어로 들어오게 되었다. 아마존 AWS 클라우드 서비스를 이용하여 개발하면서 많은 것을 배우고 있다. 언젠가 아마존 클라우드 서비스 팀 또는 아마존 스마트 어시스턴트 알렉사 팀으로 이동해볼까 고민 중이다. 다음 주 온콜 (당직 개념으로, 서비스에 문제가 생길 시 24시간 대기하고 있다가 언제든지 고치는 직무. 보통 일주일씩 팀원들이 돌아가면서 하고, 큰 문제가 터졌을 시 새벽에 일어나서 고쳐야 하는 고충이 있다)이 예정되어 있기 때문에, 다음 주는 저녁 약속을 잡지 않았다.
데이터 엔지니어 D 씨는 지난 수년간의 매출자료를 바탕으로 홀푸드 그로서리 아이템 미래 수요 예측 모델을 개발한다. 토론토 대학에서 통계학 석사를 마친 D 씨는 석사 과정 당시 프로그래밍 언어에 관심을 가지게 되었고, 프로그래밍과 통계학 지식이 적절히 융합된 데이터 엔지니어의 직무가 마음에 들어 선택하게 되었다. 12월은 크리스마스와 연말 파티 등으로 전반적인 수요가 올라가고, 특기 육고기와 베이커리류가 잘 팔리기 때문에 과거 n년간의 데이터에 최근 추세를 감안하여 새로운 수요 예측 모델을 만드는 중이다. 이렇게 이론과 실용이 적절히 융합된 데이터 엔지니어의 직무가 D 씨 적성에 딱이다. 모델 개발뿐만 아니라, 데이터 아키텍처를 재 디자인해 보기도 한다. 어떤 형태로 데이터를 저장해야 프로그램의 성능을 유지하고 유지보수가 좋을지 현재 데이터 스토리지를 새롭게 디자인해보았다. 팀원들과 함께한 디자인 리뷰에서 받은 피드백을 바탕으로 제안서를 수정 중이다. 가끔씩 엔지니어에게 자신이 디자인 한 데이터 프로세싱을 위한 코드를 물어보기도 하고, 엔지니어가 데이터 관련 질문을 하면 답변해주기도 한다.
이상 가상의 아마존 홀푸드 A팀에서 일하는 PM, 소프트웨어 엔지니어, 그리고 데이터 엔지니어의 일과였다. 당연히 하나의 예시일 뿐이고, 팀과 회사에 따라 더 다양한 일과 책임을 가지고 있지만, 전반적인 느낌을 알아가는데 도움이 되길 바라는 마음이다.
Title Photo by Etienne Girardet on Unsplash