이직 일기

2018년 2월 12일부터 온디맨드코리아 한국 사무실로 출근합니다.

이직 일기

여차저차한 이유로 스마트스터디와 작별할 시기라는 걸 인식하고 나서 곧바로 했던 일이 바로 이력서 작성이었습니다. 틈틈이 이력서를 써두라는 조언을 왜 듣지 않았는지 자책하며 말이죠. 4년 넘게 했던 일을 기억하기란 꽤 어려운 일이었습니다. 다행히 사내 깃헙을 한 페이지씩 넘겨가며 이력서를 작성하였습니다.

2018년 김승호 이력서 from raccoony

제겐 프로그래머 세계에서 직장을 옮기는 경험이 처음이었기 때문에 재미도 있고 자극도 많았는데요. 이러한 경험을 나누면, 미래의 제게 (그리고 다른 분들께도) 도움이 될 것 같아 정리해봅니다.
(회사 이름에는 면접을 경험한 순서대로 한글 자음을 붙였습니다.)

1 실리콘밸리의 ㄱ사

깃헙을 뒤지면서 겨우 작성한 이력서를 어느 회사에 넣어야 할지 생각하다가, 2017년 중반에 소식을 접한 실리콘밸리의 한 스타트업이 생각났습니다. (참고로 저는 영어를 거의 못합니다.)
안 되면 안 되는 대로, 되면 되는 대로라는 생각으로 이력서를 보내봤는데, Cold Call을 진행하자는 연락이 왔습니다. 편의상 1차 면접이라고 하겠습니다. 면접 내용을 적어보면,

  • 원하는 포지션이 FullStack이어서 그런지, 백엔드와 프론트엔드 모두를 다뤄보았기를 기대하고 있었습니다.
  • 자기네 스택은 Node.js + React.js인데, 프로그래밍을 자바스크립트로 배운 사람은 하나도 없다고 했습니다. 한 언어 잘 하면 다른 언어도 잘 하니까 상관 없다면서요. 또, 개인의 스택과 회사의 스택은 같을 필요가 없다고 생각한다고도 했습니다.
  • AWS를 사용할 줄 알았는데 heroku를 사용한다고 해서 신기했습니다. 미국은 모두 AWS 쓸 거라고 편견을 갖고 있었기 때문인데요. 사용자 수가 급격히 늘거나 하지는 않는 서비스여서 그런가 싶기도 했습니다.
  • 이제 막 시드 투자 받은 미국 스타트업은 우리나라랑 업무 강도가 비슷할 것 같다는 느낌을 받았습니다. 업무 시작 때 한 번, 업무 마감 때 한 번씩 짧은 전체 미팅을 한다고 했고, 최근에 겪었던 기술적 문제 상황에 대해 물었을 때도 팀원 전체가 하드하지만 즐겁게 이슈를 처리했다고 하더군요.
  • 향후 계획을 물어보니 꽤 세세하게 설명해주었습니다. 일단 사용자부터 모아두고 그 다음에 생각하자 같은 태도가 아니었습니다.
  • 영어는 못한다고 이메일로 미리 말했는데 면접 끝머리에 5분 정도만 영어로 진행하자고 답이 왔었습니다. 제가 진행한 프로젝트에 대해 물어보았는데, 완전 버벅거려서 결과를 낙관하기가 더더욱 어려워졌습니다.

결과

불합격.
기술적으로 프론트엔드에 약점이 있기도 했고(그렇다고 백엔드를 완전 잘하는 것도 아니고요), 영어에서도 횡설수설했기 때문에 당연히 탈락이라고 생각하고 있었습니다.
1차 면접 이후 가타부타 연락이 없어서 좀 아쉬웠지만, 어쨌든 기술의 최첨단을 달린다는 실리콘밸리에서 치열하게 사는 분들을 만나서, 영어든 프론트엔드든 공부해야겠다는 자극을 많이 받았습니다.

2 국내 ㄴ사

다니던 회사의 상사 한 분이 연결을 해주셔서, P2P 회사와 진행했습니다.

코딩테스트

면접에 앞서 goorm.io에서 제공하는 코딩테스트를 진행했습니다. (IDE나 편집기 환경과 살짝 다른 면이 있기 때문에, 혹시 지원하는 회사에서 구름TEST를 보내 왔다면, 일단 홈페이지에서 테스트 체험하기를 해보시기를 권합니다.)
다음 주제로 총 세 문제를 다섯 시간 내에 풀어야 했던 걸로 기억합니다.

  • 일반적인 프로그래밍 문제
  • 자료구조
  • 알고리즘

1차 기술 면접 1부 with 개발팀

코딩테스트를 통과하고 면접 일정을 잡았습니다. 두세 시간 정도, '업무 관련 질문들과 간단한 코딩 문제'를 질문할 예정이라고 하더군요.
업무와 관련되지 않은 질문 중 기억나는 것은,

  • 웹 애플리케이션을 만들었을 때 아키텍처를 최대한 자세히 그려주세요. (다 그린 후에는, 그림에 대한 질문 몇 가지)
  • HTTP와 HTTPS의 차이점을 설명해보세요.

여기까지는 개발팀원 세 분이 함께 면접을 진행했는데, 이후에 CTO님과 남아서 단 둘이 한 시간을 더 보냈습니다.

1차 기술 면접 2부 with CTO

이때는 손코딩(=문제가 적혀 있는 구글 독스에서 코딩)을 했는데, 일반적인 문제 하나와 알고리즘 개선 문제 하나였고 앞서 진행한 코딩테스트보다는 쉬웠습니다. 온라인 코딩테스트의 한계(=커닝, 대리시험)를 의식하고 있기 때문에, 손코딩을 진행한다고도 말씀해주시더군요.
그리고 컴퓨터 공학 전반의 지식을 질문받았습니다. 대학 시절의 기억을 떠올리려고 애를 썼지만 졸업한지 이미 십 년이 넘어서... ㅠㅠ 기대에 맞춰 잘 대답했는지는 모르겠습니다.

2차 인사 면접

사무실에 온 김에? HR 담당자와 2차 면접을 진행하자고 해서 수락했습니다. (사실 좀 지친 상태긴 했지만 다음에 오긴 더 귀찮으니까...)
일단, HR 담당자와 면접이 있다는 점이 굉장히 신선했습니다. 제 경력이 짧긴 하지만 어쨌든 이런 경우는 처음이라서요. 처음에는 HR 담당자의 시각에서 바라본 회사의 장점과 강점을 들었고요. 이후로는 제가 회사에 대해 이것저것 묻고 답을 들었습니다. 내용을 요약하면 우리 회사 좋다.
대표 면접 일정을 잡고 집으로 돌아왔습니다.

3차 대표 면접

대표 면접에서는 기술보다는 살아온 궤적을 질문받았습니다. 왜 개발자로 전직했는지, 회사를 옮기게 된 배경은 무엇인지 등입니다.
저는, 회사의 비전이나 대표의 경영 마인드 등을 질문했고요.

결과

합격.
연결해 주신 분 덕인지 평가를 좋게 받았고 합격할 수 있었습니다.

3 국내 ㄷ사

지인이 다니시는 또다른 P2P 회사에 이력서를 넣었습니다.

코딩테스트

이곳의 코딩 문제는 특정 플랫폼이 아닌 소스코드 제출 형태로 이루어졌습니다. 마감 기한을 스스로 정할 수 있다는 점이 참신하게 느껴졌는데요. 마감 기한을 아무리 길게 잡아도 상관은 없지만, 스스로 정한 기한을 지키지 않으면 감점이 될 수 있다고 안내해주셨습니다.
문제는 총 네 문제였습니다.

  • 일반적인 프로그래밍 두 문제
  • 알고리즘 한 문제
  • OOP 설계 한 문제

문제를 훑어보고 마감 기한을 답했어야 했는데, 마침 여기저기 면접을 보러 다니면서 심신이 피곤했던 터라 2주 후로 길게 잡았습니다. 대중교통을 이용하는 동안 해답을 미리미리 생각했던 덕인지, 막상 작정하고 문제를 풀기 시작하자 서너 시간 정도 걸렸던 것 같습니다.
각 문제별로 요구사항을 테스트 코드로 정리하여 답안과 함께 제출했는데요. 이 회사에서 평소 테스트 코드를 중요시한다는 이야기를 하기도 했고, 저 스스로도 해답이 맞는지 검증할 수 있어서 애용하는 방법입니다. (테스트 코드 넣어서 싫었다는 말을 들은 적은 아직까지 없습니다.)
답장 메일을 토요일에 CTO님께 보냈는데 다음 날 오전에 기술 면접을 진행하자는 답을 받았습니다. (주말에도 열일하시는 CTO님...) 뭘 준비해야 하는지 물었으나 특별한 건 없다고 하셨고요.

1차 기술 면접 1부

1부에 두 분이 들어오셔서 이전 회사에서 했던 일들에 대해 30분 정도 물어보셨고, 이후에는 메일로 제출한 OOP 설계 문제를 함께 살펴보았습니다.

1차 기술 면접 2부

2부에는 다른 두 분이 들어오셔서 IPython 노트북을 열고 문제를 풀어보라고 하셨습니다. 일반적인 파이썬 문제가 세 문제, Django 쿼리 효율화가 한 문제 있었는데요. 한 문제는 출제 의도를 파악하기 어려웠고, 다른 한 문제는 섣불리 해답을 단정해버려서 부끄러웠습니다.
그래도 면접관들이 제가 함정에 빠질 때마다 그 부분을 물어봐주시고, 다른 방식으로 생각할 수 있게 계속 질문해주셔서 함정에서 빠져나올 수 있었습니다.

대표님과의 짧은 인사

면접이 끝나고, 회사에 온 김에 대표님과 짧게 인사를 나누면 어떠냐고 하셔서 5분 정도 인사를 나누었습니다. 소탈하고 열정 어린 대표님이 인상적이었습니다.

논술

마지막 과정이 대표 면접 대신 논술이라고 해서 뇌에 지진이... 그래도 한두 문제 정도겠지 싶었는데 무려 일곱 문제더군요. 게다가 중간의 한 문제는 한 시간 분량의 유튜브 동영상 두 개를 각각 요약하라고 하셔서, 약간은 입사 전 교육 같다는 느낌을 받기도 했습니다.
사흘 동안 일곱 문제를 풀어야 했는데, 백수가 더 바쁘다고 낮엔 계속 일정이 있었습니다. 쉬운 문제 위주로 일단 큰 틀만 잡아두고, 동영상 요약은 시간만 투자하면 되니까 미리 해두고... 그러다보니 금세 마감일이 되어서 부랴부랴 보충하고 자정 직전에 메일을 보냈습니다.
그런데! 첨부 파일을 선택할 때 실수를 해서, 논술 답안이 아닌 다른 파일을 보내버렸... 다행히 CTO님께서 부랴부랴 연락을 주셔서 논술 답안을 보낼 수 있었고요. 아... 정말 창피했습니다.

결과

부끄러운 실수(첨부 파일)에도 불구하고 어떤 점을 좋게 보셨는지 희망 연봉을 알려달라는 메일을 받았습니다.

채용 과정 피드백

다른 회사로 가기로 결정한 이후 답변을 드렸더니, 채용 과정에서 불편했던 점을 가감 없이 알려달라고 하시더군요.
사실, 논술 문제가 일곱 개나 되어서 마음이 좀 복잡했던 것이 사실인데요. 이런 점에 대해 이야기를 했습니다. 서로의 생각을 알고 싶다는 마음은 이해가 가지만, 한두 문제로 줄일 수 있지 않을까 싶었거든요.
그래도 논술 문제에 다소 실망했던 차에, 채용 과정에 대해 피드백을 달라고 하신 부분은 좋아 보였습니다.

4 국내 ㄹ사

서류 전형

분당 쪽에 위치한 대기업 한 군데에서 함께 퇴사한 분들의 이력서를 모두 받아 갔고, 아마 그 덕에 서류 전형을 통과한 듯 합니다.

1차 기술 면접

회사 내에 면접자 대기실이 있었습니다. 역시 대기업은 달라... 물과 약간의 과자류가 비치되어 있었고요. 사내 카페에서 사용할 수 있는 쿠폰도 하나 주시더군요.
면접관 두 분이 한 시간 동안 기술 면접을 진행했고, 주로 제가 사용했다고 했던 기술들에 대해 다음과 같은 질문을 받았습니다.

  • 파이썬 generator에 대해 아는 만큼 설명해주세요.
  • 파이썬에서 클래스를 상속하면, 메서드는 어떤 식으로 실행되나요?
  • 어떤 request가 Django API까지 도달하는 과정을 최대한 자세히 설명해주세요.
  • 파이썬에 존재하는 GIL에 대해서 설명해주세요.
  • Django ORM의 작동 방식에 대해 설명해주세요.
  • Django ORM에서 지연 평가를 하곤 하는데요. 직접 구현한다면 어떻게 구현하겠습니까?
  • http와 https의 차이점은?
  • 도커 컨테이너 내부에 nat가 존재할 수 있나요?

결과

기술 면접시 제대로 답하지 못한 질문들이 많아서 결과를 비관했는데, 역시나 떨어졌습니다.

5 국내 ㅁ사

서류 전형

이곳 역시 분당 쪽의 대기업이고 함께 퇴사한 분들의 이력서를 모두 받아갔던 터라, 서류 전형은 통과할 수 있었습니다.

1차 기술 면접

오전에 4번 회사의 기술 면접을 진행했던 터라 조금 피곤한 상태에서 면접에 임했습니다. 면접관 세 분이 들어오셨고, 한 분은 친절하게, 한 분은 까칠하게, 한 분은 관전자처럼 느껴졌습니다.
4번 회사와 비슷한 형식으로 진행되었고, 기억나는 질문은 다음과 같습니다.

  • 파이썬 GIL이 무엇이고, 왜 성능 문제가 발생하는가?
  • 파이썬의 GC는 어떻게 작동하나요?
  • 프로세스와 쓰레드는 어떻게 다른가요?
  • 왜 celery 백엔드로 SQS를 사용했나요?
  • 그때 문제는 없었나요?
  • pypy는 도대체 왜 CPython보다 빠른 걸까요?
  • 웹 서비스 응답이 느리다면 어떻게 해결할 수 있을까요?
  • python에서 메모리 릭이 발생할 수 있는 경우는 언제일까요?
  • 도커와 VM의 차이점은 뭔가요?
    이 외에도 칠판에 특정 기능을 수행하는 함수를 작성하고, 이를 수정해가는 과정을 진행하기도 했습니다.

결과

4번 회사 면접에서 털렸던 멘탈이 5번 회사 면접에서 두 배로 털렸기 때문에 결과를 비관하였고, 역시나 불합격했습니다.

6 실리콘밸리 ㅂ사

지인이 계신 회사에 이력서를 넣은 덕에 다행히 서류 전형은 통과하고 코딩 테스트를 진행하였습니다.

코딩테스트

여기서도 구름 테스트를 사용했는데, 문제가 굉장히 어려웠음에도 제한 시간이 빡빡하여 한 문제도 제대로 풀지를 못했습니다. 하지만 답안을 완성하지는 못해도 나름대로의 접근법을 최대한 코드로 옮기고, 그래도 코드화하지 못한 부분은 주석으로 남겨두었습니다. 이를테면, 그래프를 구현해서 문제를 풀 수 있을 듯 한데 그래프 구현을 못했다는 식으로요.
이런 노력을 기특하게 보셨는지 CTO+대표 면접 일정이 잡혔습니다.

CTO+대표 면접

본사가 해외에 있는데 대표님이 잠시 한국에 들어온 사이에 면접을 진행했습니다. 예상과 달리 CTO님은 기술 관련 질문을 거의 하지 않으셨고, 대표님이 회사 문화나 개인의 기대에 대해 많이 물어보셨습니다. CTO님이 기술 질문을 하지 않으신 이유는 아마도 평소에 지인분과 기술 이야기를 많이 나눴던 것이 CTO님께도 전달된 것이 아닌가 싶습니다.

결과

부족한 코딩 시험 내용에도 불구하고 과정을 좋게 봐주신 덕인지 합격하였습니다.

결정

합격한 회사 중에 이전 동료 몇 분과 함께 일할 수 있는 조건과 연봉, 업계 등을 고려하여, 글로벌 콘텐츠를 유통하고 배급하는 온디맨드코리아라는 회사를 선택하였습니다. 미국에 계신 한국 분들을 대상으로 한류 콘텐츠를 공급했던 이력 덕인지, 미국 내 한국분들께 인지도가 좀 있더군요. 미국 회사지만 한국에도 사무실이 있고, 저는 (당연히) 한국 사무실 소속입니다. 2월 12일 월요일부터 출근합니다. ^^
면접 과정에서 도움 주신 분들이 참 많은데요. 가상 면접과 가상 손코딩 면접, 이력서 리뷰, 알고리즘 스터디 등으로 함께 해주신 분들 덕에 다음 발걸음을 힘차게 내딛을 수 있었습니다. 정말 고맙습니다.

느낀 점

묘하게도 스타트업에는 합격하고 대기업에는 탈락하는 결과를 받았고요. 프로그래머의 유형을, 이슈를 빨리 파악하고 코드를 빨리 구현해서 문제를 빨리 해결하는 사람과 조금 느리더라도 근본을 파악해서 문제를 해결하는 사람으로 나눈다면, 완전히 어느 한 쪽으로 치우친 사람보다는, 양쪽 다 갖추었지만 더 중요하게 여기는 부분이 회사의 상황마다, 크기마다 다른 것 아닌가 싶었습니다.

권고

  • 책 두 권을 강력 추천합니다. ⟪구글러가 전하는 IT 취업 가이드⟫와 ⟪코딩 인터뷰 완전 분석
  • 손코딩시 생각의 흐름을 입 밖으로 내뱉으라는 말을 많이 들었는데요. 머릿 속으로 동의만 하지 말고 꼭 연습을 해야 합니다. 아는 사람을 앞에 두고 하면 더 좋고, 사정이 안 되면 거울 보면서 혼자서라도 해보세요.
  • 혹시 지원하는 회사에서 구름TEST를 보내 왔다면, 일단 홈페이지에서 테스트 체험하기를 해보시기를 권합니다.

COMMENTS

}