프로그래밍 면접 이렇게 준비한다 리뷰: 한빛미디어

개발하는 사람이라면 한 번쯤 인터넷 상에서 “구글 면접 문제” 식의 글을 보고 문제도 풀어봤을 것이다. 그리고 아마 문제의 난이도 때문에 심한 좌절감(?)을 맛보았을지도 모르겠다. 실제로 구글 뿐 아니라 거의 모든 IT기업들은 개발자를 찾을 때 반드시 기술면접을 본다. 따라서 취업 또는 이직을 준비한다면 적절하게 기술면접을 준비할 필요가 있다. 왜냐하면, 기술면접은 바로 옆에 구글신과 스택오버플로우를 끼고서 할 수 없기 때문이다. 이렇게 구직을 위해 기술면접을 앞두고 있는 사람들을 위해 어떻게 기술면접을 준비할 것인가에 대한 내용을 담은 것이 “프로그래밍 면접 이렇게 준비한다”이다. 일단 당장 석사를 마치면 나도 구직을 준비해야 한다는 점에서 책을 꼼꼼히 읽어 나갔다. 한빛리더스 8기 2차 리뷰 도서 책의 원제는  “Programming Interviews Exposed”이고 부제로 “Secrets to Landing Your Next Job”이다.  원서의 제목에서 “Next Job”이 눈에 들어왔다. 원서의 부제 “Next Job” 이 말해주는 바와 같이 “기술 면접”은 인생에 단 한번 지나가는 통과의례라기보다는 주기적으로 접하게 될 확률이 높다. 따라서 이 책은 한번의 구직을 위한 일회성 책이 아니라는 점이 중요하다. 재판도 아니고 3판까지 책이 이어져 왔다는 것에서 이미 이 책의 가치는 어느 정도 검증되었다고 볼 수 있다. 책은 총 17장의 챕터와 이력서 작성을 돕는 부록으로 구성된다. 책에서 구분하고 있지는 않지만 각 챕터는 내용상 크게 5파트로 나누어 볼 수 있을 것 같다.

  • 1-2장: 구직과 관련된 일반적인 내용
  • 3-8장: 알고리즘 관련 내용
  • 9-13, 16장: 학부에서 다루는 컴퓨터 사이언스 관련 전반적인 지식
  • 14-15장: 문제해결능력과 연관된 퍼즐
  • 17장, appendix: 기타

먼저 이 책의 장점은  내용외적으로 깔끔한 편집 디자인이 가져다 주는 높은 가독성을 들 수 있다. 특히 내용의 핵심이나 코드 예제 중에서 중요한 부분의 볼드 처리가 마음에 든다. 프로그래밍 면접 책 안 또 다른 세심한 배려는 책의 가로 길이이다. 보통의 IT 서적들이 교과서와 같이 가로 길이가 길어서 휴대성이 떨어진다. 그러나 이 책은 들고 다니기 편한 소설책 정도의 가로 길이와 두께를 가지고 있다. 고로 휴대하고 다니면서 읽기에 좋다. 실제로도 나는 이 책을 아침 저녁 지하철에서 2주 동안 다 읽었다. 한빛리더스 8기 2차 리뷰 도서 표지 내용적인 측면에서도 훌륭하다. 3판까지 어어져 오면서 저자들이 더 날카롭고 예리하게 기술면접에 필요한 핵심적인 내용들을 망라해 놓았다는 것을 느낄 수 있다. 굳이 기술면접을 위해서가 아니더라도 한권 안에 빠르게 컴퓨터 사이언스의 주요 핵심들을 훑기에도 적절하다. 3-8장에 이어지는 알고리즘 설명은 분량면에서는 당연히 알고리즘 도서와 비교할 수 없지만 기술면접에 특화된 핵심을 족집게처럼 집어서 요약해 주어 유익하다. 특별히 8장 “정렬”은  적은 분량 안에 다양한 정렬 알고리즘의 장단점을 분석해 놓고 있어 빠르게 복습하기에 용이하다. 늘상 혼동하기 쉬운 부분들에 대한 설명도 마음에 든다. 예를 들면 책 16장 “인자전달” 문제 중에서 다음과 같은 것이다.

아마 C 계열의 언어를 접해 본 사람은 위와 같이 함수의 인자로 전달되는 포인터 타입이 은근히 헷갈린다는 것을 공감할 것이다. 이처럼 책에서는 포인트를 잘 집어서 밀도 있게 내용들을 담고 있다. 물론, 이 책의 아쉬운 점도 있다. 기본적으로 책이 쓰여진 맥락이 미국상황이라는 점이다.  국내 IT 기업들도 기술면접을 보긴 하지만 미국과는 절차나 방법이 다소 차이가 있다. 이런 부분들을 감안하면서 읽어야 한다. 부록에서 제시하는 이력서도 마찬가지다. 물론 부록의 내용이 국내상황에 맞지 않는다는 점을 저자도 밝히고 있다. 이러한 부분은 번역서로의 한계라고 느껴진다. 결론적으로, 이 책은 기술면접에 대한 경험이 없는 사람이라도 책을 읽고 나면 문제가 어떤 식으로 나올지, 어떻게 준비할 지에 대한 감을 충분히 쌓을 수 있다고 생각한다. 구직이나 이직을 준비하는 것은 결국 개발자 자신의 역량을 쌓는 일이라고 생각한다. 따라서 이 책은 일회성으로 기술면접을 대비하는 용도를 넘어서 다양한 알고리즘을 분석적으로 활용하고 사용하는 언어의 특성들에 대해서 이해하는 등의 사고를 키우는데도 도움이 될 것이다.

이 글은 한빛 리더스 8기 활동의 일환으로 작성한 것입니다.

한빛리더스 8기