6년차 개발자 해외취업 도전기 – 4. 코딩 인터뷰 준비

첫번째 아마존 인터뷰에서 좌절을 맛보고, 좀 더 적극적으로 인터뷰를 준비 해야겠다는 생각이 들었다. 특히 알고리즘에 약한 나는 문제를 풀면서 설명까지 해야 하는 코딩 인터뷰가 너무 어려웠다. 아는 문제를 그냥 영어로 설명한다고 해도 어려울 판에 순간적으로 풀이 방법까지 고민하려니 쉽지 않았다.

준비 안된 상태로 코딩 인터뷰를 맞아 혼란에 빠진 지우.

흔히 코딩 인터뷰라고 하면 알고리즘만 잘 하면 되는 것 아니냐고 생각하겠지만, 사실은 전혀 그렇지 않다. 개발자 인터뷰를 다루고 있는 책들에서 공통적으로 코딩 인터뷰에 대해 언급하는 내용이 바로 ‘thinking out loud (Ed Sheeran 노래 아님)’ 이다. 혼자 문제를 푸는 상황이 아닌 인터뷰어에게 문제 푸는 과정을 설명해야 하는 코딩 인터뷰에서는 내가 생각하고 있는 것을 – 그게 완벽한 풀이 방법이 아니라고 하더라도 – 소리내어 말하는 것이 매우 중요하다. 내가 뭘 아는지 모르는지를 이야기해야 인터뷰어가 힌트를 주던지 그냥 혼자 풀게 내버려두던지 할 것 아닌가?

“문제 푸는 방법만 알면 설명하는 게 뭐 어려운가?” 라고 생각할 수도 있다. 나도 처음에는 그랬다. 하지만 너무나 당연하게도, 아는 것과 다른 사람에게 설명하는 것은 다르다. 그리고 적어도 코딩 인터뷰에 있어서는, 아는 것만큼이나 다른 사람에게 설명하는 것이 중요하다. 코딩 인터뷰라는 것 자체가 “내가 이 사람과 일할 수 있을까?”를 보는 과정이기 때문이다. 아무리 코딩을 잘 하는 천재라도, 인터뷰에서 다른 사람들과 같이 일할 수 있는 사람이라는 인상을 주지 못하면 통과하기 힘들다. 그래서 혼자 여러 문제를 풀어보는 것도 중요하겠지만, 다른 사람들에게 설명하는 연습이 필요할 것이라고 생각했다.

아인슈타인같은 천재라도 내 생각을 설명하지 못한다면 별 소용이 없다.

처음에는 혼자 문제를 풀면서 입으로 설명하는 연습을 해보았다. 하지만 아무래도 듣는 사람이 없다 보니 어느새 문제 풀이에만 집중하는 스스로를 발견하게 되었다. 이건 안되겠다 싶어 스터디 그룹을 만들게 되었다. 처음에는 회사 동료들과 함께하는 코딩 문제 스터디 그룹을 만들었는데, 생각처럼 잘 되지 않았다. 일단 사람이 너무 많아서 다들 설명하는 걸 조금 쑥쓰러워했고 (5명 정도였음), 이런 쉬운 문제를 왜 굳이 설명을 해가면서 풀어야 하냐? 의 함정에서 벗어나기가 힘들었다.

다른 방법을 고민하다 페이스북의 개발자 해외취업 그룹에 스터디 모집 글을 올렸더니 한 분이 연락을 주셔서 (이하 D님이라고 호칭) 그 분과 1:1로 스터디를 시작했는데, 생각보다 이 방식이 나와 잘 맞아서 1년 넘게 D님과 꾸준히 스터디를 하게 되었다. 나의 해외취업에 엄청난 공헌을 해주신 D님 감사합니다.

 

스터디는 이런 방식으로 진행되었다.

  • 매주 수요일 저녁 10시에 1시간씩 스터디를 한다.
  • 각자 한 문제씩을 준비해서 각각 30분씩 인터뷰어/인터뷰이 역할을 수행한다.
  • 문제는 구글 독스를 이용해서 에디터 도움 없이 해결한다. 언어는 맘에 드는 걸로.
  • 시간이 5분정도 남았는데 풀지 못하면 해답을 알려주고 다음 문제로 넘어간다.
  • 진행은 한글로 한다. (슬프게도 영어로 진행하니 서로 의사소통이 안되는 문제가…)
  • 그 주에 스터디를 못할 것 같으면 요일을 변경하거나 다음 주로 미룬다.

 

누군가 다른 곳에 인터뷰를 보고 온 날이면 그 인터뷰를 recap하면서 시간을 보내기도 했고, 연차가 늘어날수록 코딩 인터뷰만큼이나 시스템 디자인 인터뷰도 중요하기 때문에 시스템 디자인 인터뷰도 종종 진행했다. 코딩 인터뷰 문제를 다루는 사이트(Leetcode, HackerRank, GeekForGeeks…) 는 엄청 많기 때문에 문제가 떨어질 걱정은 하지 않아도 된다. 이렇게 연습을 몇 달 해보니 일단 회사에서 동료들과 일을 할 때도 설명하는 능력이 많이 늘어난 것을 느껴 뿌듯했다. 확실히 코딩 인터뷰는 연습만이 답인 것 같다. 스터디는 구글 독스로 진행했지만 가끔씩 코딩 인터뷰 연습을 위해 회사 회의실에 있는 화이트 보드에서 연습을 하기도 했다.

 

코딩 인터뷰 준비에 도움이 되었던 자료들을 링크해둔다.

Coursera의 Mastering the software engineer interview
– 온라인 강의 플랫폼인 코세라에서 성공적인 소프트웨어 엔지니어 인터뷰에 대한 강의 자료를 만들어 두었는데, 엄청난 도움이 되었다. 해외취업을 준비하시는 분들이라면 꼭 한 번쯤 수강하시길 권해드리고 싶다. 개발자 인터뷰에 대한 기초적이지만 빼 놓을 수 없는 내용들이 많이 나와있다. 그리고 영어 리스닝이라는 측면에서도 이 정도는 자막 없이 볼 수 있어야 인터뷰 진행에 무리가 없을 것 같다. 유료 결제를 하면 수강생들끼리 mock interview도 할 수 있게 연결해주는데, 쉽지 않은 경험이니 배운 것을 직접 써먹어보고 싶으신 분들은 유료 결제까지 하셔도 아깝지 않을 것 같다.

Cracking the coding interview
– 코딩 인터뷰의 대명사같은 책이다. 원서로 볼 수 있다면 좋겠지만 정 안된다면 번역본도 나와있다. 여기 나온 문제를 다 풀어본다면 좋겠지만 한번 쭉 읽어보는 것만 해도 많은 도움이 될 것 같다.

Grokking the system design interview
– 시스템 디자인 케이스북 같은 느낌인데, 주로 많이 사용되는 디자인 패턴과 문제들에 대해서 잘 정리해놓았다.

 

많은 사람들이 하는 이야기이지만 코딩 인터뷰에 필요한 것은 천재적인 두뇌라기보다는 연습, 연습, 그리고 또 연습밖에 없는 것 같다. (사실 구글이나 페이스북 면접은 두뇌도 필요한 것 같긴 합니다…) 눈으로 “이거 그냥 이렇게 하면 되겠는데?” 하고 막상 같은 문제를 또 만나면 기억이 안 나서 당황하기 십상이다. 본인의 기억력을 너무 맹신하지 말고, 고등학교 시절 수학 문제 풀어보듯 손으로 풀어보는 것이 제일 기억에 잘 남는 방법이라고 생각한다. 그리고 본인이 9시간 근무를 마치고 퇴근한 후에 집에서 알고리즘 책을 펼 수 있는 초인적인 의지의 소유자가 아니라면, 꼭 스터디 그룹을 만들자.

6년차 개발자 해외취업 도전기 – 4. 코딩 인터뷰 준비”에 대한 1개의 생각

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.