코딩 교육이 필요한 이유

Code

최근 일자리 시장이 개발자 위주로 공급되면서 일반인들, 즉 비전공자들도 코딩 교육을 받는 경우가 늘어나고 있다. 코딩 열풍, 명과 암 취업을 하기 위한 것이 아니라면 왜 코딩을 배워야 할까? 여기서는 단순히 ‘코딩’만을 의미한다. 실제 많은 개발자들은 숲을 보지 못하고 나무만을 보는 개발자들을 ‘코더’라고 부르며 하대한다. 기반이 되는 공학적인 지식에 대한 배움이나 깨우침 없이 단순히 코딩 교육 … Read more

트랜스퍼와이즈 개발자 면접 후기

트랜스퍼와이즈

트랜스퍼와이즈의 싱가폴 IT 회사에 개발자 직군으로 면접을 보았다. 당분간 동경을 떠날 생각은 없었지만, 워낙 돌아가는 상황이 커리어적으로 도움이 되지 않았다. (참고, 개발자로서 6개월 살아본 일본생활 장단점 정리) 면접 연습겸 트랜스퍼와이즈 싱가포르 지사에 지원했는데 한달 간에 걸친 여정을 정리해 둔다.

트랜스퍼와이즈

트랜스퍼와이즈는 런던기반의 P2P 외화 송금 업체로 2011년 에스토니아 청년들이 창업했다. 핀테크 업체를 설명할 때 가장 자주 언급되는 회사중 하나이다.

(기사) 미래의 은행

(기사) 세계 최대 송금업체 트랜스퍼와이즈, 국내 핀테크 시장 진출

지원

글래스도어에서 검색 후 지원하는 곳의 사이트를 통해 이력서를 제출하였다. 참고로 전체적인 진행은 greenhouse.io 라는 Sass 서비스를 통해 이루어진다. 리크루터가 지원자를 관리하기 위해 사용하는 시스템인데, 이 덕분인지 프로세스가 전체적으로 굉장히 빠르고 피드백도 좋았다. (자동화 느낌이 나는건 어쩔 수 없다.) 2-3일 뒤에 트랜스퍼와이즈 리크루터로부터 연락이 왔고 스크리닝을 위한 짧은 면접 날짜가 잡혔다.

스크리닝

리크루터가 휴가라서 싱가폴 지사로 곧 옮기게 될 엔지니어 (우크라이나인)가 인터뷰를 진행했다. 다음 단계로 넘어가기 위해 말 그대로 한번 거르는 절차이다. 이 단계에서는 특별히 어려운 질문없이 자기소개와 현재 업무에 대해 질문받고 끝이났다. 싱가폴 쪽에서 직장을 구할 때는 일본어나 중국어 한국어를 할줄 아는게 나름 장점이된다고 느꼈다. (영어는 필수..) 엔지니어가 한국어와 일본어를 하는 엔지니어를 급하게 찾는다고 귀뜸을 받았다. 특히 일본은 연동 문서가 일본어로 되어있거나 일본 사이트 대상자가 영어를 못하는 경우가 많아 싱가폴에서 일본어 가능자를 찾는 경우를 꽤나 보았다. 자고 일어나니 바로 온라인 코딩 테스트를 위한 링크가 도착해 있었다.

온라인 코딩

해커랭크에서 출제된 문제를 한시간 반 안에 풀어야 한다. 객관식 20문제, 주관식 3문제, 온라인 코딩문제 3문제가 그것이다. 객관식,주관식을 다풀고 나니 40분정도가 지났다. ?코딩 문제는 leetcode에서 쉬움-보통을 드나드는 문제인데 평소에 자주 풀어보지 않았다면 검색해서 적는 것도 벅찰 것이다. 일단 문제 의도를 알고 있었기 때문에 기본 문제 풀이를 구글링 해서 찾은 다음 문제에 맞게 변경해서 정해진 시간내에 제출할 수 있었다. 제출된 문제는 다음과 같다.

  1. K-Difference
  2. Longest increasing subsequence
  3. Closest Great Vlaue in Bianry Tree

내가 몇점인지 확인할 수는 없지만 3번을 제외한 문제는 모두 정답이었 다고 생각한다. 그 다음날 기술면접이 언제 가능한지 묻는 메일이 왔다.

1차 기술

1차 기술은 한시간 반 동안 진행되었으며 두명의 엔지니어 (영국, 스페인 출신)가 참가했다. 초반 30분 정도는 자기소개 이후 다음과 같은 질문을 받았는데 조금 버벅거리긴 했지만 전부 제대로 대답했다고 생각한다.

  • MSA어떻게 하고 있냐
  • BST어떻게 동작하냐
  • POST와 PATCH 차이
  • REST설계 어떻게 하냐
  • 개인용 작은 블로그를 만든다면 어떻게 만들 것인가
  • 카프카나 큐를 써본적은 있는가
  • 언제 RDBMS를 쓰고 언제 NoSQL을 쓸 것인가
  • 해시셋과 트리셋의 차이

40분쯤 지난 시점에 문제를 내주는데 해커스 랭크의 온라인 코딩 툴로 접속해 문제를 풀게 된다.

여기서 접근을 조금 잘못 했는데, 알고리즘과 디자인의 혼합문제로 생각했어야 하지만 단순히 디자인 문제로만 접근을 시도하니 자꾸 인터뷰어와 어긋나기 시작하였다. 테스트 케이스를 먼저 작성하고 시작한 것은 좋은 점수를 받았지만, 자바의 작은 문법이나 디자인 패턴에 집중하는 사이에 가장 중요하다고 할 수 있는 효율적인 엘리베이터 배치에 대한 고려가 빠지게 되었다. 결과적으로 영어도 버벅이기 시작. ?실제 이문제를 한번이라도 경험해본 사람이 절대적으로 유리할 수 밖에 없는데 엘리베이터 알고리즘에 대해서 알고 있었더라면 이번 라운드로 기술 면접을 끝낼 수 있었을 것이다.

탈락할 수도 있겠다고 생각하던 차에 다음날에 바로 연락이 왔다. 한시간 짜리 기술면접을 다시 볼 수 있겠냐고. 피드백은 다음과 같이 굉장히 솔직했다.

Overall the team had some concerns regarding communication but wanted to give you another shot as they saw a lot of potential.

영어로 문제풀이를 하면서 엄청 버벅였던 것이 생각났다. 결국 잘 알지 못하는 것에 대해 어설프게 이야기 하다보니 허접한 영어가 나올 수 밖에 없었고 거기에 더해 행아웃을 통해 대화를 하기 때문에 더 잘들지 않았기 때문에 이런 피드백을 받은 것 같다.

2차 기술

1차에서 완벽하게 통과했다면 없을 과정이지만 한시간 정도 짧게 두명의 엔지니어 (스크리닝을 했던 우크라이나인, 시리아인)와 문제풀이를 진행하게 되었다.

이번에는 쓸데 없는 문법에 집중하지 않고 최대한 빨리 대략적인 구조를 잡은 후 ATM의 핵심이라고 할 수 있는 잔돈을 계산하는 방법에 대해 풀어 나갔다. 사실 이 문제도 어느정도 모범 답안이 존재하지만 짧은 시간내에 이것을 DP로 풀어내는 시도는 하지 못하고 굉장히 일차원적인 접근을 취할 수 밖에 없었는데 그럼에도 조금 씩 질문을 주고받으면서 한시간 내에 뭔가 동작하는 코드를 만들어 냈기 때문에 대략 80점 정도로 스스로에게 점수를 주고 합격할 것으로 예상 하였다.

프로덕트 인터뷰

싱가폴과 일본에 있는 마케팅 담당자 (일본인), 프로덕트 엔지니어 (중국계 미국인)와 면접을 보았는데, 주로 린 개발 방법론에 관한 것이었다. 쿠팡을 다니면서 많이 익숙해졌고 평소에 이 부분에 대해서는 뚜렷한 생각을 가지고 있었기 질문에 전부 답하고 합격을 예측 할 수 있었다. (본인의 대답과 인터뷰어의 반응을 종합해 보면 대충 답이 나온다. ) 물론 영어적으로 버벅거릴때도 있었지만 개발자로서 큰 흠이 될 만한 수준은 아니었다고 생각한다.

  • 기능 출시후에 어떤 메트릭으로 측정할것인가?
  • NPS는 떨어지고 Conversion rate는 올랐을 경우 어떻게 할것인가?
  • 특정기능을 이야기하고 그에 대한 MVP를 생각하기
  • 방금 대답한 것보다 조금 더 lean 한 방법은 없나?

바로 다음날 연락이 왔는데 (영국시간 9시에서 9시반 사이, 항상 이시간에 합격 연락이 와서, 한국시간 5시가 되면 항상 긴장하게 되었다.) 다음과 같은 피드백 이었다.

Overall the feedback has remained positive. People really like your motivation and passion for xxxxxxx, and although we think that we may have seen some slightly more technically strong candidates we do feel that you could pick stuff up well from the interviews so far.

Therefore we would love to set up the next step in the process which would be a 1-hour interview ideally on Google Hangouts. This would be xxxxxxxxxx and xxxxxxxxx, the VP of xxxx and one of the xxxx Leads.

기술쪽이 조금 불만족 하긴 하지만 사실 최종 이라고 해서 그냥 CTO하고 안면 트는 정도로 예상했지만 정말 설명 그대로 tough한 인터뷰가 기다리고 있었다.

최종 인터뷰

사실 인도인 VP가 들어왔어야 하는데 10분 늦게 영국인 엔지니어 리드만 입장 하였다. 사실 좀 알아 듣기가 힘들었는데, 인터뷰어가 굉장히 피곤해 보였으며, 끊임없이 컴퓨터로 메신져가 오는 와중에 그의 동공은 흔들리고 있었다. 집중하지 않고 있다는 인상이어서 조금 짜증이 났다. 한시간 넘는 기간 동안 다양한 질문들을 했는데, 몇가지 질문들은 전혀 이해할 수가 없어서 계속 Come again? 을 연발해야 했다.

  • 쿠팡에서 라쿠텐으로 왜 옮겼냐
  • 왜옮기려고 하냐
  • 우리 프로덕트 써봤냐
  • 뭐를 개선 시킬 수 있냐
  • 성공한걸 어떻게 측정할 거냐
  • 입사하자 마자 아무도 없으면 뭐할래?
  • 정렬된 배열은 어떻게 검색할꺼냐
  • 바이너리 서치, 왜 바이너리 서치가 제일 빠른가?
  • 정렬되지 않은 배열은 어떻게 검색할꺼냐
  • 기수 정렬이야기 했더니 기수정렬에 대해서 설명해보라,
  • 퀵소트에 대해 이야기 하니 더 자세히 설명해 보라..
  • 셀렉션 소트에 대해서 더 자세히 설명해 보라
  • 이체스 게임 디자인 질문(?),
  • 관련해서 이어지는 질문,,P2P, Server-Client 비교하고

사실 CTO면접으로 생각해 거의 Behavior 질문들에 대해서만 준비해 갔는데 기술적인 질문들만 집중적으로 받았다. 아마도 기술 면접에서의 피드백이 족쇄처럼 따라왔기 때문인 것 같다. 대부분 대답은 했지만 역시 중간에 질문을 잘 알아듣지 못해 커뮤니케이션이 끊긴 부분은 지금 생각해도 아찔하다.

이것으로 면접은 끝을 맺었는데, 개인적으로는 굉장히 뿌듯함을 느꼈다. 꾸역꾸역 배운 영어로 해외 엔지니어들과 대화해 최종 면접까지 보았다는 것은 나름 자심감을 가질만한 일이라고 생각한다. 실제 입사를 하게 될지는 모르겠지만 아, 이렇게 준비하면 원하는 곳을 갈 수 있겠구나 하는 느낌이 든다.

부족하다고 느낀 것

영어는 진짜 평생 공부해야 한다. 외국에서 살면서 좀 읽고 말할 수 있다고 착각했더니 실제 당황하거나 경험해보지 않은 것에 대해서 설명할 때 두배로 무식해 보이는 것 같다. 기술적인 지적들도 영어 때문에 더욱 도드라져 보였던 것은 많이 아쉽다.

물론 알고리즘과 문제풀이도 병행해야 한다. 다양한 경험이 정말 중요한게, 엘리베이터나 동전 교환 같은 문제는 따로 한번 풀어 봤다면 훨씬 좋은 기술 평가를 받을 수 있었을 것이다.