데이터 분석가 또는 과학자를 위한 인터뷰 면접 과제를 주제로 다룬 지 벌써 1년 정도 지났다. (참고. https://brunch.co.kr/@jejugrapher/239) 그 사이에 면접관이 아닌 면접자의 입장에 놓였고 S로 이직했다. (역시 현실은 상상과 달랐다.) 신입 때는 영어 성적을 요구하는 직장이 싫었고 지금은 — 나름 개발 직군이지만 — 코딩 테스트를 보는 직장이 싫다. 다행히 늙은이에게 코테나 면접과제를 요하지는 않았다. 이직 후에 몇 명의 이력서는 검토했지만 면접에 직접 참여하지는 않아서 이제 감이 많이 떨어졌다. 이전 직장의 경험을 바탕으로 글을 적지만 영업 비밀(?)을 적나라하게 밝히는 건 상도덕에 어긋나니 적당한 선을 지켜서 글을 적는다.
실 데이터를 기반으로 가공된 데이터를 지원자들에게 미리 전달한 후, 약 일주일 동안 CTR을 예측하는 프로그램을 구현하고 발표하는 과제였다. 몇 번의 부침 후에 정착된 과제다. 처음 이 과제를 제출할 때 지원자들에게 기대했던 점은 대략 아래와 같다.
1. EDA 등으로 제공된 Raw Data를 분석해서 인사이트를 얻고 이를 기반으로 피쳐 셀렉션, 데이터 변환/가공 등의 피쳐 엔지니어링을 진행한다.
2. 가장 기본적인 알고리즘 (i.e., 로지스틱 회귀모델)을 이용해서 베이스라인 모델을 구축한다.
3. 추가 분석이나 데이터 가공을 통해서 베이스라인 모델의 성능을 개선한다. 필요하면 인터넷 서베이로 구한 다른 알고리즘과 성능을 비교한다.
4. 추가 점수로 생각했던 것은 광고 도메인에서 CTR 예측 지식/노하우를 모델 구축에 적용했느냐 여부를 보는 거였다.
엄청난 새로운 알고리즘을 만들어오는 것을 기대하지 않았다. 가장 기본적인 데이터 분석 과정 (EDA)을 제대로 수행했는지, 확률을 예측하는 로지스틱 모델을 제대로 사용했는지, 그리고 서베이를 통해서 건 개인의 창의력을 이용해 서건 기본 모델을 개선하려 했는지 등을 확인하고 싶었다. 내가 그들이었어도 제대로 수행하지 못할 만큼의 기대치가 높은 것은 사실이지만, 한편으로 생각하면 가장 기본적인 것을 보고 싶었던 거다. 물론 지원자의 입장에선 특별한 것을 보여주고 싶은 욕심은 있겠지만 그런 욕심을 제대로 보인 지원자도 없었다. 일반화하긴 어렵지만 대부분의 지원자의 결과물은 아래와 같았다.
1. 파이썬으로 데이터를 불러온 후에 .head()나 .describe() 등으로 샘플의 형태와 기본 통계치 정도만 확인한다.
2. 인터넷에서 CTR을 예측하는 SOTA나 잘 알려진 오픈소스를 가져와서 모델을 구축하고 테스트 데이터의 예측값을 계산한다. (최소한 그 알고리즘을 사용한 이유가 평소에 자주 이용했던 익숙한 모델이었기 때문이다라고만 했더라도...)
3. 그나마 더 진행한 친구들은 validation error를 최소화하는 하이퍼 파라미터를 찾은 후에 테스트 예측값을 계산한다.
면접과제를 통해서 지원자의 기본기를 보고 싶었다. 창의력이 요구되는 시대지만 기본기가 무시된 창의력을 요구하는 건 아니다. 창의력만이 요구될 때는 극히 이례적 케이스다. 경력이 거의 전무한 갓 졸업한 어린 친구들에게서 도메인에 대한 엄청난 인사이트를 원하지 않는다. 그저 — 데이터 분석가나 모델러로서 — 가장 기본적인 것을 제대로 할 수 있으면 함께 성장하여 더 큰 존재가 되길 기대할 뿐이다. 매우 평면적인 기본 스텝을 완수한 후에 조금의 입체성 (창의력)을 더 했더라면 좋았을 텐데… 과제의 의도를 잘못 이해한 것인지 아니면 애초에 실력이 기준선에 미치지 못한 건지는 모르겠으나 원하던 인재를 찾기가 어려웠다.
이전에도 적었듯이 요즘 데이터 과학 희망자들 중에서 데이터 분석 경험이 부족할 뿐만 아니라, 분석의 중요성도 제대로 인지하지 못하고 있는 친구들이 많은 (사실, 대부분) 것 같다. 문제와 데이터에 맞는 알고리즘을 찾아 적용하거나 만들어내는 것이 아니라 그저 성능이 좋다고 알려진 알고리즘의 오픈소스만 가져와서 기계적으로 데이터에 적용해보고 데이터 과학을 하고 있다고 생각하는 것 같다. 논문이나 자료를 보며 직접 구현한 것도 아니고 그저 인터넷에서 다운로드한 걸 돌려보는 정도다. 물론 좋은 소스가 있으면 그걸 잘 활용하는 건 전혀 문제 될 것이 없다. 우려하는 점은 그런 알고리즘이나 라이브러리를 제대로 이해하고 사용하지 않았을 가능성이 높다는 점이다. 그나마 하이퍼 파라미터 최적화라도 하는 지원자가 돋보이는 착시마저 있다. ‘겨우’라고 표현해서 미안하지만 ‘겨우 그런 정도의 일을 하는 사람을’ 채용하기 위해서 시간과 돈을 들이는 게 아니다. 물론 가능성이 있으면 채용 후에 기본기를 가르치고 훈련시키면 된다. 그런데 가능성은 어떻게 확인할 수 있는 건가? 출신 대학이나 학점은 평가를 위한 중요한 잣대지만 그럴 거면 면접의 이유가 없다.
상상불가의 창의력을 지닌 천재가 아니라면 기본에 충실하고 그걸 인터뷰에서 어필했으면 한다. 채용의 목적이 완벽한 지원자를 발견하는 것이 아니다. 가능성이 있는, 즉 기본에 충실한 지원자를 발견하는 거다. 특히 경력이 적은 주니어라면… 잔재주로 장기 레이스를 완주할 수 없다.
DM ML AD
면접과제의 기대와 현실
반응형