이직 시도 후기 - 2017년 하반기
이 포스트는 개인적으로 이직을 준비하는 과정에서 느낀 점들을 정리한 글입니다. 차후 발생 가능한 문제를 막기 위해, 채용 프로세스나 면접 질문을 언급하는 과정에서 특정한 기업을 지칭하지 않습니다. 구직/구인 과정에서 참고로 봐 주시면 좋겠습니다.
배경
프로필에도 적어 놓았지만, 저는 아직 인턴 신분으로 일하고 있습니다. 저희 기관 특성 상 정규직 T/O가 나오기 어렵기 때문에, 이직을 결심하고 여러 군데에 서류를 제출하기 시작했습니다.
일단 지금까지의 프로필을 요약하면 다음과 같습니다.
- 복수전공으로 컴퓨터학부를 전공 (본 전공은 사범대에서 사회교육)
- 첫 직장은 임베디드 쪽 경력으로 시작 (리눅스 기반, C 언어 주로 사용)
- 현재는 공공기관 인턴으로 근무 (부서에서는 개발자 역할을 하고 있습니다)
- Python, Django 기반의 Toy project 개발 경험
- PyCon Korea 2017 발표자로 참석
그리고 주로 제가 지원한 곳은 스타트업이 많았습니다. 지원할 회사를 찾기 위해서 원티드와 로켓펀치를 이용했습니다. 일단 스타트업에 주로 지원한 이유는 다음과 같습니다.
- 대기업의 경우, 경력으로 지원할 만한 포지션이 없고, 신입으로 들어가기에는 나이가 많은 편이어서 불리할 것이라는 생각
- 1에 덧붙여, 지원하는 사람이 많아 여러 단계(적성검사, 어려운 코딩 테스트 등)를 거쳐야 하는데, 이를 준비하기에는 시간/노력이 부족했기 때문
- 자체적으로 서비스를 만드는 회사를 선호하였고, 그런 서비스를 개발하는 경험을 하고 싶었기 때문
참고로 주니어 포지션이 열려있는 경우 최대한 지원했습니다. 일단은 제가 시니어는 아니기 때문에… 기억을 더듬어보니 신입으로 뽑는 곳, 경력으로 뽑는 곳 상관 없이 지원했었군요.
특히 경력직에 대해서는 몇 년차의 경력을 구체적으로 요구하지 않거나, ~년의 경력에 필적하는 경험
을 조건으로 건 경우를 주로 골라 지원했습니다.
일반적인 프로세스
채용의 프로세스는 회사마다 달라 사실 일반화하기는 어렵습니다. 하지만 일반적으로 제가 겪은 대로 적어보자면, 보통 다음과 같은 프로세스를 겪었던 것 같습니다.
- 서류 제출
- 코딩 테스트 (있는 곳도 있고, 없는 곳도 있습니다.)
- 실무 면접
- 임원 면접
면접에서 물어볼만한 질문들
제가 실제로 들은 질문들을 정리해 봤습니다. 위에서도 말씀드렸지만, 차후에 발생할 수 있는 문제를 방지하기 위해 회사명을 언급하지는 않습니다. 각 질문에 대해 제 생각을 조금 덧붙여 보았습니다.
전 & 현 직장에서의 경험
- 전 직장에서는 어떤 것을 개발했는지?
전 직장에서는 네트워크 장비에 들어가는 소프트웨어를 개발했었습니다. 리눅스 기반의 시스템에, C 언어로 주로 개발을 했었습니다. 제가 지원한 포지션이 웹 개발에 치중되어 있어서, 이런 경력이 어떤 부분에 대해 장점이 될 수 있는지를 설명하는 것이 중요한 것 같습니다.
- 학습분석(learning analytics)에 대해 설명해 줬으면 좋겠다. (현 직장에서의 경력과 관련)
현 직장에서 하는 것은 학습분석과 관련된 표준 및 소스 코드 관리가 주 업무입니다. 학습분석이란, 교육과 관련된 시스템에서 학생의 행동 데이터를 수집하여 학생의 상태를 파악하고, 적절한 진단을 내릴 수 있도록 하려는 기술입니다. 이 과정에서 외국의 몇몇 단체와 협업하고, 미국 출장에서 Django와 시각화 라이브러리를 활용하여 간단한 예제 사이트를 만들었던 경험 등을 설명하였습니다.
- mongoDB 사용 경험에 대한 질문 (특정한 데이터를 저장하고 싶을 때, 어떤 구조로 저장하는 것이 나을까? 검색을 위해 성능을 개선하려면 어떻게 해야 할까?)
위의 학습분석 예제를 개발하면서 써 보았던 것이 mongoDB입니다. IMS Global의 학습 데이터 수집 표준인 Caliper Analytics에서는 JSON-LD 포맷의 학습 데이터를 생성합니다. 그리고 이러한 JSON-LD 데이터를 저장하기 위해 mongoDB를 사용하는 오픈소스 프로그램이 있습니다. (Apareo의 OpenLRW와 같은 프로젝트) 사실 mongoDB를 깊게 써 본 적이 없어서, RDB와 비교하는 부분이나 mongoDB의 장점과 같은 부분, 성능을 높이기 위해 어떤 구조로 데이터를 생성해야 하는 지에 대해서는 잘 설명하지 못하였습니다. 개인적으로 많은 데이터를 사용하며 성능 향상이 필요한 경우를 테스트 해 보아야 할 것 같습니다.
코딩 테스트 관련 질문들
- 시각화 구현에 특정 라이브러리를 사용한 이유는?
프론트엔드 쪽 포지션에 지원한 적이 있었는데, 대시보드 관련 문제를 받았습니다. 개인적으로는 Google의 Chart Library를 사용한 적이 있었는데, 이 참에 D3.js를 사용해 봐야겠다는 생각이 들어서 D3.js를 사용했었습니다. D3.js는 아시다시피 제가 그리고 싶은 요소들을 하나씩 만들어 주어야 합니다. 개발의 공수를 줄이기 위해서는 몇몇 종류의 차트가 이미 구현된 라이브러리를 사용하는 것도 검토해 볼 만한 문제였던 것 같습니다.
- 코딩 테스트에 제출한 내용에서 보완하고 싶은 것은?
두 군데 회사에서 코딩 테스트를 봤었습니다. 한 곳은 프론트엔드 쪽 포지션, 다른 한 곳은 백엔드 쪽 포지션이었습니다. 이 질문은 공통적으로 받았습니다. 테스트를 진행하면서 개인적으로 보완이 필요한 점을 이야기 했습니다. 그리고 이런 질문에 대답을 하시면 그러한 문제를 어떻게 해결할 지에 대한 질문이 들어올 것입니다. 문제 해결 방법을 보고자 함이니 보완해야 할 점과 이에 대한 해결 방법을 잘 정리하시는 게 좋을 것 같습니다.
- 데이터가 무제한으로 들어오는 경우(크기를 예상하기 힘든 경우) 어떻게 특정 데이터를 찾을 수 있을까?
이러한 질문이 들어오면 고민하기 마련입니다. 저 또한 적절한 대답을 하지 못했던 것 같습니다. 문제가 생길 때 어떤 식으로 해결을 하는 지를 보고 싶어하시는 것 같았습니다. 개인적으로 이런 문제에는 정답이 없다고 생각합니다. 일단 기본적으로 만들어 본 것들과 관련하여 많은 트래픽, 많은 데이터가 생성될 경우에 대해 고민을 해 봐야 할 것 같습니다.
Toy Project & PyCon 발표 관련 질문들 & 기타 등등
- 왜 웹 서비스를 개발했는지?
왜 웹 개발에 관심을 갖게 되었는지를 먼저 설명하고, 그 관심을 증명할 수 있는 사례를 제시했습니다. 저는 전 직장에서 전문가가 사용하는 장비보다는 일반 사용자가 사용하는 서비스를 만들어 보고 싶다는 답변을 하였고, 그 과정에서 웹 서비스 개발에 관심을 가지게 되었습니다. 그래서 Django를 접하고, 튜토리얼을 따라하고, 실제 서비스 개발을 해보는 등의 일을 하게 되었습니다.
- (케이블 영화 편성표 수집 관련) Redis를 왜 썼는지? 성능 이슈에 대해 고민해 본 적 있는지?
Celery를 활용한 비동기 작업을 수행하면서 메시지 브로커로 Redis를 사용하였습니다. 이 시스템이 Heroku에 올라와 있었는데, 튜토리얼에 Celery와 Redis를 사용하는 방법을 적어 놓아서 Redis를 사용해 보았습니다. 사실 생각해 보면 적절한 답변은 아니었던 것 같습니다. 기본적으로 외부 라이브러리나 솔루션을 사용하는 경우, 왜 사용하는 지, 어떤 장점이 있는지에 대해서는 좀 더 고민을 해 봐야겠습니다.
- 어떤 이유로 개인 프로젝트를 시작하게 되었는지?
케이블 영화 편성표 수집에 대해서는 PyCon 발표 때에도 이야기를 했지만, 공백 기간에 그냥 놀기에는 심심해서 였습니다. 그래서 집에서 TV를 보다가 케이블 영화 편성표 수집 서비스를 구상했고, 이를 개발했습니다. 음반 관리 서비스는 제가 갖고 있는 100장이 넘는 음반을 관리하기 위해 개발을 했습니다. 개인적인 필요와, 개발에 대한 관심 때문에 이들 프로젝트를 개발하게 되었다는 이야기를 했습니다.
마무리
이직 성공기
도 아니고 실패기
도 아니고 시도 후기
인 이유는, 사실 최종 합격한 곳이 있었기 때문입니다. 개인 사정으로 못 가게 되었고, 당분간은 대구에 있게 될 것 같습니다. 그리고 다른 질문이 생각나면, 계속해서 이 글을 업데이트 하게 될 것 같기도 합니다.
개인적으로 면접과 관련해서 덧붙이고 싶은 이야기는…
- 면접 당일까지의 컨디션은 좋게 유지하시는 게 좋습니다. 모 회사 면접을 갔을 때, 전날에 잠을 충분히 못 자서 결국 아무말 대잔치만 하고 왔습니다. 당연히 기술 면접에서 탈락했습니다.
- 기술 면접에서 신변잡기적인 질문이 들어오면, 그 회사는 여러분을 뽑을 생각이 없다고 생각하셔도 될 것 같습니다.
- 면접 분위기와 합격의 상관관계는, 그냥 운에 맡기시는 게 좋을 것 같습니다. 면접이 망했다고 생각했는데 합격한 적도 있었고, 그 반대의 경우도 있었습니다.
그리고 여러 곳에서 면접을 보면서 느꼈던 점은…
- 개발 분야를 바꾸는 경우, 신입으로 지원하는 것이 좀 더 가능성이 있는 것 같습니다. (하지만 지원하려는 분야에 대한 준비는 필요합니다.)
- 신입 채용에 대해서는 개발에 대한 관심과 빠른 습득 능력이 있는지를 본다는 느낌을 받았습니다.
- 경력직 채용에 대해서는 트래픽이나 데이터 증가에 대응하는 방식, 그리고 유사 경력이 있는지를 물어보는 경향이 있는 것 같습니다.
- 공통적으로 특정한 문제가 주어졌을 때, 어떻게 해결을 하려고 하는 지를 물어봅니다.
- 질문 받았던 것에 대해 복기하는 습관을 가져야 되겠습니다. 예를 들어 mongoDB, Redis에 대해서는 깊게 생각을 해 본 적이 없었어요. 제가 사용해 본 것의 장단점이나, 어떤 용도로 쓸 수 있는지에 대해서는 좀 더 공부가 필요해 보입니다.
- 앞으로 무엇을 하고 싶은가에 대해 좀 더 고민이 필요했던 것 같습니다. 막연히
웹을 해야지
라고 생각하고 말기에는 웹 개발에도 여러 분야가 있기 때문이죠. 백엔드를 할 지, 프론트엔드를 할 지, 아니면 풀 스택으로 이것저것 다 할 것인지 등등… 제가 어떤 것에 관심이 많고, 그 관심을 어떻게 풀어내고 있는지를 정리할 필요가 있음을 깨달았습니다.
그래서 이 글이 이 블로그의 첫 글이 되었습니다.