어느덧 연차로 벌써 8년 차 개발자.
부득이하게 시장 악화로 인해 권고사직과 함께 갑작스럽게 이직 준비를 하게 되었다. (긴 글 주의)
면접 후기에 앞서..
먼저, 간략하게 현재 나의 상태를 이야기하자면, 재직 중인 상태의 회사로부터 한 달이라는 위로의 시간을 제공받아 공식 퇴사일은 직장의 일을 멈춘 후 연차 포함 약 5주 뒤 퇴사일로 정해졌고, 5주의 시간 동안 다음 이직을 위해 준비를 할 수 있게 되었다.
나의 계획은 대략 3주의 공부 시간과 개발 시간을 갖고, 4주 차 때부터 가고 싶은 회사를 나열한 후 본격적으로 또는 전투적으로 지원을 할 예정이었다. 그동안 일하면서 점점 잊혀갔던 기본적인 개발과 관련된 CS(Computer Science)의 기본 지식을 정리하고 경험을 토대로 아쉬운 부분들을 정리하며 더 깊이 있는 지식으로 아쉬움에 대한 원인과 더 나은 개발의 역량을 키우고 싶었다.
물론, 내가 전투적으로 지원을 시작하기 전 이력서 수정 후 취업과 관련된 대부분의 플랫폼에는 구직상태로 변경해 놓았고, 제안이 오는 곳에 대해서 회사에 대한 정보를 충분히 수집하고 관심이 있다면 제안을 수락하는 정도로 약 3주가 지났다. 지금까지 한 15~20 제안 (약 3~4군데는 채용팀에서, 나머지 중 절반은 헤드헌터, 나머지 절반은 AI 추천으로 검색되어 제안해 온 채용 제안) 왔었다.
서류합격?
그런데 이게 웬걸? 말해보카로 유명한 이팝소프트로 지원할 수 있는 제안이 들어왔고, 블라인드 하이어를 통해 서류를 넣게 되었다. 최초 제안 포지션은 풀스택 개발자로 제안이 왔고, NodeJs를 주로 사용한다는 내용이 담겨있었다. NodeJs? 로 풀스택? 뭐 어떻게 만들어지는 앱인 걸까..
궁금해서 자료를 찾아보게 되었고, 우선 게임 회사 출신의 개발자(크레이지 아케이드, 카트라이더, 메이플스토리, 피파온라인3 등을 개발하였던 게임 개발자 4명이 공동창업을 한 회사이며 Cocos Creator라는 Cocos2d-x 엔진을 기반으로 만들어진 자바스크립트 또는 타입스크립트 언어를 사용하여 2D 및 3D 게임 개발이 가능한 무료 게임엔진으로 개발이 되고 있었다.
어라랏? 서류 합격까지 되어버렸고, 면접은 6월 19일 오후 2시 30분으로 정해졌다. 지금까지의 나의 커리어 상태를 보면 모든 회사에서 풀스택이라고 말 할 수는 없지만, 항상 프론트와 백엔드를 동시에 개발하는 업무를 맡아서 진행해 온 커리어들로 가득했었다. 그렇기에 각각 하나의 영역에서 지식이 얕다는 것을 내 자신도 너무 잘 알고 있었고, 게임 개발은 경험은 커녕 cocos creator를 처음 들어본 입장에서는 서류 합격 사실이 이해되지 않았다.
서류 탈락이 당연하다고 생각했음에도 불구하고 제안을 수락한 이유
얼마 전, 친구로부터 우리 시기가 커리어 패스를 명확하게 정해야 하는 시기인 것 같다며, 10년 뒤 내가 어떤 사람이 되어 있어야 하는 것인지에 대한 목표를 뚜렷하게 가지면 좋을 것 같다는 말에 심장을 찌르는 듯한 큰 깨달음을 얻게 되었다. 앞으로 마주하게 될 선택들에 대해서 좀 더 현명한 판단을 할 수 있을 것 같았다.
진지하게 고민해 보니 나는 어떤 개발자가 되고 싶은지 생각을 해본 적이 없던 나 자신을 발견했다. 나의 꿈은 무엇이 되었든 어떤 것(?)을 통해 사람들에게 1초라도 영향력이 있고 가치 있는 삶을 제공해 줄 수 있는 어떤 것을 만들고자 했던 사람이었고, 지금도 여전히 같다. 그렇다 보니 OOO 개발자가 최종 목표가 아니라 어느 회사에서든 OOO 서비스를 사람들에게 제공하기 위해 어떤 포지션이든 완성하기 위한 과정 중 하나의 포지션을 맡으면 되는 사람이었다. 개발자가 된 이유는 결국 만듦으로 끝맺어지는 포지션이 개발자라고 막연한 생각에서 시작했던 것 같다.
그렇다 보니 그동안 웹 개발, API 개발, 인프라 구성, 팀 리드, React Native 모바일 개발, 자바 개발, 자바 모듈 개발, 자동화 개발 등 회사마다 사용하는 기술 스택이 일관성이 없었고, 어떤 포지션이 되었든 힘들어하는 동료가 있으면 도움을 주고 싶어서 또는 어떤 부분이 힘든지가 궁금해서 함께 배우면서 해결하는 그런 존재였다. 그렇다 보니 백엔드 개발자로 들어가서도 프론트 개발자와 웹 개발을 하고 있었고, 모듈 유지 보수로 일하면서도 DBA와 쿼리튜닝을 하고 있었고..
무엇보다 풀스택 개발자 포지션으로 제안이 왔을 때 '풀스택'이라는 단어가 너무 설렜고, 처음 보는 기술 스택임에도 말해보카가 사람들에게 주는 영어 공부의 배움의 가치를 생각하면 갑자기 너무 설레고 행복한 기분이 들어서 일단 무작정 제안을 수락했었다. 물론 운 좋게 합격하여 실제 프로덕트의 퀄리티까지 끌어 올리려면 최소한 6개월에서 1년은 미친 듯이 개발에만 올인해야 할 각오는 가지고 수락하였다. 지금까지 입사한 모든 회사에서도 그랬듯이.
그동안 회사에 입사하면 개발 이외의 모든 부서의 일들에 관심을 두고 항상 팔로업을 하다보니 타 부서 간 커뮤니케이션에 대해서 크게 어렵지 않은 것은 나에게는 당연한 일이었다. 하지만, 신기하게도 이러한 커뮤니케이션 능력이 개발자 직업에서 큰 장점이고 적응을 너무 잘한다는 칭찬의 말을 자주 들었다. 그래서 서류에 합격한 것일까..
진짜 말해보카 면접 후기
드디어 면접 일정 당일이 되었다. 사실, 면접 전날 나의 역량을 스스로 체크해보기 위해 cocos creator 튜토리얼을 통해 하나의 간단한 게임 개발을 마무리 지었다. 튜토리얼을 따라 하는 과정에서 이미 3년 지난 튜토리얼이었기에 제공하는 자료도 없었고 현재 버전과 UI도 달라서 어쩔 수 없이 응용해야만 공식적으로 제공하는 튜토리얼을 완성할 수 있었다.
사실 cocos creator를 하루 만에 내가 얼마나 적응하고 개발할 수 있는가에 대한 역량을 보여주는 것이 전략적으로 더 효과가 좋을 것이라는 판단이 들어 CS(Computer Science)의 면접 질문 준비는 포기하고 개발에 올인을 하였다. 그리고 당일 면접 시간 3시간 전부터 회사 근처 카페에 가서 아주 조금이나마 이론적인 면접 질문들을 검색하여 한 번 훑어보는 정도로 준비는 마무리하였다.
10분 전 일찍 도착하여 정각 30분에 CTO님이 들어오실 예정이라는 직원분의 안내를 받고 회의실 자리에 앉아 있었다. 그리고 나의 노트북을 책상 위에 먼저 꺼내놓고 핸드폰 노선을 통해 한 번 더 면접 준비를 위해 정리해 둔 글들을 훑었다.
그렇게 30분 정각이 되니 정말 칼같이 CTO분이 들어오셨다. 4명이 창업한 회사였으나, 정보를 찾아봤을 때는 2명 CEO, 1명 CTO 정보가 있었고, 나는 아이스 브레이킹 기술을 먼저 시전하기 위해 "OOO CTO"님 맞으시죠? 라는 말을 던졌다.
"네? 저는 ㅁㅁㅁ 인데요?"라는 말에 '아.. 벌써부터 망했다..'라는 생각과 함께 앗차차.. "사실 링크드인을 통해 말해보카를 검색해 보니 OOO CTO님이 검색 되셔서 같은 분인 줄 알았습니다. 하핳..."
"아~ 그분은 CPO로 이동하셨고 제가 현재 CTO를 맡고 있습니다."라는 이야기와 함께 본격적으로 면접에 돌입했다. 먼저 자기소개 부탁드린다는 말을 먼저 하셨고, 나는 8년 차 백엔드 개발자이며, ~~이러한 능력을 장점으로 가지고 있는 개발자라고 소개했다. 이미 자기소개에서 너무 주저리주저리 많은 말을 해버린 것 같았다.. 읔.. (요즘 왜케 말이 많아지는 걸까)
그리고선 나의 복사된 이력서를 한 장 한 장 넘기시면서 각 회사에 대한 프로젝트의 설명을 물어보셨다. 그중에서도 현재 재직 중이었던 회사에서 기여한 하나의 경험을 자세하게 설명해달라고 하셨다. (최적화로 인해 서비스의 속도가 빨라진 부분….) 그래서 조금 당황을 하긴 했다. 뭔가 화려하게 기술적인 최적화라기보단 막상 머릿속에 떠오르는 결과물 대비 DB 구조 변경과 인덱스를 잡아주며 일관되지 못한 데이터를 수정한 것. 요약하면 이게 전부였던 것 같다.
하지만 막상 말하려니 거창하게 작성한 성과치고는 성과까지 도달하기 위한 과정이 좀 더 힘들고 복잡했지, (회사 분위기와 문화 그리고 API 정리와 분석 및 프런트와의 협력 등의 조율) 막상 기술적인 내용으로 요약하려니 그다지 할 말이 없었던 것 같았다. 그래서 또 주저리주저리 말하며 DB 설계 부분에 있어서 이러한 형태에서 이러한 형태로 변경하였고, 당시 상황은 어떠하였고 그런 부분들을 해결하였다는 내용이 추가로 붙으며 명확하게 질문하신 요점에서 자꾸 벗어난 대답을 하는 내 자신을 느끼며 다시 원래대로 요점으로 돌아가려는 노력을 중간중간 하기도 했다.
그랬더니, "혹시 이해가 잘 안 되는데, 여기(A4 용지)에 테이블을 그려서 설명해 줄 수 있냐"고 말씀하셔서, A4용지에 테이블을 그리며 설명을 이어 나갔다. 또 막상 이야기하다 보니 기능 추가로 변경된 상태의 후 테이블 상태를 그리며 방금 했던 말과 조금 다른 상태의 최적화한 내용으로 변질되며 테이블을 그리는 내 자신을 또 한 번 포착하게 되었고, 그러한 상황 하나하나가 나 자신을 더욱 긴장하게 했고 더 주저리주저리 말하게 되며 설명한 것 같다.
그렇게 길~게 주저리주저리 말하고 돌아오는 답변은 "그러니까 결국 잘못되어 있던 설계 구조를 테이블 하나 만들어서 변경한 것이네요?"라는 간략한 질문에 나는 "어.. 넵.. 그게 맞는 것 같습니다. 그리고.. 인덱스 잡은.. "로 말하며 또다시 망했다고 생각하게 되었던 것 같다….
그리고 난 후 기술적인 질문이 하나 훅 들어왔는데, "그러면 혹시 primary key가 한 개인 이유를 알 수 있을까요? secondary Index와 primary key Index와 차이점?"에 관해 물어보셨고, 순간 멍해졌다. 그저 당연하게 프라이머리키는 id이고, 하나의 테이블에서 프라이머리 키가 두 개를 잡는다는 것은 불가능하다는 것이 당연하기에 순간 머리는 하얗게 백지상태가 되었다. 비유를 하자면 사람이 숨 쉬면서 살죠? 근데 왜 숨셔야 살까요?라는 질문에 답변해달라는 느낌이었다. 그냥 숨셔야 살 수 있는 생명체가 사람이라는 생각이 떠오르듯 나는 그저 프라이머리키는 하나여야 하는 데이터베이스라는 것 밖에 생각이 나지 않았다.
그러면서 또 주저리주저리 이야기를 시작했는데, secondary Index가 필요한 이유에 관해 설명했다. (질문에 대한 요지와 벗어난 대답을 하기 시작했다) 이것 또한 역시 엇? 이 답변은 질문과 맞지 않는데…. 라는 게 말하면서도 느껴졌고 이젠 아예 "아참 질문이 무엇이었죠?"라고 되묻는 사태까지 발생하였다. (정말 최악의 면접 경험이 되었던 것 같다….)
이후 어찌어찌 마무리 지었고, 돌아온 답변은 "너무 당연하고 단순해서 답변을 잘 못하시는 건지…. 진짜 단순한 이유가 있는데…. 그럼 모르시는 걸로 할게요…?" 라고 말씀하셨고, 나는 "네…. 모르는 것으로 결정하겠습니다…."라고 말하며 "혹시 질문에 대한 답변을 들어 볼 수 있을까요?"라고 내가 추가 질문을 던졌다. 그렇게 명확하고 간략하게 딱 답변을 말씀해 주셨고, "혹시 아는 개념이셨나요? 라는 질문에 나는 아…. 그렇죠. 그렇죠.. 라는 리액션과 함께 그 질문은 마무리가 되었다.
그리고 최종적으로 지금까지의 경력 중 가장 어려웠던 기술 경험과 자세한 설명을 해달라고 말씀하셔서, 또 한 번 멘붕 상태에 빠졌다. (아…. 모든 회사가 다 정말 너무 힘들었는데) 그렇게 골랐던 회사가 그나마 XR 콘텐츠(유니티 프로젝트)를 RN(React Native) 위에 올려 구동하는 프로젝트를 설명하였고, 그 과정들을 또 주저리주저리 설명했다.
말하고 나니 기술적인 내용보다 힘든 상황과 과정에 대한 내용이 대부분이었고, 역시 기술과 관련된 내용은 잘 말하지 못했다. (지금 생각해 보면 모든 개발이 처음 겪으면 안 힘든 것이 어디있나…. 결제도, 인증도, 로그인도, 복잡한 서비스 로직도, 좀 특별한 인터렉션 css 구현부터, 결제 시스템과 서비스의 연결…. 하나같이 다 어려웠었고, 이미 지나간 내용은 이젠 다 혼자서 할 수 있는 것들인데, 특히나 어려웠던 기술? 그런 건 순간 머릿속에 존재하지 않았다.)
아무튼 1시간 30분이라는 대장정의 면접 끝에 나의 질문 차례에서 내가 만든 게임을 잠시 보여드렸고, 개발자 구성원과 프로덕트 배포 프로세스에 대해 질문을 하고 마무리를 하였다. (주저리 하느라 시간이 후딱 가버려서 1시간 30분 다 되었는데…. 라는 CTO님의 행동이 더욱 위축되게 되었다….)
개발자는 웹 개발자 1명, 풀스택 개발자 5명으로 이루어졌고, 별도의 프로세스는 존재하지 않는다고 하였다. 신기.. 하면서 너무 재미있겠군.. 하면서도 붙어도 문제네.. (도움 못 될까봐..)라고 생각함..
그렇게 하루 만에 면접은 탈락 통보를 받았고, 이러한 경험을 기록하고자 상세하게 글로 남겨본다. (이 글 역시 상세한 경험담이라기보단 주저리주저리 인 것인 걸까..)
이번 면접에서 깨달은 점
면접관으로 참여한 경험이 많아, 나 역시 특별하게 기억에 남는 프로젝트에 대한 설명을 면접자에게 단골 질문으로 요구했었던 기억이 난다. 과연 나는 그러한 질문을 던질 자격이 있는 사람이었을까…. 반성하게 된다. 그리고 나는 리드라는 자격을 가질 수 있는 사람인가? 에 대해서도 명확하게 '아니요.'라고 답변을 하고 싶게 되었다.
그리고 나의 과거 수많은 경험에 대해서 명확하게 요약할 수 있는 한 줄이 없다는 것에 좀 충격이었다. 나는 그동안 뭘 해왔던 것이었을까. 스스로에게 질문을 던졌을 때 지금 이 순간도 정리된 대답을 못 할 것 같다. 물론 이제 이직 준비의 첫 면접이었고, 어렵지 않았던 질문들조차 제대로 답변 하지 못했던 나 자신을 보고 과연 나의 장점을 커뮤니케이션이라고 말을 할 수 있는가에 대해서 의문이 들었고, 나의 가치관과 중요하게 생각하는 부분이 무엇이 되었던, 나는 개발자의 포지션으로 임무를 수행해야 하는 사람으로서, '개발자'로서의 성과를 말할 수 있는 정리된 것들이 필요하다는 것을 크게 깨달았다.
그 어떤 것을 콕 집어 물어봐도 그에 대한 문제와 해결한 기술적인 초점으로 언제든 간결하게 말할 수 있도록 준비하는 것이 필요하고, 내가 겪은 프로젝트와 사용했던 기술들을 조합하여 간략하게 정리하여 만들어 놓고 그 어떤 프로젝트 내용이나 기술적 질문을 하여도 그렇게 만들어 놓은 것들을 스스로 응용하여 조합하며 간략하게 정리하여 말할 수 있는 능력을 먼저 만들어야겠다고 다짐했다.