코딩 테스트, 그리고 부정행위
최근 나는 헤드헌터 분들이 제안해 주시는 면접을 가리지 않고 진행해보고 있다. 더 좋은 제안을 받아 이직하기 위해서이기도 하지만, 그보다는 다른 회사들이 어떤 식으로 인재를 보고 있는지, 그리고 가능하다면 다른 회사가 어떻게 굴러가는지에(비즈니스, 엔지니어 측면에서) 대한 이야기도 들어 볼 수 있는 기회라고 생각해서이다. 어떻게 보면 산업 스파이 같은 짓이기도 하지만, 절대적으로 이직 경력이 많지 않고, 현재 회사에서 당분간 이직할 예정이 없는 나에게는 최선의 전략이라고 스스로 생각하고 있다. 1
그리고 그러한 회사들 중 하나 M모사가 있었다. 한국인이 창업한 미국 스타트업으로 업계에서 유명한 그 회사이다. 이번에 운이 좋게 기회가 닿아서 해당 회사의 Engineering 포지션으로 지원하게 되었고, 코딩 테스트를 진행하게 되었다.
개발자 포지션은 으레 코딩 테스트를 치르게 되기 마련인데, 당연하게도 개발자가 개발을 얼마나 잘 할수 있느냐에 대한 정량적 평가를 위함이다. 이력서만으로는 실제 실력을 검증하기가 어려운 측면이 있고, 취업문이 좁아지는 요즈음에는 더더욱 이런 성향이 짙어졌다. 하지만 이러한 방식의 코딩 테스트는 주로 제한된 시간 내에 짧은 알고리즘 문제를 풀어내는 것이 과제로 주어지기 때문에, 길고 복잡한 디자인과 구조를 작성해야 하는 실무 코딩과는 약간 거리가 있다. 그래서 이러한 점을 해결하기 위해 코딩 과제를 주는 회사 또한 이따금씩 존재한다. 원론적으로는 과제가 지원자의 코드 철학을 온전히 담아낼 수 있어 더 좋다고 생각하지만, 지원자뿐만 아니라 사측에서도 검증을 위해 들어가는 노력이 너무 많이 드는 관계로, 나는 과제를 그렇게 좋아하진 않는다. 그런 점에서, 이런 알고리즘 기반의 1시간 내외의 짤막한 코딩 테스트는 환영이다.
보통 코딩 테스트는 자동화되어 채용 프로세스의 초기에 위치하게 되는데, 이는 최대한 기준에 미달되는 지원자를 자동으로 추려내어 채용에 소모되는 노력을 줄이고자 함이다. 그리고 코드 테스트 솔루션은 생각보다 많은 정보들을 기록한다. 일반적으로는 지원자가 윈도우에서 포커스를 옮겼는지, 복사 붙여넣기를 어떻게 했는지, 코드 작성 상황을 timeline으로 보여준다던가, 더 나아가서는 지원자의 캠이나 화면을 녹화하기를 요구하는 경우도 있다. 이게 업계 표준이다. 그렇기에 최대한 제공되는 IDE 내에서만 작업을 하고, 그 이외의 작업은 하지 않는 것이 좋다.
다시 본론으로 돌아와, 최근 Rust로 알고리즘 문제를 푼지가 꽤 되었기에, 이번 코드 테스트는 조금 힙하게 Rust로 진행해보기로 했다. 그런데 문제는, 코드 테스트 IDE에서 기본적인 Autocomplete 기능들이 지원되지 않는 것이었다.
다양한 키워드와 import를 사용해야 하는 Rust의 언어적 특성상 autocomplete는 없으면 굉장히 불편하다. 또한 나는 어떠한 코딩 테스트에서도 autocomplete가 지원되지 않는 경우를 본 적이 없고, 실무에서도 그런 상황에서 개발할 이유가 없는 데다가, 평가하고자 하는 것은 언어의 키워드에 대한 암기가 아니라 알고리즘에 대한 구현이다. 그래서, autocomplete이 없는 코드 테스트를 치룰 합리적인 이유는 없다고 생각한다. 이게 의도된 제약사항이라면 내가 추구하는 가치와는 전혀 정반대인 것이다.
어차피 화면이 녹화되고 있기 때문에, 정황상 suspicious action이 탐지된다면 내가 어떤 행위를 했는지 확인할 수 있을 것이라고 생각하였고, 비윤리적 행위에 대한 제제가 있을 것이라는 경고문을 감안했을 때 vscode IDE의 힘을 빌려 코드를 쓰는 것은 문제가 없다고 판단했다. 문제 자체는 쉬웠기 때문에 한시간도 안 되어 적당히 만점으로 과제를 제출해 낼 수 있었다. 그리고 아무 문제가 없었다면 내가 이 글을 쓰지 않았겠지...
결과는 탈락이었다. 정황상 이번엔 탈락할 이유가 전혀 없었기 때문에 좀 황당했다. 보통 이런 경우에는 예정되었던 포지션에 인원이 모두 찼을 경우에 일어나곤 하는데, 이번에 듣기로는 부정행위의 가능성이 있어 보인다는 이야기를 들었다. 그렇다면 임의의 IDE 를 쓴 것이 문제가 된 것임이 확실하다.
다소 당황스러운 점은 "채용 매니저 및 유관 담당자"가 검토를 하였다고 메시지를 주었다는 것인데, 내 입장에서 제출한 결과물에 대하여 이런 평가를 받는다는 것은 회사의 채용 및 유관 담당자(아마 회사)가 나와는 다른 개발 철학을 가지고 있다는 뜻으로밖에 해석이 어렵다. 혹은 아마도, 송구스러운 소식을 부드럽게 전달하고자 사용된 자동화된 메시지일 것이다. 아마 후자라고 생각하는데(또한 그렇게 믿고 싶다), 아쉽게도 no-reply 이메일로 전달받았기에 어떠한 질문도 물어 볼 수 없었다. 동시에 자동화된 메시지일 것이라는 확신을 더더욱 안겨주었다. 결과도 아쉽지만, 회사에 대해서 어떠한 소통을 해보기도 전에 프로세스가 끝나서 굉장히 아쉽다.
그리고 나중에 알게 된 것이지만 코드시그널에서는 Rust에 대한 autocomplete가 지원되지 않는 것을 알게 되었다. 이런... ㄱ-
그렇기에, 다음에 코드 테스트를 진행하게 되거든, 두 가지 포인트를 추가로 고려해야 할 거 같다.
- 코드 테스트 환경에서 Autocomplete가 지원되는 언어들의 목록
- 만약 Autocomplete가 지원되지 않을 경우, 개인화된 IDE를 사용해도 좋은지?
급하거나 절실하지 않은 상황에서 이런 경험할 수 있어서 다행이고, 또 얻어가는게 있었기에 이번 면접도 아쉽지만 좋았다.
- 30초 2개의 회사만을 다녔을 뿐이니, 절대적으로 많다고는 할 수 없고, 현재 다니는 회사가 괜찮기도 하고 나의 상황과 맞물려 그닥 많이 이직하지 않을 듯 하다. [본문으로]