내가 미국에 온 것은 미국 직장에서 새로운 삶을 시작하고 싶었기 때문이었다. 미국 직장에서 일하기 위해서는 유학이라는 징검다리를 건너야 했고 그 다리를 건너면서 이제는 미국인들과 취업을 위해서 경쟁을 해야만 했다.

2010년 8월에 미국에 건너왔고 그 해 10월부터 직장을 찾기 시작했다. 미국에 온 지 2달밖에 되지 않았고 영어를 듣고 이해하는 것도 힘든 시절이었는데 직장을 찾는 것은 불가능한 것처럼 보일 수밖에 없었다. 미국 사람과 마주보면서 대화하는 것도 어색하고 힘든데 전화 통화로 미국 사람에게 좋은 인상을 주고 영어로 나 자신을 취업 시장에서 잘 포장해서 팔아야 한다는 것이 자신이 없었다.

미국에서 소프트웨어 엔지니어로 취업하기 위해서는 우선 레쥬메(Resume)와 커버레터(Cover Letter)를 준비해야 한다. 레쥬메는 자신의 학업, 경력, 외부 활동 등이 보통 한 두 장에 정리된 이력서로 대부분의 기업이 구직자에게 요구하고 있다. 커버레터는 한국 기업에는 없는 문화인데 자신을 간단히 소개하고 왜 그 기업에 지원하는지 목적과 포부를 밝히는 문서이다. 이 레쥬메와 커버레터를 준비해서 기업 웹사이트의 구직 페이지나 HR 담당자에게 보내면 그 기업에서 나의 이력에 맞는 일자리가 있는지 검토하게 되고 만일 매칭되는 일자리가 있다면 본인에게 연락이 오게 된다. 하지만 그 과정이 보통 몇 주가 걸리고 오래는 몇 달이 걸리는 경우도 있다.

기업의 HR 담당자에게 연락이 오게 된다면 전화로 보통 15분에서 길게는 1시간 정도의 인터뷰를 하게 된다. 담당할 직무에 대한 설명과 현재 구직 상황 그리고 학업 및 직장 경력에 대한 여러 답변을 하게 되면 다음 인터뷰에 대한 설명을 듣게 된다. 일반적으로 다음 인터뷰는 전화상으로 그 회사의 소프트웨어 엔지니어들과 이야기를 하게 되는데 이 때가 바로 테크니컬 인터뷰(Technical Interview)의 시작이다. 보통 1시간 정도의 시간을 잡고 전화상으로 프로그래밍 전반에 관한 질문을 하게 되면 구직자는 질문자와 계속 이야기를 하면서 그 문제를 어떻게 풀어갈지에 대해서 생각을 나누게 된다. 그 인터뷰가 끝나면 인터뷰를 진행한 사람은 방금 인터뷰한 구직자에 대해서 피드백을 HR 담당자 혹은 사람을 뽑는 팀의 매니저에게 보내주게 된다. 그리고 그 결과를 받은 사람들이 앞으로 인터뷰를 계속 진행할 지 아니면 거기서 그만둘지 결정한다. 첫번째 인터뷰를 잘 했다면 두번째 전화 인터뷰로 넘어갈 수 있으며 어떤 기업의 경우에는 직접 그 기업을 방문하는 온사이트 인터뷰(Onsite Interview)로 바로 넘어갈 수도 있다.

이제 온사이트 인터뷰에 오게 된다면 미국 직장 구직에서 초기 관문은 넘은 것이다. 이제 실제 그 회사를 보고 그곳에 일하는 소프트웨어 엔지니어를 만나서 문제를 풀면서 토론을 하게 되는 것이다. 보통 하루에 4명에서 8명까지의 사람들을 만나면서 정말 진땀을 빼게 된다. 그 사람들은 1시간만 만나고 가면 되지만 인터뷰를 하는 구직자의 입장에서는 매시간 다른 사람들이 와서 질문하고 열띤 토론을 하고 가기 때문에 정말 신경이 곤두서는 하루가 된다. 점심을 같이 먹는 사람도 정해져 있고 그것도 인터뷰의 일부이기 때문에 실제 점심도 편하게 먹지는 못한다.

그렇게 온사이트 인터뷰가 끝나면 일부 회사는 바로 인터뷰 결과를 알려주기도 한다(마이크로소프트 같은 경우에는 오전에 모든 인터뷰가 끝나고 점심을 먹고 특정 방에 모여 있으면 합격했는지 불합격했는지 바로 알려주기도 했다). 하지만 대부분 회사는 다른 구직자들과 비교해서 최선의 사람의 뽑기 위해서 몇 주 동안 결과 발표를 미루기도 한다. 이 시간이 지나고 합격 통보를 받으면 이제 연봉 협상을 하는 과정을 거치고 입사 절차를 거치게 된다.

이 일련의 과정들이 미국 사람들에게도 부담되는데 영어가 되지 않는 외국인들은 얼마나 힘든 과정이겠는가?

하지만 불가능해 보인다고 포기할 수는 없었다. 2010년 9월에 학기를 시작했고 2011년 5월에 졸업 예정이니 나에게는 9개월의 시간이 있었다. 안 되는 것을 어떻게든 되게 만들어야 했고 맨땅에 헤딩하는 심정으로 노력해야만 했다.

소프트웨어 엔지니어로 지원하면서 제일 힘들었던 것은 Computer Science에 대한 전공 지식이 많이 없어서 테크니컬 인터뷰를 준비하는 것이 특히나 힘들었던 점이었다. 대학 시절에 전자공학을 전공하면서 데이터구조(Data Structure) 수업을 들은 적은 있었지만 전산학의 핵심 과목인 알고리즘(Algorithm) 수업을 들은 적이 없이 관련 지식을 공부하는 데 많은 어려움이 있었다. 그리고 일반 전산과 출신에 비해서 학과 수업에서 여러 프로그래밍 언어를 사용해 본 경험도 부족했다. 예일에서 1년 공부를 하면서 전산에 대해 너무 모르는 것이 많아서 예일 학부 수업을 청강하기도 하고 따로 책을 사서 공부하면서 계속 인터뷰를 준비해갔다.

실제 입사 지원서를 넣기 시작한 것은 2010년 10월부터이다. 9월에는 입학과 동시에 수업이 시작되어 대학원 수업을 따라간다고 정신이 없었는데 대학원 동기들이 조금씩 회사에 지원하는 것을 보면서 나도 지금 지원을 해야겠구나 하는 생각이 들어 입사 지원서를 넣기 시작했다.

미국 대학에서 학생들은 보통 졸업 1년 이전부터 입사를 준비하는데 졸업하기 1년 전에 잡 오퍼를 받아 놓으면 훨씬 마음 편하게 졸업을 준비할 수도 있거니와 만일 원하는 일자리를 얻지 못하더라도 1년이라는 시간은 충분히 다른 많은 기업에 입사를 지원해 볼 수 있는 긴 시간이다.

그런데 본인의 경우는 거의 미국에 오자마자 일자리를 얻기 위해서 준비해야 했으니 그 부담감이 상당했다. 또한, 주위의 한국 사람들은 따로 직장을 준비하는 사람들이 없어서 (박사 과정 학생들 혹은 박사 과정을 준비하는 석사 학생들이 대부분이었다) 정보를 얻기가 상당히 힘들었다. 하지만 그 중간에 시스코에 다니고 있던 한국계 미국분을 만났는데 그 분께서 취업 과정 중에 상당히 많은 도움을 주셨다. 그 형은 어릴 때 미국에 오셨는데 카네기 멜론을 졸업하고 지금까지 시스코에서 시스템 엔지니어로 일하고 계신다. 그 형의 도움으로 미국에서 어떤 식으로 엔지니어를 뽑는지 그리고 입사 지원을 어떻게 해야 하는지에 대해서 많은 도움을 얻을 수 있었다. 그리고 본인의 레주메를 봐 주시기도 하시고 여러 아는 사람들을 통해서 다른 회사에 지원할 수 있도록 알아봐주시기도 하셨다. 정말 힘든 시기에 이렇게 좋은 분들을 만났으니 정말 두고두고 감사할 일인 것 같다.

처음에 잡 서치를 시작할 때는 모든 것이 깜깜했다. 어떻게 시작해야 할지도 모르겠고 어떤 경로를 통해서 찾아야 할지도 몰랐다. 우선 다음 두 가지로 시작했다(가고자 하는 회사에 지인이 없다면 현재까지도 이 방법이 제일 효과가 있고 제일 빠른 방법인 것 같다).

Fortune 500 회사의 리스트를 뽑고 중에서 IT회사를 골라서 회사의 웹사이트에 들어가서 소프트웨어 엔지니어를 뽑는지를 확인한 다음에 지원한다.
: Fortune 500회사의 리스트 내에서 뽑은 이유는 본인이 우선 직업 비자와 그 후에 영주권까지 기업의 스폰서를 받으려면 규모가 어느 정도 있는 기업이 유리하리라는 생각에서였다. 실제 이 생각은 적중했다. 규모가 큰 기업일수록 인력이 필요한 경우도 많이 생기고 비자 및 영주권 지원을 위한 전담 파트가 있어 관련 지원도 잘 받을 수 있기 때문이다. 미국에서 일하면서 제일 신경 쓰이는 부분의 하나가 신분 문제인데 큰 기업일수록 여기에 대한 신경을 덜 쓰도록 많은 지원을 받을 수 있다.

LinkedIn, Monster.com같은 리쿠루팅 사이트에 본인의 레쥬메를 올려놓고 리쿠루터들이 보고 연락 오기를 기다렸다.
: 위의 1번이 적극적으로 구직 활동에 나서고 자신이 원하는 회사에 직접 지원할 수 있는 반면에 2번은 수동적으로 잡 시장에 자신을 포장해서 내놓는 것이다. 각 기업마다 그 기업 내에서 일하는 리쿠루터들도 이 사이트를 보면서 연락을 해 올 수도 있고 기업이 원하는 인재와 구직자를 연결시켜 주면서 커미션을 받는 헤드헌터들도 관심을 보일 수 있기 때문이다. 이 경우는 자신이 생각하지 못했던 기업들로부터 인터뷰 제안을 받을 수 있다는 장점이 있다.

본인은 위 1번과 2번 방법을 모두 썼지만 직접 회사 웹사이트에 가서 지원했던 것들이 좀 더 좋은 효과가 있었던 것 같다. 지원 후 연락을 받기까지는 시간이 좀 걸리기는 했지만 지원했던 회사에서 연락이 왔고 이 후 과정도 일사천리로 진행되었기 때문이다. 2번의 경우 연락은 많이 왔지만 많은 경우 계약직으로 연락이 많이 왔었고 가끔 보면 사기성이 짙은 연락도 많이 왔었다. 계약직은 보통 6개월에서 1년 정도 일하는 조건으로 오는데 외국인인 이상 OPT로 일할 수는 있지만 이렇게 일하면 워킹 비자를 받는 것이 거의 불가능하고 금쪽같은 OPT 기간을 허비하는 결과를 낳기 때문이다. 그리고 어떤 리쿠루터는 프로그래밍 관련 교육을 받으면 직장 취업이 가능하다는 것을 말하면서 등록할 것을 권하는데 이런 것은 대부분 사기라고 보면 된다. 무조건 믿을 만한 기업에 (가능하면 규모가 큰 대기업) 웹사이트를 통해서 지원하고 이력서를 올릴 수 있는 사이트는 백업으로 사용하기 바란다.

바쁜 학교생활을 하면서 계속 레쥬메를 고치고, 커버레터를 쓰고, 전화 인터뷰와 테크니컬 인터뷰를 준비하면서 정말 바쁘게 살았다. 학기 중에는 수시로 전화 인터뷰를 요청하는 연락이 와서 수업 중간에 전화를 받기도 하고 어떤 때는 수업을 어쩔 수 없이 빠지고 집에서 전화 인터뷰를 하면서 보내는 날도 있었다. 지원한 회사가 많았지만 전체 진행 상황을 파악하고 싶어 지원한 회사와 관련 업데이트 상황들을 모두 엑셀 파일로 정리했었는데 나중에 다시 세어보니 회사에 지원서를 보낸 것만 1300여개에 달했고 본인의 기억으로 한 전화 인터뷰만 해도 70~80번 정도였던 것으로 기억한다.

취업을 준비하는 미국 유학생들은 대부분 경험하겠지만 외국인인 이상 신분 문제에서 자유롭지 못하다. 미국 뉴욕의 911 사건 이후로 유학생의 신분 문제에 대해서 더욱 엄격해져서 졸업을 하게 되면 I-20(미국 대학으로 받은 입학 허가서)의 기한이 종료되고 graceful degradation이라고 60일의 기한이 주어져서 그 시기 안에 본국으로 돌아가야 한다. 만일 미국 내에서 직장 생활을 하고 싶다면 학교 내의 International Student Office를 통해서 Optional Practical Training(OPT)를 신청하면 되는데 이 OPT를 받고 나서 3개월 안에 직장을 찾아야 한다. 예전 2006년에 미국에 왔을 때 듣기로는 그때는 졸업을 해도 1년 정도를 직장 없이 지내도 미국 내에서 거주할 수 있었는데 이 기한이 2008년부터 줄어서 현재는 OPT 기간이 시작되고 90일 안에 직장을 찾지 못하면 미국에서 나가야 한다.

하지만 미국 내에서 구직 활동을 하면 알겠지만 90일 안에 직장을 찾는 것은 아주 힘들다. 나의 경우도 지인이 없는 회사의 웹사이트의 Career 섹션을 통해서 입사 지원을 하면 보통 2~3개월이 걸린 후에 연락이 오는 경우가 많았다. 입사 지원을 하면서 그 기업의 입사지원자 데이터베이스에 등록되고 나중에 이력과 매칭이 되는 일자리가 생기면 관련 HR 담당자가 연락을 주는 것이다. 그래서 최대한 빨리 일자리를 알아보는 것이 중요하다. 가능하다면 졸업 1년 전부터 꾸준히 구직 활동을 하길 바란다.

예일에서의 첫 학기는 구직 활동에서 별로 진전이 없었다. 구직 관련 프로세스를 잘 모르기도 했고 준비 하는 과정에서 아주 서툴렀다. 그때 마이크로소프트사에서 예일에 취업 설명회를 와서 캠퍼스 리쿠루팅에 등록을 하고 인터뷰를 보았다. 예일대학교 전산과는 그 당시 상당수 학생들이 졸업하고 마이크로소프트사로 가고 있었는데 졸업 통계를 보니 가장 많은 수의 졸업생들이 가는 직장이었다. 그래서 따로 캠퍼스 리쿠루팅도 하고 마이크로소프트에서 일하는 졸업생들을 불러서 전산과에서 피자 파티를 하면서 같이 이야기하는 시간도 가지곤 했었다.

그해 10월 11일과 12일에 예일 근처의 OMNI 호텔에서 마이크로소프트사가 인터뷰를 가졌는데 전산학과 전체로 메일이 와서 인터뷰 하고 싶은 사람은 신청하라고 했다. 나도 부리나케 신청하니 Confirmation 메일이 와서 10월 12일 9시 30분에 정해진 방으로 와서 인터뷰를 보라는 것이었다.

그 날 혹시나 몰라서 정장을 입고 갔었는데 지금 생각해보니 그렇게 할 필요는 없었던 것 같다. 엔지니어로 지원하는 경우 깔끔하게 청바지와 폴로셔츠 정도를 입고 가면 되지 굳이 불편하게 정장을 할 필요는 없는 것 같다. 하지만 정장을 입고 간다고 해도 결코 마이너스가 되지는 않는다. 다만 지금 생각해보면 그렇게까지 할 필요는 없지 않았을까 생각한다.

그 날 인터뷰를 봤던 Steve는 처음에 가서 10분 정도 이런저런 이야기를 하다가 본격적으로 테크니컬 인터뷰에 들어갈 때 화이트 보드에 알파벳 리스트를 나열했다. 그리고 이 알파벳 리스트 중에서 첫번째로 반복되는 알파벳을 찾는 알고리즘을 보여달라고 요청했다. 1분만 생각해 볼 시간을 달라고 한 다음에 어떻게 C프로그램을 짜야할지 고민했다.

지금 생각해보면 이 문제는 프로그램 인터뷰 책에 자주 등장하는 아주 간단한 문제이다. 하지만 그 당시는 프로그래밍 인터뷰를 한 적도 없었고 어떻게 진행되는지 잘 몰랐기 때문에 조금 당황한 상태에서 코드를 화이트 보드에 쓰기 시작했다 (사실 이 문제는 Programming Interview Exposed라는 유명한 프로그래밍 인터뷰 책에 등장하는 문제이다).

약 15분간을 Steve와 문제에 대한 토론을 하면서 횡설수설하다가 시간이 다 되어 그 방을 나와야 했다. 예상했듯이 그 이후 마이크로소프트사에서는 더 이상의 진행을 하지 않았다. 프로그래밍 인터뷰의 첫 관문을 넘지 못한 탓이다.

하지만 이 인터뷰를 계기로 어떤 식으로 테크니컬 인터뷰가 진행되고 어떤 문제가 나오는지를 조금씩 깨닫게 되었다. 30분 정도 진행되는 인터뷰는 다음과 같은 점을 상기하자(전화 인터뷰든 온사이트 인터뷰든 다 적용된다).

  • 아주 복잡한 문제가 나오지는 않는다.
    알고리즘과 데이터 구조를 잘 알고 있다면 5~10분 안에 풀 수 있는 문제가 나오게 된다. 많은 문제를 풀어 봤다면 보자마자 알 수 있는 문제가 나오기도 한다.

  • 모르는 문제가 나와도 인터뷰를 하는 사람과 토론을 하면서 힌트를 얻을 수도 있다. 인터뷰를 담당하는 사람도 이야기를 하면서 조금씩 힌트를 주며 어떤 방향으로 문제를 풀어야 하는지 알려주기도 한다.

  • 질문을 하기 전에 생각 해보고 하자.
    “There is no stupid question.” 이라는 말이 있지만 이것은 수업 시간에 해당되는 이야기고 구직자를 채용할지를 결정하는 인터뷰에서 쓸 말은 아닌 것 같다. 어느 정도 이야기를 해보고 토론을 한다면 대부분의 소프트웨어 엔지니어는 이 사람의 지식수준이 어느 정도인지 예상할 수 있다.  소프트웨어 엔지니어를 채용하는 인터뷰에서 연결리스트(Linked List)의 기본 개념조차 잘 모른다면 아무도 채용하지 않으려 할 것이다. 감출 것은 감추고 드러낼 것은 드러내는 것이 인터뷰에 임하는 자세이다.

첫 학기가 시작하고 처음 겪은 인터뷰의 실패는 조금 더 마음을 다잡고 전산학의 기초를 공부하는 계기가 되었다. 물론 첫 학기는 정말 힘들었고 결과도 처참했다. 하지만 이런 실패를 경험했기에 좀 더 겸허하게 다음 학기를 준비할 수 있었고 짧은 겨울 방학 동안 프로그래밍 인터뷰 공부를 하면서 다음 학기를 준비할 수 있는 계기가 되었다고 생각한다.

힘들었지만 이것도 다 지나갈 것이라고 생각하며 매일 매일 전화 인터뷰를 연습하고 프로그래밍 인터뷰 문제를 풀었다.