이 글은 게일 라크만 맥도웰 저자의 ‘코딩인터뷰 완전분석’을 읽으며, 깨달은 사실과 내용을 정리하는 글입니다.
자세한 내용이 궁금하다면 http://www.yes24.com/Product/Goods/44305533 에서 책을 구매하시면 좋겠습니다.
면접을 성공적으로 통과하기 위해서는 적어도 1년 전부터 준비해야한다는 것을 깨달았습니다.
면접을 본격적으로 준비하기 위해선, 먼저 이력서를 제출하고 합격해야할 것입니다.
‘코딩인터뷰 완전분석’에서 다루는, 면접 전 준비 절차에 대해서 알아보겠습니다.
이력서에 넣을 적절한 경험 쌓기
면접을 위한 첫 단추는 훌륭한 경험을 쌓는 것입니다.
현재 상황에 따라, 추천되는 경험을 정리해봤습니다.
학생인 경우
- 큰 규모의 프로젝트 수업을 들으라
- 실전과 가까운 경험을 쌓는 것이 중요합니다.
- 인턴 자리를 알아보라
- 빅테크 기업들의 인턴 프로그램도 좋지만, 스타트업에서의 기회가 더 클수도 있습니다.
- 뭔가를 하라
- 개인 프로젝트를 하거나, 해커톤, 오픈 소스 등에 참여하는 것이 권장됩니다.
- 다만 어떤 것을 하느냐가 중요한 것이 아니라, 코딩을 한다는 자체가 중요합니다.
더 높은 수준의 기업으로 이직을 희망하는 경우
- 코딩을 많이 할 수 있는 업무를 하라
- 저녁과 주말을 활용하라
- 개인 프로젝트를 진행해보세요.
- 재미 삼아 만들어 본 경험이 있다면, 면접관에게 깊은 인상을 심어줄 수 있습니다.
탄탄한 이력서 작성하기
이력서에 들어갈 적절한 경험을 얻었다면, 어떤 식으로 이력서를 작성하면 좋을지 정리해보겠습니다.
적절한 이력서 길이
미국에서는 경력이 십 년 미만인 경우, 이력서를 한 페이지로 만들도록 권장한다고 합니다.
한국의 여러 시니어 개발자 인터뷰 영상과 아티클을 참고했을 때, 한국에서도 예외는 아닌 것 같습니다.
그렇다면 왜 그래야 할까요?
- 구인 담당자는 이력서를 볼 때, 기껏해야 10초 정도 쓴다.
- 인상적인 항목만 적혀 있다면 반드시 볼 것이다.
- 어떤 사람은 긴 이력서를 아예 무시하기도 한다.
인상적인 글의 구조
자신이 달성하거나 성취한 내용을 반드시 이력서에 적습니다.
이때 읽는 사람에게 강한 인상을 줄 수 있는 문장 구조는 아래와 같습니다.
”Y를 구현해서 (WHAT) X를 성취했고 (RESULT), 그 결과 Z를 이루었다. (EFFECT)”
책에서 나온 예시를 볼까요?
- “분산 캐시를 구현해서 오브젝트 렌더링 시간을 75% 줄였고, 그 결과 로그인 시간을 10% 경감할 수 있었다.”
- “windiff에 기반한 새로운 비교 알고리즘을 구현한 결과, 평균 비교 정확도를 1.2에서 1.5로 개선했다.”
즉, WHAT(무엇을 했는지)
+ RESULT(어떤 성과를 이뤘는지)
+ EFFECT(그 효과로 무엇이 있었는지)
를 나타내는 것이 중요합니다.
개인적으로는 짧게나마
HOW(어떻게 했는지)
도 들어갈 수 있다면 좋겠다고 생각합니다.
그리고 결과는 측정 가능한 형태로 제시하는 것 역시 중요합니다. (수치 등)
프로젝트 경험
프로젝트 경험은 이력서에 2~4개 정도 넣는 것이 좋습니다.
들어갈 내용으로는 무슨 프로젝트인지
, 어떤 언어와 기술을 사용했는지
가 중요합니다.
추가적으로
어떤 업무를 수행했는지
도 들어가야겠습니다.
수업 프로젝트보단 자주성을 나타낼 수 있는 주체적으로 진행한 프로젝트가 좋습니다.
기술 나열
MS 오피스같은 도구 소프트웨어는 기재하지 않는 것이 좋습니다.
그렇게 큰 의미가 없기 때문이죠.
이클립스나 VSCode 같은 IDE 도 마찬가지입니다!
이것들이 배우기 어려운지 생각해보면, 왜 빼야하는지 알 수 있습니다.
프로그래밍 언어같은 경우에는 신입의 경우 가장 자신있는 언어 1~2개가 적당하다고 봅니다.
책에서는 활용가능한 언어를 모두 적고, 그 수준을 (전문가, 능숙, 경험있음 등으로) 나타내라고 하지만, 신입의 경우 그 수준을 판단하기 어렵습니다.
면접까지의 로드맵
책에서 나온 로드맵을 한번 살펴보겠습니다.
이 로드맵을 활용해서, 자신에게 필요한 과정을 수행하면 딱 좋겠습니다.
면접까지 1년 이상 남은 경우
- 학교나 회사 외적으로 프로젝트를 진행하라
- 다양한 프로그래밍 언어를 공부하라
- 인맥을 확대하라
- 어떤 경험을 했는지 보여주는 웹사이트나 포트폴리오를 구성하라
- 학생이라면 인턴으로 일할 기회나 대규모 프로젝트 기회를 잡아라
- 직장인이라면 얻을 게 많은 프로젝트에 집중하라
면접까지 3~12개월 남은 경우
- 프로젝트에 계속 참여하라, 새로운 프로젝트에 참여하기 위해 애쓰라
- 이력서 초안을 만들고 다른 사람들과 함께 검토하라
- 응시할 회사의 목록을 만들라
- ‘코딩인터뷰 완전분석’ 책의 1~130쪽을 읽으면서 면접 준비를 시작하라
- big-O 개념을 완전히 숙달하라
- 자료구조와 알고리즘을 처음부터 다시 구현하라
- 친구와 팀을 짜서 가상 면접 연습을 하라
면접까지 1~3개월 남은 경우
- 핵심 개념에 대한 이해도를 높일 수 있는 작은 프로젝트를 수행하라
- 가상 면접을 몇 차례 진행하라
- 면접 문제들을 계속 연습하라
- 문제를 풀다 생긴 실수 목록을 만들라
면접까지 4주 전
- 면접 대비표를 작성하라 (‘코딩인터뷰 완전분석’ 50페이지)
- 이력서를 재검토하고 수정하라
- 회사에 실제로 지원하라
- ‘코딩인터뷰 완전분석’ 책의 1~130쪽을 다시 읽으라 (특히 ‘행동문제’와 ‘기술적 문제’ 챕터)
- 가상 면접을 한번 더 하라
- 계속 문제를 연습하고, 코드를 종이에 작성하는 훈련을 하라
면접까지 1주 전
- 최종 가상 면접을 하라
- 면접 대비표를 보고 시나리오를 리허설하라 (‘코딩인터뷰 완전분석’ 50페이지)
- 책의 ‘알고리즘 접근법’을 다시 읽으라 (‘코딩인터뷰 완전분석’ 100페이지)
- big-O 부분을 다시 읽으라 (‘코딩인터뷰 완전분석’ 59페이지)
- 면접 문제를 계속 연습하라
면접 전날
- 면접 대비표에 적은 모든 시나리오를 리허설하라
- 계속 면접 문제를 실습하고, 실수 목록을 재검토하라
정리하며…
이번 글에서 개발자가 면접을 준비할 때 권장되는 절차에 대해 알아봤습니다.
저자가 미국을 기준으로 작성한 것이지만, 분명히 우리나라에도 적용 가능한 이야기가 많을 것 같습니다.
자신에게 필요한 내용을 적용해서 모두 면접까지 성공할 수 있으면 좋겠습니다!