Candidate 편
사실 이번 글은 말머리 정하기가 조금 어려웠다. 인터뷰 프로세스에 대해서 적어보고 싶었는데 어떻게 생각하면 sweet 말머리가 어울리는 내용이기도 하기 때문이다. 한국에서 개발자 인터뷰에는 면접관으로 밖에 참여해본 적이 없기 때문에 비교는 조금 힘들 테지만 내가 아는 대로 적어보려고 한다.
밸리에서의 Software Engineer 인터뷰 프로세스는 간단히 정리하면 대부분 다음과 같다.
1. 레주메 제출 및 서류 심사
2. 리크루터와의 폰 인터뷰
2.5. 인터넷 코딩 테스트
3. 개발자와의 폰 인터뷰
4. 온사이트
대부분 이런 프로세스인 것이지 회사마다 조금씩 다르긴 하다. 예를 들면 요즘은 1-2 사이나 2-3 사이에 코딩 Assignment나 온라인으로 문제 풀기를 내주는 경우도 많이 있다.
간단하게 부가설명을 하고 나의 경험들과 왜 말머리가 Sour인지에 대해 이야기해보려 한다.
일단 레주메 제출을 하는 방법은 여러 가지가 있는데 내가 지금 생각할 수 있는 몇 가지 방법으로는 : 웹사이트에서 공채에 넣는 방법, 지원하는 회사에 이미 지인이 있다면 추천을 받는 방법, 이미 예전에 알고 지냈던 리크루터가 있다면 직접 보내는 방법, 아직 학생이라면 학교에서 지원하는 구직 플랫폼 등을 이용하는 방법, 마지막으로 Hired나 LinkedIn 같은 곳에서 컨택트를 찾는 방법 등이 있는 것 같다.
그렇게 해서 레주메 섹션을 통과하고 나면 리크루터와 통화를 할 기회가 생기게 되는데, 리크루터와의 통화에서는 대부분 간단한 과거 스펙이나 경험 등을 이야기한다. 그렇게 해서 리크루터는 지원자가 지금 오픈인 포지션에 적합할지를 판단하게 된다. 간혹 어떤 리크루터들은 연봉을 얼마 정도 생각하냐라던가 하는 기본적 질문을 하는 경우도 있다.
2.5번은 인터넷 코딩 테스트인데, 나는 이 부분은 한두 번 정도밖에 안 해보긴 했다. 모든 회사들이 다 하는 건 아니고 가끔 하는데 어떤 회사들은 코딩 프로젝트로 예를 들어서 Rest API로 사진을 fetch 해서 infinitely scrolling list로 보여주는 앱을 만들어라 이런 문제를 받아본 적도 있고, 어떤 회사들은 hackerrank 같은 사이트를 통해서 leetcode 형식으로 알고리즘 문제를 몇 가지 푸는 방식도 있는 걸로 알고 있다.
그다음 단계로 넘어가게 되면 이제 개발자와의 phone screening을 하게 된다. 이 단계에서는 대부분 통화를 하면서 coderpad 같은 온라인 코드 페어링 플랫폼을 이용해서 코딩 관련된 문제를 푼다. 물론 1시간 내내 문제만 푸는 경우도 있고 그게 아닌 behavioral 질문이라던가, 커리어에 대한 궁금한 점들을 interviewer가 물어보는 과정을 거친다. 보통 phone screening에 나오는 문제들은 onsite보다는 간단한 문제들이 나온다. 물론 매니저 포지션에 지원하는 거라면 다른 질문이 나올 수도 있고, staff engineer라면 또 다른 질문이 나오겠지만 이 글은 나의 경험으로 하는 이야기기 때문에 junior engineer / senior engineer 기준이라고 생각하면 좋을 것 같다.
다음은 이제 가장 중요하다고 할 수 있는 온사이트 부분이다. 대부분의 회사들은 이제 온사이트까지 오면 그 회사 위치로 지원자를 부른다. 부른다 라는 말은 비행기 편 / 호텔 / 택시 등등을 모두 지원해 준다는 말이다. 온사이트는 대부분 4시간에서 5시간 정도 진행되고 각 인터뷰는 약 45분에서 1시간 사이라고 생각하면 된다. 내가 겪은 온사이트는 크게 두 가지 부류로 나눌 수 있다. 첫 번째는 Project based이고 두 번째는 Algorithm based라고 표현할 수 있겠다. 나는 원래 약 5년간 안드로이드 개발자였는데 안드로이드 개발자일 때는 Project based도 많이 있었다. 이 타입은 보통 아침에 도착하면 약 2시간 정도 동안 간단한 앱을 만들라고 한다 (예를 들면 “이 API를 이용해서 이 Endpoint에서 콘텐츠를 긁어와서 inifinitely scroll 하는 리스트뷰를 만들어라) 이 정도의 가이드라인만 주고, 다음 페이지는 언제 fetch 해 올 건지, 리스트뷰는 리사이클을 할 것인지, 등등의 세부사항은 본인이 정해서 하면 된다. 그 이후에 1시간 정도 그 앱의 스트럭쳐나 코드에 대해서 같이 이야기를 하고 왜 그런 결정을 했는지에 대한 이야기를 또 하게 된다. 그 후에 2시간은 general algorithm problem을 풀게 된다 (아래 설명)
Algorithm based 타입에서는 프로젝트는 따로 없고 general algorithm에 대한 문제를 하루 종일 풀게 된다. 예시 문제는 algoproblems.com 이라는 곳에 가면 몇 가지 예시가 있다. 보통은 첫 10분 정도는 나의 과거 프로젝트나 경험들에 대한 이야기를 나누고, 그다음 문제를 풀고, 마지막 5분 정도는 회사에 대해 궁금한 점을 묻는다. 회사에 대해 궁금한 점을 물을 때는 꼭 회사 전체에 대한 것을 물어야 하는 건 아니고, 그 면접관에게 궁금한 것, 내가 들어갈 팀에 대해 궁금한 것, 워라밸, 등등 뭐든 물어봐도 된다. 나는 지금 Amazon Alexa 산하에 팀을 다니는데 난 Google Home에 비해 Alexa의 강점은 뭐야? 라던지 voice data가 구글이 훨씬 많을 텐데 어떻게 compete 할 생각이야? 같은 질문들을 했다. 이런 형식의 인터뷰가 약 4-5개 정도 있고 중간에 lunch interview가 있다. 런치 인터뷰어는 보통 채용에 큰 관여를 하지는 않고 좀 더 캐주얼한 질문들을 할 수 있는 기회가 주어지는 시간이다 (점심을 함께 먹으면서) 보통 Senior engineer이라던지 그 이상의 개발 포지션이 되면 architectural design관련 문제라던지 다른 팀원과 협업할 때에 대한 질문들이라던지 이런 것들이 추가되기도 하고, 회사들 중에는 culture interview라던지 bar raiser라던지 하는 부분들이 포함된 인터뷰도 있다. 이런 부분은 사실 좀 더 마이너 하다고 느끼기 때문에 특별한 개인 요청이 있지 않는 이상 다루지 않을 생각이다.
나는 사실 실리콘 밸리 인터뷰 프로세스에 좋은 점도 많다고 생각하지만 운칠기삼이라고 생각하고 알고리즘 문제를 잘 푸는 사람이 꼭 일을 잘하지 않는다는 생각이 강하다. 그리고 또 온사이트를 5시간이나 하는 것은 너무 사람이 진이 빠지는 일이기도 하다. 실리콘밸리에서의 취업이나 근무 환경에 대해 글을 열심히 읽으시는 독자분들은 이미 아실 수도 있겠지만 실리콘 밸리에서는 talent acquisition에 아주 많은 열을 올리는 것이 사실이기는 하다. 즉, candidate이 능력이 있다면 회사가 어떻게든 데려오려고 많이 노력한다. 그렇기 때문에 연봉도 개개인이 꽤나 많이 차이나기도 하는 것이다. 같은 Engineer level이어도 인터뷰 점수나 연봉 흥정에 따라 꽤 차이가 날 수 있다. 하지만 이런 것은 모두 다 인터뷰를 통과한 후다. 인터뷰를 통과한 후에는 “아 이 회사가 정말 나를 원하는구나”라고 느낄 수 있을 정도로 갑을 관계가 바뀐다고 느낀다. 그런데 그전에 인터뷰를 하는 단계에서는 그런 느낌이 전혀 들지 않기 때문에 뭔가 인터뷰를 하는 동안에는 기분 상한다고 생각하는 사람들도 있는 것 같다. 그리고 또 연봉이 개개인마다 다르다는 이 시스템도 본인이 많이 받는 편이면 좋은 시스템이지만 본인이 반대로 같은 레벨 내에서 적게 받는 사람이라면 조금 억울하다고 생각할 수 있을 것 같다.
다음 연재는 Engineering Interview 2 (interviewer 편)이라는 이름으로 내가 면접관으로서 겪었던 일들을 한번 다뤄볼까 한다.