[기고문]미국 IT 회사 채용 프로세스 및 Tip
이 글은 미국에서 data scientist이고 machine learning 분야 박사학위자이며 현재 senior software engineer인 유시진(가명)님이 유학을 준비 중이거나 미국에서 IT 업체에 취업을 하고자 하는 개발자들에게 도움을 주고자 글을 작성하여 저에게 보내주신 내용을 제가 정리하여 공유해드리는 글입니다.
조금 더 많은 분들에게 도움을 드리고자 새롭게 시작한 브런치의 매거진에도 함께 공유를 합니다. 꼭 가명으로 올려달라고 하셔서 그냥 딱 생각난 이름을 도용했으니 많은 여성분들은 오해 없으시길 바랍니다.
이 글은 미국에서 구직 중이신 분들께 도움을 드리고 싶어서 썼습니다. 제가 그동안 구직 활동을 하면서 경험했던 것들을 정리해서 말씀드리겠습니다. 즉, 제 경험을 바탕으로 한 것이니 주관도 들어갈 수 있습니다. (본 글은 지원자가 미국에서 학교를 다니는 기준으로 하겠습니다.)
미국의 채용 과정(job process)은 다음과 같습니다.
일자리 지원(Job apply) -> 초기 전화 심사(Initial Phone Screen, 채용 담당자, 선택사항) -> 온라인 평가(Online assessment, 선택사항) -> 전화 인터뷰(Phone Interview) -> 현장 인터뷰(Onsite Interview) -> 일자리 제안(Offer)
1. 일자리 지원
회사에 지원하는 방법은 여러 가지가 있지만 제일 좋은 방법은
1.1 본인의 대학에서 열리는 채용 박람회(Career Fair)에 가는 겁니다. 이력서(Resume)를 주고 채용 담당자(Recruiter) 또는 엔지니어(Engineer)와 이야기를 나눌 건데 30초 안으로 자신의 강점을 말하는 게 중요합니다. 보통 회사는 대학 채용 박람회에 올 때 며칠 안으로 인터뷰를 진행하는 경우가 많습니다. 즉, 보다 빨리 채용될 수 있습니다.
1.2 두 번째 방법은 LinkedIn입니다. LinkedIn에서 job tab으로 들어가셔서 지원을 하거나 LinkedIn에 이력서를 상시 업데이트하면 채용 담당자에게서 연락이 자주 옵니다. 또는 본인이 가고 싶어 하는 회사의 엔지니어와 connection 요청을 하시는 것도 좋은 방법입니다. 채용 담당자에게 email로 직접 본인의 이력서와 원하는 job link를 문의하는 것도 좋습니다.
1.3 가장 보편적인 방법은 회사 웹사이트에 들어가서 지원하는 겁니다. 단점은 이 중 가장 시간이 오래 소요됩니다. 이력서가 수시로 들어오기 때문에 채용 담당자가 놓치는 경우가 많습니다.
1.4 제일 중요한 점은 각 팀마다 요구하는 기술사항이 다르므로 한 회사에서도 여러 군데에 본인이 원하는 직군에 이력서를 많이 보내는 게 좋습니다.
2. 초기 전화 심사(채용 담당자, 선택사항)
말씀드렸듯이 이는 선택사항입니다. 채용 담당자가 본인이 이 역할에 잘 맞는지 더 자세히 알기 위해 엔지니어와 인터뷰 전 전화로 이 사람이 업무를 잘 수행할 수 있는가 알아보는 시간을 갖습니다. 이를 통과하면 채용 담당자가 엔지니어 팀에 이력서를 넘기고 보통 팀 매니저가 결정을 합니다. 시간은 보통 10~15분 정도가 소요됩니다.
3. 온라인 평가(선택사항)
요즘 온라인 평가(테스트)를 채택하는 회사들이 (e.g. Yelp, Amazon) 많습니다. https://www.hackerrank.com/ 사이트를 자주 사용하고요. 문제가 주어지고 본인이 원하는 프로그램 언어(program language)를 선택하신 후 algorithm을 작성하면 자동으로 사이트에서 채점을 합니다. 주어진 시간은 20분 ~ 1시간 정도입니다. Data structure를 공부했으면 그렇게 어렵지는 않지만 한국에서만 정규 교육을 받은 분들에게는 연습이 요구됩니다. 저도 한국에서 학부를 나왔지만 미국은 algorithm 구현하는데 수업을 많이 투자하기 때문에 처음에는 어렵습니다.
4. 전화 인터뷰
아마 가장 많이 접하실 거고 가장 많이 떨어지기도 하는 테스트입니다. 크게 인터뷰는 두 가지로 분류할 수 있습니다. 30분짜리 인터뷰이면 아마 지식 혹은 경험(knowledge) 부분만 물어볼 텐데 꽤 어렵습니다. 1시간짜리 인터뷰가 제일 보편적이고요, 10분 정도 이력서 심사(resume screen)를 하고 바로 코딩(coding) 문제로 들어가거나 지식 혹은 경험(knowledge) 부분을 조금 물어볼 수 있습니다. 코딩 테스트(coding test)를 할 때는 인터뷰어가 문제를 불러주고 본인이 인터넷을 통해 코딩을 하게 되는데 Google doc 같이 실시간으로 본인의 코드를 보게 됩니다. 이 중 주의할 부분은 인터뷰어가 중점으로 두는 사항은 (1) 문제를 잘 이해했는가? (2) 어떻게 문제에 접근하는가? (틀려도 좋습니다. 과정이 중요합니다.) (3) Big O notation에 대해서 잘 이해하는가? (4) Data structure에 대해서 잘 아는가? 를 가지고 판단합니다.
코딩을 할 때는 반드시 코딩만 하지 말고 "당신이 원하는 요구사항은 input이 이럴 때 이러한 output을 원하는가"를 꼭 물어보시고, 코딩을 하면서 "나는 data structure 중 linked list를 사용하겠다. 이유는 ~~~이고 timecomplexity는 이렇게 나올 것이다. 내가 만드려고 하는 algorithm은 대충 이러한 procedure를 가질 것이다"라고 먼저 설명을 한 다음 코드를 짜야합니다. 그리고 코드를 짜면서 꼭 말을 하면서 해야 합니다. 안 그러면 인터뷰어가 이 사람이 뭐하는 건지를 모르겠죠? 말을 하면서 코드를 짜야 본인을 더욱 어필할 수 있습니다. 코딩이 끝난 다음은 디버깅(debugging)을 해야 합니다. input에 어떤 값을 넣고 본인 코드에서 어떠한 일들이 일어나고 output으로 원하는 결과가 나온다는 것을 인터뷰어에게 디버깅하면서 보여주는 게 좋습니다.
말씀드리고 싶은 것이 많지만 간략하게 정리만 해 드리는 게 목적이므로 책을 소개하고 넘어가겠습니다.
PDF로 찾으시면 다 나오고요, 다 보실 필요는 없고(1) Arrays and Strings (2) Linked Lists (3) Stacks and Queues (4) Trees and Graphs (5) Sorting and Searching (6) Recursion 정도만 공부하시면 도움이 많이 되실 겁니다.
5. 현장 인터뷰
전화 인터뷰를 잘 보셨으면 당일 ~ 일주일 내에 채용 담당자가 채용 인터뷰 초대를 할 겁니다. 현장 인터뷰는 직접 회사에 가서 시험을 보는 겁니다. 3시간 ~ 5시간 정도 소요되고요, 그 이상을 하는 경우도 있습니다. 비행기표와 호텔비, 식사비는 보통 회사에서 모두 지원을 합니다. 인터뷰는 칠판에 코딩을 하거나 지식 혹은 경험(knowledge)에 대해서 물어보는 식입니다. 코딩은 전화 인터뷰보다 어렵고요, http://www.geeksforgeeks.org/ 또는 leetcode.com에 나오는 문제 수준입니다. 지식 혹은 경험(knowledge) 부분은 아무래도 벼락치기는 상당히 어렵습니다. 저의 경우에 MapReduce를 인터뷰어가 전혀 모른다고 가정을 한 다음 칠판에 설명을 해보라는 식이었습니다. 그리고 시스템을 어떻게 구현할 것인지 아키텍처를 그려보라고도 하고, 아키텍처가 마음에 들면 세부적인(detail) 부분을 물어봅니다. 즉, 현장 인터뷰에서는 본인의 모든 실력을 다 발휘하셔야 합니다.
6. 일자리 제안
이 모든 것을 통과하시면 합격 통지를 받으시게 됩니다.
두서없이 썼네요. 아무튼 도움이 되셨길 바랍니다.
편집자 주 1 : 기고자께서 대부분의 용어를 영문으로 작성하여 주셨으나 가급적 읽기 편하게 한국어로 바꾸었으며, 프로그래밍 용어의 경우는 그대로 영문으로 표기해 었습니다.
편집자 주 2 : knowledge의 경우는 지식이라는 뜻도 있지만 아무래도 개발자의 경험 또한 인터뷰 당시 중요하게 보는 듯하여 '지식 혹은 경험'이라고 번역하였습니다.