Q&A. Prerequisites for Good D.Scientists
인턴십 인터뷰가 거의 끝나갈 무렵 현타가 왔다. 지원자에 대한 나의 평가는 온당한가?라는 의문이 문득 들었다. 아무리 객관적이려고 해도 평가라는 게 완전한 객관성을 담보할 수 없다. 나는 괜찮게 봤는데 다른 면접관들은 별로라고 한다. 그 반대의 경우도 흔하다. 모두가 좋다고 하거나 모두가 아니다고 하는 경우는 마음이 편한데, 의견이 엇갈리면 심적으로 미묘한 갈등이 생긴다. 내 돈으로 월급을 준다거나 직급이라도 있어서 내가 책임질 수 있으면 내 주장을 더 강하게 내세우겠지만, 그렇지 않기 때문에 의견을 포기하는 경우가 흔하다. 나를 아는 또는 같이 면접에 들어간 이들이 이걸 보면 동의하지 않을지도 모르겠으나 누군가 이 지원자를 합격시켜야 한다고 했을 때 탈락 의견을 내지도 않았고, 탈락시키려는 걸 굳이 합격으로 고집하지도 않았다. (내가 케어 하고 싶은 지원자/합격자에 대한 욕심은 은근히 때론 노골적으로 드러낸 것이 여러 번이지만 내게 배당되지는 않더라. 내가 케어했다고 더 나은 인재가 되는 것도 아니고, 자신의 운과 명, 그리고 노력으로 성장하는 거겠죠.)
이런 번뇌가 이어지는 가운데 그러면 내가 뽑고자 하는 지원자는 어떤 사람인가?라는 물음으로 이어졌고, 결국 좋은 데이터 사이언티스트는 어떤 사람인가? 란 물음으로 이어졌다. 좋은 데이터 과학자를 잘 정의할 수 있을까?
본론에 들어가기 전에, 나는 좋은 데이터 과학자일까? 보통 데이터 과학자가 갖춰야 할 기술로 1) 수학, 통계 및 알고리즘 지식, 2) 프로그래밍 스킬, 그리고 3) 도메인/비즈니스 지식을 꼽는다. 나는 언어에 매우 취약하다. 초등학교 (죄송. 실은 국민학교다) 때 가장 못했던 과목이 국어였다. 중학교에 들어가니 영어를 배우는데 못하는 과목이 하나 더 늘었다. 고등학교에선 제2외국어를 배우기 시작하니 못하는 것 리스트는 더 길어졌다. 어릴 때부터 한자는 좀 외웠다고 자신했는데, 고3 이후로 한자를 거의 사용하지 않아서 보인 이름 석자를 제외하면 제대로 적을 수 있는 한자도 없다. 공대에 진학하니 모두 컴퓨터 프로그래밍 언어를 배워야 했다. 프로그래밍은 영어나 일본어보다 더 넘기 힘든 산이었다. 지금도 필요할 때만 겨우 필요한 정도만 코딩한다. 대학(원)에서 데이터 분석이나 머신러닝 관련 과목들을 들으면서 나는 산수 능력이 다른 것에 비해 조금 더 나았을 뿐 수학을 잘하는 것이 아님을 깨달았다. 모국어인 한국어를 못한다. 영어도 싫어한다. (대학 졸업 요건에 토플 550점 커트라인이 있었는데, 졸업 직전에 겨우 넘겼다.) 컴퓨터/기계 언어인 프로그래밍 언어도 못한다. 자연을 이해하고 표현하는 언어인 수학도 못한다. 데이터 과학자의 스킬 중에서 프로그래밍과 수학을 못한다는 걸 길게 적었다. 그나마 인터넷 서비스와 온라인 광고 관련 도메인 지식은 나름 갖췄다고 생각하지만, 전혀 새로운 분야로 진출하면 밑바닥부터 다시 배워야 한다. 데이터나 결과를 평균보다는 더 낫게 표현할 수는 있다고 자부한다. 결론은 "나는 아직 좋은 데이터 과학자가 아니다"인 건가?
인터뷰의 편의를 위해서 자주 묻는 머신 러닝의 기본 개념에 관한 질문들을 따로 모아서 인터뷰 시작부에 빠르게 묻고 답하는 시간을 갖는다. 이번 인턴 인터뷰에서 나름 잘 답하는 지원자들도 있었지만 전반적으로 50점을 넘긴 경우가 거의 없었다. 모든 항목을 엄격하게 평가했다면 겨우 2~30점에 불과했을 거다. 이런 단답형 Q&A로 좋은 데이터 과학자를 가려낼 수 있을까? 머신러닝 관련된 기본 개념을 잘 알고 있는 지원자는 과연 좋은 데이터 과학자 (또는 머신러닝 개발자)인가? 란 질문이 이 글을 적는 계기다. 기초 질문에 답변을 잘했다고 해서 좋은 데이터 과학자는 아니다. 하지만, 내가 만난 좋은 데이터 과학자들은 모두 이런 기초 개념에 능통했다. 충분조건은 아니지만 필요조건이다. ** 단답형 Q&A에서 제대로 답변을 못하는 지원자들에게는 이후 경력 관련 심층 면접에서 자세히 묻고 싶은 의욕이 사라진다.
세상의 모든 것이 그렇듯이 좋은 데이터 과학자 여부도 다양한 관점에서 정의될 수 있다. 앞서 말한 3가지 모두를 잘하는 이도 있을 거고, 두 가지만 괜찮은 이도 있을 거고, 그냥 한 가지가 매우 특출 나서 다른 단점을 커버하는 이도 있을 거다. 때론 세 가지 모두 평균 이하더라도 다른 능력이 매우 출중해서 좋은 데이터 과학자로 평가받을 수도 있다. 발표나 공유 스킬이 특출 난 경우도 있을 거고, 사람을 케어하고 리딩 하는데 능통해서 데이터 과학자 팀을 잘 이끌어가는 경우도 있을 거다. 그냥 실력 없으면서 외부에 잘 알려진 셀럽이어서 좋은 데이터 과학자로 포장된 경우도 없다 할 수 없다 (개인적으로 극혐 하는 부류임). 그럼 나도 아직은 좋은 데이터 과학자일 가능성이 남은 건가? 나는 뭘로 어필할 수 있을까? 지원자들이 모든 스킬에 특출 날 것을 바라지는 않는다. 최소 한 가지 이상 내세울만한 필살기는 갖췄으면 한다. 갓 졸업한 친구들에게서 전문가의 스킬을 요구하지는 않지만 또래보다는 나은 점이 있어야 한다. 잠재력이 있으면 함께 성장할 수 있다.
많은 알고리즘/모델들 중에서 실제 데이터에 적용했을 때 가장 성능이 뛰어난 것을 채택해서 서비스에 적용한다. 그렇듯이 실제 데이터 문제에서 성과를 내고 차이를 만들어내는 이를 좋은 데이터 과학자로 판정하면 합당할까? 가장 객관적일 듯도 하다. 하지만 성과라는 것이 개인의 역량만으로 이뤄지는 것이 아니다. 주어진 문제의 난이도에 따라 다르고, 어떤 동료를 만났느냐에 따라서도 달라진다. 그런데 우리가 알고리즘을 고려할 때 -- 예를 들어 -- 정확도라는 한 가지 척도만으로 평가, 채택하지 않는다. 정확도는 99%인데 추론 시간이 10분이나 걸린다면 실시간 처리에 부적합하다. 한 알고리즘이 이론적으로 엘레강스하다고 해서 가장 좋은 성능을 내는 것은 아니지만, 보통 이론적으로 좋으면 보편적으로 또는 범용적으로 사용하기 좋다. 그러면 다시 돌고 돌아서 머신러닝에 관한 기초 개념/지식에 뛰어난 사람이 좋은 데이터 과학자일까? 꼭 그렇지는 않지만 -- 그저 외워서 답하는 게 아니라면 -- 보통은 더 나을 가능성이 매우 높다. 늘 강조하지만 기초가 튼튼하면 그 위에 좋은 집을 비울 수 있다. 어린 친구 또는 초심자들에게서 최고 필살기는 기본기라 생각한다. 그런 측면에서 딥러닝 (또는 그저 SOTA 모델)만으로 어떤 데이터 적용해서 결과만 번지르하게 낸 (어린) 지원자를 나는 (면접관으로서) 선호하지 않는다.
=====
나와 나이차가 많은 어린 친구들을 면접할 때 만족스러운 답변을 못 들으면 안타깝다. 특히 기초적인 개념이나 원리에 관한 질문에 제대로 답하지 못하면 더 그렇다. 그래서 때론 여러 방법으로 답변을 유도하기도 하고 때론 좀 과격해져서 더 공격적으로 몰아붙이기도 한다. 그런데 10살 넘게 차이나는 지원자들도 이미 30대 그리고 경력도 3~4년을 지났다는 걸 새삼 깨달았다. 그때부터는 30대의 경력자들에게는 더 냉철해지기로 마음먹었다. 나도 학위 후 32살에 첫 직장에 입사했지만, 30대 경력직들에게 잠재성만을 보고 뽑는 데는 무리가 있다. 보통 전성기가 시작했을 나이인데 여전히 잠재력이 있겠지라는 생각으로 부족한 걸 눈감아줄 수 없다. 하지만 이제 갓 졸업한 20대 중후반에게는 여전히 당장은 부족해 보여도 잠재성에 초점을 맞추려 한다. 그런데 그 잠재성이라는 게 계속 강조했던 기초가 있을 때 얘기다. 1~2년 전에 다른 팀의 인터뷰에서 탈락했던 지원자들을 다시 면접 볼 기회도 여럿 있었는데, 그 사이에 발전된 모습을 보지 못한다면 이 사람은 앞으로 발전할 가능성이 있을까?
주변에서 제대로 된 조언을 듣지 못하는 지원자들을 보면 매우 안타깝다. 적절한 시기에 살짝만 다듬어줬더라면 지금쯤 괜찮은 실력을 갖췄을 건데, 그냥 인공지능이 유망해서 몇 개 코스워크만 들은 어린 친구들을 보면 참 안타깝다. 교수가 됐든 선배가 됐든 아니면 친지가 됐든 데이터 과학 분야에서 경험을 쌓았던 멘토/가이드가 있었으면 지금보다는 낫게 공부하고 준비하지 않았을까?라는 생각에서 벗어나지 못한다. 그래서 인턴 면접이 모두 끝난 후에 지원자들에게 데이터 과학 (및 인터뷰) 조건이 필요하면 마음껏 연락하라는 메일을 단체로 보낼까?를 심각하게 고민했다. 개별적으로 컨택하는 것을 회사에서 금지하고 있을 수도 있고, 괜히 오지랖/꼰대질이란 소리를 들을 것만 같기도 하고, 그리고 결정적으로 메일에 어떤 내용을 적으면 좋을지도 잘 판단이 서지 않아서 일단은 메일은 보류했다. 혹시 이 글을 보는 사람들 중에서 내가 참여한 인터뷰에서 만났고 (그렇지 않더라도 도움이 필요한 어떤 분이든) 데이터 과학자로의 커리어 패스나 인터뷰에 관한 조언 (또는 잔소리?)이 필요하면 가능한 범위 내에서 도움을 줄 테니 따로 연락 주기 바란다. (카카오 광고추천팀 Ben. bjeong@gmail.com) 인터뷰를 통해서 당장은 함께 일할 동료를 찾는 게 급하지만, 장기적인 관점에서 -- 굳이 우리 회사, 우리 팀이 아니더라도 -- 더 좋은 인재들이 좋은 데이터 과학자로 성장하길 바란다. 내 경험이 조금이다로 도움이 됐으면 좋겠다.
=====
내가 일하지 않아도 잘 작동하는 시스템을 만들고 싶다. 이것이 내가 인재 채용과 교육에 진심인 이유다. 아, 놀고 싶다. 이런저런 서비스에 기웃거리면서 데이터 문제를 발견/정의하고 관련된 연구/논문을 조사해서 방법론/알고리즘을 찾아내서 그걸 직접 구현하고 실험할 적임자에게 던져주고 나는 다시 다른 서비스를 기웃거리면서 다른 문제와 방법론과 적임자를 찾고, 또... 그냥 이렇게 일하는 것도 아니고 노는 것도 아닌 상태로 살고 싶다. 그냥 내가 달고나연구소를 만들어서 소장질이나 할까?
=====
글을 마치고 공개를 기다리면서 데이터 과학자는 종합 예술인이 되고 있다는 생각에 이르렀다. 앞서 말한 필수 스킬 (수학/통계/알고리즘, 프로그래밍, 도메인 지식)만을 갖춘다면 그냥 기술인에 머문다. 데이터의 분석을 넘어서 해석이 일러야 한다. 분석 결과를 도메인과 연결해서 새로운 가능성을 제안하고 검증해야 한다. 데이터 visiaulization으로 대표되듯이 코딩과 분석으로 결과를 도출했다면 그걸 비전문가들도 쉽게 이해할 수 있도록 표현할 수 있어야 한다. 자료화뿐만 아니라 프레젠테이션 스킬도 필요하다. 결국 사람을 감동시키려면 단순히 커뮤니케이션 기술을 넘어서 사람의 심리도 어느 정도 이해해야 한다. 경우에 따라 소셜미디어나 유튜브 등에 자신을 PR 해야 하다. 데이터 장인도 필요하고, 데이터 천재도 필요하고, 그냥 데이터 만능인도 필요하다. 데이터 과학자를 꿈꾸는 사람이라면 나는 어떤 사람이고 어떤 데이터 과학자가 될 것인가?를 고민하며 테크트리를 잘 결정하기 바란다.
=====
인공지능, 머신러닝, 데이터 과학 등의 관심이 높아질수록 딥러닝 기술자들만 많아지는 것 같다. 별로 좋은 현상이 아니다. 이런 사람들을 잘 걸러 내거나 바른 길로 인도하는 게 나의 역할이라면... 열심히 할게요.