MS Bing에서의 인턴을 마치고

유학생활 : 2010. 9. 12. 07:34   By LiFiDeA
최근에 3개월간의 인턴 생활을 마쳤습니다. Bing서치와 MSR Clues그룹에서의 프리젠테이션을 통해 많은 사람들의 피드백을 받고, 짐을 챙기다보니 제 사무실이 있는 Bellevue에 처음 왔을때가 생각났습니다. 그때는 낯선 환경과 일에 대한 기대와 불안감이 가득했는데, 어느새 이곳에서의 생활에 정착한 느낌에 감회가 새로웠습니다. 이번 글에서는 인턴 기간동안 느낀점에 대해 써볼까 합니다.


박사 졸업 후 진로 : 회사냐 학교냐

인턴십은 많은 부분 일 자체보다는 일을 통한 배움에 의의가 있을 것이며, 그 중 가장 중요한 부분은 아마도 향후의 진로에 대한 더 나은 의사결정(informed decision)을 내리는 데 있을 것입니다. 지난 포스팅에서 언급했듯이, 제게 가장 중요한 결정은 향후에 산업걔(industry) 혹은 학계(academia)에 진출하느냐였습니다.  물론 인턴십 한번으로 회사 생활의 모든 것을 파악할 수는 없지만, Bing과 MSR에서의 경험은 많은 것을 명확하게 해 주었습니다. 저의 깨달음을 요약하면 다음과 같습니다.
회사는 제한된 환경에서의 보호를, 학교는 자유로운 환경에서의 책임을 제공한다.
처음 회사 생활을 시작했을 때, 실 사용자의 데이터를 가지고 마음껏 실험을 할 수 있다는 사실만으로 매일 매일이 흥분의 나날이었습니다. 마이크로소프트라는 큰 조직이 주는 안정감과 지원, 그리고 보상도 빼놓을 수 없는 부분입니다. 하지만 초기의 환상에서 조금씩 벗어나면서 회사라는 환경에서 근무하는 연구자들이 받는 제약이 눈에 들어왔습니다. 연구 프로젝트를 선택하고, 진행하고, 결과를 발표하는 모든 과정에서 회사의 정책과 우선순위를 먼저 고려해야 하기 때문입니다. 물론, 자신과 철학을 공유하는 조직에서 일을 한다면 이는 별 문제가 되지 않겠지만, 어떤 경우에도 학자로서의 독립성을 희생해야 하는 부분이 있을 것입니다. 

반면에 학계에서의 생활은 많은 부분 스스로의 선택과 책임에 따라 이루어집니다. 신임 교수나 연구원으로서 자신의 관심사에 부합하는 펀딩(grant)을 따 내고, 이를 같이 수행할 협력자들과 학생을 구해야 합니다. 자신이 선택한 일을 뜻이 맞는 사람들과 할 수 있다는 것은 분명 매력적이지만, 이 과정을 모두 스스로 해야 한다는 것은 엄청난 부담이기도 합니다. 미국에서 신입 조교수들이 대부분 엄청난 스트레스와 과로에 시달리는 것은 우연이 아닐 겁니다. 

아울러 학계에서의 실적은 퍼블리케이션 등을 통해 투명하게 공개되므로, 학계에서 회사로 자리를 옮기기는 비교적 용이하지만 그 반대는 좀더 힘들어 보인다는 점도 있습니다. 이러한 사항까지 고려한다면, 만약 연구자로서 자신의 비전을 실현할 수 있는 회사를 찾을 수 있다면 그곳을 선택하겠지만, 그게 아니라면 학교에 자리를 잡는 것이 낫다는 생각입니다. 학자로서의 자유와 독립성을 보장받는 것이 장기적으로는 더 중요해 보이기 때문입니다. 절충안으로는 Microsoft Research등의 산업체 연구소에 자리를 잡는 방법도 있습니다. 

성공적인 인턴을 위한 조언

다음으로, 인턴 생활을 더 잘 하기 위해 염두에 둘 사항입니다. 우선은 맨토(상사)를 잘 만나는 것이 중요한데 (선택의 여지가 있다면), 맨토의 개인적인 능력과 스타일도 중요하지만, 회사에서 어느 정도의 위치에 있어야 인턴으로 있는 자신에게 필요한 자원(머신, 데이터 등)을 구해주고, 잡무 등에서 보호해줄 수 있습니다. 

다음은 인턴 기간동안 수행할 프로젝트의 선택입니다. (프로젝트가 주어지는 경우도 있지만, 몇 가지 중에 선택할 수 있는 것이 보통입니다.) 3개월 이라는 비교적 짧은 기간 동안 어느 정도의 성과가 나올 수 있는 적당한 크기와 난이도의 일을 선택하는 것은 기본이며, 더 중요한 점은 프로젝트에 필요한 자원을 얼마나 쉽게 구할 수 있느냐입니다. 저의 멘토는 항상 이렇게 말했습니다.
Don't choose a project unless you have the data ready at the 1st day of your internship
실제로 주변에서 선택한 프로젝트의 데이터가 준비되지 않아 한달 가량을 허비하는 것을 보았습니다. 3개월이라는 짧은 기간에 문제 정의 및 데이터 분석, 해결책 도출 및 정리 발표가 이루어져야 하는 것을 고려하면, 착수에 오랜 시간이 걸리는 프로젝트는 피해야 할 것입니다. 다른 고려사항은 맨토 및 자신의 팀이 얼마나 해당 프로젝트에 관심을 기울이느냐입니다. 프로젝트가 다른 사람들의 관심사에 부합할 경우 더 많은 지원을 받을 수 있기 때문에, 인턴 기간에 결과를 내기가 용이해집니다. 또한 인턴 기간 이후에도 다른 사람들이 이를 계속 수행할 수 있다는 장점도 있습니다.

저의 경우에는 실시간 검색(real-time search)라는 토픽에 관심이 있었고 실제로 이를 선택할 수 있었지만, 위 사항을 고려하여 다른 프로젝트를 선택하였습니다. 결과적으로 필요한 데이터를 매우 쉽게 구할 수 있었고, 맨토 및 팀의 지속적인 지원을 받을 수 있었기에 올바른 선택이 아니었나 합니다. 인턴 생활을 통해 졸업이 앞당겨진 것은 아니지만, 회사에 의미있는 기여를 할 수 있었고, 새로운 분야의 연구 경험을 할 수 있었기에 만족스러웠습니다.

글을 마치며

3개월이라는 기간은 새로운 환경에 적응하기에도 바쁜 시간입니다. 하지만, 학교 생활과는 전혀 다른 회사에서의 업무 경험은 많은 것을 느끼게 합니다. 늦어도 어느 정도 학교 생활에 익숙해지는 3~4년차에 꼭 지원해볼 것을 권합니다. 

3년전 처음에 유학 생활을 시작했을 때, 제게는 여러모로 큰 변화가 있었습니다. 한국에서 미국으로, 학부에서 대학원 과정으로, 전자 전공에서 컴퓨터 전공으로, 마지막으로 가족과의 삶에서 자취로 바뀌었습니다. 처음에는 이런 변화가 버겁게 느껴졌었지만, 선택의 기로에서 낯설더라도 더 진취적인 길을 택한 것이 더 많은 배움을 가능하게 하지 않았나 합니다. 

이번 인턴십을 시작하면서도 꽤 많은것이 바뀌었습니다. 미국 동부에서 서부로, 학교에서 회사로, 교수님과 일하던 생활에서 상사(여기서는 mentor라고 부릅니다)와의 업무로, 데스크톱 및 개인 정보의 검색에서 웹 검색이라는 주제로  바뀌었습니다. 이제 한달을 보냈지만, 그동안 배우고 느낀 것이 지난 3년간의 그것에 필적한다는 느낌입니다. 여기서는 그 중 몇가지를 적어보려 합니다.

'틀'이 주는 편안함

처음에 대학원을 선택한 이유중 하나는 '자유로움' 이었습니다. 병역특례로 회사경험을 하면서, 하루 종일 사무실에 앉아 '내 일' 보다는 '회사 일'을 해야 한다는 것이 갑갑했었나 봅니다. 미국 대학원에서 원하는 공부를 하면서는 비로소 관심 분야의 프로젝트를 하게 되었습니다. 처음에 교수님의 신뢰를 얻기까지는 조금 시간이 필요했지만, 그 이후에는 일을 하는 시간과 장소, 방식에 있어서도 거의 무한의 자유를 부여받았습니다. 어찌보면 예전에 꿈꾸던 삶에 다가간 것입니다. 

회사 생활을 다시 시작하면서부터는, 이런 자유에 길들여진 자신이 다시 회사 생활이라는 틀에 적응할 수 있을까 하는 고민이 있었습니다. 하지만 출퇴근 시간 및 프로젝트의 결정 및 진행이 개인의 책임하에 이루어지는 여기서의 생활은 그다지 답답하지는 않았습니다. 오히려 모든 것을 스스로 결정하고 수행하던 예전에 비해, 조직에서 부여하는 어느 정도의 틀에 따라 규칙적으로 이루어지는 이곳 생활이 훨씬 편안했습니다. 학교에서는 한순간도 연구에 대한 생각이 머리를 떠나지 않았으며 스스로 많은 결정을 내려야 했지만, 여기서는 많은 일들이 이미 결정되어 있으며 업무시간에는 열심히 하다가도 퇴근 후에는 회사 일이 머리를 자연스럽게 떠나기 때문입니다.


학계와 업계에서의 연구

검색이라는 분야에 뛰어든 것도 3년이 지났지만, 그동안 학문적인 관점에서만 접근해 왔고, 제 주변에도 모두 그런 사람들이었습니다. 여기 와서 달라진 점은, 업계에서 잔뼈가 굵은 검색 연구자 및 개발자들을 많이 접할 수 있었습니다. 분야의 특성상 학계와 업계의 연구가 명확하게 분리되는 것은 아니지만, 그 둘의 초점은 꽤나 다르다는 것을 발견하였습니다. 

우선 학문으로서의 검색은 고정된 질의어(query) 셋에 대하여 베이스라인 시스템 대비 몇 퍼센트의 성능향상을 가져오는 알고리즘 및 피쳐를 개발하는 것, 그리고 더 중요하게는 왜 이들이 잘 동작하는지를 밝혀내는 것을 목표로 합니다. 하지만 이곳에서의 연구는 끊임없이 변화하는 환경에서 굉장히 크고 복잡하며 이미 엄청난 노력이 집약된 상업용 검색 엔진을 대상으로 하기에, 학계에서처럼 단순한 지표 몇개로 평가하기 어려운 점이 있습니다. 또한 사용가능한 데이터의 양이 제한된 학계에 비해, 실 사용자의 모든 활동이 기록되는 이곳의 환경에서는 실 사용자의 반응에 근거하여 의사결정을 내리는 것이 용이합니다. 

요약하면 학교에서의 연구는 Why에, 여기서의 연구는 How에 초점을 맞추며, 이런 차이가 업계에서의 연구를 과학(science)보다는 공학(engineering)에 가깝게 합니다. 수많은 피쳐와 검색 모델이 개발 및 사용되지만 왜 그것이 동작하는지는 두번째 문제입니다. 엄청난 양의 데이터가 쌓이지만, 이러한 데이터의 새로운 활용법을 찾기 위해 고민할 여유는 별로 없습니다. 학교에 있으면서 실제 사용자와 유리된 연구 환경에 답답함을 느꼈었지만, 이런 공학적 접근을 보면서 학문으로서의 검색 연구가 갖는 가치를 돌이켜보게 되었습니다. 

마치며

아직 한달이 갓 넘은 회사 생활에 대한 결론을 내리기는 쉽지 않지만, 어쨌든 잘 왔다는 생각이 듭니다. 회사 진학을 계획중이라면 맛보기 및 네트워킹을 위하여, 학계를 꿈꾸는 사람이라도 자신의 선택에 대한 확신을 갖게 해주는 계기가 될 것입니다. 이공계 대학원생의 여름 인턴, 선택이 아닌 필수입니다!

며칠 전 인턴 지원에 대한 언급을 했었는데, 여러 회사와 8번의 인터뷰 끝에 최근 Microsoft Research Redmond에서 인턴을 하기로 결정하였습니다. Bing Search Engine의 검색 모델을 담당하는 팀이며, 제가 맡을 프로젝트는 최근 많은 이슈가 되고 있는 실시간 검색(real-time search)의 성능을 높이는 일입니다. 

미국 대학원 박사과정의 리서치 인턴을 간단히 소개하자면, 기업 연구소에서 주어진 기한내에 (주로 12주) 팀의 일원이 되어 연구 프로젝트를 완수하는 일입니다. 실제 연구원들과 동등한 자격으로 일을 하며, 대체로 결과를 퍼블리시하는 것도 가능하기 때문에 대학원생 입장에서는 상당히 매력적인 조건입니다. 물론 일반 기업에서와 마찬가지로 향후 입사에도 도움이 됩니다. 

인턴 선발 과정은 시작부터 마무리까지 실제 채용과정의 축소판이라고 할만하며, 결과에 관계 없이 참으로 많은 것을 배울 수 있기 때문에 이공계 학과에 유학 중이신 분들은 꼭 해보실만한 일입니다. 기업 연구소에서 어떤 사람을 원하고, 그런 사람을 가려내기 위해 어떤 잣대를 사용하는지 느끼실 수 있기 때문입니다. 

또한 대부분 박사과정 이후에 학교냐 회사냐의 고민을 하게 되는데, 인턴 과정을 통해 '회사'를 느끼고 나면 좀더 균형있는 판단이 가능할 것입니다. 학교에만 있다 보면 웬지 기업 연구소에 끌리게 마련인데, 주변에서 인턴 생활 이후 기업 연구소에 대한 환상을 깨고 학계쪽으로 진로를 확정하는 경우도 자주 보았습니다. 앞으로 인턴 지원을 준비하는 분들에게 도움이 될 수 있도록 전형 과정을 간단히 정리해 보았습니다.

서류 전형
인턴 지원을 공식적으로 시작하기 위해서는 주로 온라인 폼을 작성하게 됩니다. 많은 경우 다른 채용 및 장학급 지원과 마찬가지로 교수님의 추천서가 필요합니다. 여기서는 연구 실적이 주된 평가기준이 되겠지만, 역시 많은 경우 내부 인력의 추천을 통하여 인터뷰 대상자가 선정됩니다. 또한 연구 계획서를 작성하게 되는데, 자신의 연구 경험과 관심사를 요약하면서도, 관심사를 지나치게 specific하게 쓰지는 않는 것이 요령입니다. 예컨데 저는 'All areas of information retrieval, with recent work on personalized search, desktop search, search with semi-structured data, and search over multiple document types. '이라고 적었습니다. 

인터뷰
구글이나 마이크로소프트의 인터뷰는 난해하기로 이름이 높습니다. 구글은 9단계의 인터뷰를 하는 것으로 알려져 있고, 주로 문제해결력을 측정하는 마이크로소프트의 인터뷰 질문은 으로도 나와 있죠.  이번에도 재미있는 질문을 많이 받았는데, 그 중 기억에 남는 몇가지를 저의 답변과 함께 소개하겠습니다. 
질문 : 검색 엔진의 인덱스 크기를 어떻게 측정하겠습니까?

답변 : 검색 엔진에 질의를 던져 리턴되는 문서의 개수를 측정한다. 이때, 질의어로는 'the'와 같은 모든 글에 쓰이는 단어(stopword)가 좋다. 그 이유는 가장 많은 문서를 포함시킬 수 있으며, 특정 주제에 관한 글만 샘플링하는 것을 막을 수 있기 때문이다.  즉, 통계에서 말하는 unbiased estimator가 되는 것이다.

질문 : 제한된(constant) 공간의 메모리를 가지고 임의의 배열을 랜덤하게 섞는 방법은 무엇입니까?

답변 : 링크로 대신합니다.
또한, 각 그룹에서 진행되는 프로젝트를 간단히 설명하고, "당신이라면 어떻게 하겠습니까"를 묻는 질문도 자주 받았습니다. 이런 질문에 대답하기 위해서는 평소에 논문을 읽으며 '나라면 이 문제를 어떻게 풀었을까' 하고 생각해 보는 연습이 유용할 것 같습니다. 마지막으로, 대부분 인터뷰에서 Massively Parallel Processing (Hadoop / MapReduce)에 대한 경험을 물었는데, 그만큼 이 분야 종사자들에게는 필수 소양이 된 듯 합니다. 

마치며
예전에 컨퍼런스를 다녀와서 새로운 세상에 눈을 뜬 느낌이었는데, 이번 인턴 역시 색다른 경험이 될 것 같습니다. 그동안 검색 연구를 하면서 실제 사용자 데이터를 다루는 환경에 대한 갈증이 있었는데, 이번에 해소하고 돌아오려고 합니다. 레드몬드 인근 지역은 여름 날씨가 참 좋다고 하더군요. 인턴 생활에 대해서도 회사 규정에 저촉되지 않는 범위에서 종종 포스팅하겠습니다.

추가 : 마이크로소프트 면접에 대해 잘 정리된 자료가 있어 소개합니다.