구글이 프로그래머를 뽑는 법…

입사하기 전 인터뷰(면접)를 할 때부터 구글은 뭔가 다른 회사라는 것을 알 수 있었습니다. 10년 쯤 전이긴 하지만, 삼성에서 면접을 본 경험이 있었는데 구글의 인터뷰는 이와는 전혀 다른 경험이었습니다. 구글은 들어가기 전부터도 벌써 사람을 정말 공들여 뽑고 잘 키우는 회사라는 생각을 들게 만들었습니다.

[구글이 원하는 인재]

1. 우선 구글은 skillset (기술) 보다는 problem solving ability (문제해결능력)에 더 중점을 두어 사람을 뽑습니다. 예를 들어 구글의 Irvine 사무실에서는 대부분 Java룰 사용하지만 저는 Java를 전혀 못하는데도 인터뷰를 할 수 있었고 인터뷰할 때에는 C/C++에 대한 면접만 봤습니다. 구글에서는 어차피 프로그램언어나 개별적인 기술들(skillset)은 5년마다 새로 배워야 하는 것들이라 이보다는 한가지 언어라도 확실히 이해하고 있는지, problem solving을 할 수 있는 전산학의 기초를 제대로 가지고 있는 지가 더 중요하다고 봅니다.

2. 구글은 전산학의 기초를 아주 중요하게 봅니다. 따라서 가장 중요한 인터뷰 질문들은 마치 학부의 data structure 과목 시험문제와 같습니다.

3. 구글은 코딩도 아주 중요하게 봅니다. 그런데 얼마나 넓게 아느냐보다는 얼마나 깊게 아느냐를 봅니다. 예를 들어 Java의 API를 많이 알고 있는 것보다는 Object Oriented 언어의 기본적인 개념을 얼마나 잘 이해하고 있는지를 봅니다.

[인터뷰 진행 방식]

1. 서류심사: 구글은 합격률이 1% 미만이라 어쩔 수 없이 서류심사에서 95%이상이 걸러 집니다.

2. HR (인사과) 전화 interview: 처음이자 마지막 non-technical interview로 경력 등에 대한 20분정도의 문답을 합니다. 일반적으로 면접때 많이 물어 보는 ‘왜 우리회사에 입사하느냐’/’10년후의 목표는 무엇이냐’ 등등의 질문들도 거의 없고 주로 어떤 일을 했는지, 어떤 경험을 가졌는지, 어떤 일을 하고 싶은지 등을 묻습니다.

3. 전화 인터뷰: 실제로 구글에서 일하는 Software Engineer가 전화면접을 합니다. 보통 2번 정도 하는데 질문은 자기소개 및 한 일들에 대한 것들은 간단하게만 묻고 이후로는 30분이상 data structure 및 programming에 대한 질문을 합니다. 종이와 연필을 가지고 써 가면서 문제를 풀어 대답해야 합니다. 문제는 보통 이런 식입니다 (google로 google interview questions라고 찾아봐도 예가 나옵니다 ^^):

  • integer operation으로 log를 구현하려면 어떻게 하는가? 이경우 총 연산의 수는?
  • 두개의 sort된 행렬을 merge하려면 어떻게 하는가? 이 경우 complexity는 어떻게 되는가?
  • C++ class의 static variable은 어떤 의미가 있고 어떻게 쓰이는가?

그런데 예상문제를 열심히 풀어 보는게 어느 정도 도움은 되지만 대입시험처럼 그걸로 합격할 수 있지는 않습니다. 그 이유는 뒤에…

4. On-site 인터뷰: 직접 구글 사무실에 가서 5시간 정도 인터뷰를 합니다. 중간에 인터뷰에 포함 안되는 점심시간이 있지만, 거의 쉴 새 없이 엄청난 체력전으로 치러 집니다. 모든 인터뷰는 technical한 내용만 합니다. 5명의 면접관이 한 명씩 면접실에 들어와 한 사람당 45분가량 인터뷰를 합니다. 인터뷰 내용은 전화면접과 비슷한데 programming의 기초에 대한 질문들을 간단히 물어 보고는 위의 행렬 merge 같은 문제를 냅니다. 문제를 풀면 제시한 해답의 complexity를 물어 보고는 이를 칠판에다 손으로 써서 구현하라고 합니다.

그런데 인터뷰의 핵심은 사실 정답을 맞추느냐를 보는 것이 아니라 문제를 푸는 과정을 보는 것입니다. 처음부터 잘 define되지 않은 문제를 주어 면접자의 문제를 정의하는 능력을 보고 또 면접자가 헤메고 있으면 면접관이 옆에서 도와 주며 푸는 과정을 보고, 해답을 제시하면 이보다 더 optimal한 방법은 없을지 찾아 보라고 합니다. 사실 정답이 하나가 아닌 문제들이기 때문에 이렇게 intensive하게, interactive하게 인터뷰를 하면 면접자의 실력이 드러날 수 밖에 없습니다.

구글은 사실 잘나가는 회사이기 때문에 구글의 philosophy는 긴가민가하는 사람은 안 뽑는게 낫다입니다. 못하는 사람을 뽑는 것보다는 잘하는 사람을 놓치는 게 낫다는 거죠 (사람을 해고하기 가장 좋은 시기는 채용하기 전이라는 격언도 있습니다 ^^). 하지만(!) 면접에서 한 번 떨어 진다고 하더라도 6개월만 지나면 다시 지원할 수 있도록 기회를 열어 주고 또 다시 지원하기를 권합니다. 저도 사실 인터뷰에서 떨어진 경험이 있습니다 ^^;

제 경험으로는 한국의 회사들이 구글처럼 공들여 사람을 뽑지는 않는 것 같습니다. 구글 수준의 엘리트들을 뽑는 것은 아니더라도 기본적인 data structure에 대한 이해가 있는지를 알아 보는 것은 중요하고 또 눈 앞에서 칠판에다가 코딩을 해 보라고 하는 것 역시 아주 중요합니다. (미국의) 작은 회사에서 인터뷰를 해 본 어떤 사람이 스펙이 꽤 좋은 사람 중에서도 아주 기본적인 수열 문제조차도 제대로 코딩하지 못하는 경우를 많이 봤다고 합니다. 물론 이를 위해서는 면접관의 능력 역시 중요하죠. 그래서 구글에서는 면접관에 대한 training 역시 따로 합니다.

물론 한국의 일반적인 소프트웨어 회사가 구글처럼 잘할 것 같은 사람들을 막 떨어 뜨릴 여유가 있는 건 아닐지 모릅니다. 취직하려는 사람은 일자리가 없다지만 뽑는 사람들은 뽑을 만한 사람이 없다니까요. 그래도 인터뷰를 제대로 하는 것은 중요합니다. 그래야 응시생들이 기초를 공부하려 하겠지요. 그렇지만 사실 사람을 잘 뽑는 것만큼 뽑은 사람을 잘 키우는 것도 중요합니다.

[뽑은 이후…]

구글의 좋은 점은 좋은 사람을 뽑은 후에 이들이 잘 성장할 수 있는 기회를 많이 준다는 것입니다. 프로그래밍에 대한 training도 많고 여러가지 교육의 기회를 줍니다. 또 유명한 80-20을 통해 자신이 하고싶은 일에 20%의 시간을 투자할 수 있게 해 줍니다.

제가 한국에 있는 회사에서 작성한 코드를 한 번 본 적이 있습니다. 그런데 코딩에 대한 회사차원의 체계가 전혀 없었고 프로그래머는 아니었어도 전산과 출신 직원이 작성한 코드였지는 간단한 optimization에 대한 이해도 없이.  지금 학교에서의 coding 교육이 어떤지는 잘 모르지만, 사실 깔끔한 코딩은 회사에서 체계적인 교육 및 시스템으로 뒷바침하지 않으면 나오기가 쉽지 않습니다.

한가지 더, 한국은 코딩에 대한 인식이 낮고 또 모든 분야에서 어느 정도 경력이 쌓이면 관리직으로 물러나거나 시스템 디자인에만 관여하는 것이 일반적이라 (개인적으로는 아주 큰 문제라고 생각합니다) 소프트웨어 회사에서 좋은 코드를 만들기 위한 체계적인 노력이 부족합니다. 한국회사에서보다는 미국회사에서 일반적인 미국회사에서보다는 구글에서 60세된 프로그래머를 더 쉽게 찾아 볼 수 있습니다.

앞으로 회사를 다니며 더 많이 배우겠지만… 사람을 공들여 뽑고 또 뽑은 사람에게 발전의 기회를 제공할 때에, 또 전산학의 기초와 좋은 코딩을 중요하게 생각할 때에 좋은 소프트웨어가 나온다는 생각입니다.

Advertisements

구글이 프로그래머를 뽑는 법…”에 대한 29개의 응답

  1. 김주환 박사
    좋은 글 감사합니다. 조성정, 권영희, 김영진, 그리고 한국의 조원규, 이충식, 강경원, Battulga, 그리고 최근에 김대환, 이정렬에 이르기까지 우리 랩에서 구글에 입사한 개발자들에게서 일관되게 듣던 말인데 김주환 박사가 잘 써주었네. Twitter로 연결해 놓아서 많은 한국 개발자가 방문할 것으로 예상됨

  2. 감사합니다. 잘 읽었습니다.
    결국 무엇이든 기초가 중요하다. 깊이가 중요하다라는 말씀 기억하겠습니다.

  3. 김 박사님, 참 오랜만입니다. 좋은 글 감사하고 열정이 부럽습니다. 원교수님으로부터 최근 구글로 자리를 옮겼다는 소식을 들었습니다. 연말 잘 보내시고, 새해에도 식지 않는 열정으로 계속 자극을 주시면 좋겠습니다. Have a Wonderful Holidays and Happy New Year!

  4. 현재 산업공학과에 재학중인 대학생입니다. 글 매우 잘 읽었습니다. 면접 과정이 보통 제가 들어온거랑 다르게 매우 생소했고 흥미로웠습니다. 면접 보는 것만으로도 큰 공부가 될 것 같은 생각이 드는군요. 후에 좀 더 창의적인 직업을 가지고 싶은데 역시 점수보다는 기본적으로 내제된 지식이 더 중요하단 생각이 듭니다. 저도 구글과 같은 회사에 입사하면 매우 재밌고 즐거울 것 같네요! 회사 가는게 기다려질지도 ! 지금은 제 공부에 충실하는게 중요하겠죠. 단지 시험을 위한 공부가 아니라 학문을 위한 공부가 될 수 있도록 노력 중입니다. 구글 입사 축하드리고 좋은 글 감사합니다.

  5. 핑백: top 100 blog | Lesvosnews.net

  6. 감사합니다. 좋은 포스트 도움이 많이 되었습니다.

  7. 좋은 회사 성장할수 있는 회사 나와 회사가 같이 성장할수 있는 회사

  8. 좋은 글 감사합니다.
    이 글을 보니 더더욱 열심히 공부에 매진해야겠다는 생각이 드는군요^_^

  9. 좋은 글 감사합니다. 인터뷰가 상당히 인상적이었습니다. 특히 인터뷰에서도 협업을 강조하는 부분이.. 구글이 다양한 사업을 진행할 수 있는 원동력이구나~ 라는 생각이 드네요.

  10. 핑백: 구글이 프로그래머를 뽑는법… | return true;

  11. 좋은 글 감사합니다.
    글을 잊을까봐서 제 사이트에 포스팅 합니다.

  12. 구글은 뭔가 다르군요~ 좋은 글 감사합니다.
    블로그에 포스팅했어요 “ ;

  13. 프로그래머를 꿈으로 갖고있는 사람으로서 잊고 살지 말아야할 문제인거 같습니다. 구글을 들어가던지 안들어가던지, 저 방식이 결국에는 프로그래머 문화와 사회의 기본이 되야 한다는 사실 다시 깨닫고 갑니다^^

  14. 글 잘 읽었습니다. 제 목표가 비웃을지는 모르겠지만, 외국의 경우 처럼 늙어도 엔지니어로 생활하고 싶다는 생각을 많이 가지고 있었는데, 이글을 보고 급 공감이 되었네요. ㅎㅎㅎ
    소소한 댓글이나마 달고 갑니다.

  15. 포스팅 너무나 감사합니다.
    앞으로 무엇을 어떻게 준비해야 할지가 구체화된것 같습니다.

  16. 포스팅 잘봤습니다..
    죽는날까지 프로그래밍을 하고 싶은 저로써는 60세 프로그래머의 존재는 상당히 인상적이네요. 십몇년간을 국내 SI업계에서 개발자로 일해왔지만, 나이를 먹을수록 고용이 불안해지는 국내의 현실보다, 순수한 개발자로서의 능력만을 바라보는, 구글같은 실리콘 벨리 기업에서 일해보고 싶네요. 이 글을 참고삼아 꼭 도전을 해봐야겠네요 ^^ 감사합니다~

  17. 감사합니다. 잘 읽어보았습니다.

  18. 내가 20년전 일본sw사에서 SE로 있을때 도 정년 퇴직때 까지 프로그램만 하고 퇴직 후도 계약직으로 고용하곤 했답니다.

  19. 안녕하세요.~ 인터뷰 잘보았습니다.
    구글에 입사하신 것 정말 축하드립니다.. 프로그래머로써 저도 꼭 일해보고싶은 꿈에 직장에 어떤식으로 준비하셨는지 정말 궁금하네요. 후배들을 위해서 한 마디 말씀 해주실수 있을까요?

    • 1. 알고리듬과 Object Oriented 언어에 대한 기초를 다시 한 번 점검해 보세요. 본인이 잘하는 한가지 언어(C++, Java 또는 Python이면 더 바람직)에 대해 좀 더 확실히 알고 있는지 등등도…
      2. 구글에서 Google Interview Questions를 찾아 읽어 보시고, 직접 칠판에 프로그래밍을 하는 것도 연습해 보시고…
      3. Open Source 로 있는 구글 코드 (예를 들어 chrome source code) 등을 한 번 읽어 보세요. 그리고 이 사람들은 왜 이렇게 코드를 짰는지도 생각해 보시고…
      4. 정말 구글에 오고 싶다는 생각을 가지고 구글의 문화나 철학 등등에 대해도 많이 알아 보세요… 구글 제품도 많이 써보고 블로그도 읽어 보고…
      5. 쪽집게 과외나 지름길은 없습니다. 구글에서는 정말로 공들여 회사에 도움이 될 사람을 뽑는 것이니 본인이 정말로 구글에 도움이 될 수 있는 사람이 되도록 스스로 노력하고 기초를 닦아 나가는 것이 바로 제대로 준비하는 방법입니다.

      화이팅! ^^

  20. [김재인님의 댓글을 대신올립니다]

    안녕하세요? 유용한 글 정말 잘 보았습니다.
    저는 컴퓨터 공학과 관련 없는 비전공자입니다.
    다름이 아니라 조언을 얻고자 글을 남깁니다.
    저는 기술을 중요시 생각하여, 공부하기 시작했습니다.
    처음에 막막했으나, 무언가 만들겠다 하고 목표지향적인 접근으로 공부를 했습니다.
    그렇게 Python과 node.js로 웹앱을 몇 번 만들고 나서, 다른 것을 만들려니 엄두가 안났습니다.
    왜냐하면 높은 학습 비용과 아웃풋 대비 효용이 낮을 것 같기 때문입니다.
    그렇게 개발하고 싶은 욕구가 뚝 끊겼고, 하고 싶은 분야도 없습니다.
    제가 지금까지 한 목표지향적인 접근 방법이 올바른 방법인지 의문을 품었습니다.
    한계를 느끼면서 어떻게 할지 몰라 하는데, 선생님의 글을 보고 결국 전산학 기초가 없어서 그런게 아닌가 싶습니다. 만약 전산학 기초라면 그 것이 자료 구조와 Object orentied언어만을 의미하는지도 궁금합니다.
    이에 대해 선생님의 생각을 구하고 싶습니다.
    가능하시다면 답변을 제게 메일로도 보내주실 수 있으신지 궁금합니다.
    시간 나실 때 답변 부탁드립니다.
    감사합니다.

    • [이에 대한 제 답변입니다]

      구글에도 비전공자들이 있습니다. 하지만 코딩(프로그래밍) 실력은 전공자들 못지 않습니다. 좋은 코더가 되기 위해서는 전산학 기초, 즉 자료구조와 컴퓨터의 구조, 컴퓨터 언어에 대한 이해가 있어야 합니다.

      저는 80~90년대에 코딩을 배웠기 때문에 지금과 같은 편한 환경이 아닌, 예를 들어 점 하나 잘못 찍은 버그 하나를 찾기 위해 밤을 새웠습니다. 물론 지금 전산학을 배우는 학생들도 똑같지는 않겠지만 비슷한 노력을 들이고 있다고 믿습니다. 같은 노력을 들이지 않고 같은 코딩 능력을 기대할 수는 없다고 생각합니다. 다시 말씀들여서 fluent한 코더가 되기 위해서는 Phython과 node.js로 웹 앱을 몇 번 만든 것으로는 부족하다는 것이죠.

      전산학에 필요한 ‘기술’은 높은 학습 비용을 들여야 얻을 수 있는 것이고 또 높은 학습비용을 들이면 얻을 수 있다고 봅니다. 점점 복잡한 프로그램들을 짜면서 또 계속 좋은 코드들을 접하고, 항상 “왜 이 사람들은 이런 식으로 프로그램을 짰을까”하는 생각을 하며 노력을 들이면 비전공자라 하더라도 좋은 코더가 될 수 있다고 생각합니다. 또 들인 만큼의 노력에 대한 보상이 있을 것입니다. 단 본인이 열정이 있고 각오가 있어야 하지 않을까요…

  21. 정말 좋은 글입니다.
    미래 좋은 프로그래머가 되고 싶은 저로는 두고두고 봐야겠습니다.

  22. 오늘 구글에서 진행하는 코딩야학을 신청했습니다.
    나이가 50이 넘어 프로그래밍을 해보려고 합니다.
    기초와 지식이 전혀 없는데 프로그램의 개념을 익히려고 하려면 어떻게 진행하는 것이 좋을지 조언을 구합니다.
    추가로 VR 비즈니스를 집중하고 싶은데 데이드림이란 플랫폼이 나왔는데 여기에 맞는 앱을 만들려면 어떻게 무엇을 해야 할까요?
    바쁘실텐데 시간나시면 회신 부탁드립니다.
    감사합니다.

    • 프로그래밍에 대한 개념을 익히는 것이 물론 중요하지만, 개인적으로는 그에 앞서야 할 것은 부딪쳐 보는 것이라고 생각합니다. 이런 저런 간단한 프로그램들을 만들어 보면서 모르는 것이 있으면 혼자서 고민해 보고 인터넷에서 찾아 보고 하는 노력의 시간들이 먼저 필요한 것 같아요. 그 이후에 이론적인 내용들을 들여다 봐야 그 내용을 말 그대로 ‘체득’할 수 있습니다. 늦게 시작하시는 것에 응원을 보냅니다. 하지만 그만큼의 노력은 필요할 것입니다. 여기 물어 보신 것만으로도 노력을 하시는 모습을 볼 수 있으니까 잘 하실 수 있을 거라고 믿습니다. ^^

      Daydream은 써 본적은 없지만, 대충 인터페이스를 보니까 역시 그냥 부딪쳐 보면 쉽게 쓸 수 있을 것 같네요. 관련 장비나 프로그램들을 실제로 많이 써 보면서 원리를 상상해 보는 게 도움이 되지 않을까 싶네요..

  23. 네 답변 감사합니다. 원리를 상상해 보라는 말씀 생각을 많이 하게 하네요..^^

  24. 구글도 학벌을 보나요? 요즘 블라인드 채용이라는 말이 나오긴 해도 아직까지 우리나라는 출신대학을 많이 따지는 편이라 구글은 어떤지 궁금합니다.

    • 회사와 관계 없는 제 개인적인 의견임을 전제하고 말씀드리겠습니다:
      제가 아는 한에서는 구글은 철저히 실력 위주로 채용합니다. 하지만 일년에 백만명 이상이 지원을 하기 때문에 그 중에서 면접을 볼 사람을 뽑으려면 서류 심사로 상당수를 걸러 내야 하고 경력이 없다면 이 때 출신학교와 학점 등이 기준이 될 수 있습니다. 하지만 학벌이 아무리 좋아도 실력이 없으면 떨어 지고, 반대로 학벌이 아무리 안 좋아도 (제가 알기로는) 특별한 경력이 있다거나 (예를 들어 유용한 앱을 개발했다거나 오픈소스프로젝트에 기여했다거나 수상경력이 있다거나 중견기업에서 좋은 경력이 있다거나 직원의 추천을 받았다거나 등등등) 한다면 전화면접을 할 수 있는 기회가 주어 질 수 있습니다. 전화면접부터는 철저히 실력 위주입니다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중