본인 소개
올해로 서른, 3년 차 풀 스택 개발자다. 웹 프론트 개발자로 첫 직장에 들어갔지만 백 엔드 개발만 해온, 좋은 말로 풀 스택 개발자고 나쁜 말로 무근본 개발자다.
고등학교는 문과, 대학은 정보보호학과를 졸업했는데 대학 1학년 때부터 개발에 흥미를 발견해서 개발자의 길로 들어왔고, 연봉이나 취업률과 무관하게 오로지 개발이 좋아서 개발자를 하고 있다. 컴퓨터 한 대만 있으면 하고 싶은 일을 다 할 수 있다는 게 개발자가 가지는 가장 큰 장점이라고 생각한다.
이직을 하기 전에는 직원 수 10명 안팎의 스타트업에 다녔었고, 주로 Go를 이용해 서버 개발을 해왔다. 개발뿐 아니라 고객사까지 찾아가서 인프라 세팅, 솔루션 설치, 모니터링 등 발로 뛰는 일도 맡았었다.
이직을 하게 된 이유는 동료와의 불화, 낮은 연봉, 밝지 않아 보이는 회사의 미래 등 여러 이유가 있었지만, 여기서는 더 이상 내가 성장할 수 없을 거라는 위기감을 느낀 게 가장 큰 이유였다.
이직은 어디로?
나처럼 워라밸을 중요시하는 개발자들은 가고 싶은 기업 하면 떠오르는 회사들이 아마 비슷비슷할 것이다. (0순위는 구글이지만 아직 내겐 무리야...)
카카오, 우아한형제들, 쿠팡, 네이버, 라인 (개인적인 호감도 순)
카카오에 좋은 이미지가 있어 채용 공고를 찾아봤는데, 마침내게 딱 맞는 공고도 올라와 있었고 사내 추천을 해 줄 지인도 있었기 때문에 다른 회사들은 보지도 않고 카카오에 지원했다.
이직 준비
당시에 다니던 회사가 많이 바빴다. 회사가 새 직원은 못 뽑고 있는데 일거리만 계속 늘어나는 상황이어서 이직을 준비하기 어려웠다. 그리고 당장 내가 카카오에 합격한다고 해도, 내 일을 인계받을 직원이 없었기 때문에 꽤 곤란한 상황이었다.
"그거야 회사 사정이지"라고 생각할 수도 있겠지만, 작은 회사였기 때문에 남은 직원들에게 돌아갈 피해를 생각하지 않을 수 없었다.
그런 이유로 카카오에 입사 지원서를 넣기도 전, 다니던 회사에 앞으로 2개월만 다니고 퇴사하겠다는 통보를 먼저 한 뒤 남은 기간 동안 인수인계를 하면서 이직을 준비하게 되었다. "너 사표 써놓고 떨어지면 어떡할 거냐"라고 주변에서 걱정했지만, 떨어지면 그동안 못한 개인 프로젝트나 하지 뭐. 이런 마음이었다. (대책 없었음)
이직을 준비하는 것이 처음이어서 많은 게 낯설었다. 우선 지난 2년 간 진행했던 프로젝트들을 정리하면서 코딩 테스트를 준비했다. 이직 시 코딩 테스트는 그렇게 어렵지 않다고 들었지만 가장 취약한 부분이라 더 신경을 썼다. 코딩 테스트 연습은 카카오 코딩 테스트 플랫폼으로 알려진 해커랭크를 이용했다.
서류전형
카카오에 사내추천 해준 지인에게 자기소개서를 보여줬더니 이게 뭐냐며 비웃음 당했다. 문장력이 딱 지금 읽고 있는 이 글 수준이었기 때문에...
포트폴리오는 첫 직장에 입사할 때 제출했던 것을 거의 그대로 냈고, 어학/자격증/수상은 전혀 없었다. 프로젝트 이력이 무엇보다 중요하다고 생각해서 여기에 올인했다.
사내추천 버프 때문인지 서류전형은 금방 통과했다.
코딩 테스트
세 문제를 93분 동안 풀었는데, 경력 대상 코테여서 그런지 난이도는 카카오 블라인드 테스트에 비하면 쉬운 편이었다. 해커랭크 Easy보다 조금 어려운 난이도.
코딩 테스트 플랫폼은 해커랭크였고, 각 문제마다 지원하는 언어가 달랐다. 두 문제는 Go를 지원해서 Go로 풀었고, 한 문제는 Go를 지원하지 않길래 두 번째로 익숙한 언어인 자바스크립트로 시도했다.
그런데 자바스크립트로 작성한 코드를 제출할 때마다 이해 못할 에러가 나오는 바람에 채점 시스템에 오류가 있는 줄 알고... 잘 알지도 못하는 Python 문법을 시험 도중에 찾아 배워서 겨우겨우 시간 내에 풀었다.
원격 인터뷰
인터뷰 난이도는 갈수록 어려워진다. 원격 인터뷰는 유선으로 진행됐고 최소 3명 이상의 인터뷰어가 계셨던 것 같다. 내 경우 원격 인터뷰는 맛보기 같은 질문들이었는데, 내 기억에 다음과 같은 질문들을 받았었다.
이직 사유
공고에 기재되어 있는 업무내용에 대한 경험과 지식
내가 보유하고 있는 기술 스택
기타 등등 입사 지원서 내용을 바탕으로 한 가벼운 질문
기억나는 질문 중 하나가 "전 직장에서 대부분의 프로젝트를 혼자서 Go로 개발했다고 하셨는데 이직하게 되면 전 직장에 충격이 가지는 않을까요?"였다.
실제로 이직을 준비하면서 내가 걱정했던 부분이었고, 서론에서 말했듯이 이미 퇴사 통보를 해두고 인수인계를 하던 중이었다. 이런 얘기를 하게 되면 처우 협상에서 불리해지지 않을까 싶기도 했지만, 그냥 있는 그대로 얘기했다. (깜짝 놀란 반응이었음)
대부분 가벼운 질문들이었으므로 설마 여기서 떨어질 것 같지는 않았고, 이틀 뒤 합격 메일을 받았다. 답변을 제대로 못한 부분은 이후 인터뷰에서 다시 물어보니 반드시 준비하도록 하자.
1차 인터뷰
인터뷰 날, 꽤 일찍 도착하는 바람에 남은 시간에 사내 추천을 해준 지인과 함께 오피스를 잠깐 구경했다. 예전에 카카오뱅크로 2개월가량 파견 나갔던 적이 있었는데, 그때도 느꼈지만 카카오의 자유로운 분위기는 정말 최고다.
1차 인터뷰에는 3명의 인터뷰어가 계셨는데, 굉장히 편한 분위기를 만들어 주셨다. 생애 첫 인터뷰였음에도 긴장하지 않고 나를 잘 어필할 수 있었다.
받았던 질문들을 자세히 오픈할 수는 없지만 우선 알고리즘, 자료구조에 대한 질문이나 손 코딩 문제는 없었다. 대신 실제 개발과 관련된 질문이나 참여했던 프로젝트에 대한 질문이 많았고, 원격 인터뷰에서 제대로 대답하지 못한 질문도 다시 받았다.
이 날 기억나는 질문 중 하나가 "React를 쓰면서 느꼈던 점이 있나요?"였는데, 'React를 사용하니 개발하기 편했어요' 같은 대답은 너무 식상할 것 같아서 React 사용 시 발생할 수 있는 성능 이슈에 대한 우려와 함께 lit-html에 대한 내용을 간단하게 답변했던 것이 기억난다.
React는 VDOM을 써서 브라우저 렌더링 횟수를 줄이는 방향으로 성능상 이점을 제공하지만, VDOM을 업데이트할 때 트리 비교가 필연적으로 일어납니다. 트리 비교 알고리즘이 휴리스틱으로 최적화되어있긴 하지만, 휴리스틱을 벗어나는 케이스에 대해서 성능 문제가 있을 수 있습니다.
구글에서 개발한 lit-html이라는 라이브러리는 VDOM 대신 javascript tagged templates string이라는 웹 표준 기술을 사용하는데, 트리 비교를 하지 않아도 되어서 상대적으로 성능 이슈에서 자유롭습니다.
Google Chrome Developers 채널에서 봤던 영상 내용을 토대로 위의 내용을 주절주절 설명했다. 얕은 지식임을 어필하면서 답변했음에도 인터뷰어의 반응으로 미루어 봤을 때 좋은 인상을 준 것 같다.
기술 질문 외에도 정답이 없는 질문들도 많았는데, 그중 하나가 "읽었던 책 중에 기억나는 것이 있으면 말해주세요"라는 질문이었다. 사실 나는 책이라면 교양서적이든 기술서적이든 무겁고 불편해서 잘 읽지 않는 스타일이다. 꼭 읽어야 할 책은 스캔하거나 챕터 단위로 뜯어 휴대하기 편하게 만들어서 읽고, 보통은 유튜브, 블로그, 스택오버플로우, 공식 문서 등 온라인에서 지식을 얻는다.
그래서 금방 답변을 못한 채 고민하고 있는 나를 보시더니 꼭 책이 아니라 영상이든 글이든 괜찮다고 하셔서, 유튜브에서 본 세션 몇 가지와 if kakao에서 봤던 세션 하나를 얘기했다. if kakao 세션 얘기를 하면서는 나도 모르게 흥분해버렸는데, 대충 내 안에 가라앉아 있던 프론트 개발자의 열정이 다시 솟구쳐 오르는 것을 느꼈다는 둥의 얘기를 했다. (실제로 감명받았던 세션이었고 미리 준비했던 내용이었지만, 면접 중에 답변하면서 다시 흥분했음)
분위기가 좋았던 게, 혹시 이미 탈락이 확정되어서 위로해주는 건가 싶었는데, 다행히 다음 날 합격 메일을 받았다.
2차 인터뷰
마지막 인터뷰도 1차 때와 마찬가지로 3명의 인터뷰어가 계셨다. 내 기억에 팀장급 두 분, 파트장급 한 분이셨는데, 인터뷰 분위기를 편안하게 해 주시려고 신경 쓰는 느낌이었지만 그래도 인터뷰어의 무게감이 달라 1차 때보다 긴장이 되는 건 어쩔 수 없었다.
이전 인터뷰에서 내가 실무에서 다뤄본 백 엔드 언어가 Go 뿐이라고 이미 여러 번 답변했음에도 Go에 대한 심도깊은 질문은 거의 받지 못했다. 아마 사내에 Go에 익숙한 개발자가 드물어서 인터뷰어를 섭외하는데 애로사항이 있었던 게 아닐까 추측해본다.
사실 질문을 받았어도 긴장해있는 바람에 잘 대답했을지도 모르겠는 게, Java를 사용하는 인터뷰어에게 "Go를 왜 쓰나요?"라는 질문을 받았었다. 풀어낼 이야기가 참 많은 질문인데, 긴장해서 한 가지만 대답하는 줄 알고 가장 먼저 머리에 떠오른 언어의 단순성에 대해서만 답변했다. 약간 납득을 못하겠다는 표정이셔서 마음이 아팠다.
그 외 기술 질문들에 대해선 70% 정도는 답변을 했는데, 정답 없는 질문들이 꽤 답하기 어려웠다. 나름대로 대답을 했지만 인터뷰어들의 표정을 봤을 때 아마 썩 만족스러운 답변이 아닌 것 같았다.
예를 들어, "개발을 좋아한다고 하셨는데, 그럼 본인 실력도 그만큼 좋아야 할 텐데 어떻게 생각하는지?"라는 질문에, 겸손하게 대답해야 할지 자신감을 내비쳐야 할지 고민하다가 동 연차 대비 실력이 나쁜 것 같진 않다고 대답하자 표정이 안 좋아지시는 걸 보고 아, 이게 아닌가... 싶었다.
인터뷰를 마치고 망했구나 싶어서 죽상을 하고 엘리베이터 타고 내려가는데, 어느샌가 뒤에 계셨던 (가장 표정이 안 좋으셨던) 인터뷰어 분이 어깨를 살짝 치면서 면접 붙으신 것 같다고 귀띔을 주셨다.
마음의 준비도 없이 받은 갑작스러운 합격 통보에 기분이 좋으면서도 한편으론 '그렇게 표정이 안 좋으셨는데 나를 왜?'라는 의문이 들었다. 다음에 뵙게 되면 꼭 물어보고 싶다...
이틀 뒤 공식적인 최종 합격 메일을 받았다.
입사 지원부터 처우 협상까지 한 달 조금 넘게 걸렸다. 2월 24일. 코로나 이슈로 인해 문을 닫은 카페와 텅 빈 라운지
후기
면접을 보는 한 달 남짓한 기간 동안 하루도 편히 잠든 날이 없었던 것 같다. 사표를 먼저 내고 준비한 이직이었고, 딱 하나의 공고에 지원했으며, 생애 첫 인터뷰를 본 것이었으니 엄청난 부담이었다.
글을 쓰면서 인터뷰어로 참가하셨던 분들을 조직도에서 찾아보고 있는데, 가슴 아프게도 1차 때 인터뷰어 중 한 분은 최근에 퇴사하신 모양이다. 부족한 저를 좋게 평가해주셔서 감사하다는 말씀을 드리고 싶다.
나는 연차에 비해 경험이 많았던 것이 이직에 많은 도움이 된 케이스다. 전 회사에서 뺑뺑이 치며 개발했던 경험이 없었으면 결코 카카오에 합격할 수 없었을 거라고 장담한다. 현재 맡은 업무에 최선을 다하면 이직할 때도 반드시 큰 도움이 될 거라고 생각한다.