개발자 채용 프로세스
개발자 채용 프로세스는 다음과 같다.
- 서류 검토
- 코딩 테스트
- 기술 면접
- 인성 면접
- 코딩 테스트는 주로 알고리즘 문제를 출제하므로, 알고리즘을 열심히 공부하고 연습했다면 합격할 수 있다.
- 하지만 기술 면접에서는 알고리즘 외에도 컴퓨터구조, 운영체제 등 컴퓨터공학 전반에 대한 다양한 지식에 관해서 질문하므로 공부해야할 범위가 상당히 넓다.
- 또한 아무리 실력이 좋더라도 성실성과 팀원으로서 잘 어울릴 수 있는지 그리고 커뮤니케이션 능력 또한 무시할 수 없다.
기술 면접의 대표 유형
알고리즘 문제 풀이와 질의 응답 형식
- 코딩 테스트를 치른 내용을 토대로 면접을 진행하며 알고리즘 역량이 제대로 갖추었는지를 평가한다.
- 알고리즘의 원리를 완전히 자기것으로 만들 수 있어야한다.
- 자료구조와 알고리즘에 대한 이해가 바탕이 되어야한다.
- 단순히 알고리즘의 시간 복잡도를 평가하는 것만으로는 부족하고, 실제로 서로 다른 알고리즘을 비교하여 ‘특정한 상황’에서 무엇이 더 좋을지를 설명할 수 있어야한다.
포트폴리오 질의 응답 형식
- 투입될 개발 프로젝트에 필요한 지식을 가지고 있는지 물어볼 때 주로 이용되는 유형이다.
- 개발 경험에 가중치를 부여하는 회사는 포트폴리오를 상당히 중요하게 본다.
- 이를 대비해 공부하면서 만든 토이 프로젝트를 정리하여 포트폴리오로 만들어두면 좋다.
- 다른 사람들이 보기 편하게 문서화를 하는 것이 중요하다.
- 만약 팀 프로젝트라면 본이이 맡은 역할 및 이슈를 해결하면서 배운 내용 등을 문서에 담도록 하자.
- 또한 전체 소스코드를 깃 허브에 올리고 이력서에 깃허브 주소를 첨부하는 것이 좋다.
- AWS, GCP에 배포하는 형식으로 포트폴리오를 제출해야한다.
컴퓨터 공학 질의 응답 형식
- 기술 면접 때 컴퓨터공학에 대한 전반적인 지식을 질문하기도 한다.
- 운영체제, 컴퓨터아키텍처, 개발 방법론 등에 대한 이해가 있어야 개발할 수 있는 분야도 있기 때문이다.
- 예를 들어서 서버 개발을 할 때는 멀티 스레딩, 메모리 관리 등을 알아야한다.
- 또한 어느 분야든 네트워크에 대한 지식이 필요하다. 예를 들어서 웹 개발 직군에 지원한다면 (GET, POST 방식의 차이나) TCP, UDP, HTTP, HTTPS의 개념과 원리에 대해서 알고 있어야 한다.
- 데이터베이스 관련 직군이라면 데이터베이스의 정규화, 인덱스, NoSQL 등 다양한 데이터베이스 관련 내용에 대해서 물어볼 수 있다.
기술 면접 준비
- 알고리즘 문제를 잘 풀었다고 해서, 기술 면접을 쉽게 통과할 수 있다고 생각을 하면 안된다.
- 기업에서 원하는 직원은 문제를 풀어 ‘정답 판정’을 받는 지원자가 아니라, 어떤 방법으로 문제에 접근하여 어떠한 알고리즘을 사용했는지를 논리 정연하게 설명할 수 있는 지원자를 원한다.
- 회사에서 같이 일할 사람을 뽑는 과정이므로 논리적으로 말로 정리하는 능력도 매우 중요하다.
- 이러한 능력은 하루 아침에 생기는 것이 아니므로, 평소에 기술 블로그나 깃허브 저장소를 운영하며 능력을 키워갈 수 있다. 또한 글로도 논리적인 풀이 능력을 확인할 수 있으므로 채용시에 장점이 될 수 있다.
기술 면접의 어려움
- 면접관마다 중요하게 생각하는 개발자의 자질이 다들 수 있어서, 기술 면접을 ‘완벽’하게 대비하는 일은 불가능하다.
- 어떤 면접관은 (개발자) 수학과 알고리즘의 원리를 중요하게 생각해서 업무에서 필요한 알고리즘 원리에 초점을 맞추어 질문을 할 수 있는 반면에, 다른 면접관은 프레임워크나 라이브러리를 다룬 경험을 중요하게 생각하여 관련 경험을 주로 물어볼 수 있다.
인성 면접 질문 리스트
다음은 대표적인 인성 면접 질문 리스트이다. 아무것도 모르는 것보다는 이러한 유형으로 질문을 받을 수 있다는 것을 알고 미리 자신만의 대답을 질문하는 것이 좋을 것이다.
개발하면서 가장 행복했던 일은 무엇인가요?
이 질문은 개발자로서의 열정을 느낀 경험을 물어보는 질문이다. 개발하면서 행복감을 느꼈던 순간이나, 보람을 느꼈던 경험을 이야기하면 좋다. 채용자는 같이 일할 만한 사람인지를 확인하고자 이러한 질문을 한다. 따라서 자신이 개발하면서 얼마나 행복감을 느끼는지, 어떨 때 기쁜지 등을 설명하면서 개발을 좋아한다는 점을 알리면 좋다.
자신이 가장 열정적으로 참여했던 프로젝트가 있다면 이야기해주세요.
이 질문에는 자신이 열정적으로 참여했던 프로젝트를 소개하고, 누구와 함께 했는지, 자신이 맡은 역할이 무엇이었는지를 답하면 된다. 특히 프로젝트에서 자신이 기여한 파트를 구체적으로 언급하고 그 과정에서 겪었던 어려운 점을 어떻게 해결하여 실력 향상을 이룰 수 있었는지에 대해서 설명할 수 있을 정도로 준비를 하자.
회사에 대해 궁금한 점이 있다면 말해주세요.
면접은 단순히 회사에 채용되는 과정이 아니라, 여러분 또한 회사를 선택하는 입장이라는 점을 기억하자. 따라서 회사에 대하여 궁금한 점이 있다면 질문할 수 있도록 사전에 회사에 대해 알아보고 면접에 임하자.
1차원적으로 궁금한 것을 물어보는 것보다는 자신의 개발자로서의 성향 중에서 ‘긍정적인 성향’을 드러낼 만한 질문을 하는 것이 좋다.