Soft Talks

카카오 개발자 영입 합격수기

Algorithmus 2022. 10. 3. 04:44

돌 지난 아기의 육아를 하며 낮에는 직장에서 바쁘고 일이 어려운 부서에서 일하며 학부 전공조차 문과이던 내가 카카오에 개발자로서 경력자 채용에 합격하게 되었다. 지금 회사 및 향후 조인할 조직과의 관계가 있어 관련 직무나 나의 상세한 배경, 수행 프로젝트(포트폴리오) 등 상세한 내용은 입사후에 더 이야기하게 되겠지만, 앞서 말한 것과 같이 저런 열악한 조건에서 소위 네카라 라고 불리는 탑 IT 서비스 회사 중 하나에 합격한 과정을 기억이 생생할때 기록해 두면 다른 분들에게도 도움이 될 것 같다.

포트폴리오 구성과 입사지원

나는 현재 회사에서 업무상 필요성을 느껴 전 직원이 활용하는 어플리케이션을 풀스택으로 제작했다. 다만 구체적으로 어떤 일을 했는지는 재직중인 회사의 정보가 노출될 수 있고 또 나의 신상과 관련되어 아직 곤란해 질 수 있으니 이직후에 상세히 공개하겠다. 그 일을 보고할때 경력자로부터는 전공자들도 하기 어려운 일이라는 평을 들었고, 우리 조직의 관련 업무를 하드캐리 한다는 말도 들었다. 그만큼 나는 속한 조직에서 가장 프로그래밍을 잘 하고 나의 도메인에 대해 정통하며 업무 퍼포먼스가 뛰어나다는 말을 듣고, 동료 직원이나 후배들로부터 존경한다는 말을 많이 들었다. 그러나 내가 처음부터 그런 평을 들은 것은 아니다. 처음에 입사하고 나서는 뛰어난 인재들이 모여있고 준비된 사람들이 많았기에 나는 두각을 나타내는 편은 아니었다. 지금 생각하면 나와 조직의 핏이 맞지 않았던 것 같다. 시키는 일을 신속 정확히 수행하는 것이 미덕인 곳에서 창의성을 발휘하려는 나와 같은 사람은 맞지 않았다. 결국 우여곡절 끝에 나는 나의 역량을 발휘할 수 있으며 대체가 불가능한 일을 해야 할 시기가 우리 조직에도 도래했고 그에 맞춰 일을 함으로써 나의 포트폴리오까지도 자연스레 완성이 되는 결과가 되었다. 주변 사람들은 나를 IT 서비스 회사에 가 볼 것을 권하거나, 나의 기술과 역량이 아까우니 창투사를 소개할테니 창업을 하라는 추천을 해주기까지 했다. 그리고 최근에도 VC에서 스타트업 인큐베이팅 프로그램에 등록해서 창업에 도전해 보라는 쪽지를 받기도 했다. 하지만 나는 창업할 생각은 없었고, 주변 사람들의 권유대로 테크 기업의 문을 두드렸다.
카카오 경력 공채 광고를 보았다. 온라인 설명회도 듣고 나름대로 정리를 해 보니 가고 싶은 포지션이 있었다. 글이라면 내가 다니는 조직의 특성상 지겹도록 많이 썼고 훈련이 잘 되어 있는 상태였다. 특별히 고민하지 않아도 (어차피 그럴 시간도 없었지만) 글을 쓰고 한 번 수정하니 내가 읽더라도 뽑고 싶을 정도로 지원서가 괜찮았다. 사실 원서는 (관련 경력이 무관하다던가 하는) 큰 결함이 없다면 보통 붙여주는 것 같다. 나는 지원 하루만에 코테 응시안내 메일을 받았다. 사실 지원서 내용은 면접 과정에서 관련이 크고 일단 코테라는 허들을 넘어야 그 뒤의 전형을 치를 수 있다.

코딩테스트

합격자 발표가 난 지금은 9월 하순. 올해 1월부터 나는 코딩테스트(코테)를 본격 준비했다. 북미 아마존에서도 내 링크드인의 레주메를 보고 연락을 두 차례 하여 왔다. 사기가 아닌가 싶어 두 번째 연락을 받고나서야 HR에 답장을 하고 코테를 보았는데, 2월 당시 나의 실력으로는 손을 댈 수가 없었다. 원인을 찾아야 했다. 고민하고 검색한 결과 알고리즘의 기본기(소위 bronze나 silver) 부분을 탄탄히 해야겠다는 가설을 세웠다. 인터넷에서 갖은 리소스를 찾아 내가 부족한 부분을 보완했다. 참고한 자료는 하나가 아니다. Leetcode, CSES, USACO, CLRS, EPI, SWEA, 이코테(마지막 정리용) ...
그런데 나는 돌 지난 아이 육아를 재택과 출근을 번갈아 하면서 하다보니 퇴근하면 시간을 내기가 어려웠다. 6시에 칼퇴해도 집에 오면 거의 7시, 집에 오면 아이와 함께 목욕을 하고, 수건으로 닦고, 로션을 바르고, 기저귀를 갈고, 옷을 입히고, 그 와중에 와이프가 밥을 해주거나 내가 밥을 사오거나 해서 이제 우리 두 내외가 밥을 먹어야 할 때는 번갈아 아이의 투정을 받아주면서 아이를 봐주어야 한다. 그리고 와이프는 이제 쉬도록 하고 아이와 30분~1시간 놀아준다. 간식을 원하면 또 준다. 그러면 8:30~9시 정도 된다. 이를 정말 닦기 싫어해서 몸을 비틀며 도망가고 이리 저리 피하고 쳐내는 아이를 억지로 달래서 닦이고 나면 와이프가 대체로 잠을 재운다. 나는 그동안 잠시 쉬었다가 아이가 깊이 잠들면 설거지를 한다. 하루종일 쌓인 육아의 흔적이 집안에 온갖 그릇과 음식물 찌꺼기 또 와이프가 힘들어서 먹고 소파나 식탁이나 책상에 놔둔 과자봉지와 그릇들로 남아있다. 나는 이걸 하나 둘 치운다. 전날 돌린 식세기의 그릇을 찬장에 정리하고, 큰 그릇은 닦고, 작은 그릇은 식세기에 넣고, 음쓰를 수채구멍에 모으고, 다 모인 음쓰는 봉지에 모아서 여며놓고, 식탁을 닦고, 아기식탁의 테이블 의자 발받침대 그리고 바닥에 있는 음식물 찌꺼기를 걸레로 모아 설거지통에 버린다. 설거지를 할 때 쯤에는 하루 근로로부터 온 피로에서 나의 정신이 반쯤 회복되므로 나의 정신을 부여잡고 휴대폰으로 알고리즘 문제 풀이 영상을 보며 이해를 해보려 한다. 늘 잘 되지는 않는다. 한 5번 시도하면 1번은 잘 되는 것 같다.
그때부터 나는 출퇴근 시간에 공부를 해야겠다고 생각했다. 차를 타면 출근은 30분, 퇴근은 50분(차가 막힘), 그러므로 그 시간을 운전을 하며 거리에 버리는 것이 아까웠다. 지하철을 타고 만원 지하철에서도 폰을 꺼내 주제별로 이런 저런 사이트에서 알고리즘 해설을 보았다. 내가 모르는 알고리즘이 많았고 이를 IOI 실러버스에 맞추어 보완했다.
그리고 점심에는 점약을 잡지 않고 식당에 혼자 가서 밥을 먹었다. 밥이 늦게 나올때를 대비해 종이 1장과 볼펜을 주머니에 넣고 가서 폰을 보면서 문제를 하나 풀었다. 밥을 일찍 먹고 시간이 남으면 카페에 가서 문제를 계속 고민했다.
주말 중에 하루는 전부 아이와 가족을 데리고 밖에 나가서 시간을 보내야했다. 가족의 일이기 때문이며 공부를 한답시고 육아를 소홀히 했다가는 말 그대로 집에서 쫒겨나 매달 양육비나 대는 신세가 될 수 있기 때문이다. 일요일 중에서 10시 혹은 11시부터 2시 혹은 3시까지는 공부를 하도록 허락을 받았다. 와이프는 언제면 이직이 가능할 것인지 종종 물었다. 나는 예상할 수 없다고 답했다. 왜냐면 예를 들어 행정고시 준비를 시작하면서 내가 몇 년 안에 붙을지 장담을 하라는 말인데 그게 된다면 세상에 장수생이 왜 많겠는가. 어차피 설명해도 이해를 못 할테니 대충 대답했다. 나 자신도 많은 범위와 깊이를 어떻게 커버해야 할지 과연 나도 언제까지 준비를 할 수 있을지 이 부족한 시간 하에서 이걸 어떻게 할지 늘 불안하고 막막했다. 퇴근하고 나서는 머리가 멍해서 효율이 나지 않았다. 방법을 찾아야했다.
그래서 나는 새벽 4시에 일어나는 것을 택했다. 잠은 10시든 11시든 집안일이든 육아를 하다가 자더라도, 4시에 깨는 것은 차라리 쉬웠다. 아이가 깨지 않게 조심조심 나와서 뭐든 뇌에 당분을 줄 것을 대충 먹으며 공부를 했다. 잘 되지는 않았다. 하지만 일단 한 문제라도 풀어보기로 했다. 그러다 어쩔때는 5시반에, 6시에, 6시반에, 7시에 아기가 깬다. 8시에 깨면 고맙다. 아기가 깨면 이제 아이를 봐야 한다. 그러다 출근을 한다. 기저귀를 갈고, 아침을 주고, 간식거리를 주고, 책을 읽어달라면 읽어준다. 그리고, 와이프가 7월 중순부터 출근을 하게 되어 아침에는 내가 머리도 땋아 옷을 입히고 짐을 챙겨 어린이집에 보내고 곧장 회사로 지하철을 타고 출근한다. 짐이 많으면 차를 운전해서 간다. 그러면 그날은 공부를 하지 못한다.
코테는 링크를 받은 후 1주일 내로 응시해야했다. 경력자이기에 3시간 반에 3개 문제를 풀도록 주어졌고, 듣기로 경력자는 킬러문제가 없는 대신 다 맞아야 한다고 했다. 모든 테스트 케이스를 맞춰야 하는 것이다. 문제가 신입공채 대비 쉽기 때문이다. 내 느낌은, 꾸준히 공부를 안했더라면, 그리고 실무에서 최근에 계속 코딩을 하지 않았더라면 발상을 해내서 문제를 풀어내기가 쉽지는 않았을 것 같다는 생각이다. 막판 정리로는 '이코테' 책을 보았다. 코딩을 직접 하지 않더라도, 내용을 읽으면서 3일간 퇴근후 멍한 정신을 부여잡고 절망적인 멘탈하에서 보았다.
코테를 풀 수 있는 시간은 3시간 반이며 이것을 하루 업무와 육아, 집안일 사이에 끼워넣어야 한다. 주말에 아이를 데리고 나가서 놀고 들어와서는 진이 빠져 있기 때문에 그 때 보면 망한다. 그러나 일이 생겼다. 코테를 치기로 계획해 둔 날의 전날에, 외국으로 이민을 간, 오래전부터 알던 교수님이 한국에 들어오셨는데, 함께 아는 회사 동료와 저녁 식사를 하자고 연락이 왔다. 내가 좋아하는 교수님이고 또 내게 지금까지 살뜰히 챙겨주셨기에, 또 직장 동료까지 있는 마당에 내일 코테 핑계를 대고 빠져나올 수가 없었다. 전날 나는 업무가 많아 6시 반까지 쫒기듯 지시된 일을 하고는 약속장소로 가 음주를 곁들여 9시 반까지 식사를 했다. 사회생활이란 그 나름대로 열심히 해야 하는 것이다.
다음날, 아이를 여느때처럼 먹이고 입혀서 어린이집에 데려다주고, 오전에 커피만 내려 앉아 코테를 쳤다. 첫번째 문제는 쉽게 풀었다. 두번째는 약간 발상하기 어려웠지만 여유를 갖고 구상했다. 코테는 구상이 중요하다. 코딩을 했다가, 시간초과가 나서, 발상을 전환해서 실마리를 찾아 다시 코딩을 했고 테케를 모두 통과했다. 세번째 문제는 아무래도 일부 답이 틀렸다. 테케를 받아서 비교해가면서 로직의 미비점을 보완했다. 다행히 모든 테케가 통과되었다. 3일쯤 지나, 코테 통과 및 과제전형 안내를 받았다. 코테를 붙었다고 하니 와이프가 이렇게 빨리 될 줄 몰랐다며 많이 놀랐다고 했다. 축하를 받았고, 나는 향후 일정에 대해 공유했다.

반응형

1차과제

1차 과제는 코딩을 해서 해당 직무 관련된 데이터를 분석하여 최적의 결과를 내는 백엔드 프로그램을 만드는 것이었다. 이건 금토일 3일간 쳐야 했다. 와이프의 양해를 얻어 가까운 친정에 아이를 데리고 와이프가 가기로 했다. 전에 다른 회사 과제전형이 주말에 있었으나 어김없이 가족의 나들이로 토요일 낮을 쓰자 그 다음에는 과제가 되지 않았다. 그래서 아예 제출을 하지 못했다. 시간이 한정된 직장인+기혼자는 작은 시간의 차이로도 결과가 0이 되고 만다. 그 점을 두고 소위 ‘과제’가 장난이 아님을 깨달은 와이프는 작업형 과제가 있는 주말에는 내게 시간을 확보해 주었다.
거기에 더해 나는 금요일 휴가를 쓰기로 했다. 와이프는 휴가가 아깝다고 했지만, 어떻게 온 기회인데... 나로서는 업무를 하면서 과제를 할 자신이 없었다. 최선을 다해야했다. 휴가원을 올리려 하자 팀장은 내가 이직을 하려는 것인지 의심하고 물어봤다. 왜냐하면, 휴가를 가기로 한 금요일 저녁에 오래전부터 이미 예정된 회식이 있어, 낮에는 집에서 과제를 하고 저녁에는 회식에 참석하는 이상한 모양새가 연출되었기 때문이다. 회식 내내 불안했지만, 그런 분위기에서 회식을 빠질 수는 없었다.
주말을 하얗게 불태우고, 마지막 30분을 남기고 끝까지 결과를 검토하다가 제출했다.

2차과제

1차과제 제출 후 2주쯤 지나, 커트라인을 넘었기에 2차과제를 진행한다는 메일을 받았다. 2차과제는 1주일간 작성할 수 있었다. 공지된 논문 3가지 중 하나를 택해 요약하고 나의 생각을 적는 과제였다. 틈나는대로 보완하고 찾아보며 공부하는 일을 반복했다. 이건 와이프의 친정행은 필요없었다. 여러 차례 검토하는 과정에서 오류를 발견하여 수정하면서 나의 이해를 계속 업데이트해 갔다. 알면 알수록 모르는 점이 보였기에, ‘됐다’ 라고 생각할 때 다시 한 번 더 살펴보는 과정은 오류를 줄여 합격확률을 높이는데 크게 기여하는 것 같다.

1차면접

며칠 후, 과제를 통과했다는 메일을 받았다. 그리고 1차 면접 일정을 잡기 위한 연락을 인재영입팀 담당자로부터 받았다. 수학, 머신러닝, 1, 2차 과제, 과거 커리어 관련 질문으로 해당 실무자 7~8명이 지원자 한 사람만을 2시간 동안 검증하는 것이 1차 면접이다 (그렇다. 통상의 다대다 면접이 아닌 8:1 면접이다. 두시간은 오로지 나 한사람의 검증만을 위해 쓰였다). 도메인 관련 서적들을 찾아 읽으며 기본기를 정리하고, 그 다음에는 도메인 관련한 대표적 문제들을 검색해서 풀었다. 면접 직전에는 역시 와이프가 친정행을 해주어, 토-일요일간 공부를 하고, 시작하는 주 중간에 카카오 면접을 봤다.
주말 이후 업무를 며칠 하고 나서 면접일이었다. 우리 팀에는 회의가 많아서 면접 전날도 회의와 보고로 시간을 쓰면서, 아는게 사라지지는 않을지 불안했다. 면접 전날 저녁에는 육아와 집안일을 끝내고 앉으니 역시 뇌가 피곤해서 세시간 앉았어도 공부를 거의 못했고, 면접일 아침에 전체적으로 정리를 했다.
면접은 온라인으로 진행되었다. 기본기 관련 문제는 구석구석 도메인 관련 동서양의 문제를 구글링해서 짧은 기간 정리를 했기에 모르는 문제가 거의 없었다. 모든 시험이 마찬가지지만, 시험에 임박해서 정리를 하지 않으면 평소에 알던 것도 시간 안에 충실히 답할 수가 없기에 주말 동안의 정리는 필수적이었다.
다만 1차 과제에 대한 피드백이 생각보다 좋지 않았고 나는 이것도 배움의 기회라고 생각해 부정적 피드백을 겸허히 수용했다. 특히, 충분히 다양한 접근법을 검토해 보지 못한데 대한 지적은, 금요일 저녁을 그대로 음주로 날릴 수 밖에 없던 나의 불운이기도 했지만, 그렇게 변명을 할수록 얼마든 공격이 들어올 수 있기에 그냥 속으로 말을 삼켰다. 아니 아예 그런 변명은 무의식에서 잠재해 생각나지도 않았던 것 같다. 외부인이 보기에 현재 팀의 셋업, 일정, 주변 여건 등 제약 요인을 관리하는 것도 나의 책임이다. 안뽑으면 그만이므로, 환경 하에서 최적의 결과를 내는 건 나의 책임이다. 삶은 상당 부분이 운이지만 그걸 극복하기 위해 노력을 하면 상황은 서서히라도 반드시 나아진다는 것을 믿는다.

2차면접

1차 면접에 합격했다는 메일을 받았다. 2차 면접의 경쟁률은 대략 2:1 정도라고 알려진다. 카카오는 직원을 '크루(Krew)' 라고 부르는데, 크루로서의 fit을 보는 것이 2차 면접의 주요 포인트라고 들었다. 이를 준비하기 위해 카카오 홈페이지에 있는 '카카오 문화' 관련 creed를 보는 것이 권장된다고 설명회 때 들었다. 그래서 해당 사이트를 다시 한 번 살펴보며 나는 카카오스러운가? 를 자문해 보았다. 카카오 홈페이지에 나온 아래 첫 creed를 보는 순간, 가슴이 뭉클해짐을 느꼈다. 안정을 중시하는 현재 직장에서는 좀처럼 볼 수 없는 문구였다. 나는 지난 프로젝트들을 통해 이런 식으로 일했는가? 를 자문했다. 역시 그러했다. 나는 내가 필요하다고 생각하는 일을 많은 이의 반대와 냉소를 실제 솔루션으로 설득하면서 일을 해나갔다. 지금 돌아보면 우리 부서의 관리자들은 위험이 따르더라도 나의 일을 지지해 주었다. 가장 보수적인 조직에서 몇 안되는 혁신의 정신을 가진 사람들이다.

https://www.kakaocorp.com/page/kakao/kakaoCulture

면접 전에 대표적 인성면접 질문을 검색을 통해 백여개쯤 뽑아서 시뮬레이션 해보고 모범 답안을 다듬으면서 답변을 준비했다. 2차 면접에는 내가 지원한 팀장님과 유관 팀장님 등 두 분이 들어오셔서 면접을 1시간 가량 진행했다. 그대로 답은 하지 않겠지만 그래도 문제를 통해 생각을 정리해서 면접 당일에 답변을 잘 할 수 있었던 것 같다. 열정을 가감없이 구체적 사례와 함께 전달했다. 진심은 통하는 것일까, 출근이 언제부터 가능하냐는 질문을 받고 합격의 예감을 했다.

처우협의

2차 면접 합격 메일을 받았다. 아내에게 이 소식을 카톡으로 전했는데, 너무 기뻐해서 내가 더 놀랐다.

2차 인터뷰 합격 안내 메일

그 다음인 처우협의 단계는 나의 현재 회사 처우(연봉+복리후생)를 먼저 입력하면 카카오가 제시할 처우수준을 알려주는 방식이다. 이 과정에서는 추가 협의를 거쳐 회사에 입사를 할지, 입사를 한다면 입사 일정을 정하게 된다. 사람 마음이라는 것이 그러기 어려운 일이나, 연협에서 틀어지는 경우가 많다고 하고 나 또한 예외가 아닐 수 없으니, 마지막 순간까지 원래 회사의 사람과 일과 성실히 지내야 한다. 이 점은 이직자가 명심할 사항이다.

글을 맺으며

준비하는 과정에서 길이 보이지 않을 때 아주 신기하게도 새로운 국면이 열렸다. 소위 ‘아다리’가 착착 맞는다는 것이 운이겠지만 그런 것은 활용 가능한 ‘시간’과 나의 정신적 에너지가 좋을 때 시험 일정이 잡히는 정도이고, 내용에 대해서는 내가 결국 준비를 해야 그 실력을 발휘할 수 있다. 즉, 이미 퇴근 전 후나 주말에 자기 혼자 보낼 수 있는 시간이 있고, 업무 자체도 좋아서 성실히만 하면 시장성 있는 경력 개발이 되는 포지션에 있는 사람들은 나보다 훨씬 운이 좋은 사람들이다. 나로서는 절대 가질 수 없던 그 운을 가진 분들이 많지만, 그렇다고 내가 그런 상황에 처한다 해서 그 운을 충분히 활용한다는 보장도 없다. 절박한 상황에서 얼마나 자기의 시간을 붙들고 최대한 꾸준히 노력하는지, 그래서 임계점을 정해진 타임라인 안에 넘도록 신념을 갖고 준비하는지가 성공에 직결되는 것 같다.
또, 제한된 자원 하에서 노력해야 하는 사람은 그만큼 자기 능력이 배가되어, 짧은 시간에 학습하고 적용할 수 있는 능력이 생기는 것 같다. 그리고 지금 상황에서 대응을 잘 하는 것만으로 음으로 양으로의 도움을 받기도 한다. 예를 들어 알고리즘 문제를 풀다보니 보고서를 써야 할 때 논리가 잘 잡혀 그 전에는 보이지 않던 큰 그림으로 맥락을 수정하거나 구성할 수 있게 되는 능력이 생겼음을 직감했다.
직장을 다니며 다른 전공분야에 도전해 카카오에 경력자로 합격을 했다는 사실 자체가 내게는 자부심의 원천이 될 것 같다. 현재 회사에서든 어디서든 희망을 가지고 자신의 가치를 높이기 위해 노력하다 보면 현재보다 좋은 과실이 얻어질 것이라고 생각한다.

반응형

'Soft Talks' 카테고리의 다른 글

테크 업계 이직시장 리뷰  (2) 2023.01.10
Online Judge Runtime Error (RE/RTE) 원인: I/O  (0) 2022.11.27
면접 전에 꼭 할 일  (0) 2022.11.19
오류노트  (0) 2022.05.11
g++ compiler로 c++11 실행하기  (0) 2022.05.02