회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
AWS 이용 중이라면 최대 700만 원 지원받으세요
최근 이직을 위해 공부하면서 새로운 개발자들을 만났다. 서로 직장이 없는 상태에서 만났기 때문에 가장 관심 있는 대화 주제는 역시 이직(취직)이었다. 함께 면접 스터디를 진행하며 많은 도움을 주고받았고, 덕분에 원하던 회사에 합격하는 결과를 얻었다.
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!
확인
최근 이직을 위해 공부하면서 새로운 개발자들을 만났다. 서로 직장이 없는 상태에서 만났기 때문에 가장 관심 있는 대화 주제는 역시 이직(취직)이었다. 함께 면접 스터디를 진행하며 많은 도움을 주고받았고, 덕분에 원하던 회사에 합격하는 결과를 얻었다.
물론 면접에는 운이 작용한다. 하지만 이번 합격을 순전히 운으로 치부하기보다는, 준비 과정에서 어떤 요소들이 긍정적으로 작용했는지 원인을 분석해 보고 싶었다. 그리고 글로 남겨둔다면 취직이나 이직을 준비하는 사람들에게 작은 도움이라도 줄 수 있을 것이라 생각했다. 다만 면접은 여러 요소가 작용하므로 성공 공식을 일반화할 수 없으니, 내가 경험한 일들을 하나의 사례로 생각해 주면 좋겠다.
또한 대부분의 입사 전형은 서류 전형부터 시작하지만 이번 글에서는 개발자 면접을 중점으로 다룰 예정이라, 서류 전형과 코딩 테스트에 대한 내용은 생략했다. 지금부터 개발자 면접(기술 면접, 컬쳐핏 면접) 준비에 대해 살펴보자.
우선 기술 면접을 실무진 면접과 같은 것으로 치부하는 경우도 있는데, 둘은 엄연히 다른 면접이다. 기술 면접은 개발자의 기술 지식에 대해 확인하는 시간이고, 실무진 면접은 면접관으로 실무진이 참여한다. 이때 실무진들은 기술적인 측면도 궁금해하지만, 함께 일하기 좋은 동료인지 컬쳐핏에 관련된 질문을 던지기 때문이다.
나의 경우 비전공자로서 조금 독특한 이력을 가지고 있어서인지, 많은 면접관들이 기술 질문을 하기에 앞서 전공 지식을 얼마나, 어떻게 공부했는지 궁금해했다. 나는 작년 하반기에 참여했던 부트캠프 커리큘럼에 따라 공부했는데, 이때 공부한 내용은 개발자의 기초 소양이었다.
구체적으로 운영체제에 대한 이해와 알고리즘 기초, 네트워크 통신을 공부하고 과제를 수행했다. 커리큘럼 외적으로는 프론트엔드 개발자에게 필요한 기초 지식인 자바스크립트 언어와 브라우저의 동작원리에 대해 공부했다. 적어도 공부한 범위 내에서 나온 질문은 잘 대답할 수 있도록 면접 스터디원들과 질문 리스트를 만들고, 대답하는 연습을 여러 번 했다. 물론 미처 준비하지 못한 질문도 있었지만 대부분 공부한 범위 내에서 답변할 수 있었다.
자바스크립트
내가 공부한 내용을 항목별로 간단히 소개하면, 우선 자바스크립트 질문에 대비하기 위해 <모던 자바스크립트>라는 책을 세 번 정도 읽었다. 매우 두꺼운 책이라서 매번 정독을 하지는 못했지만, 회차를 거듭할수록 명확하게 이해하는 범위를 늘린다는 느낌으로 읽어 나갔다. 면접 스터디를 진행하면서 스터디원들과 같은 질문을 여러 번 반복해서 질의응답했다.
1회독에서는 자바스크립트의 기본 문법과 용어에 익숙해지는 것으로 만족했다. 다소 더듬더라도 대답을 할 수 있다면 공부를 제대로 한 것으로 간주하고 넘어갔다. (이 기준은 사전에 스터디원과 합의했다.) 2회독에서는 스코프와 실행 컨텍스트를 중점적으로 공부했고, 질의응답을 할 때 머릿속에서 코드가 그려지는지를 공부 완료 기준으로 삼았다. 마지막 3회독에서는 비동기 프로그래밍 방식을 브라우저의 동작원리와 연결해서 설명할 수 있도록 하는 것이 목표였다. 머릿속에 브라우저의 구성요소를 그려 놓고, 상대방이 깔끔하게 이해할 수 있는 수준으로 설명할 수 있을 때까지 반복해서 대답했다.
스크립트를 써서 연습하는 것도 좋지만 문장 자체를 암기하는 것보다, 머릿속에 그림이 그려지는 게 더 좋은 습득 방식이라 생각한다. 면접장에서 매번 똑같이 외운 문장을 떠올리려고 하면 기억이 잘 나지 않을 수도 있고, 답변이 부자연스러워서 감점 요인이 될 수도 있다. 하지만 머릿속에 그린 그림을 묘사하는 것은 듣기에도 자연스럽다. 또한 경험이 축적될수록 점차 답변이 정교해지고 답변할 수 있는 범위도 확대되기 때문이다.
네트워크
다음으로 네트워크의 경우, “주소창에 url을 검색하면 일어나는 일을 설명해 보세요”라는 널리 알려진 질문에서부터 시작했다. 이 질문이 언제 어디에서 시작되었는지는 모르겠지만, 굉장히 좋은 질문이라고 생각한다. 왜냐하면 웹 개발자가 하는 네트워크 작업 그 자체를 압축한 질문이기 때문이다. 개인적으로 전체 프로세스를 깊이 파고들면서 준비하기보다는, 네트워크 계층의 역할과 브라우저 렌더링에 집중해서 내용을 정리해둔 다음 매번 면접 전에 복습했다.
대부분의 경우 네트워크 질문은 HTTPS에 대한 것으로 시작했다. 마치 게임에서의 첫 관문처럼, 이 질문에 만족스러운 답변을 내놓아야 그다음 질문으로 갈 수 있는 열쇠가 주어지는 것 같았다. 이 질문에 대한 대답은 면접을 거듭할수록 길어지고 정교해졌다. 개인적으로는 대칭키와 공개키 암호화를 이해하고 설명하기까지 오랜 시간이 걸렸고, 지금도 갑자기 물어보면 조금 헷갈릴 정도로 어렵게 느껴지는 부분이다. 하지만 암호화는 HTTPS의 핵심이며 이 부분에서 막힌 경우 탈락한 경험이 있다.
운영 체제
나의 경우 프론트엔드 개발자 직무로 지원해서 그런지 운영 체제에 대한 질문은 생략될 때도 많았다. 하지만 질문을 받는 경우에는 보통 운영 체제를 공부하면서 인상 깊었던 부분에 대한 질문으로 시작했다. 개인적으로 메모리 구조와 가상 메모리 시스템에 흥미를 가졌었기 때문에, 메모리 시스템의 핵심적인 내용을 한 단락 정도로 매끄럽게 설명할 수 있는 수준으로 준비했다.
컬쳐핏 면접은 일하는 성향과 성격에 관한 질의응답이다. 타고난 성격이나 이미 습관이 된 성향을 회사에 맞춰 바꾸기는 어렵지만, 어떤 사람이든 100% 안 맞는 회사도 100% 잘 맞는 회사도 없다. 중요한 것은 본인이 가진 특징 중에서 이 회사와 팀에 잘 맞는 부분을 찾아내서 부각하는 것이다.
컬쳐핏에 대한 예상 질문을 뽑을 때는 어떤 직무에서나 어떤 회사에서나 똑같이 답변할 수 있는 버전과 회사와 팀에 따라 다르게 답변해야 하는 버전, 긴 버전과 짧은 버전 등으로 구분해서 유연하게 대답할 수 있도록 준비했다. 가장 많이 연습했던 대표적인 질문들은 다음과 같다.
자기소개
자기소개를 구상할 때는 길게 설명하는 버전과 한 줄로 표현하는 짧은 버전을 나누어서 준비했다. 나의 경우 강점으로 책임감과 집중력을 골랐다. 그리고 이 강점이 개발할 때 어떻게 발휘되며, 이것이 왜 장점으로 작용할 수 있는지 구체적인 사례를 같이 준비했다. 사례에는 참여했던 프로젝트에서 애착을 갖게 된 계기, 완성도를 올리려고 노력한 과정, 결과물과 느낀 점 등이 포함됐다. 그리고 면접 스터디원들에게 이 사례를 들려주고 설득이 되는지 피드백을 받은 후 내용을 추가 및 보완했다.
꿈과 지원 동기
꿈은 최대한 솔직하게 답변했다. 최근 메타버스 서비스를 만들면서 자바스크립트 애니메이션과 인터랙션에 관심을 가지게 되어, 인터랙션이 풍부한 서비스를 만들어보고 싶다는 꿈이 생겼다. 꿈에 대한 질문에는 이것을 그대로 말했다.
하지만 회사와 직무 지원 동기는 면접마다 다르게 준비했다. 우선 회사에 지원한 이유는 회사 서비스에 대한 긍정적인 이미지에서부터 출발했다. 이 서비스를 왜 좋아하는지에 대한 이유를 구체적으로 설명할 수 있어야 한다. 예를 들어, 한 번은 게임회사에 지원했는데, 해당 회사에서 서비스 중인 게임 중에는 성공한 것도 있고 실패한 것도 있었다. 여러 번 규모가 큰 프로젝트를 시도하고 실패했지만, 또다시 새로운 게임 제작을 시도하는 도전정신이 매우 멋지게 느껴졌다. 그뿐만 아니라 게임의 스토리텔링을 강화하기 위해 노력을 기울인다는 점도 훌륭했다. 이렇게 회사에 대한 긍정적인 이미지를 구체화하면 충분한 지원 동기가 될 수 있다고 생각한다.
하지만 직무에 지원한 이유를 묻는다면 훨씬 더 구체적이고 현실적인 답변이 필요하다. 직무 지원 사유는 사용하는 기술 스택, 그 기술 스택에 대한 관점과 생각, 앞으로의 진로, 해당 직무를 수행함으로써 기여할 수 있는 부분과 그 이유, 팀에 기대하는 바를 상당히 구체적으로 고민했다.
특히 웹 서비스가 아닌 다른 서비스를 만드는 회사의 경우, 반드시 해당 직무에서 어떤 업무를 하게 될지에 대해 구체적으로 파악했다. 이 부분에서 크게 실수한 경험이 있는데, 유저와 접점이 없는 사내 툴을 개발하는 직무라는 것을 미처 모르고, 유저 관점에서의 서비스 분석과 개선방안을 준비해 간 적이 있다. 만약 다시 준비할 기회가 주어진다면, 해당 툴이 동료들에게 어떻게 도움이 될지를 집중적으로 고민해 볼 것이다.
갈등 극복 사례
어떤 갈등이 의미 있는 갈등인지를 깊이 생각했다. 갈등이 팀의 화합을 해치기만 하면 그것은 의미 없는 갈등에 불과하지만, 결과적으로 서비스 퀄리티를 높여주거나나 팀원들의 성장에 도움이 되는 등의 의미를 가질 수도 있다. 만약 드라마처럼 팀의 결속을 단단하게 만들어준다면 오히려 좋은 갈등이라고 생각한다. 그리고 갈등 사례를 뽑을 때는 본인이 갈등의 중심이었던 케이스와 주변인 혹은 중재자였던 케이스를 모두 준비하는 게 좋은 것 같다. 왜냐하면 두 경우 모두 현실에서 벌어질 수 있고, 각각 역할과 해결 방법이 달라지기 때문이다. 갈등 해결을 잘 하는 팀원은 상황에 따라 달라지는 포지션에 적응하고 유연하게 대응하는 사람이다.
서비스에 대한 유저 반응 분석
서비스에 대한 유저 반응 분석은 회사에서 개발한 서비스나 툴을 최대한 많이, 가능하면 여러 번 사용해 보았다. 그리고 다양한 사람들의 의견을 들으려고 노력했다. 먼저 스터디원들과 함께 이용 후기를 공유하면서 어떤 점이 좋았는지, 어떤 불편이 있었는지에 대해 이야기했다. 그리고 실제 유저들이 모여있는 커뮤니티에 접속해서 후기를 살펴보았다.
웹 개발자로서 웹 서비스 회사에 지원한다면 유저 관점에서 접근하면 된다. 실제로 서비스를 사용해 볼 기회가 있으니 오히려 준비하기 쉽다. 그러나 사내에서 사용하는 백오피스를 다루는 경우에는 미리 사용해 볼 수가 없기 때문에 상상력을 발휘해야 한다. 사내 툴도 결국 사용자가 있는 서비스이기 때문에 편리함과 완성도가 중요하다는 점에선 같다. 어떤 목적으로 사용하는 툴을 만들 수 있을지, 다양한 경우의 수를 미리 생각해 보고 면접관에게 구체적인 직무 방향과 툴의 목적을 질문한 뒤, 자연스럽게 답변하는 것이 중요하다.
회사 관련 이슈를 알고 있는지
이 질문에선 회사에 대한 나의 관심도를 보여줄 수 있는데, 최근 3개월간 회사 관련 기사를 탐색해 보면 좋다. 회사가 가장 주력으로 밀고 있는 서비스의 현 상태를 파악하고, 관련해 고객들이 의견을 나누는 커뮤니티를 살펴보았다. 또한 유튜브 채널의 댓글이 우호적인지, 혹시 비난한다면 그 원인이 무엇인지도 알아봤다. 스스로 소비자가 되어 의견을 정리하고, 예상되는 질문이 있을 때마다 메모했다. 면접 질문을 모아둔 사이트를 찾아 참고하기도 했다.
개발 스타일
지원자에게 요구하는 개발 스타일은 개발팀에 따라 차이가 있었다. 스스로 해결하는 성향을 선호하는 곳도 있었고, 최대한 자주 소통하며 개발하기를 기대하는 경우도 있었다.
개발 문화 혹은 개발 스타일은 학습 방법과 속도, 코드 리뷰 방식, 문서화에 대한 관점, 버그에 대한 반응과 태도 등을 살펴본다. 팀에서 지향하는 개발 문화는 미리 찾아볼 수 있는 경우도 있고, 면접장에서 질문해도 충분히 대답을 들을 수 있다. 나는 개발 스타일은 타고난 성격보다는 노력해서 적응할 수 있는 영역이라고 생각한다. 따라서 개발 문화는 맞춰갈 수 있다는 열린 마음이 중요하다.
나는 이러한 준비 과정들을 거쳐 결국 원하는 회사에 합격할 수 있었다. 합격의 원인을 쉽게 단정하긴 어렵지만, 잘 봤던 면접은 집중력부터 다르게 느껴졌다. 그래서 충분히 준비된 채로 면접장에 가면, 훈련을 많이 한 운동선수처럼 집중력이 좋아진다는 것을 알았다. 질문이 꼬리에 꼬리를 물어도 집중력을 잃지 않고 대답할 수 있다. 이러한 집중력에는 분명 체력도 중요하다. 평소에 꾸준히 체력을 단련해두면 면접에서도 집중력을 발휘할 수 있을 것이다.
또한 면접이 끝난 후, 스스로 질문 내용을 복기하는 것도 중요하다. 어떤 질문이 나왔고 어떻게 대답했는지, 잘한 답변과 그렇지 않은 답변의 이유는 무엇인지 생각했다. 이러한 경험이 쌓이면서 여유가 조금 생기자, 비로소 면접관의 눈을 제대로 마주치며 대화할 수 있게 되었다. 눈을 보고 대화해서인지 면접이 어느 때보다 편안하고 즐겁게 느껴졌다.
면접관은 우리가 생각하는 것보다 훨씬 더 지원자에게 관심이 많다. 커밋 이력 하나도 꼼꼼히 확인하고, 작은 성취에 대해서도 관심을 가진다. 그러니 작은 토이 프로젝트에서도 정해진 커밋 컨벤션을 지키고, 꾸준히 코드 퀄리티를 유지하려고 노력하자. 기술적으로 보완할 부분이 있는지 고민하는 것은 꼭 면접이 아니더라도 중요하다.
지금까지 개발자 면접을 위해 내가 준비했던 내용과 경험에 대해 공유했다. 나 또한 여러 번 면접에 탈락해 실망하고, 좌절한 시간도 있었다. 하지만 회사가 나를 뽑아야 하는 이유는 스스로 만들어야 한다. 나의 장점은 내가 가장 잘 알 수밖에 없다. 그러니 본인만의 강점을 찾아 차근차근 준비해 보길 바란다.
글 zwoo
교정‧교열 하은선 객원 에디터
요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.