수강생 · 튜터 고경민 님 인터뷰
남부럽지 않은 회사에 취업한 후에도 도약을 멈추지 않고 끊임없는 성장에 도전하는 분이 계십니다! 이번 가을 아마존 개발자로 가게 되신 고경민 님입니다.
고경민 님은 2017년 엘리스 인공지능 교육 과정을 수료하시고, 알고리즘, 데이터 구조 수업을 수강하신 엘리스 수강생입니다. 경민님이 수강생으로서 보여주신 돋보이는 성실성과 끈기는 엘리스 조교, 라이브 코딩 선생님 활동으로 이어지기도 했는데요.
과연 경민님의 끊임없는 도약의 비결은 무엇일까요? 엘리스와도 깊은 인연이 있다고 하는 아마존 취업의 비결을 직접 여쭤보았습니다!
Q. 자기소개 부탁드려요!
안녕하세요. 저는 O회사 통합검색팀에서 서버 개발을 담당하고 있는 고경민이라고 합니다.
Q. 경민님은 어떤 성향의 개발자이신가요?
타짜 영화를 보면 김혜수가 패를 잡으면 마음이 편해진다고 하잖아요. 저는 코드를 잡으면 마음이 편해져요. 그렇다고 해서 아무 분야나 다 개발하는 걸 좋아한다기보다는, 특정 뭔가에 꽂혀서 일단 하고 싶다는 생각이 들면 그걸 어떻게든 해내야 되는 성향인 것 같아요.
Q. 2년 새에 회사를 세 군데나 다니고 계시네요. 그 이유는 무엇인가요?
원래는 박사 과정을 하고 있었는데 대학원을 다니다 보니 코드를 만질 기회가 점점 줄어드는 것 같은 기분이었어요. 무엇보다도 학위 과정을 한다는 건 한 가지를 끝까지 가져가야 하는 건데 저는 상황에 따라 이것저것 다 개발하고 싶었거든요. 그래서 취직을 하게 되었고요.
첫 회사를 다닐 때 엘리스 데이터 사이언스 과정에 참가하게 되었는데요. 새로운 것을 배우다 보니 '아 내가 이것보다는 더 많은 걸 개발할 수 있겠구나', 라는 확신이 들더라고요. 당시에 가장 가고 싶었던, 지금 다니고 있는 회사에 지원을 하게 되었죠. 그 후에는 제가 만든 서비스가 한국을 넘어서 보다 많은 곳에서 사용되었으면 좋겠다는 생각을 했어요. 글로벌 사용자들에게 서비스를 제공하는 큰 회사로 가야겠다는 생각을 하게 되었죠.
Q. 바라시던 대로 아마존으로 가게 되셨는데요. 해외취업 준비를 어떻게 하셨나요?
일단 주로 이력관리를 링크드인을 통해서 했어요. 이력서를 적다 보면 내게 필요한 게 뭔지를 역으로 알게 돼요. 어떤 경험이 부족한지도 보이고, 내가 가진 어떤 이력을 강조하고 싶은데 그러려면 뭘 더 할 수 있을지에 대한 고민도 하게 되고요. 첫 번째로 영어가 부족하니 영어도 준비를 해야 했고요. 또 아마존 같은 큰 기업들이 대체로 알고리즘 질문을 많이 한다고 알고 있었어요. 그런데 당시에는 알고리즘 문제를 풀 수준이 안되었기 때문에 이런 부분도 부족하구나, 를 깨달으면서 거기에서부터 준비를 시작했어요.
Q. 면접 준비 과정과, 면접 경험에 대해 공유해주세요.
처음 이직을 했던 회사는 부서마다 면접 방식이 달라서 찾아보는데 한계가 있었어요. 이 상황에서는 제가 작성한 이력서나 자기소개서에서 많은 부분을 질문을 할 거라고 생각을 했고요. 그래서 전체적인 면접의 흐름을 내가 잡아야 된다는 생각으로 면접 준비를 했어요. 누가 어떤 질문을 할까를 고민하는 방식으로 접근하면 준비할 수가 없겠더라고요. 그래서 제가 어떤 개발자인지 스토리를 구성하면서 면접 준비를 했어요. 그러다 보니 면접관과도 더 많이 이야기를 나누게 되었고요.
아마존은 면접 방식이 정해져 있고 아마존 리쿠르터를 통해서 면접을 보기 위한 준비 자료를 2주~3주 전에 받을 수 있기 때문에 집중해서 준비할 수가 있었어요. 실제 현장 면접은 총 4시간에 걸쳐서 진행되고 한 방에 한 명 혹은 두 명 정도가 번갈아가면서 면접을 봐요. 30분 정도는 Behavioral Question이라는 걸 하는데요. 예를 들면 살면서 실패했던 경험이 뭐고, 이를 어떻게 극복했는지 일목요연하게 설명을 해야 해요. 이때 사용해야 하는 방법도 정해져 있는데, Star Method라고 해서 Situation, Task, Action, Result, 이렇게 4단계의 포맷에 맞추어 답변을 해야 하죠.
Q. 언어의 문제는 어떻게 해결하셨나요?
예전부터 외국에 나가고 싶은 생각이 있었기 때문에 전화 영어를 했었어요. 그런데 전화 영어로는 일상회화 이상의 실력을 갖추긴 어려울 것 같더라고요. 아예 유학을 갈 생각으로 토플을 준비했는데 토플은 너무 어려웠어요. 그래서 내가 개발자로서 빨리 시도해볼 수 있는 게 뭘까 고민했어요. 개발 프리랜서로 일할 수 있는 외국 사이트가 있더라고요. 경력 있는 개발자들이 외국 기업과 컨택해서 소통하면서 일을 하는데요. 저는 경력이 없었지만 계속 연락을 많이 했더니 인터뷰 기회를 2~3번 정도 얻을 수 있었어요. 인터뷰를 계기 삼아 화상 강의로 회화를 준비하고, 표현도 바로 잡았어요. 한 번은 외국 학회에 갔는데 외국인들과 대화를 많이 해보면 영어가 급격히 늘 것 같아서 마구 말을 걸기도 했고요. 말이 되든 안 되는 계속 말을 하려고 했어요.
아마존 면접을 1~2주 앞둔 때는 영어로 빨리 말할 수 없다는 게 스트레스가 되더라고요. 내가 준비하고 있는 질문만이라도 말을 잘해야겠다는 생각을 했어요. 스크립트를 쓰지 않고 메모지에 키워드만 적고서 그 단어들로 계속 문장을 만들고 반복해서 말하는 연습을 했어요. 점점 말이 빨라지더라고요.
Q. 계속해서 도전할 수 있는 동력은 무엇인가요?
주변에 잘하는 친구들이 있으니 저도 자극을 받는 것 같아요. 그 친구들을 뛰어넘고 싶다기보다는 나도 저 친구들과 동등한 입장이 되고 싶다는 생각이 컸던 것 같고요. '나는 왜 못하지?' 이런 마음이 '나도 하면 할 수 있는 거 아냐?' 이렇게 이어지더라고요. 그럼 나도 해야겠다, 이런 생각으로 계속 열심히 할 수 있었던 것 같아요.
Q. 아마존에 어필할 수 있었던 포인트는 무엇인가요?
이 사람과 면접을 봐야겠다고 생각을 하려면 이력서가 화려해야 하잖아요. 제 CV를 보면 쓸 수 있는 언어가 많아요. 자바, C, C++, 스칼라, GO, 파이썬, HTML, JavaScript, CSS... 언어를 다양하게 공부하고 있거든요. 그리고 대단한 프로젝트가 아니더라도 다양한 분야를 경험해 본 것이 어필되었을 것 같아요. 백엔드도 하고 프런트엔드도, 데이터 사이언스도 했고요. 조금조금씩 건드려본 게 많아서 궁금했을 거라는 생각이 들어요. 이 사람 잡다한 것을 많이 했네? 허풍인지 아닌지 확인하고 싶단 마음이 들었을 것 같아요.
Q. 언어를 많이 아는 게 중요한가요?
그렇지는 않아요. 면접 볼 때는 알고리즘과 자료구조를 집중적으로 물어보거든요. 언어를 많이 쓸 줄 아는 것보다는 어떤 언어로든 코드를 잘 짜는 것이 중요해요.
그런데 저는 어떤 언어의 표현들이 다른 언어에서는 다르게 나타나는 게 신기하고 재미있더라고요. 그래서 새로운 언어가 있으면 계속 써보고 싶어서 일부러 다양한 언어를 접하려고 했어요.
Q. 많은 언어나 기술을 쉽게 습득할 수 있는 방법이 있나요?
어떤 프로젝트를 하느냐가 중요해요. 다양한 기술의 조합이 필요한 프로젝트인지 생각해봐요. 만약 그렇다고 하면 그 프로젝트를 하기 위해서는 언어 공부를 해야 하니까요. 빨리 언어를 터득하기 위해서 제가 사용한 방법은 홈페이지에 접속해서 예제를 찾아서 그 언어에 익숙해질 때까지 예제를 반복해서 치는 거예요. 어느 순간 한 번 만들어보면 감이 올 것 같은 시점이 와요. 그러면 한 모듈을 정해서 그 언어로 다시 작성해보고, 다른 사람은 어떻게 짰는지 인터넷에 찾아보고요. 이렇게 프로젝트에서 실제로 사용하는 형태로 언어와 기술을 배웠어요.
Q. 다양한 시도를 하면서 실패의 경험도 있었을 것 같아요. 어떻게 극복하셨나요?
영어로 조금만 대화가 길어지면 잘 되지 않으니까 못하겠다는 생각이 들고 실망을 많이 했어요. 알고리즘 준비를 할 때도 조금만 문제가 어려워지면 못 풀게 되니까 스트레스를 많이 받았고요. 이런 상황들이 반복이 되었는데요. '그래도 어떻게 하다 보면 되겠지. 아직 얼마 오지도 않았는데. 남들보다 오래 걸릴 수도 있겠지', 혹은 '어떤 건 내가 잘하니까 그걸 했을 때처럼 시간을 투자하면 되지 않을까?' 이런 식으로 생각하면서 극복하려고 했던 것 같아요.
그래도 어떤 건 쉽게 포기를 하게 되는 것들이 있었는데요. 그러다 보니 하고자 하는 것에 대해서는 오히려 좀 더 확실한 동기를 찾게 되었어요. 왜 해야 하는지 명분을 찾으려고 계속 노력했던 것 같아요.
좌절은 할 수밖에 없어요. 내게 목표가 있는데 지금 그게 아닌 건 맞잖아요. 계속 그런 상황이 반복이 되죠. 이거 꼭 하고 싶다, 이걸 안 하면 스스로에게 되게 실망할 것 같아. 이렇게 생각하면서 계속 도전했던 것 같아요.
Q. 엘리스 데이터 사이언스 교육을 통해 배운 내용이 실무에 도움이 되었나요?
여러 가지가 있을 것 같아요. 예를 들어 추천 서비스를 만든다고 했을 때, 가장 먼저 무엇을 추천해줄지 분석이 필요해요. 그리고 분석을 하기 위해서는 먼저 분류 작업을 해야 하고요. 엘리스에서 배운 베이지안 네트워크만 잘 구현해도 정확도가 꽤 괜찮게 나왔어요. 그럼 그걸 기반으로 유추하고 기준점을 잡아 더 고도화된 작업을 할 수가 있고요. 베이지안 네트워크, SVM, K-means 클러스터링, 협업 필터링 등 분석 기법을 이용해서 데이터를 분석하고, 시각화하기 위해 배웠던 지식들이 전부 다 활용된다고 볼 수 있어요.
전체적인 커리큘럼을 통해서 기초적인 확률 이론에서부터 현재 많이 쓰이고 있는, 혹은 꼭 알아야 될 만한 기법들을 배울 수 있었던 것 같아요.
Q. 집중하거나 공부해야 할 때 본인만의 루틴이 있다면요?
아마존 코딩 인터뷰를 준비할 때 생활했던 방식이 있어요. '오늘은 3문제 정도 풀고 자야지, 난이도 몇 짜리의 문제를 풀고 자야지', 이런 식으로 목표를 정했어요. 퇴근하고 집에 오면 8~9시 정도 되는데 간단하게 저녁 먹고 바로 책상에 앉아서 문제를 막 푸는 거예요. 문제가 풀리면 그냥 넘어가는 게 아니라 코드가 지저분하면 한차례 정리를 하고, 어떻게 하면 더 잘 풀 수 있을까, 사용한 방법이 괜찮은 방법인지 계속 고민을 해봐요. 그러면 세네 시간이 훌쩍 가거든요. 문제가 잘 풀리지 않으면 새벽 두세 시까지 했던 적도 있고요. 대체로 이렇게 일상을 보냈던 것 같아요.
Q. 개발의 매력이 무엇인가요?
정답이 없다는 것이요. 어떤 라이브러리를 아주 많은 사람들이 쓰고 있다고 하더라도 내 프로젝트에는 정답이 아닐 수도 있거든요. 코드가 다 공개되어 있기 때문에 자기에게 맞는 방식으로 새로 만들어볼 수가 있어요. 그러면 내 프로젝트에서는 내가 만든 게 더 좋은 코드가 되는 거예요. 이럴 때 성취감도 느낄 수가 있고요.
정답이 있어서 빨리 끝내면 좋겠고, 그래서 정답이 없는 게 싫을 수도 있지만 한창 개발을 배우는 입장에서는 이게 축복이라고 생각을 해요. 정답이 없기 때문에 그만큼 내가 기여할 수 있는 부분도 얼마든지 있다는 것이니까요. 그런 점에서 개발의 매력포인트는 '정답은 없다'라고 생각해요.
Q. 코딩 학습자들을 위한 꿀팁이 있다면요?
제가 원래 대학교 때 방황을 많이 했거든요. 코딩을 좋아하긴 하는데 다른걸 왜 공부해야 하지? 이런 생각이 컸어요. 그때 나폴레옹 평전을 읽었는데요, 나폴레옹이 10대에 친구들에게 왕따를 당하면서 불우하게 보내는 동안에도 수학, 정치, 군사 가릴 것 없이 공부를 다 했대요. 아주 사소한 일도 언젠가 자신에게 도움이 될 것이라는 마음으로 다 받아들였다는 내용이 있었어요. 그걸 읽고 나니 '내가 너무 가려서 하려고 했네', 라는 자각이 들더라고요. 상황이 잘 풀리지 않는 것 같아도, 중간에 포기하고 돌아오더라도 결국 내가 간만큼은 내게 남거든요. 지금 배우는 것들이 잘 와 닿지 않고 어렵더라도 끝까지 해보면 좋겠다고 생각해요.
Q. 경민님에게 엘리스란?
엘리스를 통해서 이것저것 경험하면서 세상은 넓구나, 라는 걸 알게 되었어요. 그래서 제게는 경험할 수 있는 게 되게 많은 놀이터인 것 같아요. 놀이터에 가면 그네, 시소, 미끄럼틀 놀 수 있는 게 많잖아요. 엘리스에서도 데이터 사이언스, 알고리즘이나 자료구조를 공부할 수 있는 기회가 있었고요. 또 열심히 하다 보니 조교도 하게 되었고요. 조교로서 학생들에게 설명을 해주려면 다시 공부를 해야 하기도 했어요. 엘리스에서 만들어 놓은 자료들이 중요한 내용들이라서 현업에서 일할 때도 확인하기 위해 다시 플랫폼을 찾기도 했거든요. 저한테는 이런 경험들이 모여서 놀이터라는 생각이 들어요.