면접 후기

프로그래머라는 기술직에 종사하면 내 나이쯤 되면 한번 쯤 생각해보는 이직, 나역시 예외일 수 없다. 표면적으로는 새로운 일에 대한 도전, 현재 업무에 대한 매너리즘, 자기 발전등을 위해서, 그리고 솔직히 좋은 연봉과 처우를 위해서 이직을 고려하게 된다. 정말 실력있는 프로그래머라면 여기저기서 모셔가려 하겠지만 그건 일부분일테고, 나와 같은 평범한 프로그래머라면 두손 두발로 열심히 구인 정보를 찾고 문을 두드려야 한다. 최근 2~3달간 국내 대표적인 기업들에 지원서를 내면서 겪었던 경험은 이직을 처음 시도한 나에게 많은 충격과 고민을 안겨주었다.

보통 기업들의 채용과정은 서류심사, 1차면접, 2차면접의 절차를 거치게 된다. 1차는 기술 면접이고 미리 온라인으로 코딩테스트를 하거나, 전화로 간단한 질문을 하는 경우도 있다. 몇군데 서류 및 온라인 코딩 테스트등을 통과하면서 자신감이 올라간 상태라 그런지 1차 기술면접도 자신이 있었지만 몇곳은 불합격되었다. 뭐 최종 합격한곳이 있어 결국 이직은 성공했지만 불합격 된 원인을 파악하기 위해서 기술 면접을 통해 경험한 것들을 좀 정리해 본다.

기술 면접은 보통 문제를 주고 손 코딩을 시키거나 특정 기술 및 원리등을 질문한다. 첫번째 손코딩의 경우는 그리 어렵지 않은 수준의 문제들을 내는데, PC로 디버깅이나 테스트를 할 수 없기 때문에 코드를 적기전 문제 파악 및 해결 방법을 대략적으로 머리속으로 생각해 결론을 내야 한다. 여기서 충격은 정말 쉬운 문제인데 갑자기 풀려고 하면 생각이 하나도 나지 않는 것이다. 이것보다 더 어려운 문제도 열심히 고민해서 풀었는데 쉬운 문제를 풀지 못할때는 정말 얼굴이 시뻘게 진다. 우선 면접은 사람이 평가되다보니 나같은 경우 굉장히 긴장해서 머리도 잘 안돌아가고 실수도 연발 하게 되더라. 그런데 면접이 끝나고 그 문제를 곰곰히 생각해보았지만 쉽사리 답을 찾을 수 없었다. 그러다 갑자기 유레카! 아 이렇게 하면되는 구나하고 솔루션이 떠오른다. 왜 이럴까? 변명일 수도 있겠지만 쉬운 문제라는게 사실은 나름 고민해서 나온 최상의 솔루션이라는 것이다. 그저 아 이런 문제는 이렇게 풀면 되는구나하고 코딩하번 하면서 익혔지만 수년동안 그 코드을 생각할 일이 없어지면서 머리속에 그 방정식(아이디어)은 날라가 버렸다. 그리고 그 문제를 해결하기 위해서 처음부터 수많은 생각을 시도해야 했다. 아마 일반적인 면접관들은 문제를 풀고 못풀고만 중요할 것이다. 왜 저렇게 쉬운 문제를 이렇게 오래 생각할까? 실력이 형편없군. 하며 속으로 생각할지도 모르겠다. 사실 이쪽 업계에서 기술 면접시 물어볼 수 있는 유명한 마치 기출 문제라도 되는 듯한 것들을 인터넷을 검색하면 쉽게 찾을 수 있다. 그럼 미리 기출문제를 풀어보면서 기술면접에 준비해야 되는데 이걸 안한 너의 잘못이라고 말할 수 도 있겠지만, 난 그러고 싶지 않았다. 미리 준비하는것이 나쁜것은 아니지만 평소에 내실력이 이렇다라는 것을 보여주기 위해서는 준비없이 평상시의 상태로 가야 한다는것이 내 생각이다. 평소에서 이것저것 문제를 많이 풀는 습관이 있다면 그자체가 실력으로 표출되기 때문이다. 그리고 한가지 코딩 면접에 바라는 것은 꼭 해답을 제시하기보다는 문제를 풀기위해서 이런 저런 방법을 시도해 보는것, 어떤 생각들을 했었는지 들어봤으면 한다. 비록 그 생각 틀렸다 하더라도 말이다. 결국 회사에서 정답이 없는 문제들을 해결하기 위한 시도들이 중요하기 때문이다. 이렇게 말하지만 프로그래머서라면 쉬운 문제들을 풀지 못한 자신도 한번 되돌아 봐야한다. 자 이제 두번째 기술 질의 응답의 경우를 살펴보자. 보통 경력 지원을 하는 곳이 이전 커리어와 연관된 팀에 지원을 하게 되고 그쪽 방면에서 사용하는 기술에 대해서 많이 알고 있어야 한다. 하지만 내 경우는 현재 있는 팀의 업무를 하는 곳은 몇군데 없고 업무 자체에 흥미를 잃어버린 상태라 직무를 변환하고 싶었다. 그래서 현재 업무와 다른 새로운 직무에 지원을 하게되었다. 뭐 프로그래머라는 전체 도메인을 봤을 기술 면접 이전까지는 무리 없이 진행이 되었다. 하지만 기술 면접에서는 물어보는 기술들은 아직 내가 현업에서 사용해보지 못한 것들도 있었고 정말 평소에 업무에는 무시하고 넘어가는 기술의 세부 스펙등 질문의 유형은 다양했다. 때로는 db, network, complier, os 등 넓게, 때로는 network tcp 내부 스펙 옵션등 한분야로 깊게, 모르면 모르겠다고 말해달라기에 당당하게 모른다를 남발하게 되었다. 여기서 참 모르는게 많구나~ 참 알아야 될것도 많구나~ 라는 이중적인 생각이 들었다. 그리고 모르는건 구글링해서 알아보면 안되요? 라고 반문도 하고 싶었다. 내가 블로그를 사용하는 가장 큰 이유가 시간이 지나고 사용하지 않게 되면 잊어버린 경우 블로그에서 쉽게 찾아보기 위한것이다. 물론 프로그래머라면 기본적인것들은 머리속에 넣어두어야 하지만 내 머리의 용량 한계가 있어서 그런지 LRU(LeastRecentlyUsed) 캐싱 방식으로 계속 사용하지 않는 지식은 머리속에서 말끔히 지워버린다. 뭐 그래도 모르는것보다는 아는것이 좋으니 많이 알고 있는 다른 지원자들에게 밀렸던것 같다. 평소 무심코 흘려보냈던 os, network, db 등에 대해서도 다시 한번 자세히 파고들어야 할것 같다.

뭐 변명을 하고 싶어서 주절주절 썼다고 생각도 들지만 나름 사람한명 뽑는것이 쉬운일이 아니니 면접관 입장에서도 많은 고민이 있어야 할것 같다. 그리고 꼭 이직을 위해서가 아니라 긴장감을 주기 위해서 다른 업체 사람들 만나서 평가도 받아보고 이런저런 기술얘기도 할 수있다는 측면에서 면접을 한두번 보는것도 좋은것 같다. 이제는 새로운 업무를 해야되니 또 열심히 달려봐야지~^^

comments:

댓글 쓰기