[NDC2019] 게임 프로그래머로 취업하기 위해 준비할 것들은?

게임뉴스 | 윤서호 기자 |


[▲ 윤석주 데브캣 스튜디오 프로그래머]

  • 주제: 신입 게임 프로그래머가 되는법 - 넥슨 채용 프로세스 단계별 분석
  • 강연자 : 윤석주 - 넥슨코리아 / NEXON KOREA
  • 발표분야 : 프로그래밍 - 커리어
  • 권장 대상 : 게임 프로그래머 지망생
  • 난이도 : 사전지식 불필요 : 튜토리얼이나 개요 수준에서의 설명


  • [강연 주제] 넥슨 채용 설명회인 `커리어 클럽`에서 2017, 2018년 직군 상담을 진행하면서 지망생 분들과 면접자의 정보 간극이 커서 매우 놀랐었습니다. 면접관이 면접 지원자에게 기대하는 것, 채용 절차 그리고 커리어클럽 직군 상담에서 받았던 공통적인 질문과 답변에 대해 발표합니다. 넥슨 프로그래머 채용 절차와 각 단계별로 도움이 되는 정보를 얻을 수 있을 것입니다. 게임 업계를 지망하는 프로그래머 분들에게 도움이 될 수 있을 것이라고 생각합니다.

    취업하려면 무엇을 준비해야 할까? 이는 모든 취업 준비생들의 공통적인 과제이다. 그러나 그에 대한 해답은 각 직군마다 다 다르다. 게임 회사만 보더라도 기획자, 프로그래머, 사운드, 아트 등 다양한 분야가 있으며, 각각 부문에서 전혀 다른 능력을 요구한다. 또한 채용 프로세스도 각 부문마다 다르다.

    그렇다면 게임 프로그래머는 업계에서 어떤 식으로 채용을 진행하며, 채용 시에 지원자의 어떤 점을 눈여겨보고 있을까? 데브캣 스튜디오의 윤석주 프로그래머는 이번 NDC 2019에서 자신이 직군 면접에 인터뷰어로 참여했던 경험과, 그간 그가 만난 면접관들의 조언을 토대로 게임 프로그래머 지망생들의 취업 준비를 돕고자 한다.



    ■ 게임 프로그래머 채용의 5단계 - 우선 이력서와 자기소개서, 포트폴리오부터




    윤석주 프로그래머는 넥슨의 게임 프로그래머 채용 프로세스를 크게 서류 심사, 과제 심사, 직군 면접, 팀 면접, 인사 면접의 5단계로 구분했다. 이 중 인사 면접을 제외한 나머지에 대해서 강연을 진행했다.

    서류 심사에서 보는 항목은 이력서와 자기소개서, 포트폴리오 등이다. 이미 취업 준비생들이 많이 알고 있지만, 어떻게 준비해야 할지 윤석주 프로그래머는 좀 더 세부적으로 소개했다. 면접관의 입장에서 보면 이력서와 자기소개서에서 주로 프로젝트 관련 경험이나 의사 결정에 관한 경험, 지원자의 관심 분야를 눈여겨보게 된다. 이런 항목들이 앞으로 프로젝트를 진행하거나, 중간에 참여할 때 크게 도움이 되기 때문이다.



    ▲ 면접관이 원하는 것이 무엇인가? 이 방향에서 접근할 필요가 있다

    각 항목을 분석할 때에도 앞으로 지원자가 프로젝트를 참여할 때 실제로 활용하게 되는 능력을 위주로 본다고 윤석주 프로그래머는 덧붙였다. 예를 들어 프로젝트 관련 경험의 겨우, 개인 프로젝트는 그 지원자가 연구한 분야와 결과물을 주로 보게 된다. 팀 프로젝트일 경우에는 지원자에게 주어진 과제와, 이를 해결하기 위해서 지원자가 어떤 기술을 사용했나를 주로 본다. 그 지원자가 기술적으로 어떤 능력이 있으며, 과제를 어떻게 해결해나가는지에 따라서 앞으로 프로젝트를 잘 해낼 수 있을지 판단이 되기 때문이다.

    윤석주 프로그래머는 '퍼즐 주주'의 사례를 통해서 이를 좀 더 자세히 설명했다. 모바일 소셜 퍼즐 게임인 '퍼즐 주주'에서는 다양한 수요에 대응해야 하고, 서버 비용을 최소화 해야 한다는 과제가 있었다. 이 목표를 달성하기 위해서 스케일 인-아웃이 가능한 구조로 서버를 설계할 수 있어야 했다. 이를 AWS EC2 오토 스케일 그룹을 사용해서 목표를 달성했었다. 지원자가 이런 식으로 프로젝트에서 달성해야 할 목표와, 이를 이루기 위해서 어떤 과정을 거쳤는지 우선 설명해야 한다는 것이다. 채용을 진행한 팀에서는 그 뒤 지원자들의 프로젝트 관련 경험을 보면서 자신들이 필요한 인력 수요와 지원자의 능력, 경험이 교집합이 있나 우선 판단하게 된다.




    면접관들과 실무자들은 지원자의 자기소개서에서 주로 무엇을 볼까? 윤석주 프로그래머는 앞으로 하고 싶은 업무 분야와 기술적 관심 분야, 취미 세 가지를 본다고 설명했다. 이 중에서 취미는 굳이 게임 개발에 관련되지 않아도 상관이 없다고 덧붙였다. 예를 들자면 아이돌 상품을 모은다던가, 스포츠 등 게임 개발과 연관이 없는 취미를 적어도 된다는 것이다. 이 세 가지 항목에서 면접관들과 실무자들이 주로 보는 것은 채용 이후 지원자가 어떻게 성장할 것인가, 이 부분이다. 조직에서는 실력 있는 인력을 뽑는 것뿐만 아니라, 채용한 인력이 더 성장하는 것도 중요하기 때문이다.

    그 외에도 의사 결정 능력과 관련된 경험이나 사례도 면접관들과 실무자들이 주로 보는 부분이라고 소개했다. 회사나 팀에서 프로젝트를 진행하면서 자주 의사 결정을 해야 할 상황이 많은 만큼, 그와 관련된 지원자의 능력을 파악하는 것이 필요하기 때문이다.






    ▲ 실무에 관련된 분야 외에도, 채용 후 지원자의 성장과 연관된 부분도 관심 분야다

    많은 지원자들이 포트폴리오를 중요시 여기고 있지만, 종종 면접관들이 원하는 것과는 다른 방향으로 준비하는 경우가 있다. 특히나 포트폴리오의 질을 끌어올리는 것에만 집중한 나머지 가독성이 떨어지거나, 혹은 그 지원자가 팀 프로젝트에서 어떤 파트에 어떻게 참여했나 알기 어려운 형태로 보내는 일이 많다고 윤석주 프로그래머는 설명했다. 이런 상황에서 실무자들이 포트폴리오를 보고 지원자를 판단하기 어렵다고 덧붙였다.




    면접관들이 지원자의 포트폴리오에서 주로 연구한 과정과 결과, 팀 프로젝트에서 지원자가 기여한 부분, 그리고 기술을 구현하는 스타일과 코딩 스타일을 주로 보게 된다. 그런 만큼 지원자들도 이런 관점에서 포트폴리오를 준비하느 것이 좋다고 조언했다. 예를 들어 본인이 작성한 코드를 GitHub 프로젝트에 올려서 링크를 보낸다던가, 오픈소스의 경우에는 기여한 부분을 링크로 보내는 것도 방법이다. 결과물이나 스크립트 양식으로 보냈을 경우, 본인이 작업한 코드의 위치나 그 코드에 대한 설명을 덧붙이는 것이 좋다.

    최근에는 작업을 영상으로 촬영해서 보내는 경우도 있는데, 이런 것도 좋은 방법이라고 소개했다. 예를 들어 본인이 작업한 것을 영상으로 찍고, 이를 유튜브에 올린 뒤에 링크로 보내는 것이다. 그리고 이 작업을 어떻게 구현했나 코드를 첨부하면 좋다고 덧붙였다. 실제로 한 지원자는 3D 팀 프로젝트에서 카메라를 구현하는 역할을 맡았는데, 이를 구현하는 과정을 촬영해서 유튜브로 올리고 카메라 코드를 첨부했다.






    ▲ 요점은, 면접관이 보기 편하게 만드는 것이 좋다는 것이다

    종종 지원자들은 포트폴리오를 보낼 때 결과물만 보내는데, 그것보다는 과정에 대한 설명도 필요하다고 강조했다. 실제로 실무를 하면서 겪는 것과 연관이 있기 때문이다. 이를 면접관에게 잘 설명하기 위해서는 구현을 하기 위해 지원자가 실행한 작업, 시행착오, 이슈 발생 시 의사 결정 과정 세 가지로 나눠서 준비하면 좋다고 조언했다.






    ■ "전산학 지식, 중요합니다" - 과제 심사와 직군 면접을 준비하는 전략




    프로그래머 채용 프로세스를 보면, 서류 전형 이후에는 과제 심사를 진행하게 된다. 온라인 코딩 테스트는 지원자의 알고리즘 문제 해결 능력을 보는 절차로, 이는 게임 업계뿐만 아니라 IT 분야에서 공통으로 진행하는 만큼 준비를 해둘 필요가 있다. 특히나 처음 테스트를 접하면 자신의 실력을 100% 발휘하기 어려운 만큼, 윤석주 프로그래머는 미리 좀 풀어보는 것을 추천했다.

    윤석주 프로그래머는 참고가 될 만한 사이트로는 국내에서는 NYPC 공개 문제, 카카오 공채 코딩 테스트, 백준 온라인 저지를 추천했다. 여기에서 더 나아가 해외 사이트로는 Codility, LeetCode, HackerRank에서 풀어보는 것을 권했다.

    과제 심사 다음에는 프로그래머로서의 능력을 평가하는 직군 면접에 들어가게 된다. 여기서는 게임 엔진에 대한 것뿐만 아니라, 전반적인 전산학 지식을 폭넓게 요구한다고 윤석주 프로그래머는 설명했다. 일례로 '드래곤 하운드'를 살펴보면 언리얼 엔진뿐만 아니라, 실버바인서버엔진2도 활용하고 있다. 물론 클라이언트 프로그래머와 서버 프로그래머는 별개로 나뉘긴 하지만, 게임의 전체적인 구조를 파악하려면 기본적으로 언리얼 엔진에 대한 지식 외에도 실버바인서버엔진2에 대해서 어느 정도 알 필요가 있는 것이다.



    ▲ '드래곤 하운드'를 예로 들자면, 언리얼 엔진 외에도 실버바인서버엔진2를 쓰고 있다

    각 분야별로 심층적으로 보면, 우선 클라이언트 엔진인 언리얼에 대한 지식이 필요하다. 이를 단순히 나열해도 그래픽스, 3D 행렬, 카메라, 좌표계, 그리고 관련된 수학 지식 등이 있다. 그뿐만 아니라 엔진에 쓰이는 언어에 대한 지식도 요구된다. 상속, 다형성, 가상함수 등의 OOP 개념, 템플릿, STL 등을 알고 있어야 한다는 것이다.

    서버 프로그래머라면 실버바인서버엔진2을 파고 들어야 하는 만큼, 그에 필요한 지식들을 요구하게 된다. 예를 들자면 VM, GC, Generic, C# Collection 등이 있다. 또 '드래곤 하운드'는 다중 접속 게임이기 때문에 서버에서 여러 개의 요청을 동시에 처리해야 한다. 이를 처리하기 위한 쓰레드와 마이크로쓰레드에 대한 이해도를 요구하게 되고, DB를 처리할 때 사용되는 Transaction이나 SQL, NoSQL 등에 대한 지식도 필요하다.

    그 외에도 업계에서는 게임 프로그래머에게는 게임 내 로직과 관련해서 알고리즘과 자료구조에 대한 이해도를 요구한다. 게임 내 데이터를 어떻게 보관, 처리하며 상황에 각 상황별로 어떤 방식이 효율적인지 알기 위해서는 이 두 가지를 알아야 하기 때문이다.



    ▲ 프로그래머로서 요구되는 직군 능력.jpg

    이런 전산학 지식들은 게임만을 위한 것이 아니기 때문에 지원자들이 지루해하거나, 소홀하기 쉽다. 그렇지만 이것이 베이스가 되어야 한다고 윤석주 프로그래머는 강조했다. 일례로 엔진은 몇 년 지나면 업데이트가 되거나, 혹은 회사에서 안 쓸 수도 있지만 전산학 지식은 모든 프로그래밍 과정의 기초이기 때문에 변하지 않기 때문이다. 그리고 엔진도 결국에는 전산학을 통해서 만든 것인 만큼 기초지식이 있어야 최적화 및 디버깅 등을 원활히 진행할 수 있다고 덧붙였다.



    ▲ 프로그래머에게 전산학은 필수다

    직군 면접을 진행한 이후에는 팀 면접을 진행하게 되는데, 이떄는 팀의 방향성과 지원자의 성향이 일치하는지를 주로 평가하게 된다. 각 팀마다 원하는 방향성이나 인재상이 다른데, 이는 채용 공고나 매체 인터뷰 혹은 그 팀이 만든 게임을 통해서 사전에 파악해두는 것이 좋다. 그렇게 해서 파악한 팀의 방향성과, 본인이 맞는지 먼저 확인을 하고 접근해야 한다고 조언했다.

    프로그래머 지망생의 채용 준비 전략으로 윤석주 프로그래머는 크게 두 가지로 요약했다. 첫 번째는 직군 면접 준비다. 직군 면접은 프로그래머의 업무 수행을 하기 위한 필수 지식과, IT 업계 전반에서 요구하는 지식 모두를 확인하는 자리다. 즉 프로그래머로서의 능력이 어떤지 체크하는 만큼, 그 준비를 소홀히하지 말라고 조언했다. 이를 준비하기 위해서는 앞서 언급한 것처럼 게임에 관련된 기술 분야 외에도 기초 전산학 분야도 관심을 기울이라고 덧붙였다.

    또한 자신이 잘하는 분야와 관심있는 분야를 파악할 필요가 있다. 이는 직군 면접을 위한 것뿐만 아니라, 이력서와 포트폴리오, 팀 면접을 준비할 때에도 도움이 된다고 설명했다. 실제로 이 세 과정에서는 지원자가 잘하거나 흥미있는 분야가 무엇인지 보고, 이 분야에서 어떤 경험이 있으며 어떤 능력이 있나 확인하기 때문이다. 이를 준비하기 위해서는 자신이 잘하거나 흥미있는 분야를 선정하고, 그 분야에 대해서 어떤 경험을 갖고 있는지 소개하는 것이 필요하다.







    대표적인 방법으로는 소스 코드에 간단한 주석을 달아서 보내거나, 자신의 포트폴리오에 대한 PT를 제작하는 방법이 있다. 그리고 앞서 예시를 든 것처럼 작업 과정을 동영상으로 찍는 것도 방법이다. 프로젝트에 참가한 경험이 있다면 이를 언급해야 하는데, 이때는 결과물만 이야기하는 것이 아니라 과정도 덧붙이는 것이 좋다. 그리고 결과물에 대해 설명할 때도 완수한 이후의 경험을 소개하는 것도 도움이 된다.

    마지막으로 윤석주 프로그래머는 지망생들이 자신에게 가장 많이 물어본 것들을 네 가지로 추려서 정리하면서 강연을 마쳤다.



    ■ 지망생들이 가장 많이 물어보는 것들 TOP4 - 실무인의 입장에서 답변하자면?

    Q. 포트폴리오, 어떻게 준비해야 할까?

    = 강연에서 말한 것처럼, 본인이 작업한 결과물을 제시하면서 자신이 참가한 것이 어떤 부분인지 명확히 언급해야 한다. 개인 포트폴리오라고 한다면 어떤 분야를 주로 연구했는지 알려주는 것이 좋다.

    또 한 가지, 포트폴리오는 면접관이 쉽게 확인할 수 있는 형태로 준비해야 한다. 달랑 코드 파일이나 EXE 파일만 보내거나, 그 외에 문제가 될 수 있는 프로젝트 소스를 그대로 보낸다거나 하는 식이면 아무래도 면접관 입장에서는 조금 곤란하지 않을까.


    Q. 언리얼을 하는데 유니티도 배워야 할까? 혹은 유니티를 하는데 언리얼도 배워야 할까?

    = 각 팀마다 다르다. 그렇지만 엔진 경험을 선호하는 팀도 있으니, 그에 맞춰서 준비하는 것이 좋다.

    직군 면접에서는 영향이 크지는 않다. 왜냐하면 직군 면접은 프로그래머로서의 직군 능력을 평가하는 자리인 만큼, 엔진에 대한 이해도에만 국한하지 않고 전반적인 분야를 다 훑어보기 때문이다.

    다만 기초적인 엔진 지식이 있으면 실무 적응에 확실히 도움이 된다. 이를 고려해볼 필요는 있다.


    Q. 직군 면접에서 탈락했다. 포트폴리오를 더 잘 준비해야 될까?

    = 직군 면접에서 탈락했다면 직군 면접 준비를 다시 하는 것이 좋다. 왜냐하면 직군 면접까지 갔다는 것은, 포트폴리오는 통과했다는 것이기 때문이다. 직군 면접에서 포트폴리오가 차지하는 비중은 거의 없다.

    전체적인 프로세스를 두고 이야기하자면, 각 단계마다 평가 기준이 다르다. 각각 단계를 통과했다고 하면, 그 단계의 기준을 통과했다고 보고 탈락했던 단계에 좀 더 집중해서 준비하는 것이 좋다.


    Q. 면접에서 떨어졌다. 난 실력이 없는 것인가?

    = 만약 서류나 팀 면접에서 떨어졌다고 하면, 해당 팀에서 현재로 필요하는 인재상과 맞지 않아서 그럴 뿐이다. 낙담할 필요는 없다. 이 경우에는 자신에게 맞는 팀이 어디인지 찾아보거나, 혹은 자신이 어떤 성향이고 어떤 분야에 관심이 있는지 다시 한 번 돌아보는 것이 좋을 것 같다.

    그렇지만 과제 심사나 직군 면접에서 탈락했다고 하면, 실력을 쌓을 필요가 있다. 이번 강연에서 정리한 내용을 참고해서 다시 실력을 쌓고 도전해보는 것을 권한다.

    댓글

    새로고침
    새로고침

    기사 목록

    1 2 3 4 5