본문 바로가기
미국 개발자

[미국 개발자] 미국에서 잡 구하기 #04 - 면접 준비 과정

by Henry Cho 2024. 12. 17.
728x90

*본 포스트는 CS, CE 전공 졸업생들의 질문을 종합하여 작성된 포스트입니다.

개인적인 견해가 포함되어 있습니다.


# 코딩 테스트보다는 인터뷰

내가 경험한 미국 개발자 채용에 있어서 차이점은 코테라고 불리는 코딩 테스트보다는 인터뷰, 즉 면접 위주의 평가가 이뤄진다는 것이다. 물론 코딩 테스트를 전혀 보지 않는다는 말은 아니다. 그렇지만 코딩 테스트가 면접과 동일한 비중으로 중요한가를 물어본다면 그렇지 않다는 것이다. 대신 면접에 있어서 기술적 면접과 일반 면접을 달리하여 보며, 대화를 통해서 면접자가 가진 능력의 평가가 이뤄진다.

 

면접을 본다는 것은 사실상 회사 입장에 있어서 손해이다. 내부 인력이 면접을 보는 데 있어서 시간을 소비해야 하고 정해진 문제 풀(Pools) 안에서 코딩테스트를 보게 하는 것보다 그만큼의 비용이 크게 증가하기 때문이다. 그럼에도 불구하고 미국 기업에서 대면 또는 화상 면접을 중요하게 여기는 이유는 정해진 답을 풀어내는 능력보다 실질적으로 기본기를 가지고 있고 주어진 과제를 해결할 수 있는가를 평가하기 위해서이다. 한마디로 정해진 문제만 풀 줄 알고 실제로 채용을 했더니 일을 수행하지 못하는 사람들을 방지하고자 코딩 테스트보다는 기술적 면접 또는 과제를 통해서 면접자의 능력을 평가하는 것이다.


# 내가 잘해요를 말하는 것은 자기 어필이 아니다.

메타(Meta) 채용 담당자에게 이메일이 와서 연구비 관련해서 이야기를 나누다가 나에게 먼저 했던 재미있는 말이 "헨리, 혹시라도 우리 기준에 맞춰서 면접을 준비하거나 그러지 마요. 많은 사람들이 그렇게 하는데 그저 당신이 하는 연구나 일이 관심 있을 뿐이에요."라고 말이다. 나도 다른 사람들의 면접을 보다 보면 나도 모르게 내 눈이 흐리멍덩해지는 면접자와의 대화가 있고 관심이 생겨 나도 모르게 질문을 계속하는 경우가 있다. 전자의 경우는 본인이 뭘 잘하는지 말하는 사람이고 후자의 경우는 본인이 무엇을 못하는지 말하는 경우이다. 면접을 보다 보면 많은 사람들이 본인이 "모든지 잘해요"라는 방식의 대화가 이어지곤 한다. 잘하는 걸 이야기하는 게 나쁘다는 게 아니라 구체적이지 않고 여러 이야기를 꺼내며 모두 다 잘한다고 말하는 내용이 문제인 것이다. 예를 들면, 이력서에 Large Language Model에 대한 키워드가 쓰여 있다면 면접 때 LLM을 어떻게 잘하는지 설명을 할 줄 알아야 한다는 것이다. LLM을 어떤 프로젝트에서 왜 사용했으며, 어떻게 사용해서 어떤 결과를 산출했는지, 이 과정에서 사용된 LLM의 방식이 무엇인지에 대해서 설명할 줄 알아야 한다.

 

내가 답답하게 생각하는 건 키워드나 용어에 대한 설명을 할 줄 아냐가 아니다. 이건 면접을 보는 사람뿐만 아니라 면접관들도 해당되는 내용이다. 정말 가끔씩 보다 보면 LLM에 대해서 모른다고 해서 그 사람의 능력이 부족한 것이 아니다. 멀티모달이 모른다고 해서 그 사람이 인공지능 개발자가 아닌 것이 아니다. 용어나 특정 키워드를 안다고 해서 해당 기술을 안다고 증명이 되는 것이 아닌데, 종종 특정 분야의 심사위원이 아니거나 아직 제대로 된 공부가 이뤄지지 않은 면접자들 중에서 용어에 대한 설명이 중요하다고 평가하는 분들이 계신다.

 

내가 말하고 싶은 것은 면접에 있어서 잘하는지를 단순하게 얘기하거나 용어에 대한 정의나 내용을 알고 있다는 것이 중요한 것이 아니다. 실제로 해당 기능이나 기술을 사용해 봤고 거기서 느낀 경험이나 생각을 나누고 싶다. 왜냐하면 면접자가 했던 과정들에 대해서 이야기를 나눔으로써 그 또는 그녀가 가진 현재의 능력과 앞으로의 팀과의 협업이 가능한 지가 어느 정도 보이기 때문이다. 그렇기에 면접을 준비하는 우리 개발자 브로들도 본질적인 것에 좀 더 집중하면 좋지 않을까 싶다.


# 면접 과제 준비는 근본적인 것부터

요새 트렌드인지는 몰라도 면접 과제를 많이 보는 추세이다. 개인적인 생각으로는 분야가 다양해짐에 따라서 정해진 방식의 작업이나 특정 알고리즘을 사용해야 하는 경우에는 코딩테스트를 보지만 내가 있는 데이터 관련 개발 직종에 있어서는 코딩 테스트로는 평가하는 게 제한적이다 보니 차라리 면접 과제를 주고 면접 때 이야기를 나누며 평가하는 방식을 선호하는 것 같다.

 

면접 과제는 보통 일주일에서 길게는 몇 주의 여유 기간을 준다. 한마디로 코딩 테스트는 당장 알아야 할 기본기를 평가한다면 면접 과제는 지금 당장 모르더라도 기간 안에 해결할 수 있는 능력이 있는지를 평가하는 셈이다. 마치 기본기 + 응용 및 해결 능력을 평가한다고 보면 된다. 면접관이나 기업 또는 기관마다 관점이 다르겠지만 내 개인적인 견해로는 Fancy 한 능력이 중요하지 않다.

 

면접 과제의 결과가 뛰어나고 이를 잘 설명한다면 당연히 좋지만 엄청나지 않아도 본질적인 해결 능력을 보여준다면 나에게 있어서 이미 충분히 관심을 가질 수밖에 없는 면접자이다. 예를 들어서 고급 중식당에서 요리사를 채용한다고 가정해 보자. 신입 요리사에게 있어서 중식에 필요한 기본기가 중요하지 한식, 양식 등 다양한 경험이 있는 게 우선적으로 중요하지는 않다. 거기다가 경험이 많다고 해서 뽑았더니 막상 해봤던 요리도 다시 못하고 있으면 차라리 기본기만 갖춘 요리사를 뽑는 게 더 낫다.

 

나 역시도 내가 면접을 볼 때도 있고 반대로 면접관으로써 면접자를 볼 때가 있지만 항상 일관된 관점은 나나 상대방이 가진 본질적인 능력이 충분한가이다. 기본기가 탄탄하고 거기에 더해서 응용력을 갖춰서 실무 일처리가 가능하다면 이미 잠재적으로 충분하다는 것이다. 따라서 면접 과제에 있어서는 질문이 되는 문제가 무엇인지 파악하고 해당 문제에 대해서 명확히 설명할 수 있는지에 대해서 잊지 말고 준비해야 한다.

 

예를 들어서 클라우드 데이터 베이스를 사용해서 글로벌 데이터베이스를 구축해 보라고 했을 때, 데이터베이스를 구조화하는 데 있어서 클라우드 데이터베이스와 로컬 데이터베이스와의 차이점을 명확히 인지하고 있어야 한다. 또한 특정 클라우드 데이터베이스를 사용했다면, 해당 클라우드를 서버를 사용한 이유와 목적에 대해서 다른 클라우드 서버와의 기능적 차이를 구성하려는 데이터베이스의 목적에 맞춰서 설명할 수 있어야 한다. 한마디로 사용하려는 클라우드 데이터베이스에 대한 정보를 정확히 알고 있으면서도 가장 중요한 부분은 "왜" 그걸 사용했고 "어떻게" 사용을 했는지에 대해서 말할 수 있어야 한다는 것이다. 비록 준비한 면접과제가 정말 기본적이고 전혀 Fancy 하지 않더라도 목적에 맞춰서 Reasonable 하면 된다는 것이다.


# 실시간 코딩 인터뷰

실시간 코딩 인터뷰의 경우에는 사실상 Enhanced 된 코딩 테스트라고 볼 수 있다. 실시간으로 면접자가 작성된 코드를 면접관과 같이 보면서 평가가 이뤄진다. 다만 코딩 테스트보다도 정해진 답에 대한 기준이 넓다. 문제에 원하는 결과가 나름 정해져 있지만 코딩 테스트처럼 100% 정해진 답이 있는 것은 아니다. 심지어 실시간 평가이기 때문에 면접자가 어떤 스타일로 코딩을 하는지를 볼 수 있다. 개인적으로 보는 관점은 큰 틀을 잡고 세세한 부분을 채워넣어갈 수 있는지를 많이 본다. 이후에 작성된 코드를 얼마나 깔끔하게 정리하고 가독성이 좋게끔 정리가 이뤄지는지도 중요하게 보는데 그 이유는 면접자가 팀에 들어오면 같이 작업을 수행해야 하기 때문이다. 한마디로 내가 같이 작업해야 하는데 상대방의 스타일이 더러우면 당연히 업무 효율이 나오지 않기 때문이다.


결과적으로 미국에서 개발자를 준비한다면 면접 일정을 잡고 면접관들과 기술적 면접 또는 대면, 화상 면접을 진행할 것이다. 어떤 스타일의 면접이든 내가 느낀 점은 탄탄한 기본기와 본질적인 문제 해결 능력이 중요하다는 것이다. 굳이 어떤 방식이든 해당 기업이나 면접 스타일에 맞춰서 있어 보이게 만 준비한다면 당장은 채용이 되겠지만 어차피 본인이 힘들어지기에 본인 기준에 맞춰서 면접을 준비하는 것이 가장 좋다.


 

728x90

댓글