제공 : 한빛 네트워크
저자 : 존몽건, 노아 수오야넨 킨들러, 에릭 기게리
역자 : 서환수
출처 : 프로그래밍 면접, 이렇게 준비한다
2차 면접
MS의 채용 과정 중 재밌는 것 하나가 있다. MS의 인턴 채용은 각 단계가 넘어가면 리쿠르터가 계속 바뀐다. 그러니까 1차 면접 일정을 잡아주던 리쿠르터와 2차 면접 일정을 조정하는 리쿠르터가 다르다. 또한, MS 본사가 있는 Redmond에서 만나는 리쿠르터 역시 다르다. 앞글에서 말했듯이 게으른 리쿠르터를 만나면 한 없이 기다리는 일도 벌어진다. 큰 규모의 회사에서는 채용과정이 이렇게 길 수밖에 없다. 그러나 박사 과정의 연구 자리는 의외로 짧게 끝나는 경우도 많다. 그 때는 일반적인 리쿠르팅 과정이 아닌 연구소 특정 팀장이 직접 학생과 전화 면접으로 결정하기도 한다. 그래서 1~2주면 다 끝나기도 한다.
2차 면접은 직접 Redmond 메인 캠퍼스에서 면접을 보기 때문에 On-site interview라고도 불린다. 일단 마이크로소프트의 인턴 및 풀타임 인터뷰의 가장 큰 장점은 비행기/호텔 비용은 물론 관광 비용까지 전액 MS가 부담해준다는 사실이다. 아무리 작게 잡아도 천불이 넘는 돈을 면접자에게 쓴다는 소리다. 뒤에서도 자세히 쓰겠지만 수많은 리쿠르터들이 면접자들의 편의를 위해 노력하고 있었다.
2차 면접은 직접 내가 일을 하게 될 팀의 팀원들과 직접 면접을 본다. 팀 배정은 순전히 리쿠르터 혹은 1차 면접관 마음대로인 것 같다. 나는 생긴지 6개월된 팀과 면접을 보게 되었다. 이 팀은 C#으로 특정 소프트웨어 시스템을 만드는 것이었다. C#으로 이런 성격의 프로그램을 만든다는 것이 다소 의외였다. 그런데 나는 C#으로 개발한 적이 없었다. 아마도 내가 예전에 수행했던 프로젝트 중 비슷한 것이 있어서 이렇게 고른 것 같다. 재미있었던 것은 나는 그 어떤 사람에게서도 “C#을 써봤느냐”라는 질문을 받지 않았다. 오직 기본적이 전산 능력을 중점적으로 테스팅하였다.
원하는 시애틀 방문 날짜는 자기가 최대한 고를 수 있다. 그리고 공식적으로 2박 3일 동안의 경비를 지원한다. 첫째 날 도착해서, 둘째 날 면접보고, 마지막날 관광하고 집으로 돌아가는 구조다. 그러나 하루 더 연장해서(3박 4일) 하루종일 관광만 할 수도 있다. 최종 면접 날짜가 확정이 되면 MS 여행 부서에서 비행기 표와 호텔을 예약해서 알려준다. 교통수단은 렌터카나 택시를 고를 수 있는데, 렌터카를 선택하면 역시 공항에서 바로 차를 탈 수 있게끔 해준다. 인터뷰 내내 느꼈지만 정말 면접자를 최대한 편하게 해주려고 많은 리쿠르터들이 노력하고 있었다.
나는 렌터카 대신 택시를 선택하였다. 위 그림은 MS에서 주는 택시 바우처(Voucher)다. 일종의 쿠폰으로, Yellow Cab 택시를 부르고 이 바우처를 주면 택시비를 낼 필요가 없다. 물론 다른 택시를 잡아타더라도 돈은 다 돌려준다. 그 외 관광(박물관 관람 비용 포함)에 소요되는 모든 경비는 전부 다 되돌려 받을 수 있다. 식비도 하루에 75불까지 돌려받을 수 있다. 물론 도박이나 옷 등을 사는 데 쓰는 돈은 돌려받을 수가 없다고 나와 있다.
면접은 오전 11시부터 오후 4시까지 진행된다. 나는 한 팀하고만 면접을 보았고, 총 4명의 직원과 면접을 하였다. 두 팀과 면접을 보는 경우도 있으며, 많게는 5명과 면접을 보는 경우도 있다. 한 사람 당 한 시간씩 면접을 보는 구조다. 물론 중간에 점심 시간이 있으며, 두 번째 면접 본 친구와 같이 밥을 먹으면서 이런 저런 이야기를 한다. 점심을 먹는 과정도 면접의 일부이므로 긴장을 늦추면 안 된다.
먼저 리쿠르팅 빌딩인 19동으로 아침 10시까지 도착한다. 인턴 면접은 거의 끝 무렵이라 그런지 면접 보러 온 친구들은 많지 않은 것 같다. 이미 인턴을 시작한 친구들도 있으니 말이다. 여기서 굉장히 친절한 여자 직원이 과도한 친절을 보이며 내일의 관광 일정을 잡아준다. 이윽고 담당 리쿠르터가 나오면서 오늘의 면접 일정에 대해 알려준다. 면접은 실제 직원들과 만나는 것이므로 그들이 있는 빌딩으로 간다. MS 캠퍼스는 굉장히 넓으므로 모든 이동은 전용 차량으로 움직인다.
도요타의 전기-가솔린 하이브리드 차량으로 면접자를 각 건물로 이동시켜 준다. 면접자를 위해 이렇게 적지 않은 전용 차량까지 준비하고 있다는 것이 놀라웠다. 하나 재밌던 사실은 운전하시는 분들이 모두 나이 많으신 할아버지/할머니라는 사실이다. 어르신들에게 간단한 일자리를 주는 셈이다.
그리고 11시부터 본격적으로 면접을 본다. 1차 면접과 비슷하게 간단한 자기소개를 시작으로 코딩 문제가 핵심을 이루고, 마지막에는 Q&A가 뒤따른다. 코딩 문제는 직접 화이트보드에 코드를 써가며 설명을 해야 한다. 이런 스타일의 면접은 참 쉽지가 않다. 이에 반해 지식을 묻는 면접은 이보다 훨씬 수월하다. 예를 들어, “세마포어와 뮤텍스의 차이가 뭐야?”라고 물어보는 질문에 대답하는 것은 쉽다(모르면 큰일나지만). 또한 경험을 묻는 질문 역시 수월하다. 예를 들어, “네가 겪은 버그 중 가장 힘든 것이 뭐였어?” 같은 것도 힘들지 않다. 이 문제들은 이번에 내가 직접 받은 질문이기도 하다.
알고리즘 문제는 기출 문제 등으로 준비를 할 수는 있지만, 직접 그 자리에서 머리를 써야 하기 때문에 결코 쉽지 않다. 그렇다고 해서 아주 어려운 문제를 내는 것은 결코 아니다. 풀지 못하더라도 문제에 어떻게 접근하는지 사고 과정을 잘 보여주는 것이 중요하다. 역시 영어로 내가 만든 알고리즘을 정확하게 표현하는 능력이 가장 힘들었다. 그리고 각 면접이 끝나면 면접관이 각종 정보를 다음 사람에게 모두 넘겨준다. 그래서 앞 면접에서 내가 어떤 짓(?)을 했는지 모두 알고 있다.
처음 만난 친구는 이제 들어 온 지 얼마 되지 않은 미국 친구였다. 말을 또박또박 해줘서 알아듣는 데 큰 문제는 없었다. 코딩 문제도 친절하게 종이에 프린트까지 해서 나에게 주었다. 처음엔 긴장해서 약간 잘못 이해하기도 했지만, 큰 어려움 없이 풀 수 있었다. 그리고 미처 생각하지 못한 부분을 계속 집어내며 나의 답변을 얻었다. 이 친구에게는 특이하게도 소프트웨어 디자인 문제도 받았다. 단순히 알고리즘 문제가 아니라 실제 이 팀에서 만드는 제품 중에서 이 기능을 넣을 때 어떤 방식으로 할 것인가와 같은 문제도 받았다.
두 번째 만난 분은 마치 영화 주라기 공원에 나왔던 뚱보 프로그래머와 같은 분이었다. 방이 굉장히 지저분하였고, 휴지통에는 콜라 캔이 산더미처럼 쌓여 있었다. 이 분과 풀은 문제는 그렇게 쉽지 않았다. 생각보다 이 분은 아주 꼼꼼한 코드까지 요구해서(예를 들어, 인덱스 변수가 i+1인지 i인지와 같은 것) 꽤나 땀을 흘렸다. 이렇게 두 번째 면접을 마치니 어느덧 오후 한 시였다. 이 친구와 함께 밥을 먹으러 갔다.
밥을 먹으면서는 비교적 가벼운 대화를 나누었다. 나는 아쉽게도 어학연수를 갖다 온 적도 없고, 외국인 친구도 많은 편이 아니어서 이런 가벼운 대화가 상당히 힘든 편이다. 차라리 무엇을 설명하라는 것은 자신 있지만 이런 대화는 쉽지 않다. 그래도 밥을 먹으면서 많은 대화를 나누었다. 특히 어떻게 소스 코드를 관리하는지 내가 물어봤는데, 각자 가진 스마트 카드키로 소스 코드에 접근이 가능하다고 한다. 그리고 이것만 있으면 집에서도 근무가 가능하다고 한다. 그래서 어떤 날은 회의가 없는 날로 정해 재택근무도 종종 한다고 들었다. 그리고 이 팀이 C#으로 소프트웨어를 개발하지만 특별히 더 멋지고 편한 라이브러리를 쓰는 것은 아니라고 한다. 그냥 다른 회사 사람들이 C#을 가지고 개발하듯이 자기들도 그렇게 할 뿐이라고 이야기했다. 단지 차이점이 있다면, .NET 프레임워크의 소스를 볼 수 있는 권한이 있다는 것이었다.
세 번째로 만난 친구는 중국계 친구였다. 택시를 타면서 택시 아저씨가 MS에서 인도와 중국 사람들이 빠지면 바로 망한다는 소리를 할 정도로 MS에는 외국인이 많다. 특히, 중국과 인도인들이 많았다. 그리고 MS는 외국인을 가장 많이 고용하는 회사 중 하나다. 2007년 현재, 미국에서는 취업을 위한 비자인 H1B 쿼터를 두고 말이 많다. 빌 게이츠 회장은 직접 국회 청문회에 나와 더 우
수한 외국 인재를 잡을 수 있도록 H1B 숫자를 늘려야 한다고 주장하였다. 빌 게이츠의 생각대로 MS는 외국인을 위한 H1B, 그리고 영주권 신청에도 상당히 적극적이다(물론 보수적인 공화당 의원들로부터는 비난을 받는다).
마지막에 만난 분은 팀장이었다. 12년 동안 여기서 일했다고 하는 인도 출신의 개발자였다. 굉장히 조용히 말하였고, 특히 말을 알아듣기 너무 힘들어서 고생을 많이 하였다. 레쥬메를 자세히 읽어본 것 같았다. “예전에 네트워크 프로젝트를 했던데, 그거 설명해봐”라는 식으로 이야기를 시작한다. 그리고 “리눅스와 윈도우의 차이가 뭐라고 생각하느냐”라는 질문도 들었다. 그래서 평소 가지고 있던 이야기를 잘 풀어 이야기를 했다.
이 아저씨와는 질문 답변을 꽤 많이 주고받았다. 특히 외국인으로서 여기에서 사는 것이 어떠냐고 물어봤더니, 인도에서의 삶과의 trade-off는 있지만 행복하다고 말씀하셨다. 그런데 얼굴 표정이나 말투를 봐서는 전혀 행복해 보이지 않을 정도로 딱딱한 인상이었다. 내가 그 분에게 한국에서는 10년 이상 된 고참 프로그래머(seasoned programmer)가 없고 대부분 매니지먼트로 빠지는
현실을 말했더니, 인도도 그렇다고 말씀하신다. 반면 MS에는 10년 넘은 개발자를 많이 볼 수 있다. 그리고 그들이 반드시 PM으로 가야 한다는 생각도 하지 않고 있었다. 왜냐면 MS는 PM과 개발자가 수직적인 관계가 아닌 수평 구조이기 때문이라 말씀하셨다.
위에서도 말했듯이 이 팀은 만들어진 지 이제 5~6개월이 된 팀이었다. MS는 팀 간 이동도 비교적 수월한 편이라고 한다. 다른 팀에서 받아주는 과정은 내가 겪은 면접 과정을 동일하게 거쳐야 한다고 한다. 그래서 이직을 하고 싶으면 팀을 옮기면 되기 때문에 MS에 계속 머물게 된다고 말씀하셨다.
4명의 개발자와의 인터뷰를 끝으로 면접은 끝나게 된다. 그리고 별도로 저녁시간에는 MS의 다른 개발자와 저녁 식사 자리도 마련해준다. 나 같은 경우에는 나와 같은 학교를 졸업한 분이 배정이 되었다고 한다. 그러나 너무 피곤한 관계로 취소하였다.
면접을 마치고 나서
Redmond 메인 캠퍼스에는 3~4만 명이나 근무하기 때문에 상당히 큰 규모다.그다지 여유가 없어서 캠퍼스를 자세히 구경하지는 않았는데, 캠퍼스 자체가 아주 아름답거나 그러지는 않다. 그냥 단정한 4~5층 규모의 건물들이 많이 들어서 있었다. 그리고 곳곳에는 공사가 벌어지고 있었으며, 캠퍼스는 계속 확장하고 있는 중이었다.
많이들 알고 있겠지만 MS 개발자들은 각자의 방을 혼자 사용한다. 물론 한 방을 두 명이 사용하는 경우도 있지만, 계속 건물을 짓고 있으니 1인당 1방이 기본인 것 같았다. 첫 번째 만난 친구는 무려 모니터를 3개나 쓰고 있었다. 방 크기는 결코 좁다고 느낄만한 수준은 아니었다. 보통 모니터 두 대 정도는 가지고 있었다.
구글은 레스토랑을 방불케 하는 화려한 식당으로 유명하다. 게다가 음식 값이 모두 무료이다. 방문자 역시 무료이다. 사진을 찍지는 못했지만 MS 식당도 생각보다 매우 다양한 메뉴와 적어도 중급 이상의 레스토랑 수준은 되는 음식을 제공하고 있었다. 나는 “커리 치킨 그릴”을 시켰는데 그 자리에서 생고기를 직접 구웠다. 온도계를 고기 속 내부로 찔러 온도까지 확인하였다. 이런 건 사실 첨 봤다. MS 직원들은 스마트카드 비슷한 걸로 결제를 하고, 면접자는 쿠폰으로 돈을 대신한다. 대략 4불정도 하는 것 같았다. 학교 식당이 보통 5불을 쉽게 넘어가는 걸 생각하면 저렴하다고 볼 수 있겠다.
그다지 놀라운 것은 아니겠지만, MS 빌딩에는 각 층마다 냉장고에 음료수가 무료로 제공된다. 몇몇 블로그에서 볼 수 있었던 윈도우 비스타 소다류가 있나 찾아보았는데 없었다. 대신 간단한 초콜릿이나 스니커스바 같은 것은 자판기로 구입하도록 되어있었다. 얼마인지는 확인하지 못하였다. 그리고 에스프레소 기계도 보였고, 1층에는 미국 드라마 같은 곳에 보면 종종 볼 수 있는 게임대 같은 것도 보였다.
캘리포니아 실리콘 밸리 산호세 옆에 있는 Mountain View라는 도시에 있는 구글은 통근 버스가 아주 잘 되어있기로 유명하다. 거의 시내버스를 방불케 할만큼 잘 되어있다. 시애틀과 그 인근 도시인 Redmond는 대중교통이 그리 잘 되어있는 편이 아니다. 지하철 따위는 없다. 뉴욕을 제외하고, 미국에서 서울과 같은 거미줄 같고 게다가 저렴하기까지 한 지하철과 버스를 생각하면 절대 안 된다. 웬만한 우리나라 광역시보다도 훨씬 못하다고 보면 된다. 원래 미국이라는 나라는 자동차가 없으면 거의 생활이 불가능한 경우가 많기 때문이기도 하다. 그래서 역시 MS도 자체 통근 버스를 운영한다고 택시 아저씨가 말하는데, 잘 되어있다고 칭찬을 하였다. 아쉽게도 직접 본적이 없어서 구체적으로 어떤지는 알 길이 없었다.
보다시피 MS는 인턴 하나 뽑는 데도 많은 돈과 시간을 투자함을 알 수 있다. 앞에서도 말했듯이 인턴을 뽑는 것이나 정직원을 뽑는 것이나 큰 차이가 거의 없다. 그래서 인턴으로 뽑힌 뒤, 일을 잘 하면 바로 풀타임 자리를 받을 수 있고, 이것은 흔히 있는 일이다. 세 번째 만난 친구도 4년 전에 인턴으로 온 뒤에 여기 계속 남아있는 것이라고 말했다. 그러니까 MS에 취직하기 가장 쉬운 방법은 인턴으로 가서 열심히 일하는 것이다.
MS에는 개발자만 3~4만 명이 있는 거대한 기업이다. 당연하겠지만 거기에 있는 모든 개발자가 전부 수퍼 guru급의 프로그래머인 것은 아니다. 모두 똑똑하고 그런 건 절대 아니었다. 비록 한국의 대학에서 바로 취직하는 경우는 여러 외적인 문제로 힘들겠지만, 미국에 있는 대학만 다닌다면 아주 어렵지는 않다. 물론 MS는 여러 해외 대학에서 리쿠르팅을 한다. Job Blog를 읽어보니
이집트에서 온 한 여학생의 글도 볼 수 있었다.
유학을 나오기 전 여러 한국 소프트웨어 업체와도 면접을 보았다. 역시 면접의 농도와 깊이는 정말 MS/구글과 같은 미국 유명 소프트웨어 회사와는 비교할 바가 되지 못한다. 4명의 직원과 1:1로 4시간 면접을 보았던 N모 게임소프트웨어 회사가 가장 근접하다고 볼 수 있겠다. 그러나 단순히 개발 지식만을 물었지 일반적인 알고리즘 테스트는 하지 않았다. 우리나라에서 가장 큰 N모 인터넷 기업도 시험을 보기는 하지만 심층적인 기술 면접은 경험하지 못하였다. 4명의 면접관과 3명의 지원자가 한 시간 동안 산만하게 질문을 주고받는 수준이다. A 보안 회사 같은 경우도 코딩 문제를 메일로 받아 풀어서 제출은 하기는 했지만, 직접 알고리즘을 화이트보드에 써가며 이야기하지는 않는다. 부사장 및 사장님과 함께 보는 2차 면접은 약간 부담스럽기는 하였지만 “얼마나 아느냐”보다는 얼마나 우리 회사에 잘 맞느냐를 보는 것 같았다.
내가 느끼기에 우리나라는 단순히 “개발 지식”에 초점을 맞춘다고 불 수 있다. 반면 MS나 구글 같은 곳은 잠재적인 “개발 능력”을 더 따지는 것 같았다. 물론 윈도우 커널이나 검색 엔진의 개발과 같은 아주 특화된 팀에는 개발 지식도 상당히 중요할 것이다. 그러나 적어도 인턴을 뽑는 포지션에서 전문적인 개발지식은 중요하지 않았다. 나 역시 C#을 써보지도 않았는데, 그 누구도 “너 C# 할 줄 아냐”라고 묻지 않았다. 우리나라 같으면 아무리 전산 지식이 풍부해도 당장 .NET 프레임워크를 다뤄보지 않았더라면 쉽게 뽑았을지 의문이 든다.
정리를 하면 2차 면접은 상당히 피곤하다. 세 번째 면접부터 이제 머리가 잘 돌아가지 않는다. 목도 쉬어서 말도 잘 안 나온다. 충분한 숙면과 중간중간마다 초콜렛바로 에너지를 채울 것을 권장한다. 역시 가장 중요한 것은 탄탄한 기본 전산 실력이다. 그리고 주어진 알고리즘 문제를 화이트보드에 써가며 논리적으로 설명해가는 능력이 중요하다. 그리고 한국 학생에게는 이것을 영어로 조리 있게 또박또박 천천히 표현하는 능력이 사실 가장 중요하다고 볼 수 있겠다.