이전 글에서 원활한 진행과 바른 평가를 위해서 인터뷰 과제를 제시하곤 한다고 했다. 다양한 종류의 과제가 가능하겠지만, 본인이 참여한 인터뷰에서는 다음의 3가지 유형의 과제가 많았다.
- 예시 데이터와 함께 문제 상황을 설명하고 이를 어떻게 해결할지를 묻는 유형
- 제공된 데이터를 분석하거나 제시된 알고리즘을 구현하는 유형, 그리고
- 현업에 적용한 논문을 읽고 리뷰하는 유형
논문 리뷰 유형은 이전 글에서 자세히 적었고, 이번 글은 앞 두 유형에서 공통적인 걸 설명한다.
간혹 특정 기계학습 알고리즘을 특정 언어로 구현하라는 과제가 있을 수도 있으나, 문제 해결 방법을 요구하는 과제들은 '이것만이 정답이다'라는 그런 것이 없다. 다만 문제를 얼마나 포괄적으로 이해해서 다양한 시각으로 접근했는지를 보기를 원한다.
결론부터 말하자면 '자신의 전문성을 오롯이 보여줄 수 있는 방법론을 사용하지 못한다면 식상하더라도 가장 기본적인 방법론을 사용하는 것이 낫다'는 거다. 어린 친구들에게는 성공 가능성은 다소 낮더라도 도전적인 방법을 사용하라고 조언하고 싶지만, 현실적으로는 실패할 가능성이 낮은 방법을 알려주는 게 맞아 보인다. 최신의 고급 기술을 잘 사용한다면 그 방법론/알고리즘을 선택해서 자신의 강점을 보여주면 좋겠지만 어설프게 그저 최신 기술의 변죽만 울리는 것보다는 식상하고 뻔한, 가장 기본적이고 가장 대중적인 방법을 잘 소화해서 주어진 문제를 해결하는 게 더 안전하다는 거다.
1번 유형이든 2번 유형이든 최신의 고급 기술을 적용해서 해결법을 제시하는 지원자들이 있다. 그런데 대부분 그 기술에 익숙한 지원자들이 아니다. 그저 인터넷에서 찾아보고 있어 보이는 알고리즘을 채택하거나 오픈 소스가 존재하는 걸 가져와서 기계적으로 문제/데이터에 적용해서 결과를 제출하는 경우가 많다. 이런 식으로 과제를 제출할 거면 피차간에 시간 낭비니 그냥 인터뷰를 포기하라고 말하고 싶다. 과제/문제를 해결하기 위해서 깊이 고민하고 노력한 흔적이 없다. 면접 과제가 그저 최신 기술을 사용했는지 여부를 보려는 게 아니다. 지원자가 과제를 제대로 이해했는지, 그걸 해결하는 가장 기초적인 정석은 알고 있는지, 그리고 정석/기초적인 방법을 개선하기 위해서 본인만의 독창성을 추가했는지 등을 보기 위함이다. 이미 꼰대가 된 본인인 겉멋과 허영만 가득한 지원자는 반갑지 않다.
기초가 튼튼한 지원자라면 조금만 옆에서 케어하며 여러 프랙티스를 알려주면 스스로 성장한다. 그래서 저런 과제를 통해서 '나는 기초가 탄탄해요'라는 걸 보여주길 바란다. 물론 면접관들마다 생각이 다르겠지만 적어도 나와 주변인들은 비슷한 생각을 공유하고 있다. 인터넷과 인공지능의 시대에 Know-Where를 잘 아는 사람이 절대적으로 필요하지만, 최소한 면접에서는 지원자의 Know-How 능력을 보길 원한다. 최신의 어려운 기술을 기계적으로 사용하는 사람보다 가장 기초적인 방법으로 한 땀 한 땀 정성 들인 과제물 볼 때 더 반갑고 같이 일하고 싶어 진다. 물론 그 어려운 기술에 통달한 지원자였다면 그걸 사용해서 자신의 장점을 부각하는 게 맞다. 하지만 면접에서 만나는 대부분의 저 연차 지원자들은 겉멋이 없었으면 하는 바람이다. 그리고 나쁜 습관은 절대적으로 탈락의 이유다. 속이는 행위 아니면 포장일 수도 있으나 나쁜 습관을 들키지 않는 가장 좋은 방법은 결국 기초적이고 정석적인 방법으로 문제를 해결해서 보여주는 거다.
1~2주의 시간이 주어지는 과제에서 결과의 품질이 높을 것을 기대하지 않는다. 면접은 넷플릭스 프라이즈나 캐글 대회가 아니다. 정확도 등의 성능이 좋은 알고리즘을 사용한다고 해서 면접에 크게 유리하지 않다. 물론 다른 것도 좋은데 성과도 좋으면 가산점을 받겠지만 이 글의 핵심은 '다른 것도 좋은데'다. 괜히 성능 욕심으로 잘 알지도 못하는 알고리즘을, 그것도 공개된 오픈 소스를 그냥 사용해서 성의없이 제출된 과제를 보는 건 별로 기분이 좋지 않다. 알고리즘의 난이도를 떠나서 본인이 잘 알고 있고 익숙한 방법론/알고리즘을 사용해서 제대로 결과를 내는 것이 중요하다. 본인은 면접 과제에서 결과가 아니라 과정을 보려 한다. (물론 입사 후에는 돌변해서 결과를 더 보겠지만.ㅎㅎ)
계속 같은 얘기를 반복하는 듯한데, (최소한 면접 과제에서는) 어려운 기술을 시도해서 실패하는 것보다 쉬운 기술로 성공하는 게 낫다.
면접 과제가 모호하고 복합적인 경우가 종종 있다. 이럴 때는 가장 중요하다고 생각되는 문제에 집중했으면 한다. 이전 글에서 발표에서 KISS가 중요하다고 말했고, 자기소개서나 답변에서 명확함이 중요하다고 말했다. 과제도 이 원칙에서 벗어나지 않는다. 가장 간단하고 명확하기 위해서는 가장 큰 문제에 집중해야 한다. 과제는 지원자를 시험하는 거지 시험에 빠뜨리려는 게 아니다. 확연히 눈에 띄는 문제가 있다면 그걸 해결하는 방법에 집중했으면 한다. 가출 문제를 보여주지 못해서 다소 답답한데, 일전에 예시 데이터가 가진 문제가 뭐고 어떻게 해결할 거냐?라는 과제가 있었다. 분류 (classification) 문제인데 데이터에 Y값이 없었다. 이 경우에는 정답 세트(X-Y 매핑 데이터)를 어떻게 하면 얻을 수 있는가? 가 핵심이다. 다소 뻔한 케이스인데, 혹시 출제자가 다른 걸 의도한 게 아닌가를 고민하며 사소하고 마이너한 부분을 해결하는 방법을 지시한 지원자를 봤다. 큰 또는 뻔한 걸 자세히 해결/설명하고, 사소한 것은 부가적으로 이런 문제들도 있더라 정도로만 언급해도 됐을 텐데... 때론 본인의 장점을 뽐내려다 오히려 점수를 까먹는 경우도 있으니 조심하고 더 전략적으로 접근하셨으면 한다.
글이 길어지니 점점더 꼰대 글이 되고 있다. 너른 이해를 바랍니다.