Son, Brother, Husband, Father, Friend, and Software engineer.
이 글은 2017년 1월부터 2월까지 Booking.com의 소프트웨어 개발자로 취업하기까지의 이야기입니다.
한참 유럽에서 소프트웨어 개발자로서 새로운 모험을 찾던 중 우연히 페이스북 비공개 그룹에서 Booking.com의 채용 담당자가 지원해 볼 것을 제안한 이메일을 공유한 글 을 보았습니다. 이때까지만해도 Booking.com에 대해 여행갈 때 부인이 사용하던 사이트 정도만 알고 있었습니다. 하지만 근무할 도시가 암스테르담이었기 때문에 관심을 갖게 되었습니다.
채용 정보를 본 후 첫 반응은… 펄?!?! 이었습니다. 아마, 한국에서 일하시는 많은 동종 업계 분들께서는 비슷한 반응을 보이시겠지요. 21세기에 펄을 배워야하는가… 하며 모른다고 그냥 지나가기에는 새로 알게된 정보들이 꽤 흥미로웠습니다.12 특히 암스테르담의 분위기처럼 세계 각국에서 모인 동료들과 함께 일하는 것, 수 많은 A-B 테스트들에 의한 의사 결정, 그리고 매력적인 이주 지원 등 흔히 취업을 준비하면 겪게 되는 콩깍지가 끼었더랬습니다.
채용 정보에서 바로 지원할 수 있지만, 조건에 대한 사소한 질문들과 함께 아님 말고 라는 가벼운 마음으로 채용 담당자인 Alex Bergshoeff씨에게 이메일을 보냈습니다. 이메일을 보낸지 1시간 50분만에 응답3이 왔고, 이렇게 채용 과정이 시작되었습니다.
빠른 응답과 함께 HackerRank의 온라인 코딩 시험을 시작할 수 있는 URL이 주어졌습니다. 아마 지원 시기나 세부적인 직군에 따라 문제의 수와 난이도 등은 달라질 수도 있겠습니다. 제 경우 75분동안 4문제가 주어졌고, 난이도는 LeetCode 기준으로 쉬움(easy)보다 조금 더 쉽습니다. 단, 각 문제의 지문이 영문으로 비교적 길게 씌여져 있기 때문에 시간적으로 여유롭지 않습니다. 프로그래밍 언어는 HackerRank에서 지원하는 것들 중 원하시는 것을 선택하실 수 있습니다. 가급적이면 익숙해지기 위해 HackerRank에서 해당 언어로 몇 문제 풀어보시길 권해드립니다.
마감일까지 1주일 정도 여유가 있었습니다만 개인적으로 여유 시간이 많았기 때문에 문제를 받은 바로 다음날 도전했습니다. 4문제 중 3문제는 단위 시험은 통과했습니다. 나머지 1문제는 익숙하지 않은 클래스를 오만하게 사용하다 예상치 않게 만난 예외로 단위 시험도 통과하지 못 했습니다. 100점 만점이라면 75점 이하라는 생각에 곧 기대없이 일상으로 복귀하였습니다. 1시간 후 저녁 식사를 준비하던 중 전화 면접 일정을 잡기 위한 메일을 받았습니다. 단계마다 거르는게 아닌가?4 라는 생각을 하면서 서로의 일정을 확인하여 전화 면접 일정을 잡았습니다.
드디어 채용 담당자와 전화5 면접을 하게 되었습니다. 간단한 자기 소개와 Booking.com에 대한 소개를 들었습니다. 저 또한 자기 소개를 한 후, 온라인 코딩 시험에 대한 간략한 의견6을 받을 수 있었습니다. 면접의 내용은 대부분의 다른 회사와 같습니다. 영어로 의사소통은 가능한가?, 실제 존재하는 사람인가? 등을 확인하는 것으로 알고 있습니다. 편하게 생각하시고 잘 들어보세요. 전화선의 상태에 따라 잡음이 들리거나 잘 안 들릴 수 있는데, 이럴 때에는 확실하게 안 들린다고 이야기 하셔도 됩니다.
전 영어가 능숙하지 않습니다. TOEIC이나 TOEFL 시험을 준비한 경험도 없고 해외 어학 연수를 다녀온 경험도 없습니다. 이번 채용을 통해 더 뼈저리게 영어 회화의 수준이 얕다는 것을 알게 되었습니다. 다만 무슨 이유에서인지 이번에도 운 좋게 구렁이 담 넘듯 다음 단계인 기술 전화 면접으로 넘어갔습니다.
흔히 라이브 코딩 시험이라고 부르는 단계입니다. 많이 사용하는 Google 문서 대신 HackerRank에서 제공하는 CodePair를 사용했습니다. CodePair에 화상 기능이 있지만, 두 명의 소프트웨어 개발자가 회의 전화(conference call)로 전화를 주었습니다. 모두 한 시간동안 두 문제를 풀었습니다. 의사 코드(pseudo-code)로 작성해도 된다는 조건에서 어려운 알고리즘을 아는지 보다는 문제 풀이 과정에 더 집중하는 방식이었습니다. 또한 각 문제당 한 명의 개발자가 주도적으로 중간 중간 요구 사항을 변경하거나 변경된 요구 사항에 대한 의견을 물어봤습니다. 문제의 난이도는 LeetCode 기준으로 쉬움(easy)과 같거나 조금 어렵습니다.
이 단계에서 도중에 거의 반 포기 상태가 되었습니다. 새삼스럽게 저에게 아주 센 억양을 사용하지 않는 주위의 외국인 친구들의 배려를 깨닫게 되었습니다. 면접에 참여한 두 개발자는 모두 아주 친절하고 협조적이었습니다. 다만 저의 영어 듣기 능력과 경험이 매우 부족했기 때문에 면접이 진행될 수록 점점 더 당황하게 되었습니다. 화면에 씌여진 문제를 이해해서 푸는 것보다 간단하게 의견을 주고 받고 그에 대한 변경을 반영하는 것이 더 어려웠습니다. 회의 전화라 소리가 맑지 않았음을 감안하더라도 변명할 여지 없이 제 영어 소통에 문제가 있었습니다. 면접 후 이제 정말 끝났다고 생각했고 이런 언어 능력으로 외국 생활이 가능한지에 대한 의구심마저 생겼습니다. 그렇게 의기소침한 다음날 채용 담당자에게서 예정에 없던 전화7가 걸려왔습니다. 기술 전화 면접에 대한 저의 의견을 물어보길래 솔직하게 영어 능력에 문제가 있었다는 것을 이야기 했습니다. 저에 대한 면접관들의 의견도 별반 다르지 않았습니다. 영어 능력에 문제가 있다 따라서 다음 최종 면접을 보기 전에 영어 회화 연습을 좀 하길 당부 받았습니다. 영문도 모르게 다음 단계이자 마지막 단계인 대면 면접 일정을 잡게 되었습니다.
기술 전화 면접 후 대면 면접까지 약 3주의 기간이 있었습니다. 그동안 면접 일정에 맞추어 항공권과 숙박 일정을 조율했습니다. 최대 4일 밤 숙박이 제공되고 가능한한 원하는 비행편으로 예약해 주었습니다. 한국에서 인천국제공항을 이용하신다면 KLM을 추천해 드립니다. 매일 인천에서 새벽 1시경에 출발해서 유럽 중앙 표준시(CET) 기준으로 같은 날 새벽 5시경에 도착합니다. 돌아오는 시간은 저녁 9시경에 출발하여 한국 표준시 기준으로 다음날 오후 4시경에 도착합니다. 또한 이 기간이 상대적으로 길다보니 저처럼 손 놓고 놀고 있을 사람들을 위해 채용 담당자가 틈틈이 면접을 잘 준비하고 있는지 전화와 이메일로 챙겨주었습니다.
긴 이야기 짧게…
약속된 장소로 약속된 시간에 가서 드디어 지금까지 신세진 채용 담당자를 직접 만나게 되었습니다. 면접을 위한 작은 회의실로 안내 받고 30분간 본격적인 면접 전에 긴장을 풀기 위해 가벼운 대화를 나눴습니다. 저는 이 시간을 면접의 일부라고 인식하지 못 했습니다. 격려를 끝으로 본격적인 면접이 시작되었습니다.
첫 시간은 두 명의 개발자들과 함께 하나의 구체적인 예제를 갖고 자료 구조, 시간 복잡도, 공간 복잡도, 알고리즘, 그리고 구현 방법에 대해 토론했습니다. 칠판 대신 종이를 사용했고, 의사 코딩이 허용되었습니다. 면접관들은 때로는 당황스럽게 미리 주어졌거나 결정된 것들을 변경하기도 하고 새로운 조건들을 추가하기도 하였습니다. 마치 실제 업무와 같이 상황에 따라 변한다 고 생각했습니다. 다만 면접관들이 매우 친절했기 때문에 아주 즐거운 시간을 보냈습니다.
2교시도 다른 두 명의 개발자들과 함께 어떤 구체적인 요구 사항을 갖고 있는 시스템을 설계했습니다. 큰 흐름과 분위기는 1교시와 다르지 않습니다. 다만 제가 요구 사항을 제대로 이해하지 못 했기 때문에 거의 대부분의 시간을 헤맸습니다. 고맙게도 면접관들은 제가 끝까지 포기하지 않도록 많은 도움을 주었습니다.
드디어 마지막 시간이 되었습니다. 이번에는 한 명의 면접관과 기술 외적인 것에 대해 이야기했습니다. Booking.com의 수익 구조를 기본으로 한 이야기였습니다. 면접관의 질문에 제가 답변을 이어가면서 생각을 발전시켰습니다. 이 시간 역시 면접이라기 보다는 Booking.com에 대한 퀴즈쇼 같아서 재미있었습니다.
다시 채용 담당자가 배웅을 위해 회의실로 찾아왔습니다. 일정이 하루 남아 있었기 때문에 편한 관광을 위해 혹시 이미 결과를 알고 있다면 알려주길 요청했습니다만, 다음날 오전 회의에서 결정한다며 결과를 바로 공유받지 못 했습니다. 그의 배웅을 받으면서 간단하게 회사 구경을 하고 모든 면접 일정을 끝내게 되었습니다.
전체적으로 대면 면접은 결과 그 자체보다는 결과에 도달하는 과정 을 평가한다는 느낌을 받았습니다. 개인마다 다르게 느끼실 수 있겠습니다만, 저는 면접관들이 어떻게든 돕기 위해 애쓰고 있다 는 느낌을 받았습니다. 글쎄요? 오해였을 수도 있습니다. ;) 다만 2교시에 워낙 해맸기 때문에 큰 기대없이 Ajax 경기를 보러가는 엄청나게 많은 사람들로 만원인 지하철을 타고 숙소로 돌아갔습니다.
마지막 날은 다시 암스테르담에 올 기회가 없을거라는 생각에 마치 원래 살던 사람처럼 어슬렁 어슬렁 배회하며 지냈습니다. 조금 이른 시간 출국을 위해 공항으로 가서 발권하는 동안 우연하게 채용 담당자와 연락을 하게 되었습니다. 이전 과정처럼 대면 면접에 대한 서로의 의견을 교환했습니다. 그리고 그는 돌아가는 긴 비행 시간동안 즐거우라며 작은 선물로 조만간 공식 제안을 줄 것이라는 사실을 알려주었습니다.
마지막으로 저의 새 모험을 위해 많은 도움을 주신 Alex Bergshoeff9씨, Booking.com의 담당 부서원들과 제 엉터리 풀이를 인내하며 도와주신 면접관들, 처음 글을 보게 되었던 페이스북 비공개 그룹10, 고비마다 용기를 주었던 김태호님, 박성인님, 정현준님, 그리고 가장 큰 응원을 줬지만 얼떨결에 해외로 이주하게 된 제 부인께 감사드립니다. Dank u wel! :D
아마 외국 회사에 지원해 보신 분들께서는 못 믿으실 수도 있습니다. 제가 이메일을 보낸 시간이 유럽 중앙 표준시(CET)의 아침 무렵이었기 때문일 수도 있습니다. ↩
https://workingatbooking.com/how-we-hire/ 중 The route to getting hired 에 채용 과정의 각 단계가 나와 있습니다. ↩
채용 과정 중에 +31 에서 오는 전화를 놓치지 마세요. ;) ↩
이런 의견은 각 단계가 끝나면 결과에 상관없이 제공되는 것으로 보입니다. 다만 채용 담당자에 따라 혹은 채용 담당자가 처해진 상황에 따라 늦어질 수 있는 것 같습니다. ↩
다시 강조합니다. 채용 과정 중에 +31 에서 오는 전화를 놓치지 마세요! 8-) ↩
저는 개인적으로 Max Howell, DHH의 의견에 동의합니다만. ↩
간략한 소개와 이력서를 영문으로 보내시면 아주 간단하게 채용 과정을 시작하실 수 있습니다. ;) ↩
혹시 이름과 그룹 URL을 알려도 된다면 말씀해 주세요. ↩