구글, 페이스북, MS와 같은 기업들은 자체적으로 개발 인터뷰 과정을 가지고 있습니다. 그리고 최근에는 많은 IT 기업과 스타트업이 IT 대기업의 인터뷰 방식을 차용해서 쓰기 시작했는데요. 따라서 이제 해외 IT 기업에 취업하기 위해서는 인터뷰 준비를 철저히 해야 합니다. 이번 포스팅에서는 인터뷰 준비 서적 중 가장 유명한 Cracking The Coding Interview를 참고하여 해외 IT 기업 인터뷰 특징과 준비 과정에 대해서 정리해봤습니다.
1. 개발자 인터뷰에서 평가하는 요소
먼저 해외 IT 기업에서 개발자 인터뷰에서 평가하는 요소에 대해서 알아보도록 하죠. IT 기업 면접관은 아래와 같은 여러가지 요소로 개발자를 평가합니다.
1) 분석 능력
분석 능력이란 당면한 문제를 분석하고 해결 방안을 제시할 수 있는 능력을 말합니다. 간단히 말해서 문제해결 능력을 의미하죠. IT 기업에서는 정해진 프로세스 외에 수 많은 문제와 도전이 닥치게 됩니다. 따라서 개발자에게 문제를 분석하고 해결할 수 있는 능력은 가장 중요한 능력이라고 할 수 있는 것이죠.
면접관이 개발자의 분석 능력을 확인할 때는 문제를 해결하는데 얼마나 많은 도움이 필요한지, 문제 해결까지 얼마나 시간이 걸렸는지, 어떻게 문제에 접근하고 어떤 방식으로 해결 방법을 찾아가는지를 코딩 인터뷰를 통해 확인합니다.
2) 코딩 스킬
면접관은 개발자가 알고리즘을 얼마나 적절하게 코드로 만들었는, 코드는 클린하게 만드는지, 잘 구성된 코드를 짜는지 확인합니다. 또한 코딩을 하면서 에러 발생 가능성에 대해서 생각하고 있는지, 좋은 코딩 스타일을 가지고 있는지도 살펴봅니다.
3) 기술 지식과 컴퓨터 공학의 기초
특정 기술이나 분야에서 필요한 기본적인 기술 지식을 가지고 있는지 여부도 면접에서 중요한 포인트 입니다. 만약 자바 개발자를 뽑는다면 자바에 대한 기술 지식을 충분히 가지고 있어야 하며, 모바일 앱 개발자를 채용하는 자리라면 앱 개발 지식과 경험이 있어야 합니다.
아울러 컴퓨터 공학의 기초적인 지식도 가지고 있어야 합니다. 면접관은 기본적인 알고리즘이나 자료 구조, 디자인 패턴 등에 대한 지식을 가지고 있는지 확인하기 위해 코딩 문제를 내기도 합니다.
4) 프로젝트 및 문제 해결 경험
면접관은 채용하고자 하는 자리에 맞는 경험을 개발자가 가지고 있는지 확인해야 합니다. 그리고 과거에 프로젝트를 하면서 좋은 기술적 결정을 내린 적이 있는지, 그 프로젝트에서 발생한 문제를 해결한 경험이 있는지를 체크합니다.
5. 팀원과의 융합 및 커뮤니케이션 능력
채용하고자 하는 개발자가 회사가 추구하는 인재상에 부합하는지, 팀원과 융합될 수 있는 성격인지 그리고 원활한 커뮤니케이션 능력을 가지고 있는지도 점검합니다. 특히 해외 IT 기업은 영어를 주로 사용하기 때문에 영어로 기본적인 의사소통이 가능해야 합니다.
2. 해외 IT 기업이 개발자를 뽑는 원칙
1) 거짓 음성은 허용되나 거짓 양성은 허용하지 않는다.
거짓 음성(False Negative)와 거짓 양성(False Positive)에 대해서는 위키를 참조 하길 바랍니다. 간단히 얘기하자면 해외 IT 기업들은 좋은 개발자를 놓치지 않는 것보다 나쁜 개발자를 뽑지 않는 것이 더 중요하다고 생각합니다.
따라서 여러분이 아무리 좋은 개발자여도 면접에서 떨어질 수 있다는 의미입니다. 해외 유수 IT 기업들은 개발자 채용 풀에 얼마든지 좋은 개발자가 있기 때문에 좋은 개발자를 놓치는 것에 크게 신경을 쓰지는 않습니다.
대신 인터뷰만 잘하고 정작 실무에서는 그렇지 않은 나쁜 개발자를 뽑는 것을 제일 경계합니다. 나쁜 개발자는 회사의 비용을 엄청나게 늘리고 팀 문화를 저해하고 크리티컬한 이슈를 발생 시킬 수 있기 때문입니다.
2) 대부분 화이트보드 코딩을 시킨다.
해외 유수 IT 기업들은 대부분 화이트보드 코딩을 시킵니다. 이렇게 화이트 보드에 코딩을 하게 하는 이유는 중요한 문제에 집중하기 위해서 입니다. 여기서 중요한 문제란 문제를 분석하고 해결해 나가는 과정을 의미합니다.
화이트보드로 코딩을 하면 버그가 있는지, 컴파일이 되는지, 문법적으로 사소한 에러가 있는지는 별로 중요하지 않습니다. 그리고 화이트보드 코딩 면접을 봐야 면접관과 더 많은 커뮤니케이션이 일어나고 개발자의 문제 분석 능력을 더 쉽게 파악할 수 있다고 합니다.
3) 모든 결과는 상대적이다.
개발자 인터뷰는 절대적인 점수가 나오는 시험이 아니기 때문에 언제든 면접 결과는 상대적일 수 밖에 없습니다. 따라서 어려운 문제가 나왔다고 좌절할 필요가 없습니다. 만약 여러분에게 출제된 문제가 어려운 문제가였다면 다른 사람에게도 똑같이 어려운 문제이기 때문입니다.
면접관들은 여러 개발자에게 비슷한 문제를 주고 어떻게 문제를 분석하는지, 얼마나 빨리 해결 방법을 찾아내는지, 얼마나 효율적인 알고리즘으로 코딩을 하는지 등을 체크합니다. 따라서 아무리 화이트보드 코딩 문제가 어렵더라도 절대 포기해서는 안됩니다. 끝까지 면접관과 대화를 하면서 조금씩 힌트를 얻어 문제를 해결해 나가야 합니다.
3. 인터뷰를 시작하기 전에 준비할 것들
1) 다양한 경험 쌓기
학생이라면 인턴쉽이나 어떤 프로젝트라도 당장 시작해야 합니다. 학교나 기업에서 주최하는 해커톤에 참석하고, 오픈소스에도 기여해야 합니다. 말 그대로 빠르게 시작하는 것이 중요합니다. 어떤 것을 할지 고민하다 시간만 보내서는 안됩니다. 그게 어떤 것이어도 상관 없으니 당장 시작해야 합니다.
경력자이거나 현업 종사자라면 저녁 시간과 주말을 활용해서 개인 프로젝트를 진행해야 합니다. 지원하는 직무와 관련 기술로 모바일 앱이나 웹사이트를 만들고 GitHub에 소스를 정리해야 합니다. 그리고 그런 내용들을 이력서에 추가해야 합니다. 여기서 한가지 팁은 그렇게 만든 프로젝트가 취업을 위해서 만든 것이 아니라 취미로 만들었다고 해야 한다는 것입니다. 일이 아니라 취미로 프로젝트를 진행하는 개발자에게 면접관들이 깊은 인상을 받는 경우가 많습니다.
2) 좋은 이력서를 만들어라.
이력서는 적당한 길이여야 합니다. 그리고 본인의 취업 히스토리와 프로젝트가 잘 정리되어 있어야 합니다. 그리고 평소 관심 있게 공부하던 프로그램과 언어, 소프트웨어에 대한 내용을 적는 것도 좋습니다.
하지만 특정 기업에서만 사용되는 언어나 프레임워크에 대한 경험, 컴퓨터 공학 관련 자격증을 너무 부각 시키는 것은 오히려 마이너스가 될 수 있습니다. 또한 특정 언어 한 두개만 할 줄 안다고 적는 것 역시 마이너스 요소입니다.
아울러 영어권 원어민이 아니라면 반드시 원어민에게 이력서 체크를 받을 것을 권장합니다. 사소한 문법 오류나 오타로 이력서가 쓰레기통에 버리지는 일들이 비일비재 하기 때문입니다.
3) 인터뷰 준비 과정
인터뷰 준비는 1년 전부터 시작하는 것이 좋습니다. 먼저 1) 개인 프로젝트를 생성합니다. 그리고 2) 여러가지 언어를 배워야 합니다. 3) 커뮤니티 활동과 네트워크도 넓혀야 합니다. 4) 자신만의 포트폴리오 웹사이트도 만들어야 합니다. 5) 학생이라면 인턴쉽을 해야 합니다.
3-12개월 전에는 1) 사이드 프로젝트를 더 추가하고 2) 이력서 드레프트 만듭니다. 그리고 3) 타겟 회사 리스트를 만듭니다. 이제 4) 알고리즘이나 자료구조에 대한 준비를 철저히 시작할 때입니다. 먼저 Big O를 마스터 합니다. 그리고 자료구조와 알고리즘을 아무것도 없는 상태에서 구현하는 연습을 합니다. 가짜 인터뷰 그룹을 만들어라.
1-3개월 전에는 1) Mock 인터뷰 스터디 그룹을 만듭니다. 2) 그리고 지원 회사의 키 컨셉을 이해할 수 있는 미니 프로젝트를 하나 시작합니다. 3) 인터뷰 질문과 답은 잘 정리해야 하며 실수하는 부분에 대해서도 목록을 작성해 둡니다.
4주 전에는 1) Mock 인터뷰 강도를 높이고 2) 이력서를 다시한 번 업데이트합니다. 그리고 3) 회사 지원을 시작합니다.
3. 정리하며
'IT 정보' 카테고리의 다른 글
자바스크립트에서 Webpack을 쓰는 이유 (2) | 2019.02.20 |
---|---|
함수형 프로그래밍을 배워야 하는 이유 (0) | 2019.02.20 |
자바스크립트의 탄생과 ECMAScript 역사 정리 (0) | 2019.02.14 |
꼭 알아야 할 자바스크립트 Array 메서드 10가지 (0) | 2019.02.13 |
좋은 개발자가 갖춰야 하는 기본 7가지 (0) | 2019.02.11 |
댓글